Uh oh!
There was an error while loading. Please reload this page.
fix(scripts): declare check-ratchet-remedy-authority's scan surface — BLOCKED on a recorded verdict, do not merge unreviewed - #12061
Closed
yinlianghui wants to merge 1 commit into
Conversation
…o gate-script cards derive it The sweep assembled its population as join(REPO_ROOT, 'scripts'), so no path literal ever reached the source and extractWatchHints returned an empty set. The family — a REQUIRED gate whose population is gate scripts — therefore sat in the dispatch derivation's Undetermined bucket, invisible to exactly the cards most likely to violate it. Declares the scan surface as the FLAT glob, matching the flat readdirSync the sweep really performs, and pins it in both directions against the real hintCovers/extractWatchHints rather than a paraphrase of them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UjM2ia8Av1v5NqfqQEQmC6
This was referenced Aug 25, 2026
This was referenced Aug 25, 2026
os-zhuang
commented
Aug 25, 2026
Contributor
Closing under the maintainer's ruling, 2026-08-25 (option A1, upholding the recorded verdict): 「我看到了,你分析过了,接受你的建议」. The 2026-08-23 adjudication on #11155 refused this same declaration outright ( Generated by Claude Code |
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 freeto 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.
Part of #11935 — implements one half, and must not be merged on that basis alone. See the blocker below. The other half (
scripts/pm/bare-root-worklist.mjs) is deliberately untouched and is outside this card's declared file surface.⛔ BLOCKER — this reverses a recorded, adjudicated verdict
The card asks for a watch-hint declaration on this gate. Implementing it works (evidence below), but the tree already carries a live verdict refusing exactly this, in
scripts/pm/bare-root-worklist.mjs:That verdict was upheld by a PM adjudication on 2026-08-23 closing #11155 — a prior filing of this same defect on this same gate — which declined the declaration option outright. #11935 appears to be an independent rediscovery filed two days later; nothing in it cites #11155.
I reproduced the refusal's measurement independently before finding it:
corpusFiles()is a flatreaddirSync, 141 files, against 256 tracked underscripts/— 55%, the same side of the line. And the deeper claim holds as a proof, not a survey: to coverscripts/check-x.mjsa hint must collapse toscripts, andplain === 'scripts'necessarily also coversscripts/pm/**through thestartsWith(plain + '/')branch. No honest spelling exists.scripts/*andscripts/**are byte-different and behaviourally identical.Measured consequence of merging this as-is
Running the worklist on this branch, versus the unmodified tree:
1e79aa4f8)REFUSE-UNSPELLABLE+ matching reason — coherent36c15e682)REACHABLE+ the same refusal reason — self-contradictorynode scripts/pm/bare-root-worklist.mjs --self-teststays green (EXIT=0) across that flip. So merging this silently turns a coherent governance record into an incoherent one, and no gate catches it — exactly the outcome #11155's dev predicted and which is now measured rather than predicted.What the branch does contain
A provenance-only
ROOT_DIR_WATCH_HINTS = ['scripts/*']plus seven self-test cases (20)–(26) run against the realhintCovers/collapseHint/extractWatchHints, every direction derived from the walked root and the live corpus rather than re-spelled. The flat glob, not the subtree form, because the gate's own header already spells its populationscripts/*.{mjs,mts}and the sweep never recurses — 89 tracked files across nine subdirectories it never opens.The card's assumed
scripts/**spelling is wrong even if the decision goes toward declaring: it would claim those 89 files outright.scripts/*claims 26. Neither changes what the tool matches.The
--residuepair, on the card's exact invocationNeither path is this gate's own file, so this is not the "appears when I touch its own file" false positive the card warns about.
The pin, shown going red
A pin that only ever answers "pass" is not a pin. All four wrong declarations observed red, each mutation proven on disk first:
['scripts/**']['scripts'][]['packages/*'][]Restore leg green. Two mutations initially failed to land (a
perl -equoting fault) and were reported VOID rather than as passes — without the on-disk proof they would have run the unmutated file and read as a cleanEXIT=0.Over-reach, stated plainly
A card touching only
scripts/pm/check-half-states.mjs— which the sweep never reads — now derives this family too. That is the fabricated-lead cost the recorded verdict is about, and it is unavoidable in this vocabulary.Gates
9/9 green at
36c15e682, derived withnode scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack, each exit code captured before any pipe.skip-changeset: rootscripts/tooling, nothing published.Generated by Claude Code