docs(backlog): reconcile four research banners with what merged today (BACKLOG #1122, #1169, #1182, #1188) - #935
Conversation
… (BACKLOG #1122, #1169, #1182, #1188) All four rows opened with a `Filed 2026-08-08 - not started` line while the work they name had already merged to `main`. Three of the four recorded the build only in their PROSE, so a reader who stopped at the banner block -- which is the block every tool reads -- saw a filing snapshot and nothing else. The fourth, #1188, recorded the build in its banner but named no commit, because the line was written while the change was still in flight. Measured by CONTENT, not by ancestry. This repository squash-merges and deletes branches, so `merge-base --is-ancestor` and `ls-remote` cannot tell landed work from unlanded. Each anchor was confirmed present at `origin/main` and ABSENT at its own merge parent, with a fabricated token as the negative control returning nothing anywhere: #1122 b66c9db PR 875 _is_safe_top_level_navigation in _security.py #1169 5692aec PR 877 reseal_to_active in uploads.py #1182 30d5da1 PR 863 static_credential_db_hops in config/wiring.py #1188 162e780 PR 869 the dropped stage predicate in purge_dead_letters No row is closed and no verdict, score or field moved. Each addition sits inside the banner block on the pattern #1188 already shipped: after `Research:`, above the filing line, carrying no status glyph. Verified with `parse_items` before and after -- status, score and the three machine-read fields are byte-identical on all four, and the item count is unchanged at 433. Each row now says whether a re-score is the only act left. On all four it is not: engine work remains, and two also carry an open owner decision. The seat that performs the closing re-score is cited, not restated. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
This pull request is green and nobody has marked it read. Every check that has reported is passing and the To clear it, IN THIS ORDER:
DO NOT TRIAGE THIS FROM A seat can find every pull request in this state in one call: The |
What this is
A ledger audit, not a build. Four research rows -- #1122, #1169, #1182 and #1188 -- opened with a
Filed 2026-08-08 - not startedline while the work they name had already merged tomain. This corrects their banners. No code changed; the diff is 7 added lines indocs/BACKLOG.md.Measured by content, because ancestry cannot answer this here
This repository squash-merges and deletes branches, so
merge-base --is-ancestorreturns false for work that landed andls-remoteshows no branch. Both readings are indistinguishable from genuinely unmerged work. Every claim below was therefore established by grepping a distinctive anchor atorigin/mainand at the merge's own parent, with a fabricated token as the negative control returning nothing anywhere.b66c9db8_is_safe_top_level_navigationinmessagefoundry_webconsole/_security.py5692aecareseal_to_activeinmessagefoundry/uploads.py30d5da10static_credential_db_hopsinmessagefoundry/config/wiring.py162e7802purge_dead_letters, all three backendsAll four PRs read
MERGEDfromgh pr view, with merge commits matching the shas above.What each banner said, and why the four are not the same case
Three of the four recorded the build only in their PROSE. The banner block is the region every tool reads --
parse_itemsexposes it and the dispatch gate consults it -- so a reader who stopped there saw a filing snapshot and nothing else. #1188 is different: its banner already carried a dated build note, but the note was written while the change was still in flight and names no commit, so it could not be verified from the row. Its addition is one line of evidence rather than a restated finding.What remains, per row
The re-score is not the only remaining act on any of the four. Engine work remains on all four, and two also carry an open owner decision.
_reencrypt_valuespellings, the per-backend composite-pass lists and the costed DIRECT integrity option are also open.[alerts]webhook sink declares no credential field of any kind, so on a first deployment no operator configuration would authenticate that hop. The item's other named hops have not been re-measured on the same footing, and the per-backend scoping question stays the owner's.Who closes them
Each row carries
Closing-act: scorecard-rescore. That act happens in the separate vault clone and is not a Builder's to perform, so none of these rows can close on this PR. The banners citeCLAUDE.mdsection 5 for the seat rather than restating the ruling.Findings this PR deliberately did not act on
scripts/docs/backlog_status_check.pymapsclosing-act: scorecard-rescoreto a seat thatCLAUDE.mdsection 5 lists as retired. It is a docstring constant, not a gate, and editing it here would collide with a sibling lane working.github/. Recorded for whoever owns that file.banner_sha_check.pyexits 1 over the live corpus on #1094 in the closed archive, andverdict_divergence_check.pyexits 1 on backlog: close #1222 -- the fix shipped in ddee5c1d and the banner outlived it #340, #1003 and #1266. Neither names any of my four rows, and neither runs as a gate in.pre-commit-config.yamlor a workflow. Pre-existing and out of scope.Decisions this brief left open
Research:and above the filing line, carrying no status glyph -- the pattern #1188 already shipped in this file. The alternative, rewriting theFiled 2026-08-08 - not startedopener, would destroy a dated snapshot; a dated 2026-09-05 line above a dated 2026-08-08 line reconciles it without that loss.PR 875rather than#875. A bare#Nis ambiguous between a pull request and a backlog item in this repo, and the ledger's own citation checks say so.Checks
Run in this worktree with the interpreter at
C:/Users/Scott/Code/MessageFoundry/.venv/Scripts/python.exe. That venv resolvesmessagefoundryto THIS worktree (printed and read, not assumed), and every test below resolves its corpus fromPath(__file__).resolve().parents[1], which is also this worktree.ruff check .ruff format --check .mypy messagefoundry(strict)pytestbacklog + ledger suites (6 files)pytestdoc-guard + dispatch-gate suites (6 files)backlog_status_check.pybacklog_citation_check.pylink_check.py,dangling_citation_check.pyparse_itemsbefore/afterNot run: the full suite, and every leg that only exists on a hosted runner.
windows-service-smokeand the SQL Server and Postgres legs are named here because a Builder never sees their result. This change touches one Markdown file and no code path any of them exercises.One instrument correction worth recording: the first pass read
$?after a pipe and scoredbanner_sha_checkandverdict_divergence_checkas exit 0. They exit 1. Re-read without the pipe, which is how the two pre-existing findings above were found.Claims
Held on 1122, 1169, 1182 and 1188, all four still held because the rows stay open and this PR is unmerged. None released.
Generated with Claude Code (https://claude.com/claude-code)