You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[finding] Adding a genuinely NEW hand-written page under content/docs/ makes a PR human-merge-only — always, and invisibly until the gate runs
Filed by the domain:devx PM seat (post #6023, session session_01Pk26oZ12t5N1hwGW1m1MgC), R33, from evidence produced on #13548 / PR #13584. ⛔ Ungraded, unassigned.
The property
check:docs-audit-scope enforces a two-way equality between the set of hand-written pages under content/docs/** and the ALL_HANDWRITTEN list that lives inside .claude/workflows/docs-accuracy-audit.js.
.claude/** is governed surface (register printed today: docs/adr/** · .claude/** · skills/** · AGENTS.md · CLAUDE.md). Prime Directive #14 judges a PR on its file list, and "a mixed diff is not a proportion question — one path hit is enough."
⇒ Adding a new page forces an edit to a governed file, so the whole PR becomes human-merge-only: ⛔ never armed, ⛔ never queued. Modifying an existing page does not, because it is already listed.
Measured, not inferred
On PR #13584 (a 7-file, +1928 diff whose only governed line is a single ALL_HANDWRITTEN entry):
run
result
non-governed six files alone
exit 1 — + 1 hand-written doc(s) exist but are not listed
the one governed line alone
exit 1 — - 1 listed path(s) do not exist
both together
exit 0 — scope is in sync with content/docs/: 190 hand-written doc(s)
⇒ the AGENTS.md remedy for a mixed diff — "split the governed files into their own PR" — cannot be applied: it produces two PRs each red on a required gate, the governed one red until the other merges. An ordering deadlock, not a sequencing inconvenience.
Control, confirming this is about ADDING rather than about docs work generally: 2be4a6729 — the isSystem census commit, the pattern #13548 was told to mirror — touched 5 files, none under .claude/, because system-context.mdx was already listed in its parent (grep count 1).
⛔ The list cannot move off governed surface. The workflow body runs in a node:vm context whose globals do not include require, import or any filesystem access, so it cannot enumerate content/docs/** or read a JSON artifact — it has to be inline.
Why this is worth a card
⚠️It is invisible at dispatch time. A PM reading a card that says "write a new documentation page" sees no governed path in any file list; the governed hit only materialises when the gate runs, after the work is done. ⇒ no dispatch fence can be written for it, and every such card silently costs a human merge that nobody budgeted.
⚠️ And the direction is wrong for the fleet: the governed-surface rule exists so that agent-instruction and policy files get human eyes. A new customer documentation page is not that — it acquires the ceremony incidentally, through a bookkeeping list that happens to live in .claude/.
Options, ⛔ no decision claimed
Accept and document it — write the property into the gate's header and the dispatch playbook so it is at least predictable and budgeted. Cheapest; changes nothing.
Carve .claude/workflows/** out of the governed register. ⛔ Narrowing the governed surface is a governance change and squarely a maintainer decision — noted for completeness, ⛔ not recommended by this seat.
Refs:#13548 / PR #13584 (the evidence) · #4851, #4920 (why the list is inline and un-excludable) · Prime Directive #14 · 2be4a6729 (the ADD-vs-MODIFY control)
[finding] Adding a genuinely NEW hand-written page under
content/docs/makes a PR human-merge-only — always, and invisibly until the gate runsFiled by the
domain:devxPM seat (post #6023, sessionsession_01Pk26oZ12t5N1hwGW1m1MgC), R33, from evidence produced on #13548 / PR #13584. ⛔ Ungraded, unassigned.The property
check:docs-audit-scopeenforces a two-way equality between the set of hand-written pages undercontent/docs/**and theALL_HANDWRITTENlist that lives inside.claude/workflows/docs-accuracy-audit.js..claude/**is governed surface (register printed today:docs/adr/**·.claude/**·skills/**·AGENTS.md·CLAUDE.md). Prime Directive #14 judges a PR on its file list, and "a mixed diff is not a proportion question — one path hit is enough."⇒ Adding a new page forces an edit to a governed file, so the whole PR becomes human-merge-only: ⛔ never armed, ⛔ never queued. Modifying an existing page does not, because it is already listed.
Measured, not inferred
On PR #13584 (a 7-file, +1928 diff whose only governed line is a single
ALL_HANDWRITTENentry):+ 1 hand-written doc(s) exist but are not listed- 1 listed path(s) do not existscope is in sync with content/docs/: 190 hand-written doc(s)⇒ the AGENTS.md remedy for a mixed diff — "split the governed files into their own PR" — cannot be applied: it produces two PRs each red on a required gate, the governed one red until the other merges. An ordering deadlock, not a sequencing inconvenience.
Control, confirming this is about ADDING rather than about docs work generally:
2be4a6729— the isSystem census commit, the pattern #13548 was told to mirror — touched 5 files, none under.claude/, becausesystem-context.mdxwas already listed in its parent (grep count 1).Why the existing escape hatches do not apply
scripts/docs-audit/check-audit-scope.mjsstates the scope "is not a curation: it is exactlycontent/docs/**/*.mdxminuscontent/docs/references/**", and its header records that excluding pages was considered and rejected under docs-accuracy-audit 会就地改写 content/docs/releases/**(9 页),与 AGENTS.md「release-owned,禁止在代码 PR 中编辑」直接冲突 #4920 — "docs-accuracy-audit.js 的 ALL_HANDWRITTEN 清单 11 条全部指向改名前的 protocol/objectos/* —— 内部文档审计静默漏审整个 protocol/kernel 目录 #4851 is the bill for one subject with two hand-kept lists."node:vmcontext whose globals do not includerequire,importor any filesystem access, so it cannot enumeratecontent/docs/**or read a JSON artifact — it has to be inline.Why this is worth a card
.claude/.Options, ⛔ no decision claimed
ALL_HANDWRITTENout of.claude/into a non-governed artifact thenode:vmbody can be handed at build time..claude/workflows/**out of the governed register. ⛔ Narrowing the governed surface is a governance change and squarely a maintainer decision — noted for completeness, ⛔ not recommended by this seat.Refs: #13548 / PR #13584 (the evidence) · #4851, #4920 (why the list is inline and un-excludable) · Prime Directive #14 ·
2be4a6729(the ADD-vs-MODIFY control)Generated by Claude Code