Skip to content

backlog: close #1222 -- the fix shipped in ddee5c1d and the banner outlived it - #340

Merged
wshallwshall merged 1 commit into
mainfrom
w3-close-1222
Aug 12, 2026
Merged

backlog: close #1222 -- the fix shipped in ddee5c1d and the banner outlived it#340
wshallwshall merged 1 commit into
mainfrom
w3-close-1222

Conversation

@wshallwshall

Copy link
Copy Markdown
Collaborator

#1222's banner still parsed OPEN while its fix was already on main. That is a status field outliving the code -- the same shape as #1106 -- and it costs a dispatched lane: an incoming session reading the ledger would conclude main is still red on the recursion test and could rebuild a shipped fix.

Verified, not assumed

A commit referencing an item is not a discharge of it, so the check was against the item's own terms:

  • ddee5c1d is an ancestor of origin/main
  • the replacement test is present on main
  • the item's own proof condition holds. #1222 demands that the replacement still FAIL if decode_frame's except RecursionError is narrowed to except ValueError. The shipped test injects a RecursionError and asserts SandboxCodecError, so narrowing lets it escape as RecursionError and the test reddens.

The original trigger was a real depth-100000 nesting, which made the test measure the runner rather than the contract -- environment-dependent by a factor of at least six across images. It was fixed by removing the dependence, not by tuning around it; the depth was never raised.

Closed in place, not archived

Convention measured rather than guessed: origin/main's live ledger already carries 69 items with a closed banner, so archival is a separate sweep.

The original filed blockquote is preserved below the new banner rather than deleted. It carries the environment-dependence measurement and the explicit do not fix this by raising the depth ruling, both of which stay useful after the close.

#1152 was checked in the same pass and deliberately stays OPEN

Its open banner is a ruling, not staleness: Identity.allowed_channels is still None, the item's body requires both halves, the ASVS scorecard carrying the 8.2.2 verdict is outside this repo, and ADR 0134 Amendment A records that only the second clause of release exit criterion 12 is satisfied.

Worth stating because the two look identical from the ledger: a stale banner and a deliberately open one are indistinguishable from status alone. Both parsed open, both had a fix land, and only one was wrong. The discriminator is the item's own proof condition.

Verification

Checked with the parser, never a hand scan, since the banner alphabet is machine-parsed and a hand-rolled scan is a second definition of it:

scripts/docs/backlog_status_check.py
OK, 496 backlog items, each declaring exactly one status
docs/BACKLOG.md 260, docs/archive/backlog/BACKLOG-CLOSED.md 236

Found by the backlog-clearing session while refreshing its handoffs; verified, closed and opened by the coordinator.

…banner outlived it

#1222's banner still parsed OPEN while its fix was on main. That is a status
field outliving the code, the same shape as #1106, and it costs a dispatched
lane: an incoming session reading the ledger would conclude main is still red on
the recursion test and could rebuild a shipped fix.

Verified rather than assumed, because a commit REFERENCING an item is not a
discharge of it:

  ddee5c1 is an ancestor of origin/main
  the replacement test is present on main
  the item's OWN proof condition holds -- it demands the replacement still FAIL
  if decode_frame's `except RecursionError` is narrowed to `except ValueError`.
  The shipped test injects a RecursionError and asserts SandboxCodecError, so
  narrowing lets it escape as RecursionError and the test reddens.

Closed IN PLACE, not archived: origin/main's live ledger already carries 69
items with a CLOSED banner, so archival is a separate sweep. Convention measured,
not guessed.

The original filed blockquote is preserved below the new banner rather than
deleted -- it carries the measurement that the trigger was environment-dependent
by a factor of at least six, and the explicit DO NOT FIX THIS BY RAISING THE
DEPTH ruling, both of which stay useful after the close.

#1152 deliberately stays OPEN and was checked in the same pass. Its open banner
is a ruling, not staleness: Identity.allowed_channels is still None, the item's
body requires both halves, the ASVS scorecard carrying the 8.2.2 verdict is
outside this repo, and ADR 0134 Amendment A records that only the second clause
of release exit criterion 12 is satisfied. A STALE BANNER AND A DELIBERATELY
OPEN ONE ARE INDISTINGUISHABLE FROM THE LEDGER ALONE -- the discriminator is the
item's own proof condition, not whether a commit mentioned it.

Verified with the parser, never a hand scan:
  scripts/docs/backlog_status_check.py
  OK, 496 backlog items, each declaring exactly one status
  docs/BACKLOG.md 260, docs/archive/backlog/BACKLOG-CLOSED.md 236
@wshallwshall
wshallwshall enabled auto-merge (squash) August 12, 2026 04:06
@wshallwshall
wshallwshall merged commit ebf4882 into main Aug 12, 2026
33 of 34 checks passed
@wshallwshall
wshallwshall deleted the w3-close-1222 branch August 12, 2026 04:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant