fix(gate): scope wording in the worktree gate (BACKLOG #1082) - #635
Merged
Conversation
…se (BACKLOG #1082) Rule 3c had ZERO mentions of --global/--system, so every disarm write got the same sentence: "would change the SHARED git configuration of <repo>". That is false for those scopes -- the write lands in the per-user or machine-wide file. THE VERDICT DOES NOT MOVE AND MUST NOT. Git falls back to those scopes when the repository does not set the key, so the write can still disarm the checkout by inheritance. An earlier filing of this as a FALSE DENY was withdrawn by three verifiers who measured the hook genuinely not firing afterwards; flipping rule 3c to ALLOW would have been a fail-open. The opening and the mechanism paragraph now branch on scope. A scoped write is told which file it actually writes and why it is refused anyway. The repository-scope wording is unchanged and pinned by its own control, so this did not trade one false sentence for another. NOTHING IN THE NEW TEXT REASSURES, and the tests pin the ABSENCE of four phrases rather than the presence of one. That is this row's round-4 lesson: segments are judged one at a time and Write-Deny exits on the first hit, so a reassurance prints over a real disarm when a LATER segment does a local write. A candidate that printed "This does NOT change the shared configuration" was graded BLOCKING by three verifiers for exactly that. TESTED BY THE STRING, NOT THE VERDICT -- forced, not stylistic. The verdict is identical before and after, so a row ending in a bare assert_denied cannot see this defect, and the round-4 mutant that reinstated the old sentence survived such a row. Mutation: disabling the scope branch reds FOUR wording rows and leaves THREE green -- the two verdict rows and the repository-scope control. That split is the evidence that the verdict genuinely does not move. A QUALIFIER THE ROW DOES NOT HAVE, measured here: whether a --global write takes effect depends on WHERE IT IS READ FROM. From a worktree core.hooksPath is set at worktree scope (75 of 76 config.worktree files) so global loses; from the primary it is unset at every scope (--get exit 1, control core.bare exit 0) so global WOULD take effect. The row states only the first. Denying is correct for both. The multi-line residual the row names is NOT fixed here and still needs its own item: segments split on lines and the first hit exits. Regression: 638 passed, 0 failed across all eight gate suites plus the new file -- 631 before, so the delta is exactly the seven tests added. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…st (BACKLOG #1082)
PR 635 is RED on three required legs with one deterministic cause:
tests/test_tooling_partition.py::test_every_non_engine_test_is_classified
"unclassified: ['test_worktree_gate_scope_wording.py']"
Same defect and same fix as PR 634, which is the point worth recording: two branches off one lane both
added a gate test file and neither listed it, so this is a lane habit rather than a one-off slip. The
same lane's #1296 branch DOES get it right, so the knowledge was present and the step was skipped.
Manifest, not _STAYS_WITHOUT_IMPORTING: the test drives the hook as a subprocess and does not read
engine source.
NOT A FLAKE. The lander playbook records tooling_partition as never flaky and says a re-run past one
lands a defect on purpose. Three legs, one cause, is the signature.
INSERTED IN THE FILE'S OWN ORDER, NEVER SORTED -- tests/tooling_manifest.txt is not plain lexicographic
and a sort() rewrites unrelated lines. Anchored on the following entry.
Measured, with an interpreter borrowed from a sibling worktree (this one has no venv) and VERIFIED to
read THIS tree rather than the lender's:
red-first: reverting only this line reds test_every_non_engine_test_is_classified and nothing else
(1 failed / 8 passed); restoring it returns 9 passed
git diff --numstat reads 1/0 -- a re-sort would have shown roughly 22 on both sides
rebased onto a490993 first; the rebase was clean
Rebase note for whoever pushes: this branch was 23 behind and is now ahead 1 of a490993, so the PR
head moves and needs a force-update with a lease.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
wshallwshall
force-pushed
the
claude/builder-1-1082-scope-wording
branch
from
August 27, 2026 23:30
a3b79da to
60a9394
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Wording fix in the worktree gate's scope reporting.
Built by builder-1. 638 gate tests, 0 failed.
The mutation result is the part worth reading: disabling the scope branch reds FOUR
wording rows and leaves THREE green -- the two verdict rows and the repository-scope
control. That split is the evidence the gate's verdict does not move, which is the
property this item most needed to protect. A mutation that reddened everything would
not have shown that.
Ledger hunk is mid-file (line 5185 of 16,376). Verified to merge cleanly against main
AND to pair cleanly with #1069's branch.
Not armed.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com