docs(agents): the comment rule exempts a verbatim maintainer ruling preserved as a quotation block - #18315
docs(agents): the comment rule exempts a verbatim maintainer ruling preserved as a quotation block#18315claude[bot] wants to merge 2 commits into
Conversation
…reserved as a quotation block AGENTS.md's comment rule gains one closed exemption beside the reporting one: a verbatim maintainer ruling preserved as a quotation block. The sentence lands in place in the Commit message sentence group at the 1075-line ceiling; the restated clause about the pair staying model-free is the payment (the group's first sentence and the pre-push hook already say it), and every line stays within the 120-byte width rule. No probe in the tree reads prose for model identifiers: the pre-push gate judges the trailer value only, the Served-tier readers judge one token, the agent-model gate reads frontmatter pins, and the H64 row keys on session ids. So no probe changes. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HZfg2AwVX191qCizp88gQr
…ents-md-quotation-exemption
Contract reviewServed-tier: Reviewing seat: ① Derived judgments
② Semver levelNot applicable — nothing published moves; ③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
维护者速读(终稿)— PR #18315 / #18092改了什么:AGENTS.md 第 442–444 行的评论规则加一句闭合豁免——「逐字保存为引用块的维护者裁决」不算违规;席位自己在正文里写的型号仍算违规(第一句未动)。措辞照总监席裁决 A 的原文;行数 1075 不变,代价是删掉了一句重复的「the pair stays model-free」(第 440、442 行已各说一遍)。 为什么没有改探针:dev 逐个测过仓内所有可能读型号的代码——commit trailer 门、pre-push hook、agent 定义 要你做的:审 PR #18315 的措辞与位置(裁决说了由你在 review 时改),同意即 APPROVE;之后由本席按裁定 C 落地。若你想把「原话照抄不译」四字也写进句子,需要把 AGENTS.md 上限抬 1 行(现 1075/1075),那是你的裁定。 其他:席位派发前提有两处被 dev 证伪(AGENTS.md 散文行也受 120 字节宽度限制;同段无可删行),已记入记录 5684207107。 Generated by Claude Code |
Fixes #18092
What this PR does
AGENTS.md's comment rule (the Commit message: sentence group, :440–:444) gains the one closed exemption ruled on the card, in place, at the 1075-line ceiling. No probe changes, because none reads prose for model identifiers (measured below). The diff is four lines ofAGENTS.mdand nothing else.Landing: this is the rules layer, so this PR is a draft and stays one until an authorized APPROVED review; the owning seat lands it afterwards. Per ruling C on #17971, no seat readies, queues or arms it, and this dev requests no reviewer.
skip-changeset: nothing published moves.The ruling (comment 5682890409, letter A, quoted verbatim and untranslated)
The sentence (before → after,
AGENTS.md:440–:444)Before (five lines, 77 / 107 / 111 / 104 / 113 bytes):
After (five lines, 77 / 115 / 116 / 119 / 110 bytes; :440 byte-identical, :441–:444 reflowed within the same five lines):
The exemption phrase is the ruling's own wording. The maintainer edits wording and placement at review — nothing here is polished beyond the ruling.
Why in place, and what paid for it (the breach the dispatch asked me to stop on)
The dispatch's route was "extend :443–:444 in place; a long line is legal there (14 lines already exceed 120 chars)". Measured:
pnpm check:pm-skill-ratchetapplies a 120-byte width rule to every ceilinged file,AGENTS.mdincluded, and the 14 over-width lines are all table rows or the one blockquote — structurally exempt classes. A prose line over 120 bytes goes red (lengthVerdict, silent on pass). So the sentence had to fit five lines of at most 120 bytes each. Byte math (greedy wrap, code spans as atoms): the group's usable capacity is 77 + 4×120 minus wrap loss; every wording that also kept the clause "the pair stays model-free" and the 「原话照抄不译」 parenthetical needed a sixth line (the tightest such wording overflowed by exactly the 27-byte parenthetical). No line in the paragraph says nothing the new sentence does not, so the "paid line in the same paragraph" route had no candidate.What paid: the deletion of the restated clause "the pair stays model-free;" — :440 already says the commit "ends with the model-free trailer pair" and :442 says "the pre-push hook refuses a model identifier in that pair", so the clause restates the sentence group's own first sentence and its hook. Content deletion is the ratchet's only legal currency; no line was folded to buy one (line count 1075 → 1075, and the reflow of :441–:444 frees nothing). The 「原话照抄不译」 act-name is carried here and on the card rather than in the sentence; the maintainer may prefer it in the sentence, in which case the ceiling needs a ruled +1 (the ratchet's
CEILINGSentry forAGENTS.mdhas precedent for a ruled raise) — that is the maintainer's call, not this dev's.The probes — measured; none reads prose for model identifiers, so none changes
scripts/check-commit-card-trailers.mjs(:848 iterates four id literals in its self-test)MODEL_ID_FORMon the trailer value.githooks/pre-pushscripts/check-agent-model-declared.mjsmodel:key of.claude/agents/*.md; amodel:mention inside description prose is pinned as NOT a declarationscripts/pm/check-clause2-carriers.mjs(isModelIdentifierToken)Served-tier:token of a review-of-record comment; header: 「What a seat writes AFTER the token is its argument, which this file does not read」scripts/pm/check-governed-queue-guard.mjsServed-tier:token through the clause-2 predicatescripts/pm/check-half-states.mjsH64session_id (h64SpeaksAbout= seat signature present AND no session id)scripts/pm/check-half-states.mjsH65 (merged fromorigin/mainat10a7b9faduring this PR).claude/hooks/*,packages/lint/scripts/*,.github/workflows/*.claude/skills/pm-dispatch/**and.claude/agents/**for 型号 / 探针So the ruling's probe half has no in-tree target: the seat's own ad-hoc greps were the only "型号探针", and they are not repository code. A self-test case "a quotation block carrying an identifier is not counted; a seat-prose identifier still is" has nothing to attach to without inventing a new prose scanner, which would be scope the card does not carry.
Quotation form (measured on the protocol and the live seat posts)
The protocol names the act as 裁决引文照抄不译 (
.claude/skills/pm-dispatch/SKILL.md:100;references/core-rules.md:26) andAGENTS.mdCommunication says 「引用中文裁决时保持原文、不翻译」. On the live posts, every identifier-carrying preserved ruling is a 「…」 corner-bracket span inside prose labelled 原话照抄不译 / 逐字 / verbatim — #6015 L128 and L130, #6021 L24, L34 and L136 — and zero are Markdown blockquotes (> …); the 47 blockquote lines in #6015 are the seat's own correction notes, #6021 and #7623 carry none. The ratchet's own exemption classes already recognise both shapes as verbatim maintainer rulings (quotation= a multi-line 「…」/『…』 ruling;blockquote= 「Every blockquote in this corpus is a verbatim maintainer ruling」). The sentence pins the ruling's letter, "a quotation block", and this PR pins no narrower form in code because no code reads one.Verification
b671f83bbynode scripts/pm/dispatch-gates.mjs --commands(14 families, identical to the derivation ondc3d1c16):check-closing-keyword-parity(+--self-test),check-comment-mask-corpus,check:agent-test-spelling,check:docs-audit-scope,check:driver-memory-census,check:nul-bytes,check:pm-governed-merges,check:pm-governed-prose,check:pm-skill-id-lint,check:pm-skill-ratchet,check:refd-timer-probe,check:required-contexts,check:watch-hint-literal— all exit 0;--ranreconciliation: 「14 derived famil(ies) accounted for — 14 run, 0 NOT-MEASURED」.pnpm check:pm-skill-ratchet: 「AGENTS.md is 1075 lines (ceiling 1075; headroom 0)」, no width offender;check:pm-skill-id-lint: 27 files clean;node scripts/check-self-test-wired.mjs: exit 0. The batterycheck:pm-dispatch-gateswas not derived and was not run; no.mjswas touched, so no ESLint run is owed.dc3d1c16, whoseAGENTS.mdblob98e7cd4ais the merge commit's blob too): base blob7c7a5eeerestored withgit restore --source=BASE(on-disk hash proven equal) → the sentence count reads 0 and the restated clause reads 1, ratchet exit 0 at 1075 lines; HEAD blob restored withgit checkout HEAD -- AGENTS.md(hash proven equal),git diff HEADandgit status --porcelainboth empty; restore trap on EXIT/INT/TERM. On HEAD the sentence count reads 1 and the restated clause reads 0.Acceptance notes
AGENTS.mdis false under the ratchet's width rule; the 14 over-width lines are table rows and one blockquote. 承接者: the skills seat's nextAGENTS.mddispatch reads thelengthVerdictexemption classes before choosing "extend in place".origin/mainmoved once under this branch (feat(pm): the half-state patrol reads the tier a triage round artefact names #18311,scripts/pm/check-half-states.mjsonly); merged in, never rebased; the union was re-run on the merge commit.维护者速读(草稿)
改了什么:
AGENTS.md的评论规则句组(:440–:444)从「唯一豁免是 REPORTING」改为「两条豁免」:harness 写入的Co-Authored-Bytrailer(REPORTING:不申报为偏差;已落地历史不改写)与逐字保存为引用块的维护者裁决。行数 1075 → 1075,每行 ≤120 字节。为什么改:你在 #18092 批准了 A:座位贴按制度把你的裁决原话照抄不译,原话里若带型号,转抄不算违规;席位自己写的型号仍算。探针半边:仓库里没有任何脚本按型号扫描散文(逐一实测列在正文表格),所以没有探针要改。
风险与代价(含回滚):代价是删掉了「the pair stays model-free;」这句重述(句组首句与 pre-push hook 已各说一次),以及豁免句里没放 「原话照抄不译」 这个名字(字节装不下;若你要放进去,需要你裁一次上限 +1)。回滚 = revert 这一个提交,无发布物。
席位意见:(留空,席位定稿)
你要做的:审阅措辞与位置(你可直接改),若同意则给 APPROVED,由 skills 席落地;不同意「删重述句」的付账方式,则改裁「上限 +1」或指一行删除。
Generated by Claude Code