Skip to content

docs(AGENTS): §7 names the third class of PR that never lands on green alone — over 5,000 changed lines - #19042

Draft
os-elon-musk wants to merge 1 commit into
mainfrom
claude/issue-19037-agents-third-class-human-merge
Draft

os-elon-musk wants to merge 1 commit into
mainfrom
claude/issue-19037-agents-third-class-human-merge

Conversation

@os-elon-musk

Copy link
Copy Markdown
Collaborator

Fixes #19037
Clause-②: no

What changed

AGENTS.md Multi-agent discipline §7 said 「Two classes of PR never enter this path on green alone」 — (a) a governed-surface diff, (b) the Version Packages / release-performing PR. The maintainer's ruling adds a third, and the rules layer contradicted the landing rule until it said so. The paragraph now names three classes:

(c) a PR whose changed lines exceed 5,000 (additions + deletions, generated files included) — it lands only by a human merge, which is its review record.

and the closing instruction reads the size in the same breath as the file list and the author: 「Read the PR's file list (get_files), its author and its size before you arm anything.」

Ruling (verbatim, untranslated), recorded on #16045 (comment 5729462393) and carried by #19012 / PR #19033:

「还有应该完善skills,修改代码量超过某个行数(比如5000)就应该人工审核。」

Read as the landing rule already spells it: additions + deletions on the PR, strictly greater than 5,000, generated files INCLUDED, no exemption; the terminal is the human's merge. The sentence states the ruling, not a line number of PR #19033, so it reads true whether or not that PR has landed. No new rule beyond the ruling: no exemption, no lower number, no review that is not the human's merge.

Why the sentence carries no card number or date. AGENTS.md's header: a rule 「carries no incident narrative, no ruling date or quotation, and no issue-number citation (pnpm check:pm-skill-id-lint) — a rule's provenance lives in the PR that landed it」; that gate's pattern is /#[0-9]{3,}/ over AGENTS.md, so #16045 / #19012 in the sentence would go red. The dispatch's mechanism assumption 1 (name the ruling by card) is falsified by the gate and by the file's own header — the provenance is this PR body, and the sentence is self-contained.

Line budget — net 0 at the ceiling (1099 / 1099)

The paragraph was wrapped at ~88 bytes with a 27-byte last line; re-flowed at the file's own 120-byte per-line budget (the Prime Directives block runs to 120 bytes; §8 beside it to 116) it absorbs the clause with no new line. Every bold and code span stays whole on its line, as before.

line before (bytes) after (bytes)
495 90 113
496 88 117
497 88 109
498 81 109
499 86 111
500 27 75
paragraph 466 640
file 1099 lines 1099 lines

Before:

   ⛔ **Two classes of PR never enter this path on green alone:** (a) a diff touching any
   **governed surface** (**Prime Directive #14**, which names them and holds the current
   list — **this file and `CLAUDE.md` are on it**, so re-read it rather than recalling
   it); (b) the **Version Packages** PR, or any PR whose merge performs a release
   (**Prime Directive #15**). Read the PR's file list (`get_files`) **and its author**
   before you arm anything.

After:

   ⛔ **Three classes of PR never enter this path on green alone:** (a) a diff touching any **governed surface**
   (**Prime Directive #14**, which names them and holds the current list — **this file and `CLAUDE.md` are on it**,
   so re-read it rather than recalling it); (b) the **Version Packages** PR, or any PR whose merge performs a
   release (**Prime Directive #15**); (c) a PR whose **changed lines exceed 5,000** (`additions + deletions`,
   generated files included) — it lands only by a human merge, which is its review record. Read the PR's file
   list (`get_files`), **its author and its size** before you arm anything.

Reader test

A seat about to arm a 6,000-line PR reads §7 and stops: 「Three classes … (c) a PR whose changed lines exceed 5,000 … lands only by a human merge」. Before this PR the same seat read two classes, found a 6,000-line diff in neither, and armed.

Other mentions in AGENTS.md (mechanism assumption 3)

grep -n -i -E 'green alone|two classes|Version Packages' on origin/main dbd474431:

  • :291, :299, :307, :309 — Prime Directive Add missing Field.phone() helper and factory methods for Action/Dashboard/Report #15's own text (no seat merges the Version Packages PR; that merge is the release trigger). Left: it is class (b)'s anchor, not an enumeration of the never-on-green-alone set.
  • :495, :498 — the §7 sentence. Changed (this PR).
  • No other line enumerates the set. Two neighbours name class (a) alone by design and were left: the Skills section's 「Both roots are governed surfaces — human-merge only, or Prime Directive feat: Comprehensive CRM example demonstrating all ObjectStack protocol features #14's pinned-approval path」 (about governed surfaces only), and Post-Task Checklist step 2's 「⛔ Except a diff touching a governed surface」, which defers to §7 by reference for the arming rule — see Acceptance notes.

Gates (local, at 845470659)

node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 14 families from the changeset (1 path vs merge base dbd474431); all 14 ran, exit codes captured redirect-then-$?, plus the two the dispatch named:

node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0
pnpm check:agent-test-spelling :: exit 0
pnpm check:docs-audit-scope :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:pm-governed-merges :: exit 0
pnpm check:pm-governed-prose :: exit 0
pnpm check:pm-skill-id-lint :: exit 0
pnpm check:pm-skill-ratchet :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:required-contexts :: exit 0
pnpm check:watch-hint-literal :: exit 0
pnpm check:skill-frame-sync :: exit 0
pnpm check:doc-authoring :: exit 0

Reconciliation: ✓ dispatch-gates --ran: 14 derived famil(ies) accounted for — 14 run, 0 NOT-MEASURED. Ratchet: ✓ check-skill-line-ratchet: AGENTS.md is 1099 lines (ceiling 1099; headroom 0). and widest table row is 768 bytes (pin 768; headroom 0). Id-lint: 0 citations in AGENTS.md. Control-byte scan of the file: no match.

Not measured locally: check:doc-formula-expressions (a CEL gate over fenced formula examples in the docs/skills corpus; this diff adds no fenced block and the family is outside the derivation; CI runs it). check:pm-dispatch-gates ran detached — its verdict is in the report comment on #19037.

Changeset

skip-changeset: AGENTS.md is a repo-root instruction file; the root package is private and no package files[] ships it — nothing published moves.

Acceptance notes

维护者速读(草稿)

  • 改了什么:AGENTS.md 多 agent 纪律 §7 那句「两类 PR 绿了也不能自动进合并队列」改成三类:新增 (c) 改动行数(additions + deletions,含生成文件)超过 5,000 行的 PR,只能由人工合并。文件行数不变(1099 / 1099),只是把那一段按文件自身的行宽重排。
  • 为什么改:您 09-18 的裁决「修改代码量超过某个行数(比如5000)就应该人工审核」已经落进了 PM 的落地规则与门禁脚本,但规则层 AGENTS.md 还写着两类,座席读到的规则与落地规则互相矛盾。
  • 风险与代价(含回滚):纯文本改动,不动任何脚本或门禁;本地 16 项门禁全绿。回滚 = revert 这一个 commit。
  • 席位意见:(留空,由席位定稿)
  • 你要做的:确认这句话与您的裁决一致(尤其「含生成文件、无豁免」与「人工合并即审核记录」两点),然后由您合并。

Generated by Claude Code

Multi-agent discipline §7 listed two classes that never enter the merge-queue
path on green alone (governed surface; Version Packages / release). The
maintainer ruled a third: a PR whose changed lines (additions + deletions,
generated files included) exceed 5,000 lands only by a human merge. The
paragraph is re-flowed at the file's own width so the clause lands at net 0
lines (1099 / 1099).

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BTeBejoPUvRHN8WdAJC6oF
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation labels Sep 18, 2026
@os-elon-musk os-elon-musk added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 18, 2026 — with Claude

Copy link
Copy Markdown
Collaborator Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 8454706591

① Derived judgments

② Semver level

  • skip-changeset is correct (AGENTS.md, nothing published moves; applied by label-write.mjs, read back twice). Clause-②: no on the claim and in the body; --pair 19042 at 2026-09-18T13:45Z: exit 0, no widening tell.

③ Boundary flags

Implemented-by: claude/issue-19037-agents-third-class-human-merge
Reviewed-by: session_01BTeBejoPUvRHN8WdAJC6oF

VERDICT: PASS


Generated by Claude Code

Copy link
Copy Markdown
Collaborator Author

维护者速读(终稿)· skills 席 · 2026-09-18T13:47Z

这个 PR 做什么:把您的 5000 行规则写进 AGENTS.md(规则层)。§7 原来说「两类 PR 不能凭绿灯自动进合并队列」—— (a) 受管面、(b) 发版 PR;现在是三类,第三类:改动超过 5,000 行(增+删,含生成物)的 PR 只能由人合并,人合就是它的复核记录;席位入队前除了看文件清单和作者,还要看 size。段落原地重排,行数不变(1099 / 1099)。句子里不带卡号 —— AGENTS.md 自己的规则禁止引卡号且有 lint 把守(我派发时写错了,dev 按文件规则改对了)。它和 PR #19033(这条规则的脚本与 SKILL.md 部分)谁先谁后都行:这里写的是规则本身,不引用那个 PR 的行。

验收:复核记录 5730909983(PASS);ACCEPT 5730916820;派生门禁 14 / 14 绿;行数棘轮 1099 / 1099、每行 ≤ 117 字节;CI 12 成功 · 11 跳过 · 2 在跑、0 红(2026-09-18T13:45Z);Fixes #19037Clause-②: no

请您做的一件事:Approve(受管文本),或直接 ready + squash 合并。没有要问的字。


Generated by Claude Code

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

Labels

documentation Improvements or additions to documentation needs-user-decision size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

1 participant