Skip to content

Commit 8f42b17

Browse files
os-elon-muskos-devclaude
authored
docs(AGENTS): §7 names the third class of PR that never lands on green alone — over 5,000 changed lines (#19042)
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: ```text ⛔ **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: ```text ⛔ **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 #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 #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: ```text 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 - noted, not filed: Post-Task Checklist step 2 names only the governed class in its 「⛔ Except」 clause; the size class reaches a dev's own PR too. It defers to §7 by reference, and the file header's one-statement-per-rule principle argues against restating; a fold there is one line of re-flow if the seat wants it. 承接者: skills seat. - noted, not filed: the size class has no Prime Directive of its own (it is a ruling, not a directive); a numbered home would be a new directive beside #14 / #15 — a separate decision, not taken here. ## 维护者速读(草稿) - **改了什么**:`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](https://claude.ai/code/session_01BTeBejoPUvRHN8WdAJC6oF)_ Co-authored-by: os-dev <elon@objectstack.ai> Co-authored-by: Claude <noreply@anthropic.com>
1 parent 9a2e715 commit 8f42b17

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

‎AGENTS.md‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -492,12 +492,12 @@ Even inside your own worktree, operate defensively:
492492
re-verification, done by the platform, race-free. **Arm only what is already green
493493
and accepted.**
494494

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

502502
**Green means the gate-carrying jobs' `conclusion` is `success`** — not "no failure
503503
yet"; `in_progress` is not a pass. Arming a red PR does not queue it, it hides it:

0 commit comments

Comments
 (0)