From 9c31e304c46d7e6eff51389a22b957d8493734ff Mon Sep 17 00:00:00 2001 From: wshallwshall Date: Mon, 24 Aug 2026 09:34:56 -0500 Subject: [PATCH] docs(backlog): six closed rows still told a human reader they were open Six rows carry a CLOSED banner while their body asserted, in the present tense, "FLIP-READY, NOT YET CLOSED" and "Closing still needs the banner flip". The flip happened afterwards and nobody removed the claim, so the machine and a human reading the same row got opposite answers about its disposition: #1216, #1253, #1259, #1313, #1314, #1319. This is the CLAUDE.md section 11 hazard in its plainest form. The banner in the leading blockquote defines status, prose about status is narrative, and here the narrative contradicted the definition. Banner and body already AGREED on the fact -- both say verified fixed on main 2026-08-23, with the same evidence. They disagreed only on the disposition, which is what dates the prose to before the flip. The evidence in each line is preserved; only the false status claim is replaced. The Priority line and the archive move stay outstanding and are named as the batch hygiene they are, so this does not read as a completeness claim it cannot support. Verified: 363 rows before and after, 253 open before and after, zero rows changed status, zero occurrences of the stale line remaining. Co-Authored-By: Claude Opus 5 --- docs/BACKLOG.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index ae2562db..3e671f64 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -10855,9 +10855,9 @@ gate is the wrong shape, validation of the walk is the right one. > **COUNT DRIFT, recorded so it is not read as a discrepancy:** this item says *"154 shell blocks; 154 failed"*; the same instrument reported **160 of 160** on 2026-08-14. **The corpus grew; the 100-percent signature -- which is the actual finding -- held at both sizes.** > **`#1272` IS THIS ITEM'S DUPLICATE and closes with a pointer here.** It was filed onto an unpushed branch and named the 160 where this one names the 154 -- **two symptoms of one PATH-order defect, filed twice because neither author could see the other's tree.** This number survives on a mechanical asymmetry, not on merit: **a landed item is amendable from any worktree; an unpushed one is editable only by the branch holder.** -***VERIFIED FIXED ON MAIN 2026-08-23 -- FLIP-READY, NOT YET CLOSED.*** **All four resolving test modules import `tests/_bash_resolver.py`. No live `skipif` on bash existence remains anywhere in `tests/`.** +***VERIFIED FIXED ON MAIN 2026-08-23, AND SINCE CLOSED -- the banner above carries the disposition.*** **All four resolving test modules import `tests/_bash_resolver.py`. No live `skipif` on bash existence remains anywhere in `tests/`.** *Control that qualifies it: `skipif` filtered to bash returned five lines, all prose; unfiltered `skipif` returned hits in dozens of test files.* **A search finding nothing anywhere is a broken search, not an absence, so the control is stated rather than implied.** -***DECIDED BY READING THE CODE, NOT BY COUNTING CITATIONS*** -- *a citation is identity and the question was content (see `#1347`).* **Closing still needs the banner flip, the dropped Priority line and the move to the archive; this row records the measurement, not the disposition.** +***DECIDED BY READING THE CODE, NOT BY COUNTING CITATIONS*** -- *a citation is identity and the question was content (see `#1347`).* **The banner flip has happened, so this row reads CLOSED to `parse_items`. The Priority line and the archive move are still outstanding, and both are batch hygiene across every closed row rather than anything this row is waiting on.** > **SHIPPED-BUT-OPEN 2026-08-22 -- builder-2 round 3, same [ADR 0165](adr/0165-a-builder-pr-satisfies-the-ledger-gate-with-a-paired-commit-authored-by-the-dispatcher-or-lander.md) pairing.** A shared resolver now finds a bash that can SEE this process's files, adopted in all four modules that resolve one. > **THE SECOND COMMIT IS THE ONE TO READ, AND IT IS AN ADMISSION.** The author's own positive control was an identity -- `assert bash_sees(require_bash(...))`, where `require_bash` returns only a candidate `bash_sees` has already approved, so it was true by construction and incapable of failing. Mutating the probe to `return True` left it GREEN while two sibling tests went red. It certified a resolver with no working namespace check: **the #1216 defect itself, one level up**, in a test written an hour earlier by someone who had spent the night on exactly that class. Kept as a separate commit deliberately, so folding it in cannot erase that it happened. @@ -12225,9 +12225,9 @@ BUILDS it.* > Verdict: build > Closing-act: code -***VERIFIED FIXED ON MAIN 2026-08-23 -- FLIP-READY, NOT YET CLOSED.*** **One implementation survives at `controlchars.py:67` with six real importers. The seven remaining `0x7F` lines are unrelated or excluded by this row's own terms.** +***VERIFIED FIXED ON MAIN 2026-08-23, AND SINCE CLOSED -- the banner above carries the disposition.*** **One implementation survives at `controlchars.py:67` with six real importers. The seven remaining `0x7F` lines are unrelated or excluded by this row's own terms.** *Control that qualifies it: the `0x7F` sweep returned seven real hits INCLUDING the known-good `controlchars.py:67`, so the pattern matches this predicate's spelling.* **A search finding nothing anywhere is a broken search, not an absence, so the control is stated rather than implied.** -***DECIDED BY READING THE CODE, NOT BY COUNTING CITATIONS*** -- *a citation is identity and the question was content (see `#1347`).* **Closing still needs the banner flip, the dropped Priority line and the move to the archive; this row records the measurement, not the disposition.** +***DECIDED BY READING THE CODE, NOT BY COUNTING CITATIONS*** -- *a citation is identity and the question was content (see `#1347`).* **The banner flip has happened, so this row reads CLOSED to `parse_items`. The Priority line and the archive move are still outstanding, and both are batch hygiene across every closed row rather than anything this row is waiting on.** **Cluster:** Code quality / drift hazard. **Priority:** P3. **Verdict:** build (small). **Severity:** none today, and no deployment axis (§0). @@ -12385,9 +12385,9 @@ BUILDS it.* > Verdict: build > Closing-act: code -***VERIFIED FIXED ON MAIN 2026-08-23 -- FLIP-READY, NOT YET CLOSED.*** **`.pre-commit-config.yaml:178` wires `backlog-parses` to `backlog_status_check.py --quiet` -- the half this row was still open against.** +***VERIFIED FIXED ON MAIN 2026-08-23, AND SINCE CLOSED -- the banner above carries the disposition.*** **`.pre-commit-config.yaml:178` wires `backlog-parses` to `backlog_status_check.py --quiet` -- the half this row was still open against.** *Control that qualifies it: `git grep` for `ledger-gate|backlog-parses` returned both, with the known-present `ledger-gate` proving the path resolves on `origin/main`.* **A search finding nothing anywhere is a broken search, not an absence, so the control is stated rather than implied.** -***DECIDED BY READING THE CODE, NOT BY COUNTING CITATIONS*** -- *a citation is identity and the question was content (see `#1347`).* **Closing still needs the banner flip, the dropped Priority line and the move to the archive; this row records the measurement, not the disposition.** +***DECIDED BY READING THE CODE, NOT BY COUNTING CITATIONS*** -- *a citation is identity and the question was content (see `#1347`).* **The banner flip has happened, so this row reads CLOSED to `parse_items`. The Priority line and the archive move are still outstanding, and both are batch hygiene across every closed row rather than anything this row is waiting on.** **Cluster:** Ledger tooling / silent-pass gate. **Priority:** P2. **Verdict:** build. **Severity:** no deployment axis (§0) -- nothing shipped changes. The cost is a gate that certifies a file no one can parse. @@ -14007,9 +14007,9 @@ class as the release gate `a92ab10f` fixed, and it is why (b) is not cosmetic. > Verdict: build > Closing-act: code -***VERIFIED FIXED ON MAIN 2026-08-23 -- FLIP-READY, NOT YET CLOSED.*** **`release.yml:148-159` now exits 1 when `tar` fails or lists zero members, so the gate proves a listing happened before asking the allowlist question.** +***VERIFIED FIXED ON MAIN 2026-08-23, AND SINCE CLOSED -- the banner above carries the disposition.*** **`release.yml:148-159` now exits 1 when `tar` fails or lists zero members, so the gate proves a listing happened before asking the allowlist question.** *Control that qualifies it: `grep -n '|| true'` returned 9 hits on the dumped blob and `tar tzf` returned 2, both inside comments -- the pattern demonstrably matches live text in that file.* **A search finding nothing anywhere is a broken search, not an absence, so the control is stated rather than implied.** -***DECIDED BY READING THE CODE, NOT BY COUNTING CITATIONS*** -- *a citation is identity and the question was content (see `#1347`).* **Closing still needs the banner flip, the dropped Priority line and the move to the archive; this row records the measurement, not the disposition.** +***DECIDED BY READING THE CODE, NOT BY COUNTING CITATIONS*** -- *a citation is identity and the question was content (see `#1347`).* **The banner flip has happened, so this row reads CLOSED to `parse_items`. The Priority line and the archive move are still outstanding, and both are batch hygiene across every closed row rather than anything this row is waiting on.** **Cluster:** CI reliability / supply chain. **Priority:** P1. **Verdict:** build. **Severity:** no engine-runtime effect and no deployment axis (sec. 0) -- but this is the **disclosure** path, not the deployment one, and publishing to PyPI is real and current. A silent pass here would let a regression in the `only-include` allowlist republish private documentation to a public index, which is what releases 0.1.0..0.2.15 already did once. @@ -14019,9 +14019,9 @@ class as the release gate `a92ab10f` fixed, and it is why (b) is not cosmetic. > Verdict: build > Closing-act: code -***VERIFIED FIXED ON MAIN 2026-08-23 -- FLIP-READY, NOT YET CLOSED.*** **`email.py:221` and `direct.py:243` both raise `ValueError` when `tls_check_hostname` is false and a username is set, outside any escape conditional.** +***VERIFIED FIXED ON MAIN 2026-08-23, AND SINCE CLOSED -- the banner above carries the disposition.*** **`email.py:221` and `direct.py:243` both raise `ValueError` when `tls_check_hostname` is false and a username is set, outside any escape conditional.** *Control that qualifies it: `tls_verify` returned 7 hits from the pre-existing gates and `check_hostname` returned 5 in each file.* **A search finding nothing anywhere is a broken search, not an absence, so the control is stated rather than implied.** -***DECIDED BY READING THE CODE, NOT BY COUNTING CITATIONS*** -- *a citation is identity and the question was content (see `#1347`).* **Closing still needs the banner flip, the dropped Priority line and the move to the archive; this row records the measurement, not the disposition.** +***DECIDED BY READING THE CODE, NOT BY COUNTING CITATIONS*** -- *a citation is identity and the question was content (see `#1347`).* **The banner flip has happened, so this row reads CLOSED to `parse_items`. The Priority line and the archive move are still outstanding, and both are batch hygiene across every closed row rather than anything this row is waiting on.** **Cluster:** Security / transport posture. **Priority:** P1. **Verdict:** build. **Severity:** no exposure today ([§0](../CLAUDE.md) - zero deployments). **On first deployment**, a site that set `tls_check_hostname=false` would send SMTP AUTH credentials to any peer presenting a certificate that chains to the configured anchor, **regardless of the name on it**. @@ -14207,9 +14207,9 @@ which both readings of the cell now require. > **WHAT IS NOT ESTABLISHED, stated so nobody reads more into it.** This is **at least one** observed failure. The rate under runner load was never measured, no re-run of the same head was recorded before the session ended, and no cross-branch pair like #1290's was collected. The mutation table above is the strong evidence here; the frequency is not. > **DO NOT MERGE THIS INTO #1290 -- same cluster, different failure.** #1290 is a process-table walk on hosted **Windows** that never completes, so its regression assertion never runs. This is a **ubuntu** bound that a fully completed, correct run exceeds. Neither fix touches the other's file. -***VERIFIED FIXED ON MAIN 2026-08-23 -- FLIP-READY, NOT YET CLOSED.*** **The wall-clock bound is gone. `tests/test_adr0157_demote_teardown.py:161` asserts `width == _N_SOURCES`, and the file has no `import time` at all.** +***VERIFIED FIXED ON MAIN 2026-08-23, AND SINCE CLOSED -- the banner above carries the disposition.*** **The wall-clock bound is gone. `tests/test_adr0157_demote_teardown.py:161` asserts `width == _N_SOURCES`, and the file has no `import time` at all.** *Control that qualifies it: `assert ` returned 41 hits, so the file was read; the elapsed/wall-clock pattern returned one docstring line and no assertion.* **A search finding nothing anywhere is a broken search, not an absence, so the control is stated rather than implied.** -***DECIDED BY READING THE CODE, NOT BY COUNTING CITATIONS*** -- *a citation is identity and the question was content (see `#1347`).* **Closing still needs the banner flip, the dropped Priority line and the move to the archive; this row records the measurement, not the disposition.** +***DECIDED BY READING THE CODE, NOT BY COUNTING CITATIONS*** -- *a citation is identity and the question was content (see `#1347`).* **The banner flip has happened, so this row reads CLOSED to `parse_items`. The Priority line and the archive move are still outstanding, and both are batch hygiene across every closed row rather than anything this row is waiting on.** **Cluster:** CI reliability / teardown tests. **Priority:** P2. **Verdict:** build. **Severity:** no deployment axis (sec. 0) -- `tests/` ships in no engine path. The cost is that a required context can redden on `main` from runner load alone, and that while it is loaded the test cannot perform the discrimination it was written for.