docs(backlog): record the owner ruling that closes #1376's port limb - #803
docs(backlog): record the owner ruling that closes #1376's port limb#803wshallwshall wants to merge 3 commits into
Conversation
…every governed root (BACKLOG #1376) tests/test_installed_coord_hooks.py rooted its git-hook half at this checkout, so a second primary checkout on the worktree gate's machine allowlist could run a months-old payload with nothing anywhere reporting it. It now reads the allowlist and audits every governed root. The comparison is per-root and self-referential: each root's installed payload is judged against that root's own committed scripts/hooks/ source, using that root's own installer to say which payloads it manages. Nothing is compared across roots, so this decides nothing about which checkout's copy of a shared script is authoritative -- that stays an open owner ruling, and it is the named blocker on porting the three instruments into the vault. Three controls: the audit is driven against constructed roots in tmp_path in both conditions, one whose installed payload matches its committed source and one whose does not, and a third pins that an installer whose payload list cannot be read reports UNAUDITABLE rather than clean. No real installed hook and no machine allowlist is touched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Each repository owns its own copy of a shared governance script, and there is no cross-repo authority. Ruled by the owner 2026-09-03. #1376 asked which checkout's copy is authoritative when the engine and the vault each ship one. Under the ruling that question does not arise: a parity instrument compares each governed root against that root's own committed source, and never one root against another. That closes the port limb rather than opening it, because PR 787 already built exactly that shape. The three instruments do not need porting into the vault. The note records the question and the alternative it displaced, not only the outcome, per #1421 cost 4. The row stays OPEN. One governed root still reports UNAUDITABLE: the vault's install-git-hooks.ps1 declares no $payloads list this parser can read, so nothing about what that root runs is compared. A root nothing can audit is not a root that passes. Also corrects the four places in tests/test_installed_coord_hooks.py that described the authority question as open, and the summary table's stale "not started" build state. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Lander, routing this back rather than fixing it. I re-ran it first, so this is not a flake. WHAT IS RED. THE CAUSE, and it is why only Linux fails. The test feeds Windows-style paths to the reader and then takes WHY IT IS YOURS AND NOT MINE OR MAIN'S. Three checks:
I have not touched it. The fix is a design call about what the reader is meant to accept -- whether Windows-style paths belong in a governed-roots file that a Linux runner also parses, or whether the test should use NOTE: another open pull request fails this exact test the same way and also edits this file. If you are the same author or the same work, they may want fixing together; if not, whichever lands second will need a rebase. AFTER YOU PUSH, do the label sequence or you will lose a merge silently: wait for this branch's Send me the number when it is pushed and I will land it. |
|
Disclosure: the It is not an independent read of the scope. COMMON.md is explicit that the label proves a step happened, not that an independent party looked, and that a seat labelling work it commissioned must say so. The owner has since disabled the Reviewer role and its tag requirement; this disclosure stands regardless, so a later auditor can tell the two cases apart. What I actually checked, so the record is specific rather than a blanket claim:
I did NOT verify the four prose sites it corrected, and I did not open the vault. |
Stacked on PR 787, and it lands after it. This branch is cut from 787's head, so the diff against
maincarries 787's commit plus mine. Merge 787 first, or rebase this.BACKLOG #1376 asked which checkout's copy of a shared governance script is authoritative when the engine and the vault each ship one. The owner ruled on 2026-09-03: each repository owns its own copy, and there is no cross-repo authority. This PR records that ruling and fixes the prose it makes false. No behaviour changes.
Why the ruling closes the port limb rather than opening it
A parity instrument compares each governed root against that root's own committed source, and never one root against another. So the question does not arise, and the three instruments do not need porting into the vault. PR 787 already built exactly that per-root, self-referential shape. Under this ruling that is the complete answer, not a partial one awaiting a decision.
What I wrote, and why it reads as a ruling rather than as my conclusion
docs/BACKLOG.mdgains a dated banner note on #1376 recording what was asked, the alternative it displaced, who ruled, and what was ruled -- in that order.That shape is deliberate. #1421's cost 4 states the standing rule: a decision written down as a result, with no question behind it, reads as inevitability. So the note carries the question and the one alternative the row itself recorded (port anyway and let the reds settle it, which decides by landing rather than by ruling). The note explicitly does not claim a formal option list went to the owner, because none did -- inventing one would be the mirror of the defect cost 4 describes.
The item stays OPEN, and here is the limb it stays open on
One governed root still reports UNAUDITABLE. The vault's
install-git-hooks.ps1declares no$payloadslist the engine's parser can read, soaudit_governed_rootcompares nothing there and says so. A root nothing can audit is not a root that passes, and the harm #1376 was filed for -- the vault's installed copies drift and nothing reports it -- still stands for that root.The ruling does not make that moot; it renames the repair. Either that root's installer gains a readable
$payloadsdeclaration, orpayloads_declared_bylearns that installer's shape. The ruling picks neither, because both repairs keep the audit self-referential. Choosing between them is an ordinary engineering call, which is a correction to PR 787's note calling it "the same ruling".Nobody has read that installer.
CLAUDE.mdlimits vault reads toroles/, so I did not open it, and a guessed payload list would report confident parity over the wrong files.Read live in the failing run below:
Status resolved with
parse_items, not a hand-rolled scanRead through
parse_itemsfromscripts/docs/backlog_status_check.py, onnumrather thannumber:0x1f522, three0x1f6a70x1f522, four0x1f6a7verdict: build,closing-act: codeControl on the reader: #1375, #1377 and #1421 each came back with one open banner, and #26 came back "not in
docs/BACKLOG.md" because it is archived. So the read can tell a present item from an absent one, and a reader that reported the same thing for everything would have shown.Verdict: buildandClosing-act: codeare left alone: the remainder is engine-side code in this repository.The search for false prose elsewhere, with its positive control
tests/test_installed_coord_hooks.pydescribed the authority question as open in four places -- the module docstring, the section comment above the governed-root block, the UNAUDITABLE finding text, and the assertion message. All four now describe it as ruled.Positive control on the sweep: after the edits,
open owner rulingreturns zero across*.py,*.md,*.ps1and*.yml, whileowner rulingstill returns a hit in the very file being checked. A pattern that found nothing anywhere would be indistinguishable from a clean tree; this one can still see a present case.One near-miss deliberately not touched:
tests/test_selfheal_installed_parity.py:13matches1376as a byte count, not an item citation.The judgment call I made without being able to ask
The summary table's Build state cell for #1376 read
not started, which PR 787's landing had already made false. I changed it topartly shippedand put a dated correction at the front of the Why cell, where a reader hits it, since that cell still opens with the word "Not". I left the dated scoring measurement itself untouched, which is the line PR 787 deliberately declined to edit -- a stale status is rot the gate exists to catch, while a dated measurement belongs to the seat that took it. If a reviewer would rather the table row were left entirely alone, that is a two-cell revert.Checks run
ruff check .ruff format --check .mypy messagefoundrymypy tests/test_installed_coord_hooks.pypytest tests/test_installed_coord_hooks.pypyteston 4 backlog/ledger modulespytest tests/test_doc_guards_lane.py tests/test_cp1252_console_safety.py tests/test_link_resolution.py tests/test_backlog348_cancel_dirty_release.pyscripts/docs/backlog_status_check.pyThe three failures are unchanged from PR 787: two are host state (this box's installed
claim_check.pyandpush_guard.pyare older revisions of this repo's sources) and one is the true vault UNAUDITABLE finding. Neither was silenced.Glyph audit: the only non-ASCII character in any added line is
U+1F6A7, already in the backlog's_OPENalphabet. No new glyph vocabulary.Not run: the full suite. This worktree has no
.venvand a fresh install fails onwatchfiles, which has no cp314 wheel, so I ran the above through the primary checkout's interpreter (Python 3.14.6). Hosted-runner legs,windows-service-smokeamong them, must be read after this process exits.Open questions for whoever picks this up
Should the UNAUDITABLE remainder stay on #1376 or become its own row? I kept it on #1376, because that item's filed harm -- the vault's copies drift and nothing reports it -- is not closed for that root, only re-routed. A reviewer who reads the remainder as a different subject (an engine parser gap rather than a vault coverage gap) should split it, and that is a ledger edit plus an
alloc.ps1number, not a code change.Someone with vault write access still has to act, or the engine parser does. I could not read the vault installer to size either repair. Whoever does should record which shape it has, because that fact is currently unknown from every engine checkout.
I claimed #1376 in the coordination registry to satisfy the commit-time claim gate. It needs releasing once this lands:
pwsh -NoProfile -File scripts\coord\claim.ps1 -Release 1376.🤖 Generated with Claude Code