Repository navigation
[program] CLAUDE.md is a pointer to AGENTS.md in every repo — no second instruction set to maintain (maintainer 2026-09-09) #17161
Description
Activity
- addeddocumentationImprovements or additions to documentationImprovements or additions to documentation
on Sep 9, 2026 Carried findings (program carrier), recorded by the skills seat at 2026-09-09T14:08Z from objectui PR #8848's
## Acceptance notes— noted, not filed as cards; the sub-issue that reaches the file decides:- objectui
AGENTS.md:249namesguard-main-checkout.shand enumerates Edit/Write/NotebookEdit but never namesguard-main-checkout-bash.sh, which guards the same writes performed through Bash; after PR http-dispatcher: DELETE / PATCH / POST on /metadata/:type/:name are answered as READS — the same fall-through #8842 closed for PUT, on a different trigger #8848 no document in that repo names the hook. The rule survives intact and the hook keeps firing — an incomplete enforcement roster, not a lost rule. Reader who meets it: whoever next edits objectuiAGENTS.md〈9. Operational Rules〉. - objectui
.github/workflows/hook-selftests.yml:8(a comment) cites 「the rule bothCLAUDE.mdfiles state as binding … see those files' ⛔ sections」; those sections are gone in objectui and objectstack#17162 removes them in objectstack, so the citation is stale on both sides once this program lands. It reads nothing and gates nothing. Reader who meets it: the next edit to that workflow, or the objectstack sub-issue's dev if the same workflow exists there (measure).
Generated by Claude Code
- objectui
Carried finding (program carrier), recorded by the skills seat at 2026-09-09T14:28Z from PR #17168's
## Acceptance notes: eight objectstack script/agent comments citeCLAUDE.mdas the place a rule is STATED —scripts/check-vendor-version-stamps.mjs:226 and :911,scripts/check-docs-single-h1.mjs:109 and :117,scripts/import-prerequisite.mjs:12 and :382,scripts/pm/ci-failure.mjs:215,.claude/agents/os-dev.md:35,.claude/workflows/docs-accuracy-audit.js:41. After #17162 those rules are stated inAGENTS.md; every citation still routes a reader there through the pointer (one hop longer, never a dead end) and no gate reads them. Reader who meets it: whoever lands the last sub-issue of this program does the one re-pointing pass across repos (objectui'shook-selftests.yml:8comment, recorded above, joins that pass).
Generated by Claude Code
Program status at 2026-09-09T16:0xZ (skills seat, session
session_01MoTv7pn338AZ71owsp19gQ): 2 of 5 repos landed. objectstack — #17162 / PR #17168 MERGED 15:55Z (d18b7607,CLAUDE.md41 → 5 lines); hotcrm — folded into #1823 / PR #1830 MERGED 15:33Z (06b9bb327bb0, 6-line pointer). Still at the human terminal: objectui#8840 / PR #8848 (draft,needs-user-decision, no review yet). Queued and undispatchable until their repos are attached to a session with push credentials: objectstack-ai/cloud#2521 (cloud) · #17164 (objectos) · #17165 (www.objectos.ai) — the maintainer was asked whether this seat attaches and dispatches them (round-2 report). Carried notes from 5603238728 unchanged: objectuiAGENTS.md:249's hook roster omitsguard-main-checkout-bash.sh; objectstackhook-selftests.yml:8cites both CLAUDE.md files' ⛔ sections and is stale now that objectstack's file is a pointer — that citation is a follow-up on the objectstack side once objectui's PR lands (file it then, one card, not a rider).
Generated by Claude Code
Program status at 2026-09-10T01:3xZ (skills seat, session
session_01MoTv7pn338AZ71owsp19gQ): 3 of 5 repos landed. objectstack — #17162 / PR #17168 MERGED 2026-09-09T15:55Z; hotcrm — #1823 / PR #1830 MERGED 15:33Z; objectui — #8840 / PR #8848 MERGED 2026-09-10T01:24Z (157028ac,CLAUDE.md25 → 3 lines, merged_by os-zhuang). Still queued and undispatchable until their repos are attached to a session with push credentials: objectstack-ai/cloud#2521 (cloud) · #17164 (objectos) · #17165 (www.objectos.ai) — the maintainer has been asked in every round report since round 2. Carried note discharged now that both CLAUDE.md files are pointers: objectstack.github/workflows/hook-selftests.ymlcites the two files' ⛔ sections — measured and filed separately by this seat if stale.
Generated by Claude Code
Maintainer direct instruction to the skills seat (session
session_01MoTv7pn338AZ71owsp19gQ, GitHubos-justin), given in that PM session's chat on 2026-09-09 at 13:3xZ and 13:4xZ, verbatim, untranslated:Program
CLAUDE.mdin every repository becomes a pointer toAGENTS.mdand carries nothing else — one instruction set per repo, maintained once. Each repo is one sub-issue (规则 2: a cross-repo change is never one dispatch); this card is the coordination node and is never dispatched.CLAUDE.md41 lines: pointer + inlined never-miss rules with hook pointers;scripts/pm/check-governed-prose.mjscounts it as an instruction surface that must name the five governed surfacesCLAUDE.md25 lines: pointer + two inlined rules with hook pointers;check-governed-queue-guard.mjslists it as governedCLAUDE.mdat all;.github/copilot-instructions.mdis already the pointer modelCLAUDE.md/AGENTS.mdpair existsFixed shape for every sub-issue: the file says where the truth lives and that the reader must read it, in the repo's own instruction language; ⛔ no rule is restated in it, no hook list, no digest. Hooks and gates keep enforcing what they enforce (the never-miss rules live in
AGENTS.mdand in the hooks, not in the pointer). A gate that readsCLAUDE.mdas an instruction surface adapts to the pointer form in the same PR.CLAUDE.mdis a governed surface in every repo ⇒ draft PR, human merge,skip-changesetwhere the repo has it.Governing text: the maintainer instruction above; AGENTS.md (each repo) as the single source it points to. Four-axis note recorded once here for all sub-issues: 实际业务需求 — the maintainer measured the cost directly (two sets to maintain, drift between them); 长远 — one source; 防 AI 犯错 — an agent that reads only
CLAUDE.mdtoday gets a digest that can lagAGENTS.md, and a pointer cannot lag; 不扩散 — deletion, no new surface. The known cost, stated: Claude Code loadsCLAUDE.mdautomatically andAGENTS.mdonly through the pointer, so a session that skips the pointer has no rules until a hook fires — the hooks are the floor that makes this acceptable.Generated by Claude Code