Uh oh!
There was an error while loading. Please reload this page.
docs(pm): point the governed repo set prose at GOVERNED_REPOS instead of mirroring it - #15031
Draft
os-steve wants to merge 1 commit into
Draft
docs(pm): point the governed repo set prose at GOVERNED_REPOS instead of mirroring it#15031os-steve wants to merge 1 commit into
os-steve wants to merge 1 commit into
Conversation
… of mirroring it Two prose statements of the governed repo set lived outside the register and went stale when the register grew: the pm-dispatch ACCEPT path-fork enumerated the sibling repos by name, and the enqueue guard's header carried a count. Both now defer to `GOVERNED_REPOS` in `scripts/pm/check-governed-merges.mjs` — no repo name and no count outside the register, so there is nothing left to drift and nothing to parse. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
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#14984
Two prose statements of the governed REPO set lived outside the register (
GOVERNED_REPOSinscripts/pm/check-governed-merges.mjs) and went stale the minute the register grew to five repos with the landing of #14867 (5d4d55ae). Remedy shape ruled by the skills seat (triage comment 5529676559): remove the mirrors and point at the register — no repo name and no count outsideGOVERNED_REPOS, so there is nothing left to drift and nothing to parse. Two one-line edits, both on governed surfaces (.claude/**x2) ⇒ draft PR, in-seat review, human merge;skip-changeset(nothing published from any package).The two lines
.claude/skills/pm-dispatch/SKILL.md:723— before (119 bytes):after (118 bytes; the
(2026-08-18 裁定)date pointer kept verbatim per the X0 quote policy):.claude/hooks/guard-governed-enqueue.sh:54— before:after (75 columns, inside the header's 80-column comment block):
No repo name and no count on either line; no issue number inside either line (the id lint covers
.claude/skills/pm-dispatch/**).check-governed-merges.mjsitself, including its 2026-08-18 quotation, is untouched.Deviation from the dispatch word, measured
The dispatch word asked the SKILL.md line to name both
GOVERNED_REPOSandscripts/pm/check-governed-merges.mjs, at net 0 lines.check:pm-skill-ratchetalso holds a 120-byte per-line budget the dispatch reading did not price: my first cut (0931bc0b, both names on the line) went red withL723 (180B). The line has 79 fixed bytes (the`CLAUDE.md`;agent 指令文件按此跨仓同判 ——prefix plus the date pointer), the path alone is 38 bytes and the constant 16, so both cannot fit; wrapping would spend a line the dispatch word forbids. The line now namesGOVERNED_REPOSalone: the script is already named in this file at lines 264, 791 and 964, andgit grep -n GOVERNED_REPOSresolves the constant in one hop. If the seat prefers the path on the line at the cost of one wrapped line (970 → 971, ceiling 1005), that is a one-line change on this PR.Third-mirror sweep
git grep -n -i "objectui、cloud、objectos\|four governed repos\|four repos\|五个\|四个.*仓" -- '.claude' 'AGENTS.md' 'CLAUDE.md' 'skills'at BASEfddfc8db: 9 hits, of which only the two target lines state the governed repo set or its size. The other seven are五个in unrelated prose —.claude/agents/os-dev.md:82(lock waiters) and:384(a wave of devs),.claude/skills/checklist-author/SKILL.md:50(five sweep angles),.claude/skills/pm-dispatch/SKILL.md:795(five health metrics),references/lanes/engine.md:30(driver columns),.claude/skills/spec-property-retirement/SKILL.md:292and:316(generated artifacts). A repo-widegit grepfor the two literal strings hits only the two sites, so no test pins them. NeighbouringSKILL.md:724((objectos 指令面 PR 照样 draft/人工合并)) names one repo as a worked example of the path-fork, not the set or its size — left as is.Verification — head
16bd3e51(the pushed commit), each exit code captured before any pipeGate list derived by
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(no paths passed; change set read from the merge base: the two files, 14 families) — one family beyond the dispatch word's list,check:bash32-floor, matched via.claude/hooks/**, run and green.check-governed-queue-guardis CI-measured only (reads the workflow payload).node scripts/check-closing-keyword-parity.mjscheck-closing-keyword-parity: OK (3 parsers agree on all 9 keywords and both measured separators; sweep found 5 file(s) carrying the grammar across 8178 tracked file(s), all registered).node scripts/check-comment-mask-corpus.mjs✓ comment-mask corpus sweep [scripts/js-comment-mask.mjs]: 5833 files, 0 disagree, 0 unparseable, 48.9s (comparator self-test: 12 cases pass).pnpm --filter @objectstack/lint run check:doc-formula-expressions✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 426 files / 1367 TS blocks judged clean by @objectstack/formula.(two earlier runs exited 3 = PREREQUISITE NOT MET,@objectstack/formulathen@objectstack/lintunbuilt — NOT MEASURED in the gate's own words; both built underos-verify-lock.sh,VERDICT command-exit 0, then measured)pnpm check:agent-test-spelling✓ check-agent-test-spelling: 0 violations — 432 file(s) · 5850 bare--token(s) · 1390 launcher-rooted run(s) · 9 separator(s) JUDGED · 5 vitest-backed script name(s) derived from 81 manifest(s)pnpm check:doc-authoring✓ doc authoring guard: 393 files clean — no bare metadata literals.(+ three further ✓ lines)pnpm check:nul-bytescheck-nul-bytes: OK (scanned 8171 text file(s) -- 8171 tracked, 0 untracked-not-ignored; skipped 7 binary; no raw ASCII control bytes).pnpm check:pm-governed-merges✓ check-governed-merges --self-test: 245 assertions (…)pnpm check:pm-governed-prose✓ check-governed-prose: 2 instruction surface(s) name all 5 registered governed surfaces (docs/adr/** · .claude/** · skills/** · AGENTS.md · CLAUDE.md) and claim no others.pnpm check:pm-skill-id-lint✓ check-skill-id-lint: 23 file(s) clean (pattern /#[0-9]{3,}/g).pnpm check:pm-skill-ratchet✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/SKILL.md is 970 lines (ceiling 1005; headroom 35).— net 0 lines; L723 118 bytes (was 119)pnpm check:refd-timer-probeOK check-refd-timer-probe: 5828 source file(s) swept; the process-global timer probe is read in packages/qa/refd-timer-testkit/src/index.ts and nowhere else.pnpm check:skill-frame-sync✓ check-skill-frame-sync: 2 copies of the decision frame are structurally isomorphic across 2 filespnpm check:watch-hint-literal✓ check-watch-hint-literal: 48 declaration(s) across 4 rostered name(s) -- ROOT_DIR_WATCH_HINTS 32, ROOT_FILE_WATCH_HINTS 9, ROOT_WATCH_HINTS 2, DECLARED_WATCH_HINTS 5 -- every one an array of quoted literals inside its own statement, every rostered name non-empty, and no unrostered spelling of the idiom in the tree.pnpm check:bash32-floor(added by the re-derivation)✓ check-bash32-floor: 26 tracked shell file(s) under scripts/**, .claude/hooks/**, .githooks/** name no bash 4+ construct outside a comment, a guarded ${VAR:-} read, or a non-command position.bash -n .claude/hooks/guard-governed-enqueue.sh.claude/hooks/guard-governed-enqueue.selftest.sh49 passed, 0 failedBoth edits were proved on disk before the commit by anchored counts (old text 0, new text 1 in each file), not by the editor's exit code.
Generated by Claude Code