Uh oh!
There was an error while loading. Please reload this page.
docs(agents): name all six blocking contexts in the merge-queue rule - #9940
Merged
Conversation
The auto-merge/queue sentence named two required contexts and called everything else advisory-and-rides-through. The live required set has six: a seat reading the old text classifies a red Build Core, Test Core, Dogfood Regression Gate or Temporal Conformance as optional, which is the misclassification that puts a PR into the queue to be ejected. Rewritten in place, net-zero lines (AGENTS.md stays at its 958 ceiling), and check-required-contexts.mjs's AGENTS.md surface mustName is widened to all six so the corrected sentence is lexicon-pinned: a rename in any of the six now reddens the gate instead of rotting the prose. Maintainer ruling 2026-08-18 on #9677. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AeA3nU1B5Q2pgxqxgUrexd
This was referenced Aug 19, 2026
os-warren
marked this pull request as ready for review
August 19, 2026 11:12
Uh oh!
There was an error while loading. Please reload this page.
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.
Fixes#9677
⛔ Draft on purpose — do not flip ready, do not arm auto-merge.
AGENTS.mdis agoverned surface (Prime Directive #14), so this lands by a maintainer's hand merge.
What changed
AGENTS.md, the auto-merge/queue rule (§9 rule 7). The sentence named two requiredcontexts and said "everything else is advisory and rides through". Four contexts that
actually block were therefore described to every seat as optional — the misclassification
that puts a PR into the queue to be ejected, or leaves a seat waiting on a context it
believes advisory. Rewritten to name all six and to scope the advisory clause to what is
genuinely outside the set.
scripts/check-required-contexts.mjs. The AGENTS.md surface'smustNameis widenedfrom two literals to all six, so the corrected sentence is lexicon-pinned: a rename in any
of the six now reddens
check:required-contextsinstead of rotting the prose. This is themechanical follow-on the card named, folded into the same PR because one governed hit
governs the whole diff anyway.
Authorized by the maintainer ruling recorded on the card, 2026-08-18 — 「其他接受你的建议」.
The dispatch required re-measuring the live set rather than copying the card's six. Both
named routes are shut to this session, measured rather than assumed:
node scripts/check-required-contexts.mjs --verify-required-setNOT VERIFIED— HTTP 401, exit 2NODE_OPTIONS=--use-env-proxy(the script's own suggested retry)NOT VERIFIED— HTTP 403, exit 2curl https://api.github.com/repos/objectstack-ai/objectstackThat is an environment classification, not a tree result — exactly the posture the
script documents for
NOT VERIFIED(#4690). The session's egress policy answers 403 forapi.github.com, and the MCP GitHub surface available here exposes no ruleset orbranch-protection read, so no live route exists from a dev seat today.
What the six were sourced from instead:
REQUIRED_CONTEXTSinscripts/check-required-contexts.mjsatorigin/main— the repo's machine-checked pin,independently re-measured live on 2026-08-18 by the #9642 delivery, which the script's
header records as agreeing with the live set in both directions after the #9533 rows were
dropped. This is also the mechanically required source:
judgeInstructionSurfacesrejects a
mustNameliteral that is not a registered context, so the widening could nothave been pinned to the card's text even if I had copied it.
Observed delta: none. The six literals in the registry match the card's reading
character-for-character. If the live set has moved since 2026-08-18,
--verify-required-setis the designed detector and this PR does not weaken it.
Line budget
AGENTS.mdis ratcheted at 958 with headroom 0, so the correction is net-zero: 958before, 958 after, ceiling 958, rewritten in place. Paying for four extra context names
inside that budget cost two things, both deliberate:
Lint & Repo Gateswas formerly published under a namedescribing one of its steps — that history lives in
RETIRED_CONTEXT_NAMES, which iswhere a seat can act on it;
--verify-required-setin the prose. ThemustNamewidening in this samePR is the stronger guard against the same rot, and it is mechanical rather than
aspirational.
The
check:*gate-family note stayed: it is the only place inAGENTS.mdthat maps a redcheck:*gate to its required context.Gates — run at
d5aa484, after the final commitcheck:required-contexts✓ check-required-contexts: 6 required context name(s) pinned across 2 workflow(s); 5 instruction surface(s) scanned(self-test:115 assertions)check:pm-skill-ratchet✓ check-skill-line-ratchet: AGENTS.md is 958 lines (ceiling 958; headroom 0).check:pm-governed-prose✓ check-governed-prose: 2 instruction surface(s) name all 5 registered governed surfaces(self-test:24 cases pass)check:cross-package-test-inputsOK: 12 package(s) read outside themselves, all declared(self-test:All 33 self-test cases passed.)check:nul-bytescheck-nul-bytes: OK (scanned 6309 text file(s) ... no raw ASCII control bytes)Families derived with
node scripts/pm/dispatch-gates.mjs(no paths) against the realchange set — merge base
ae555f4, 2 paths, no sibling contamination. It placedcheck:required-contextsandcheck:cross-package-test-inputs; the ratchet, governed-proseand NUL families are the dispatch-named and edit-implied additions.
Reverse verification of the
mustNamewideningDirection predicted before running: dropping one newly-pinned literal from
AGENTS.mdturns the check red naming that literal, and the
--self-testhalf stays green becauseit runs on its own fixtures.
Observed:
Test Coreoccurs exactly once inAGENTS.md(the new sentence). Renaming it toCore Suitemade the run exit 1 withPrediction half-right and recorded as such: the red surfaced inside
--self-test(5 ofits cases read the real instruction files), so the standalone scan never ran. Restored with
git checkout -- AGENTS.mdfrom the committed state; re-run green, working tree clean.No rebuild leg exists for this ablation and none is claimed:
check:required-contextsrunsnode scripts/check-required-contexts.mjsfrom source, with nodist/in its resolutionpath.
Not a changeset case
Nothing here is published — an instruction file and a CI-internal gate script. Labelled
skip-changeset, which thelint.ymlcomment block calls the textbook case for exactlythis shape.
Generated by Claude Code