Uh oh!
There was an error while loading. Please reload this page.
docs(agents): PD #14 — a generator-certified regeneration clears the queue with zero approvals - #14125
Merged
Merged
Conversation
…queue with zero approvals The queue guard's `merge_group` leg now installs the generator toolchain, so the register's `verify` rows can actually recompute at queue time. PD #14's parenthetical still told every seat the opposite ("the queue-time leg installs no dependencies and never evaluates the byte-equality lift"), which reads as an instruction to pre-request a pinned maintainer approval for a pure regeneration that needs none. Reflowed at net zero (1162/1162 lines, every line within the 120-byte budget). Both unchanged facts stay: a hand-authored governed diff still needs an authorized approval pinned to the current head, and no agent seat submits it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Msg17tAHJ3jVTYFgHydCm2
os-zhuang
approved these changes
Sep 1, 2026
os-zhuang
marked this pull request as ready for review
September 1, 2026 06:35
os-zhuang
enabled auto-merge
September 1, 2026 06:35
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#14067
Prime Directive #14 told every seat to pre-request a pinned maintainer approval before
queueing even a pure regeneration, and justified it with a parenthetical that is no longer
true on
main: the queue guard'smerge_groupleg now installs the generator toolchain,so the byte-equality lift does evaluate at queue time. Left as written, the directive
kept sending seats to the maintainer for the exact approval the 2026-09-01 ruling removed.
Maintainer ruling this implements (2026-09-01, verbatim and untranslated):
The sentence, before and after
Before (
AGENTS.mdL304-306 at merge base3795c5f5d, verbatim):After (
AGENTS.mdL304-306 at244e3ae4f, verbatim):Nothing in it was invented. The criteria are the queue guard's own pinned case names —
with-the-toolchain-installed-a-PURE-REGENERATION-merge-group-CLEARS-with-zero-approvals-and-zero-api-calls,plus the three shapes that still refuse:
a-recompute-that-does-not-certify-still-REFUSES-the-same-merge-group-fail-closed(
no-toolchainanddrift) anda-hand-authored-skills-file-beside-a-certified-regeneration-is-still-REFUSED.The two facts that did not change are both still there, untouched by this diff:
a governed diff still lands only on an authorized approval pinned to the current head
(L301-304,
GOVERNED_APPROVERS,commit_id= that sha), and no agent seat submits thatapproval under any account (L306-308).
Premise verified on today's
origin/mainBoth halves checked first-hand at merge base
3795c5f5d, before writing:AGENTS.mdL304-306 still carried the stale parenthetical (quoted above, byte-exact)..github/workflows/governed-surface-guard.ymlnow installs:Setup pnpm+pnpm install --frozen-lockfile, every toolchain stepcontinue-on-error, and its owncomment states the intent — "Both legs install." The guard header's ⭐ block says the same
("THE JOB INSTALLS DEPENDENCIES"), and the
--self-testpins the wiring.materially moved since the card was written, so no re-scoping was needed.
Net zero, measured before writing
The ratchet pins
AGENTS.mdat 1162 with headroom 0, so the replacement had to reflowinside the count. Measured with the gate's own
wrapLineatMAX_LINE_BYTES= 120 beforeany edit:
AGENTS.mdtotalThe +65 B is absorbed entirely by the slack in the region's last line, which was 57 B.
The ceiling is not byte arithmetic — greedy wrapping breaks on words, so it was found by
measuring real candidate strings: a 257 B candidate spilled to a 10th line while the chosen
259 B one fits. Candidates at +67 B and above spill; the chosen wording is at the measured
maximum that keeps the count.
Gate verdict line, quoted:
Companion ledger comment: KEPT as history, with a dated supersession marker
scripts/pm/check-skill-line-ratchet.mjsL402-414 is the ledger entry for the 1158 → 1162bump, and its parenthetical carried the same "installs no dependencies" phrasing.
Decision: keep the history, mark it superseded — do not update it to today's facts.
Rationale: that entry exists to record why +4 lines was priced, and the rider it prices
cost +2 precisely because the queue leg then installed nothing. Rewriting it to describe
today's mechanism would erase the reason the bump was justified, which is the one thing the
ledger is for. But a bare present-tense claim is exactly what this card is about, so leaving
it unmarked invites the next reader to take it as live. The parenthetical is now:
Also net zero: 97 → 111 chars, absorbed by reflowing the same 7 comment lines (L405-411,
7 → 7) at the block's existing 82-column width (L402-403 were already 82). That script is
not itself ratcheted; net zero here is the correction carve-out's discipline, not a gate.
Sibling coherence
A queued sibling card (#14059) will add a machine-readable enqueue-precondition line to the
pm-dispatch landing checklist. The new wording therefore states both halves in one breath
— hand-authored governed content ⇒ pinned approval, generator-certified-only ⇒ zero approvals
— so a seat reading the two texts side by side cannot construct a conflict between "approval
must precede enqueue" and "this class needs none". Noted here deliberately without a closing
keyword; that card stays open on its own.
Gates
Head
244e3ae4f. Derived union re-run after the final commit:node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands(exit 0; change set derived by the tool itself from the merge base
3795c5f5d, 2 paths).21 commands, exit codes captured before any pipe:
check:pm-governed-prose,check:pm-skill-ratchet,check:pm-governed-merges,check:pm-dispatch-gates,check:required-contexts,check:watch-hint-literal,check:entry-guard,check:parse-guard,check:docs-audit-scope,check:cli-command-ids,check:bash32-floor,check:agent-test-spelling,check:cross-package-test-inputs,check:pm-skill-id-lint,check:pnpm-filter-targets,check-ci-filter-parity,check-cross-package-test-inputs,check-required-contexts,check-shard-attestation,bare-root-worklist --self-test)node scripts/check-test-completeness.mjscheck-test-completenessexit 3 is its documentedPREREQUISITE NOT METbranch: it grades asaved
turbo run testlog and the derived family names it with no argument. Its own text says"⛔ It is not a red, and there is nothing here to fix." CI passes it a log; that path is
unreachable locally.
Named on the card, plus the ones this diff drags in, run separately (exit codes before pipes):
node scripts/pm/check-skill-line-ratchet.mjs✓ check-skill-line-ratchet: AGENTS.md is 1162 lines (ceiling 1162; headroom 0).node scripts/pm/check-skill-line-ratchet.mjs --self-test✓ check-skill-line-ratchet self-test: 111 cases pass.pnpm check:pm-governed-prose✓ check-governed-prose: 2 instruction surface(s) name all 5 registered governed surfaces … and claim no others.node scripts/pm/check-governed-queue-guard.mjs --self-test✓ check-governed-queue-guard self-test: 129 cases pass (…)pnpm check:skill-frame-sync✓ check-skill-frame-sync: 4 copies of the decision frame are structurally isomorphic across 3 filespnpm check:nul-bytescheck-nul-bytes: OK (scanned 7715 text file(s) … no raw ASCII control bytes).pnpm check:ratchet-remedy-authoritynode scripts/check-published-list-mirrors.mjsOK: 1 published list mirror(s) match their constants line for line.node scripts/check-skills-token-ratchet.mjs✓ check-skills-token-ratchet: 38 authored bundle file(s) within their ceilingsThe edited script's own test suite is its
--self-test(there is no separate vitest filenaming it); it is in the table above at 111 cases. Its three in-repo importers
(
check-published-list-mirrors,check-skills-token-ratchet,check:pm-dispatch-gates) wererun as well.
Changeset
Publishes nothing from any package — the diff is
AGENTS.mdplus a comment inscripts/pm/. Carryingskip-changeset, applied additively and read back.Landing
AGENTS.mdis a governed surface, so this is draft-only: no merge, no queue, noauto-merge, no ready-flip from this seat. Landing is the maintainer's, by hand, or through the
queue on an authorized approval pinned to head
244e3ae4f.Generated by Claude Code
Generated by Claude Code