Uh oh!
There was an error while loading. Please reload this page.
docs(pm-dispatch): Director seat owns the authoritative governed-merge audit window (fourth duty) - #12713
Merged
Merged
Conversation
…window on the Director seat Charter change ruled by the maintainer 2026-08-27 (「合并审计归总监那件事,同意你的建议」): lane seats keep the per-round sweep as early warning; the Director seat gains 职责四 — the authoritative consolidated audit, --since-ref-anchored at the previous audit's recorded tips, folded into the adjudication batch with per-entry recognition, unrecognized entries filed as needs-user-decision in the same stroke, tips re-recorded after each run. INCOMPLETE (exit 2) reports as INCOMPLETE; in-container 403 attribution completes via MCP per entry. No new label, no cron. Both files stay at their zero-headroom ratchet ceilings (net 0 per file); the cut ledger with each cut's surviving home is in the PR body.
os-litant
marked this pull request as ready for review
August 27, 2026 14:23
os-litant
enabled auto-merge
August 27, 2026 14:23
github-merge-queueBot
removed this pull request from the merge queue due to failed status checks
Aug 27, 2026
Uh oh!
There was an error while loading. Please reload this page.
github-merge-queueBot
removed this pull request from the merge queue due to failed status checks
Aug 27, 2026
Uh oh!
There was an error while loading. Please reload this page.
os-zhuang
approved these changes
Aug 27, 2026
os-zhuang
approved these changes
Aug 27, 2026
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#12709
Governed protocol change — this PR touches
.claude/**and stays DRAFT for the maintainer's hand-merge (Prime Directive 14, 「人工合并即人工审核」). Executes the maintainer's 2026-08-27 ruling from live PM chat, verbatim and untranslated:The accepted recommendation: keep the three-layer regime and split the after-the-fact sweep 检测双层、处置单席 — lane seats keep the per-round sweep as near-zero-cost early warning; the Director seat owns the authoritative consolidated window and the recognize/rollback disposition. No new label (enumeration is tree-derived from local git, zero API, cannot drift — a label would be a second corruptible index); no cron (the human-invoked summon cadence is the audit cadence).
The two changes
--sincewindow, ⛔ 不凭记忆汇总 unchanged) and now names the authoritative consolidated window and the recognize/rollback disposition as the Director seat's, with a pointer toreferences/lanes/director.md. No mechanics copied.references/lanes/director.mdgains 职责四 (governed 合并审计), structured like the other three duty sections: each summon runs the sweep--since-ref-anchored at the previous audit's recorded tips (the anchor line lives in the Director seat post's 说明 section; the script prints the exact next-round flags itself and stores nothing); the list folds into the adjudication batch, one line per entry, recognize y/n; an unrecognized entry = seat violation, filed as aneeds-user-decisioncard in the same stroke under the after-the-fact-audit regime (maintainer 2026-08-18 「同意。」); new tips re-recorded after each run. INCOMPLETE (exit 2) is reported as INCOMPLETE, never as clean; attribution channels that 403 in-container are completed via MCP per entry. ⛔ No new label; ⛔ no cron.Consistency edits inside the same two-file surface (the three-duty phrasing is now four everywhere it appears): the SKILL.md invocation-table
directorrow (三职与章程 → 四职与章程), the SKILL.md Director-seat paragraph (the 四职 enumeration now names governed 合并审计; 停放四职), and director.md's 档位 bullet (四职停放). The 授权与形态 召唤 bullet's parked-carrier list now names 审计窗口, so the seat-level no-cron / parked-is-designed-safe clause covers the fourth duty by construction.Non-goals honored
--testpre-arm predicate, the queue guard, and the human-merge-as-review-record regime are untouched.scripts/pm/check-governed-merges.mjsuntouched — protocol text only. No new labels, no new title words, no script changes.Zero-headroom ratchet: net 0 per file, cut ledger
Ratchet verdict lines (
pnpm check:pm-skill-ratchet, run at 4c8ac62, exit 0):SKILL.md (adds: pointer sentence +1 line, fourth-duty enumeration +2 net bytes; paid by cuts in the Director-seat paragraph, net 0 at 1005/1005):
director.md (adds: 职责四 = header + six content lines + two blanks = +9; paid by nine same-file cuts, net 0 at 75/75):
references/contract-review.md清标即落地 chain, already pointed to by 职责一.references/decision-analysis.md(verbatim, line 14), already pointed to by 基本原则.references/state-machine.mdawaiting section (各席只入态).references/state-machine.mdawaiting-出口 clause, which carries the invariant and the 2026-08-27 attribution verbatim; the bullet now points there.Gates (run in the worktree at 4c8ac62; every exit captured before any pipe)
pnpm check:pm-skill-ratchet— exit 0 (self-test exit 0); verdict lines quoted above.pnpm check:pm-skill-id-lint— exit 0: "check-skill-id-lint: 23 file(s) clean".pnpm check:skill-frame-sync— exit 0: "4 copies of the decision frame are structurally isomorphic across 3 files"; the decision frame itself untouched.pnpm check:skill-frame-freshness— exit 0: "the frame itself is unchanged".pnpm check:pm-governed-prose— exit 0: "2 instruction surface(s) name all 5 registered governed surfaces (docs/adr/** · .claude/** · skills/** · AGENTS.md · CLAUDE.md) and claim no others."node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack, derivation stderr pinned to "the tree of 'objectstack-ai/objectstack' at commit 4c8ac62". All nine matched families run:pnpm check:agent-test-spelling— exit 0.pnpm check:doc-authoring— exit 0: "391 files clean — no bare metadata literals" / "48 published skill files clean".pnpm --filter @objectstack/lint run check:doc-formula-expressions— exit 0 after building the dependency closure (@objectstack/formula,@objectstack/lint): "22 record-scoped formula example(s) across 424 files / 1450 TS blocks judged clean".pnpm check:pm-governed-merges— exit 0: "check-governed-merges --self-test: 204 assertions".check-governed-queue-guard— CI-only in this container: NOT MEASURED locally; CI runs it on this PR.pnpm check:nul-bytes— exit 0: "scanned 7055 text file(s) … no raw ASCII control bytes"..claude/—skip-changesetlabel applied (this repo's real mechanism; nothing publishes).Acceptance replay (a Director summon under the new text)
The fourth duty describes current practice, already live: the first consolidated run executed 2026-08-27 about 13:00Z — 7 governed merges enumerated across the 2 checked-out repos, all attributed via MCP, presented inside the summon's adjudication batch, and the anchor tips recorded on the Director seat post's 说明 section. A summon replayed under this text does exactly that: one
--since-ref-anchored sweep from those recorded tips (the script itself prints the next-round flags; it stores nothing), the list folds into the batch one line per entry for recognize y/n, an unrecognized entry files asneeds-user-decisionin the same stroke, and the new tips are re-recorded on the seat post. The lane round report is unchanged except the pointer sentence.Generated by Claude Code
Generated by Claude Code