Skip to content

docs(agents): Prime Directive #14 governs three surfaces, and names the register that holds them - #9527

Merged
os-steve merged 3 commits into
mainfrom
claude/issue-9403-pd14-names-governed-surfaces
Aug 18, 2026
Merged

docs(agents): Prime Directive #14 governs three surfaces, and names the register that holds them#9527
os-steve merged 3 commits into
mainfrom
claude/issue-9403-pd14-names-governed-surfaces

Conversation

@claude

@claudeclaudeBot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Fixes#9403

Prime Directive #14 scoped itself to docs/adr/** while the governed set had grown past it. Rebased onto main after the per-PR approval check retired at 86ea8df7d; the card's work was untouched by that landing and is still missing from main.

The card named one stale site. There were four.

linesitewhat it said
176 / 180Prime Directive #14 itselfdocs/adr/**, twice
328Multi-agent discipline §7, "two classes of PR never enter this path""(a) a diff touching docs/adr/**"
911Post-Task Checklist item 2, the land-it exception"Except a diff touching docs/adr/**"
646Skills sectiondescribed both roots, said nothing about their merge posture

Updating only #14 would have left two sites telling a seat it may arm a skill PR.

The shape: one enumeration, and it is now a quotation rather than a copy

Four hand-maintained copies to one. Deleting the last one was considered and rejected: a seat must be able to decide from AGENTS.md alone whether the PR in front of it is governed.

What the rebase changed, beyond conflict resolution

86ea8df7d retired the per-PR check, deleted scripts/check-adr-merge-approval.mjs, moved the register, and widened the surface. Three assertions in the earlier draft of this PR were false against main and are rewritten:

  1. The one-liner pointed at a deleted file. It now resolves against scripts/pm/check-governed-merges.mjs and was run, not transcribed:
    $ node -e "import('./scripts/pm/check-governed-merges.mjs').then(m=>console.log(m.GOVERNED_SURFACES.map(s=>s.glob).join(' · ')))"
    docs/adr/** · .claude/** · skills/** · AGENTS.md · CLAUDE.md
    
  2. The required check ADR maintainer approval no longer exists. The enforcement half now states the real regime: a human merge IS the review record, discipline is the only pre-merge barrier, and detection is the report-only post-merge audit whose list every entry should match a merge the maintainer made in person. The directive says out loud that the retirement is not a relaxation.
  3. The set is five surfaces, not three — and AGENTS.md and CLAUDE.md are on it, so this PR is itself a governed-surface PR. §7 now says so explicitly, because that is where a seat decides whether to arm.

The .claude/ widening was intended, not silent. The maintainer's approval quotes the unified list verbatim, including the parenthetical: 含 agents/hooks/settings,不只 skills. Confirmed in the audit script's header and reproduced in the directive as the ruling's own words.

CODEOWNERS re-read rather than recalled. It is now three rows: /docs/adr/, /.github/CODEOWNERS, /scripts/pm/check-governed-merges.mjs. Of the five governed surfaces exactly one is routed, so on the other four nothing requests the maintainer's review automatically. Stated as fact; no fix proposed here — #9513 stays open and undecided.

Verification

Gate union re-derived from the actual changed path and run after the final commit, at 428306907, clean tree, one file changed:

check:nul-bytes PASS check:adr-anchors PASS
check:pm-skill-id-lint PASS check:adr-links PASS
check:required-contexts PASS check:pm-half-states PASS
check:docs-audit-scope PASS check:pm-skill-ratchet PASS
check:doc-authoring PASS check:skill-frame-sync PASS
check:skill-compatibility PASS check:skill-frame-freshness PASS
check:pm-governed-merges --self-test PASS (25 assertions)

check:pm-skill-id-lint re-run after the rewrite as asked: green. The directive quotes three rulings and cites no issue number.

Reverse verification, both directions, from the committed state:

No changeset: AGENTS.md publishes nothing. Labelled skip-changeset; Check Changeset reports skipped.

Findings filed alongside, unassigned, not touched here

Generated by Claude Code


Generated by Claude Code

…he register
PD#14 scoped itself to `docs/adr/**` while the required check it describes
(`ADR maintainer approval`) has held `.claude/skills/**` since 2026-08-17 and
`skills/**` since 2026-08-18. Two more sites in the same file enumerated the
same one prefix: the §7 arming exclusion and the Post-Task Checklist exception.
- PD#14 becomes a class rule ("a governed surface"), carries both maintainer
rulings verbatim with dates, names the three prefixes ONCE, and points at
`GOVERNED_SURFACES` in scripts/check-adr-merge-approval.mjs as the register —
with the runnable one-liner that prints today's set.
- §7 and the Post-Task Checklist stop enumerating and defer to #14, so the
next surface addition edits one place, not four.
- Corrects the same paragraph's stale description of the enforcement: the gate
reads state, not actors (maintainer ruling 2026-08-12), and CODEOWNERS routes
only `docs/adr/`.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XqDQYVU5smx29ts9pAErja
A seat working on a skill lands in the Skills section, not in the Prime
Directives. It described both roots and said nothing about their merge
posture. One class pointer, no second enumeration.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XqDQYVU5smx29ts9pAErja
…te regime
The per-PR `ADR maintainer approval` check retired on main (2026-08-18 ruling:
a human merge IS the review record), `scripts/check-adr-merge-approval.mjs` is
deleted, and the register moved to `scripts/pm/check-governed-merges.mjs` — and
widened to five surfaces, `AGENTS.md` and `CLAUDE.md` among them.
Kept from this branch: the class-rule reframing, the four-copies-to-one
consolidation, the §7 / Post-Task Checklist / Skills-section edits.
Rewritten: the surface list now quotes the maintainer's own 2026-08-18
definition verbatim, the one-liner resolves against the new register, and the
enforcement paragraph states the real regime — discipline is the only pre-merge
barrier, detection is the report-only post-merge audit, and CODEOWNERS routes
`docs/adr/` alone of the five.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XqDQYVU5smx29ts9pAErja
@os-steve
os-steve marked this pull request as draft August 18, 2026 08:52
@claude

claudeBot commented Aug 18, 2026

Copy link
Copy Markdown
ContributorAuthor

Rebased onto main at 428306907. The per-PR approval check retired in 86ea8df7d while this PR sat at gates; the register moved, the surface widened to five, and the body above is rewritten against what is actually on main now. The card's own work was untouched by that landing — main's Prime Directive #14 is still a path rule naming one prefix.

One state change on this PR I did not make, recorded here rather than quietly fixed. From the timeline:

ready_for_review by os-steve 2026-08-18T07:51:53Z
added_to_merge_queue by os-steve 2026-08-18T07:52:06Z
removed_from_merge_queue by github-merge-queue[bot] 2026-08-18T08:08:35Z

The queue ejected it because the branch had gone dirty against 86ea8df7d — the merge conflict is the only reason it did not land. Since AGENTS.md joined the governed surface in that same commit, this is a governed PR, and it reached the queue about twenty minutes after the check that used to sit in front of that path retired.

I have converted it back to draft. Nothing was armed (auto_merge: null) and the queue had already dropped it, so the usual reason not to touch another actor's ready-flip — that flipping back destroys arming and queue membership in one step — did not apply, while my push had just made the PR mergeable again and left it sitting ready. Current state: draft: true, auto_merge: null, not in the queue, not on main. Adjudication is the PM's; the full timeline and my reasoning are in the round report on #9403.

Generated by Claude Code


Generated by Claude Code

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/sskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AGENTS.md Prime Directive #14 names only docs/adr/**, but the gate it describes now also holds .claude/skills/**

2 participants

@os-steve@claude