Skip to content

PM corpus audit (maintainer-directed): classify every instruction line — keep / duplicate / demote / delete — then rewrite and re-lock every ratchet #13597

Closed

Description

@zhuangjianguo

Anchor card for the maintainer-directed corpus audit. Filed by the skills lane seat (session session_01EXxTW8mvPBhoHxmyPZ63de), PM loop round 5.

Mandate (verbatim, 2026-08-31, chat)

「最近我也感觉项目经理越来越笨,是不是胡乱写的文字太多了,要不要完整的认真重新整理一下,哪些是关键条款,哪些应该删除。」 — GO given as 「做」.

Companion rulings the same hour: 「你的工作不应该是不把issue 全收,还需要重点审核skills 改进值不值」 (reject authority — the value gate) · 「13580 B(荐」 (first construct removal under this posture: duty ⑦'s reader half).

Thesis

#12911: rule accretion degrades execution — every marginal instruction line taxes every future turn of every seat; construct removal (#11901 precedent) held where added rules kept failing. This audit executes that thesis corpus-wide instead of card-by-card.

Scope (measured at origin/main 9c120f030)

file lines
.claude/skills/pm-dispatch/SKILL.md 947 (→960 when PR #13505 lands)
.claude/skills/pm-dispatch/references/ (dispatch-runbook 271 · platform-readings 314 · review-checklist 84 · contract-review 48 · decision-analysis 46 · lanes/* · state-machine · compile-surfaces · the rest) ≈1,900
.claude/agents/os-dev.md 466
AGENTS.md 1,162
CLAUDE.md 86
total ≈4,500

Phases

  1. Phase 1 — zero-edit classification (this seat, in progress). Every passage classified: KEY (binding; changes a specific decision) / DUPLICATE (same rule stated elsewhere — one anchor survives) / DEMOTABLE (true but decision-neutral: narrative, justification, history) / DELETE (methodology prose, stale, superseded). Each row carries a measured justification, not taste. Posted as comments on this card, file by file. ⛔ No edits in this phase.
  2. Phase 2 — maintainer batch ruling on the classification table (决裁批 mechanism; director seat records verbatim rulings).
  3. Phase 3 — rewrite PRs per ruling, then every ratchet ceiling re-locked DOWN to the new counts in one pin PR (single writer on check-skill-line-ratchet.mjs, after PR docs(pm-dispatch): three maintainer-ruled standing rules + the Part-of bookkeeping-sentence warning #13505's serial chain clears).

Standing effects while this card is open

Refs: #12911 (thesis) · #11901 (construct-removal precedent) · #13304 (first construct removal executed) · #13484 / #13506 (first value-gate rejections).

Generated by Claude Code

Activity

  1. zhuangjianguo commented on Aug 31, 2026

    @zhuangjianguo
    CollaboratorAuthor

    Phase 1 — method and inventory, locked before any classification

    Classification unit: the section/passage (heading-to-heading), not the line — Phase-2 rulings must be executable as block edits. Each row: file · span (:a–b at the pinned ref) · unit name · class (KEY / DUPLICATE / DEMOTABLE / DELETE) · measured justification.

    What "measured justification" must contain, per class:

    • KEY — the specific decision the text changes, and the incident/card that created it. A KEY row that can name neither gets demoted on sight.
    • DUPLICATE — the surviving anchor's exact location (file:span). The runbook's own charter (its :1–4) already rules the direction: principles live in SKILL.md, references carry only 增量 (原话/参数/模板/步骤) — so a principle restated in a reference is DUPLICATE by charter, and a parameter restated in SKILL.md duplicates the reference.
    • DEMOTABLE — why the text is decision-neutral: narrative of how a rule was learned, justification prose, history. The rule survives in one line; the story stays on its card. Target spelling = rule + card number.
    • DELETE — what superseded it, or the measurement showing it can no longer fire (retired constructs, conditions that no longer exist).

    Pinned ref for all spans: origin/main 9c120f030 (this seat holds a clean read-only worktree of it). Classification order — smallest blast-radius first to calibrate the method, hottest files last so the method is stable where it matters most:

    1. references/dispatch-runbook.md — 271 (265 once the [finding] The standing ⑦ reader-count method is calibrated on the EASIEST key in its population — measured unusable for 104 of 121 columns, so its "no zero-reader keys" is a false green #13304 retirement lands) · 18 sections
    2. references/contract-review.md — 48
    3. references/decision-analysis.md — 46
    4. references/review-checklist.md — 84
    5. references/platform-readings.md — 314 (+ the parked family branch 71b4005bb as input)
    6. references/lanes/* (director.md 77 · skills.md · siblings)
    7. remaining references (state-machine, compile-surfaces, …)
    8. .claude/agents/os-dev.md — 466
    9. SKILL.md — 947 (960 after PR docs(pm-dispatch): three maintainer-ruled standing rules + the Part-of bookkeeping-sentence warning #13505) — largest, and every reference row cross-checks against it, so it accretes evidence from rounds 1–8 before its own pass
    10. AGENTS.md — 1,162 · CLAUDE.md — 86 — repo-wide audience, so their rows carry the most care

    Inputs already queued into their rows: the ⑦ reader-half retirement (ruled, in flight) · platform-readings A/B/C (family disposition comment 5473081532) · #13417's one funded line (contract-review row) · the SKILL.md:758 pre-hang contradiction (#13557 — correction class, flows regardless of the freeze) · held raises #13052-A / #12980-A-FLOOR.

    First classification comment (dispatch-runbook + contract-review together) lands at the next check-in.


    Generated by Claude Code

  2. zhuangjianguo commented on Aug 31, 2026

    @zhuangjianguo
    CollaboratorAuthor

    Phase 1 · Table 1 — references/dispatch-runbook.md (271 @ 9c120f030) + references/contract-review.md (48)

    Both files verified byte-identical from the pinned ref through today's refs (measured by the #13603 and #13618 flights). Classes: KEY (binding, changes a decision) / DUP (anchor elsewhere) / DEM (true but decision-neutral — demote to a card pointer) / DEL (superseded/retired). One row per section; justification one line; ruleable per row-ID in Phase 2.

    X0 · CROSS-CUTTING — provenance-quote policy (biggest single lever)

    The corpus quotes maintainer rulings verbatim inline (出处逐字). These two files alone: ~15 quote-block lines (runbook ~9 blocks, contract-review ~6 inline). Options: A keep all · B date + ruling-card pointer only (saves ~15–20 lines here, projected 60–100 corpus-wide) · C keep the quote ONLY where the quote itself is the operative test (e.g. 「不预挂」, 「可复审增量」), pointer elsewhere — 荐 C. ⚠️ B/C precondition: ruling carriers must survive — #12887 AND #13278 both measured 404 (deleted) today, so B/C requires quotes archived somewhere durable first (this card, or the 决裁批 records). A ruling on X0 multiplies every table below.

    dispatch-runbook.md — rows R1–R19

    row span unit verdict one-line justification
    R1 :1–4 charter KEY the file's own dedup law; every DUP verdict leans on it
    R2 :6–13 取卡全序补遗 KEY 6 / DEM 2 级序理由 (「p0 是显式裁定…卡龄防饿死」) is justification; sweep timing, 误标处理, seed pointer stay
    R3 :15–23 紧急直诊+半状态排序 KEY 7 / DEM 2 starvation mechanism-prose demotes; the classification test (活过一个 sweep 周期 = 缺陷) and P0 channel stay
    R4 :25–44 发现分诊轮 KEY 16 / DEM 2 (+quotes→X0) 双态混编 incident tail demotes; state-transition law, 首触定级, ≤5/批, 打包五条, 积压告警 all KEY
    R5 :46–54 同趟写侧打包 KEY 8 / DEM 1 anchor/member/写序/rollback all operative; 出处 sentence rides X0
    R6 :55–67 座位贴活性巡查 KEY 10 / DEM 2 scan face + own-output-only + >24h same-stroke demote stay; 先例 line demotes
    R7 :69–85 读数成本三则 KEY 13 / DEM 3 templates, recipes, 外包禁区, rate_limit stay; measured-cost narratives demote
    R8 :87–97 两级盘点 KEY 10 / DEM 1 three-read recipe + totalCount + sweep INCOMPLETE stay; token-cost line demotes
    R9 :99–117 落卡与裁决记录 KEY 17 / DEM 2 鲜度门, 机械两旗, re-check 两条硬线 (repo-wide load-bearing), 行文纪律 stay; incident tails demote
    R10 :119–129 结论当轮执行 KEY 9 / DEM 2 record-and-walk-away ban + inbox rule stay; 当日实测 story demotes
    R11 :131–157 云卡四课 KEY 20 / DEM 5 :133–137 适用面论证 is pure why-block; the 4 rules + 监控/not-found trap stay
    R12 :159–163 subagent ff-only KEY 5 one command + loud-fail rationale in one clause — already minimal
    R13 :165–178 接手协议 KEY 14 five increments all operative (three-state, UNVERIFIED, no-second-worktree, re-run, claims-untouched)
    R14 :180–186 跨车道接手 KEY 7 shape criterion + spec carve-out + one-item-only
    R15 :188–194 停摆梯度 KEY 7 posture sentence + 3-step + timer-won't-wake-self
    R16 :196–200 重放去重 KEY 5 identity triple + record-and-done
    R17 :202–207 直接验收兜底 KEY 6 per-file diff check + race protection
    R18 :209–260 派发词构造 KEY 44 / DEM 8 every recipe/order stays; persuasion tails demote (绿收据句, 错在搬运, 晚一轮=返工, 防的不是做错…)
    R19 :262–271 ⑦ 方法 DEL 6 (ruled) / KEY 3 reader half retired per 「13580 B(荐」 — PR #13603 awaiting approval; heading + surface half stay

    Runbook projection: 271 → ~235 (DEL 6 + DEM ~30, quotes kept) → ~222 under X0-C. Zero operative rules lost; every DEM row's story survives on its named card.

    contract-review.md — rows C1–C6

    row span unit verdict one-line justification
    C1 :1–3 charter KEY same dedup law
    C2 :5–15 载体纪律 KEY 11 双载体同笔, 不预挂, 载体不迁移 (recorded non-goal — blocks re-proposals), 重挂前查裁决 (#13412's other half) — all operative
    C3 :17–23 复审资格 KEY 6 / DEM ~1 machine-read tier + 放宽路径 stay; the 「审的是低档实现者…非自身产物」 justification clause is the file's one demotable tail
    C4 :24–29 归属 KEY 6 sole-producer, PASS/FAIL flows, 决策箱 never-自裁, director-fallback boundary
    C5 :30–34 清标即落地 KEY 5 landing chain + governed carve-outs; ⚠️ #13417's one funded line lands HERE when funded
    C6 :36–48 降档保险丝 KEY 13 per-session fuse, subagent passthrough trap, 转录核验 verbatim-or-void, no-quota-exemption

    Verdict: healthy file — 46 of 48 lines KEY. The audit is not a deletion rubber stamp; this file is what the charter demands (dense operative increments). Recommendation: fund #13417's PR-trace line from X0-C compression (~2 lines freed here) or the C3 tail; re-lock at 47–48.

    Calibration note

    The method discriminates in both directions on its first two files: bloat where it is (runbook rationale tails, ~36 lines), density where it is (contract-review, ~2). Next table (per the locked order): decision-analysis.md (46) + review-checklist.md (84).


    Generated by Claude Code

  3. zhuangjianguo commented on Aug 31, 2026

    @zhuangjianguo
    CollaboratorAuthor

    Phase 1 · Table 2 — references/decision-analysis.md (46) + references/review-checklist.md (84)

    Ref note: classified at 09b0d7b95 (post-PR-#13505, which sharpened review-checklist's Part-of rows IN PLACE — that is the text Phase 3 would rewrite; both line counts unchanged vs the Table-1 pin).

    decision-analysis.md — rows D1–D4

    row span unit verdict one-line justification
    D1 :1–10 charter + 适用面 KEY 9 / DEM 1 boundary rules all operative; the 「与四维中文化同款先例」 precedent citation is trivia
    D2 :12–16 决裁批流程 KEY 5 batch ≤5 · 批序 · 一行式回批 · 裁后原子执行 · 收件箱零收工 — pure protocol
    D3 :18–33 六项写法 KEY 16 the contrast pairs (「写三家公司住一个数据库…,不写 organization_id…」) ARE the operative definition of 从业务角度 — the 2026-08-20 ruling is about exactly them; calibration, not decoration
    D4 :35–46 四棱固定形状 KEY 12 machine marker + four axes + 「tong y 4」推荐序 — all binding

    Verdict: healthy — 45/46 KEY. Re-lock at 45–46.

    review-checklist.md — rows V1–V3

    row span unit verdict one-line justification
    V1 whole file the ~20 review criteria KEY ~81 this file is the enforcement point most other rules point AT; nearly every criterion is a judging test plus its measured counter-case in one line — exactly the charter shape
    V2 :33–34 the 2026-08-24 three-leg-rebuild incident narrative DEM ~1.5 the criterion (:29–32) stands alone; the story lives on its card
    V3 :26 tail + :72–73 「比不合更糟」 rationale + the 停条件 incident parenthetical DEM ~1.5 both criteria survive intact without their persuasion tails

    Verdict: healthy — ~81/84 KEY. Re-lock at 81–84.

    Interim signal, 4 of ~16 files in

    The references layer is measuring DENSE: contract-review 46/48 · decision-analysis 45/46 · review-checklist ~81/84 KEY, against dispatch-runbook's ~36 demotable lines. Working projection: the corpus's real reducible mass sits in the two big files (SKILL.md 960 · AGENTS.md 1,162), in X0 (the quote policy), and in the runbook's narrative tails — i.e. the audit's yield is likely one big-file diet + one policy ruling + one runbook trim, not a hundred small cuts. Tables 3–6 test that projection; if a big file also measures dense, I will say so rather than force the thesis.

    Next: Table 3 — platform-readings 314 (+ the parked family branch as input) · lanes/* · state-machine · compile-surfaces · remaining references.


    Generated by Claude Code

  4. zhuangjianguo commented on Aug 31, 2026

    @zhuangjianguo
    CollaboratorAuthor

    Audit state at shift wind-down (maintainer: 「当前任务处理完,合并后就可以下班了」)

    Phase 1 progress: Tables 1+2 posted (comments 5473436585 · 5474149499) — dispatch-runbook (271→~235/~222 projected, DEL 6 landed via PR #13603) · contract-review certified 46/48 KEY · decision-analysis 45/46 · review-checklist ~81/84. Interim signal stands: the references layer is dense; the reducible mass is projected in SKILL.md (960) · AGENTS.md (1,162) · X0 (quote policy) · the runbook tails.

    Remaining for the next seat (resume state): Tables 3–6 in the locked order — platform-readings 314 (+ the parked family branch 71b4005bb as input) · lanes/* · state-machine · compile-surfaces · remaining references → os-dev.md 466 → SKILL.md 960 → AGENTS.md 1,162 + CLAUDE.md 86. A clean read-only worktree for measurement stood at /home/user/objectstack-gates-ro (container-lifetime only — re-create from origin/main if gone). Standing effects (value gate, prose-card freeze, parked escalations, HELD raises #13052-A/#12980-A) all remain in force per this card's body; open maintainer decisions X0 and #13605 remain in the decision box.


    Generated by Claude Code

  5. huangyiirene commented on Aug 31, 2026

    @huangyiirene
    Collaborator

    Phase-3 rider recorded (from the #13588 flight, 2026-08-31): SKILL.md's clause-② gate paragraph routes readers to references/contract-review.md for three named topics (载体纪律、资格与归属、降档保险丝) — applicability is not one of them, so a seat consulting only the 双肢 paragraph will not see the newly ruled published-skills/** CONTENT-limb face (批 #12, landed in PR #13746). The fix is a one-word/one-line touch to that routing sentence, which sits under SKILL.md's line ratchet and fable mandate — exactly Phase-3 territory (ratchet re-locks, check-skill-line-ratchet.mjs last). Fold it there rather than paying a standalone SKILL.md PR for one line. ⛔ No state change to this card; Tables 3–6 remain the resume point.


    Generated by Claude Code

  6. os-justin commented on Sep 1, 2026

    @os-justin
    Collaborator

    Phase-3 rider recorded (from #14081's completed census, 2026-09-01): the close-reason discipline line — state_reason must match the recorded close reason (withdrawal/not-done ⇒ not_planned, duplicate ⇒ duplicate + duplicate_of) — folds into the Phase-2/3 rewrite wherever the close/disposition duties land, instead of paying a standalone ceiling raise. Sizing evidence on #14081: 4 confirmed mislabels in 5,029 completed closes (0.080%), the silent 44% sampled safe, no gate possible (the discriminating signal is whether the work exists — unreadable by machine at close time). The 4 historical corrections are already executed; only the discipline line rides here. ⛔ No state change to this card; Tables 3–6 remain the resume point.


    Generated by Claude Code

  7. os-litant commented on Sep 2, 2026

    @os-litant
    Contributor

    Phase 1 · Table 4 — .claude/agents/os-dev.md + CLAUDE.md

    Posted by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1) on behalf of the contract-tier classification auditor; zero-edit; pinned ref stated inside the table.

    #13597 Phase-1 classification — Table 4: .claude/agents/os-dev.md + CLAUDE.md

    Pinned ref origin/main = a59f78d (both files byte-identical at the checkout's HEAD a39b02a; spans cite a59f78d). Method: CORPUS-METHOD.md (section = classification unit; verdict KEY / DUP / DEM / DEL; mixed rows carry the line split). DUP oracles read whole: .claude/skills/pm-dispatch/SKILL.md (984) and AGENTS.md (1162). Counts below are text lines; headings, blank lines and code-fence lines are structure (os-dev.md: 423 text + 46 structure = 469; CLAUDE.md: 78 text + 8 structure = 86). PR #14229 (claude/issue-12800-osdev-contract-visibility, head b5caded, open, review requested from hotlong, net 14/14 on os-dev.md only) is noted on every row it touches. Every script or gate a row leans on was checked to exist at a59f78d; every parameter a row asserts about a sibling repo was checked live (objectui 67dadd6). No row met the DEL bar (a measurement that the construct can no longer fire).

    .claude/agents/os-dev.md — rows O1–O62

    row span unit verdict one-line justification
    O1 :1–10 frontmatter (name / description / model: opus) KEY description is the dispatch-trigger text; the model: pin is gate-enforced (check:agent-model-declared → scripts/check-agent-model-declared.mjs) — 10 non-prose lines.
    O2 :12–17 model-pin HTML comment KEY 3 / DEM 3 SKILL.md:611 names this comment the authority for the resolution order + allowlist-fallback trap (KEY :14–17); the batched-death incident :12–13 is narrative (DEM). PR #14229: 6→2 lines, re-homing the detail to the gate script header — but that header (:14–15) already points back to os-dev.md "for the full order and both adjacent traps" ⇒ circular after merge, and SKILL.md:611's pointer goes stale (Phase-3 rider).
    O3 :19–22 role + deliverable ("deliver twice, GitHub first", plain-text os-dev-report marker) KEY anchor for the marker rule SKILL.md:667–673 consumes; restated intra-file at :351–353 (the DUP is there, not here).
    O4 :24–28 charter (AGENTS.md binding; what this file carries; lesson spelling) KEY 2 / DUP 3 "AGENTS.md binding; file = principles / lookup data / clauses hooks cannot enforce" is the scope rule (KEY); the lesson-spelling rule (no issue ids; rulings keep date+quote) restates SKILL.md:23–27 / AGENTS.md:10–15 and is gate-enforced (check:pm-skill-id-lint, EXTRA_FILES includes os-dev.md) ⇒ one sentence by its own charter. :25 and :27 are broken wraps (2 lines carrying 3 characters).
    O5 :30–41 Rule 1 Worktree-first + empty-branch push probe + scratchpad isolation KEY 7 / DUP 3 worktree command + hook mention (:32–35) restate AGENTS.md:232–244 / CLAUDE.md:23–42 (DUP); dev increments are KEY: -issue-<n> naming, BASE=$(git rev-parse HEAD) (AGENTS.md:409 says pin it; this is where it is set), empty-branch push as write-route probe (403 ⇒ blocked, no retry loop), per-issue scratchpad (measured overwrite).
    O6 :42–47 Rule 2 assignee belongs to PM; PR state you did not set KEY 3 / DUP 3 :42–44 is the dev-side inversion of claim-first — SKILL.md:527 cites "os-dev 规则 2 同句" as its anchor (KEY); :44–47 restates AGENTS.md:465–474 near-verbatim (DUP).
    O7 :48–74 Rule 3 scope = this issue; out-of-scope findings (search-first, channel probe, attach, labels, bounded in-place fix) KEY 15 / DUP 6 / DEM 6 KEY: scope, search-first, attach to queued parent / Blocked-by:, label by kind (SKILL.md:966–968 cites "os-dev 规则 3 同句"), mcp_calls report field, the four-condition in-place-fix exemption; DUP: :50–58 channel probe / 403 shape / no-wide-scan / zero-quota payload read restate rest-channel.md:11–12,51 + platform-readings.md:97–99,132–134 (the row cites both); DEM: rationales ("并行 dev 看不见彼此…", "GraphQL 池是舰队最紧的桶", "严重度两个方向都不可靠", "不点名的顺手修就是不可复核的蔓延"). :67/:69/:73 are broken wraps.
    O8 :75–76 Rule 4 never releases/ / force-push / push main / merge; changeset KEY 2-line digest already at pointer density; anchors AGENTS.md:511, :719, :1111–1112 and CLAUDE.md:73–83 — kept because SKILL.md:622–623 relies on os-dev.md carrying the releases ban so dispatch prompts can drop it.
    O9 :77–78 Rule 5 Contract-first KEY PD#12 (AGENTS.md:245–263) in 2 lines plus the dev's exit (needs_decision) — the routing is the increment.
    O10 :79–81 Rule 6 issue body is a lead; premise_still_valid KEY drives the report field SKILL.md:650–651 / :713 / :965 consume; "false-premise report with no PR is a first-class deliverable" is the decision.
    O11 :83–91 Resource 1 shared verify lock KEY 4 / DEM 3 entry-point command, never hand-roll flock, read the VERDICT line not $? (KEY); the 5-waiter / 12-of-12 measurement (:87–88) and the guarantee list (:88–89) are narrative / script-header detail — the script prints its boundary at acquisition and in VERDICT (os-verify-lock.sh:7,142,1370) ⇒ charter says one sentence + pointer. PR #14229 ADDS 3 lines here (non-guarantee clause) to the list this row marks DEM.
    O12 :92 Resource 2 heap cap KEY one parameter line.
    O13 :93–96 Resource 3 targeted runs; vitest bare -- trap KEY AGENTS.md:150–151 points HERE as the anchor ("see os-dev.md → Toolchain traps").
    O14 :97–100 Resource 4 cleanup; never worktree remove --force KEY 2 / DEM 2 rule + "read git status there first" (KEY); :98–100 why (DEM).
    O15 :101–102 Resource 5 never kill by process name KEY PID discipline is the increment over AGENTS.md:566–570 (servers only).
    O16 :103–109 Resource 6 foreground pipeline; ~10-min cap (2026-08-20 measured) KEY 5 / DEM 2 the cap (exit 143) changes what goes in the foreground (KEY); :107–109 is cross-ref prose to rule 1 / 本地验证范围 / ablation trap (DEM). First of four sites of "never background-watch then stop" (O16, O17, O48, O54).
    O17 :110–118 Resource 7 queue ≠ stall; OS_VERIFY_LOCK_SLOT; ~20 min ⇒ narrow or blocked + --status KEY 7 / DEM 2 slot var and --status verified live (os-verify-lock.sh:7,1370,1496); "实测:这么做的每个 agent 都无通知停摆" and "沉默是唯一错误答案" (DEM). Mechanism anchor for O54's queue clause.
    O18 :120–126 Trap: --workspace-concurrency placement; pnpm 10 install rejects it KEY measured parameter, both halves decision-bearing.
    O19 :127–128 Trap: build deps before tests KEY anchor for a rule restated at :149–150 (list step, kept) and :212–214 (O32 DUP).
    O20 :129–130 Trap: overrides live in pnpm-workspace.yaml KEY one fact.
    O21 :131–132 Trap: OSV override upper bound KEY one decision rule.
    O22 :133–137 Trap: fake engine delete() + overwrite an existing double KEY gate-specific parameter (check:engine-double-contract) + "overwrite, don't pin new" decision.
    O23 :138–141 Trap: zero-match --filter exits 0; objectui type-check KEY objectui spelling verified live (package.json:35 at 67dadd6); pipe half cross-refs O29.
    O24 :142–144 Trap: Chromium preinstalled; never playwright install KEY path parameter + egress-policy fact.
    O25 :146–165 Local verification ①–⑤; dispatch-gates.mjs with no hand-fed paths; script's own test suite KEY 13 / DEM 5 — ⚠️ carries frozen input ①–⑤, "no hand git diff list", "re-derive on actual paths", "a gate script's own tests are owed" (KEY); :155–159 sibling-PR incident and :164–165 hijacked-pin incident (DEM). Frozen input #13300 (check:generated's printed not-run list → hard obligation; pm:on-hold, Restart-when: this row's Phase-2 ruling; triage already named "one sentence or not-planned close if disposition 1 closes the mechanical hole").
    O26 :167–171 script answers only for its own tree; --repo KEY 3 / DEM 2 rule + --repo parameter (KEY); sibling-repo explanation (DEM).
    O27 :173–180 repo-wide scans belong to CI; proven narrowing = three evidences KEY 6 / DEM 2 the three evidences are the test (KEY); "缺一件它只是没跑" said twice (DEM).
    O28 :182–186 union after the final commit; cite rev-parse --short HEAD KEY 3 / DEM 2 rule + re-run the ratchet family after any push (KEY); why (DEM).
    O29 :188–196 gate results: redirect-then-capture; | head breaks PIPESTATUS KEY 6 / DEM 3 the immune spelling + the two measured false-greens forbid a specific wrong fix (pipefail) (KEY); :196 "已判定不可机械化" and repetition (DEM).
    O30 :198–203 two NOT MEASURED classes (typecheck excludes tests; MODULE_NOT_FOUND) KEY 5 / DEM 1 --listFiles check + class list (KEY); "(实测一次…0 命中)" (DEM).
    O31 :205–210 standard-clauses intro: prompt carries increments; this file wins on conflict KEY conflict rule; SKILL.md:624 is the PM-side mirror — one per reader.
    O32 :212–214 build before judging anything KEY 1 / DUP 2 the false-green direction is the increment; stale-dist-lies restates AGENTS.md:766–769 and the command restates O19.
    O33 :215–217 consumer-sweep filter direction; report must state direction KEY parameter + report requirement.
    O34 :218–219 cross-package type change ⇒ reverse verification KEY one test.
    O35 :220–225 packages/spec anchor rewrite; MERGE-state trap; os-regen-merge.sh KEY 4 / DUP 2 never revert / hand-edit authorable-surface.base.json; baseRev lag is info (KEY); :224–225 MERGE-commit deferral + script restate AGENTS.md:624–634 (DUP). Secondary carrier of frozen input #13300 (generated-artefact family).
    O36 :226–234 family rule: worktree isolates tree+HEAD only; no stash; origin/main moves; $BASE KEY 3 / DUP 6 :226–231 restate AGENTS.md:376–393 + :395–414 and CLAUDE.md:44–71 (DUP); git reset --soft origin/main staging others' merged files (:232–234) is NOT in AGENTS.md (which covers checkout origin/main -- <paths>) — KEY. PR #14229: :229–231 → 1 pointer line (−2).
    O37 :235–242 reverse verification: commit first; ablation commit-then-mutate KEY 4 / DUP 4 :235–239 restate AGENTS.md:421–428 (DUP); :239–242 "restore leg points at HEAD ⇒ HEAD must hold the fix" is the ablation increment (KEY).
    O38 :243–257 exit-0-did-nothing; four hard lines ①–④ KEY 8 / DUP 2 / DEM 5 ①–④ rules (KEY); ①'s index mechanism (:246–248) restates AGENTS.md:430–442 (DUP); "每条都对应一次实测过的", the trap-cwd incident, "trap 触发只证明 shell 跑了一个函数" (DEM). Correction-class note: ② leads with git diff HEAD empty, which AGENTS.md:434–439 measures as blind to a polluted index — safe only because ① mandates checkout HEAD --; the residue line should lead with git status --porcelain.
    O39 :258–261 rejection tests assert the code+status envelope KEY 3 / DEM 1 SKILL.md:649 copies this clause into dispatch prompts on hit ⇒ anchor here; "实测两个方向都致盲" (DEM).
    O40 :262–265 key vs value reachability criterion KEY two distinct facts, one test each.
    O41 :266–270 fixture triage: three dispositions; scan by consumption radius KEY each disposition changes the edit.
    O42 :271–274 reverse verification: set the expected direction first KEY three directions + "report what you observed".
    O43 :275–299 ablation: resolution-path condition; per-leg rebuild + dist preflight; on-disk evidence; trap hard line KEY 14 / DEM 11 condition + KNOWN_UNALIASED_TEST_IMPORTS ledger, per-leg sequence + ablation-dist-preflight.mjs (--absent), evidence ≠ editor exit code, anchored grep -c, "confirmation failed ⇒ the ablation did not run, say so", trap … EXIT INT TERM (KEY); dogfood / plugin-email / plugin-auth incidents (:278–281), asymmetry rationale (:281–284), "同一下午两起" (:291–292), "复制到上一层" (:296–297), SIGTERM incident (:298–299) (DEM). Densest incident block in the file.
    O44 :301–307 DoD items 1–4 (acceptance, tests, changeset, push + retry) KEY five one-liners; SKILL.md:622 names os-dev.md the home of "push 重试".
    O45 :308–319 Draft PR; Fixes / Part of; never Fixes a decision-box card; negated closing keywords; squash trailers; English; footer KEY 11 / DUP 1 keyword list, separate-source parsing and the squash rule are platform parameters (KEY); :317 English + quote-untranslated → AGENTS.md:19–36, already pointer form (DUP 1).
    O46 :320–325 skills/** diff: two readings + budget (2026-08-21 quote) KEY 4 / X0 2 the dev half (whole-file + whole-package before/after; overflow ⇒ blocked, never raise) is the increment over SKILL.md:639–643 / :717–720 (PM half); the quote at :323–324 is not the operative test (the budget number is) ⇒ X0-C drops it to date + pointer.
    O47 :326–338 skip-changeset per repo: criterion + closed list; label at PR open; additive write + read-back; objectui never KEY 6 / DUP 3 / DEM 4 — ⚠️ FROZEN criterion vs closed list (:326–328), label-at-open, objectui prohibition (:336–338; phantom pinned live by objectui scripts/__tests__/ci-cd-pipeline-doc.test.ts:235) (KEY); RMW + compare read-back (:329–335) restates SKILL.md:143–149 + rest-channel.md:37 (DUP); size-labeler incident, "幻影门标签", session-gate aside (DEM). Carries frozen inputs #13432 (pm:on-hold, Restart-when: this row) and #13680 (pm:queue; triage 2026-08-31: one sentence — closed-and-exhaustive vs illustrative-under-the-criterion — plus three-text alignment with the label description and dispatch-gates.mjs:7152 "write one unless this card is docs-only", verified). Classified only; the Phase-2 ruling on this row discharges both.
    O48 :339–346 report at draft-PR time; no CI polling; per-card exception; contract overrides PR subscription KEY 7 / DEM 1 2026-08-10 / 2026-08-11 rulings already date + pointer (option-B spelling); "实测:空转轮询烧掉…" (DEM). Third site of the no-wait prohibition.
    O49 :347 tear down everything you started KEY one line.
    O50 :349–360 report lands twice; marker; sanitizer eats <…>; read-back KEY 3 / DUP 5 / DEM 2 :351–353 restate O3 (intra-file DUP 3); :353–355 sanitizer mechanism restates AGENTS.md:493–499 — the file's own :458–459 declares that clause the single home ("此处不再复制窄版") yet this is the narrow copy (DUP 2); read-back to the tail, PR-body read-back, placeholder spelling (KEY); container-restart incident + "评论才是比你活得久的那份" (DEM).
    O51 :362–365 background subprocess / monitor lifetime KEY 3 / DEM 1 rule (KEY); six-notification incident (DEM).
    O52 :366–368 monitor fired ⇒ re-read real state first KEY decision rule.
    O53 :369–373 plan for not being heard; never read silence as success; deliver from transcript KEY 4 / DEM 1 dev side of SKILL.md:675–681's probe loop (KEY); "(这种死法每一次都可零工作损失地恢复…)" (DEM).
    O54 :374–390 never end a turn waiting; two terminal states; declared narrowing; one shape; mechanical self-check KEY 8 / DUP 3 / DEM 6 two terminal states, declared-narrowing acceptance, foreground blocking wait, final-message-shape self-check (:385–386) (KEY); the queue clause restates O17 and the monitor clause restates O51/O16 (DUP); :382–385 "agent stopped to comply… 一波五个 dev 里两个" and :387–390 prose self-check restating the mechanical one (DEM). Fourth restatement of one prohibition (O16, O17, O48, O54); its construct is the single line at :385–386.
    O55 :392–399 when to stop: needs_decision + open_questions; four-axes header KEY 4 / locked 2 stop criteria (KEY); :398–399 is the start anchor of check:skill-frame-sync COPIES internal-dev — not editable without the gate.
    O56 :401–413 four axes (business need / long-term / AI-proof / startup scope) DUP 13 (construct-locked) content = SKILL.md:875–890 (and twice more in skills/objectstack-pm-dispatch/SKILL.md); held isomorphic by check:skill-frame-sync ⇒ not a block edit: Phase 2 must rule on retiring internal-dev from COPIES (pointer to SKILL.md) — the copy taxes every dispatch for the rare needs_decision path. :411–412 already paraphrases the 2026-08-04 ruling without a quote (option-B).
    O57 :415–420 ≥50 % long-term weight (2026-09-01 quote); conflict ordering; main broken ⇒ blocked KEY 2 / DUP 4 / X0 2 :415–419 restate SKILL.md:892–903 with the same quote (DUP; :415 is the frame's binding anchor); :419–420 blocked triggers are KEY but misfiled under this heading (belong with O44/O48).
    O58 :422–439 report JSON shape KEY the authoritative copy — SKILL.md:962–963 forbids a second ("两份拷贝已实测漂移").
    O59 :441–446 rework / premise_still_valid: false semantics; template is a tool KEY 5 / DEM 1 field semantics (KEY); "按模板硬造比留白更糟,因为…" rationale + broken wrap :445 (DEM).
    O60 :448–456 control chars as escaped spellings; check:nul-bytes; self-scan grep KEY 4 / DEM 3 no AGENTS.md anchor exists (grep: none) ⇒ this is the only prose home beside the gate header (KEY, incl. the pointer "论证在脚本头部"); NUL-in-skill-file incident :452–453, "事故源不挑字节值" (DEM).
    O61 :458–464 sanitizer → AGENTS.md pointer; footer two forms KEY 2 / DUP 4 :458–459 is the correct pointer form; the :461–464 block is AGENTS.md:478–481 verbatim.
    O62 :466–469 2026-08-26 footer PATCH measurement DUP 4 AGENTS.md:483–487 carries the same measurement plus the comment-append half. PR #14229 → 2-line pointer.

    Totals (text lines): KEY 282 (+2 quote lines kept under X0-A, +2 gate-locked frame anchors) · DUP 68 (13 of them construct-locked in O56) · DEM 69 · DEL 0.

    Projection: 469 → ~350 (DEL 0 + DUP 68 + DEM 69, residues ≈ 8 DEM rule-lines + 8 DUP pointer lines, quotes kept) → ~347 under X0-C. If Phase 2 keeps the four-copy frame construct, effective DUP is 55 → ~363. Six near-empty broken-wrap lines (:25, :27, :67, :69, :73, :445) are a density defect outside the count (a densification that buys no content — allowed under the 2026-08-29 ruling — not funding).

    Verdict: dense where it carries dev-only parameters (Toolchain traps, 本地验证范围, the assertion / fixture / reverse-verification rows, the report JSON — 282 KEY of 423 text lines); bloat sits in four measured places: (1) ~20 lines restating AGENTS.md's git-family clauses (O36/O37/O38/O61/O62; PR #14229 already removes 6 of them); (2) one prohibition ("never end a turn waiting") written at four sites, O54's 17 lines being the fourth while its construct is one line (:385–386); (3) incident narrative in the ablation row (O43: 11 of 25) and the findings row (O7); (4) the gate-locked four-axes copy (O56/O57, 19 lines).

    X0 (os-dev.md): 2 verbatim quote blocks / 4 quote-bearing lines — :323–324 (2026-08-21) and :415–416 (2026-09-01); dated pointer-only rulings already in option-B spelling at :317, :339, :344, :411–412. PR #14229 head (b5caded) adds a third block (2026-08-17 + 2026-08-29, :323–327, 2 quote-bearing lines) — the same two rulings SKILL.md:975 already carries verbatim.

    CLAUDE.md — rows C1–C6

    row span unit verdict one-line justification
    C1 :1–6 header: AGENTS.md is the source of truth; the four-rule excerpt charter KEY the charter that licenses the four blocks; measured in this session: the harness injected CLAUDE.md into context and did not inject AGENTS.md ⇒ this is the only instruction file every seat is guaranteed to have read.
    C2 :8–21 ⛔ Claim the issue before you write any code EXCERPT (sanctioned) — DUP with AGENTS.md:450–463 12 text lines, near-verbatim with the anchor (same incident sentence); not a Prime Directive but the header says "four rules", not "four directives" ⇒ no charter drift. Interplay: for the dev seat this block is un-applied on every turn by os-dev.md:42–43 (assignee belongs to the PM).
    C3 :23–42 ⛔ Worktree-first (AGENTS.md PD#11) EXCERPT (sanctioned) — DUP with AGENTS.md:232–244 content-faithful, but the excerpt is LONGER than its anchor (20 vs 13 lines: fenced command, hook list, "follow the rule because it's correct" ≈ "the rule still outranks the hook"); drops AGENTS.md:243–244 (stash / build cache not isolated) by design. Formatting expansion, not content drift.
    C4 :44–71 ⛔ Never git stash EXCERPT (drift ×2) — DUP with AGENTS.md:376–393 + :395–414 :60–64 = AGENTS.md:389–393 verbatim; :66–71 ≈ :383–387. Drift (a): :50 "AGENTS.md §9 carries the full rule" — §9 (AGENTS.md:571–593) is "refresh build state after pulling main"; the refs/remotes rule lives in the unnumbered preamble at :395–414 ⇒ wrong pointer. Drift (b): :55–56 carries incident detail ("cost both of them their in-flight changes, recoverable only as unreachable commits") absent from the anchor (:382 "it has really happened, mid reverse-verification") ⇒ narrative grew in the copy (DEM 2).
    C5 :73–83 ⛔ Never edit content/docs/releases/ in a code PR EXCERPT (drift ×1) — DUP with AGENTS.md:719 the rule is one line; :78 "~18 merges to main in a working day" is a statistic the anchor does not carry (:719 "three PRs raced the same table inside one afternoon") ⇒ diverged measurement. Fourth home of this rule (AGENTS.md:719, os-dev.md:75, SKILL.md:622–623).
    C6 :85–86 pointer back to AGENTS.md KEY 2 lines.

    Projection: 86 → 86 as sanctioned excerpts (two corrections — the §9 pointer and the ~18 statistic — and −2 DEM at :55–56 ⇒ ~84) → ~30 if Phase 2 rules the excerpt form down to rule + hook/escape + pointer (four blocks × ~5 + header/footer 8); X0-C: no change.

    Verdict: not bloat by its own charter — but the charter is the question: it is the one file injected into every session of every seat (measured here), so its 78 excerpt lines are the most expensive lines in the corpus per turn, and two of the four hand-copied blocks have already drifted from their anchor (a stale §9 pointer; a statistic with no source) — the failure mode AGENTS.md:831–833 names for hand-written lists, and one the corpus already solves by construct for another block (check-published-list-mirrors, AGENTS.md:118–119).

    X0 (CLAUDE.md): 0 quote-bearing lines.

    Interim signal

    os-dev.md discriminates both ways: two-thirds of its text is dev-only parameters with a named consumer (AGENTS.md:150–151 and SKILL.md:527/:611/:622/:649/:962 all point INTO it), and the bloat is exactly the two shapes the maintainer's thesis predicts — restated git-family rules whose home is AGENTS.md/CLAUDE.md, and a prohibition that "kept failing" (never end a turn waiting) and was re-written at four sites (O16/O17/O48/O54) instead of being left to its one-line construct (:385–386, final message = report JSON or blocked). Three items ride on Phase 2's ruling for this file. (i) PR #14229 is net-0 by lines and its funding is the right shape (three verbatim duplicates deleted — O2, O36, O62 — all confirmed here), but its payload re-introduces the pattern: the new DoD bullet quotes the 2026-08-17/2026-08-29 ratchet rulings verbatim although SKILL.md:975 already carries both verbatim (a third quote block, X0 +2), and its model-pin pointer now points at a script header that points back at os-dev.md (circular; SKILL.md:611 also goes stale). Both are Phase-3 riders, not reasons to hold the PR — but the file is a protocol-semantics face (SKILL.md:589–591, 2026-08-20 「接受你的建议」: fable audits, does not build) and triage has banned two PRs on one governed file (「⛔ 不要分两次改同一个受管文件」), so Phase-2's os-dev.md block edits must land as one fable-tier, human-merged PR after #14229, at which point the shrink-only ceiling lowers for free. (ii) The frozen inputs sit on two rows: O47 carries #13432 + #13680, which converge on one sentence (closed-and-exhaustive vs illustrative-under-the-criterion) plus aligning three texts that currently disagree (the clause, the label description, dispatch-gates.mjs:7152 "write one unless this card is docs-only" — verified); O25 carries #13300, whose own triage already named the construct route (not-planned if the derivation closes the hole). Ruling O25/O47 discharges all three Restart-whens. (iii) The four-axes frame copy (O56/O57, 19 lines) is DUP by content but locked by check:skill-frame-sync; the decision is a construct decision — retire internal-dev from COPIES and leave a pointer — and gate ③ (construct over prose) plus gate ① (does it change a decision on this turn?) both say the copy is paid on every dispatch for a path taken only on needs_decision. CLAUDE.md is the sharper finding: it is the only instruction file the harness injects (AGENTS.md is read by instruction, and only if the seat obeys os-dev.md:24 / CLAUDE.md:3), so every one of its 78 excerpt lines is the most expensive line in the corpus, and hand-copying has already produced a wrong pointer (§9), a statistic absent from the source (~18/day), and a narrative that grew in the copy — either the four blocks shrink to rule + hook + pointer (nothing left to drift, ~30 lines) or a mirror gate holds them equal to their AGENTS.md spans the way check-published-list-mirrors already holds one AGENTS.md block; keeping 86 hand-synced lines is the one option with a measured failure. One live measurement from this audit supports keeping a clause rather than cutting one: FETCH_HEAD in the shared checkout moved under me between two commands (AGENTS.md:402–408, verbatim the "fails by absence" shape) — the diff was re-keyed on the literal PR head sha.


    Generated by Claude Code

  8. os-litant commented on Sep 2, 2026

    @os-litant
    Contributor

    Phase 1 · Table 5 — .claude/skills/pm-dispatch/SKILL.md

    Posted by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1) on behalf of the contract-tier classification auditor; zero-edit; pinned ref stated inside the table.

    .claude/skills/pm-dispatch/SKILL.md — rows K1–K79

    Pinned ref origin/main a59f78d (checkout HEAD a39b02a; git diff a39b02a a59f78d on SKILL.md, references/**, os-dev.md is empty, so spans are valid at both). 984 lines; ceiling 1005; ratchet shrink-only. PR #14230 (claude/issue-13766-ruling-encodings, tip 70a48ae, pending merge) touches only this file: +2 lines after L403 (row K36) and +3 lines after L874 (row K67) → 989 on merge. Read as DUP oracle: all 20 references/**/*.md (1577 lines) and .claude/agents/os-dev.md (469 lines). Classes: KEY / DUP (anchor = surviving copy) / DEM (rule survives as one line + pointer) / DEL (superseded). Headings and blank lines are counted in KEY; verbatim-quote lines are counted inside the row they sit in and reported once under X0. Rows partition L1–984 exactly.

    row span unit verdict one-line justification
    K1 :1–14 frontmatter KEY 14 skill registration + description; nothing decision-neutral
    K2 :15–28 title, PM seat, charter paragraph KEY 14 charter (principles/state-machine/lookup tables only; no issue ids; date+quote; one line per mechanical guard) is the file's own value gate; X0 3 (L23–25 two 2026-08-12 quotes)
    K3 :29–45 /pm-dispatch args table KEY 17 lookup table; every row binds an arg to a seat posture/default
    K4 :46–51 role-param meaning, probe-first, self-exit KEY 6 decides first action of a fire and the idle cost bound
    K5 :52–74 分诊席直连自排 + 开轮互斥读法 KEY 14 / DUP 3 / DEM 6 KEY: triage=direct opus session, ≤55-min self-schedule, the four mutual-exclusion readings, maintainer-summon arbitration, write open-round marker; DUP L67–69 收班简报=释放标记/滞后标题不阻塞 restates seat-post-protocol.md:45–53; DEM L57–58 cache-TTL rationale, L65–66 4th-read immunity + 「16 分钟前…被读作清」 incident, L71–72 safety-direction rationale; X0 2 (L53–54)
    K6 :75–88 全体座位的不变量 KEY 14 four invariants each change a decision (state only on GitHub; PM writes no files except authorized .claude/ PR; English + three Chinese channels; claim-first/AGENTS.md wins); X0 1 (L84)
    K7 :89–109 状态模型 table KEY 21 the state machine itself (charter-mandated lookup table); L98 Unlock-action clause is an in-line copy of state-machine.md:32–34 (zero line yield); X0 1 in-line (L101)
    K8 :110–122 标签纪律 ①: hold vs decision, close-not-planned, type:Bug 3 branches, opportunistic restart KEY 11 / DEM 2 KEY: 待做 vs 已做, no-exit ⇒ close not planned (2026-08-16), Bug never hold-closed by a seat, restart must name trigger files + PM read of H17 index at dispatch (consumption lives only here; state-machine.md:21–23 carries the producer side); DEM L112–113 「挂错招来…无法合法退出」 + L118 「卡即记录、重开免费」 justification; X0 1 (L115)
    K9 :123–130 关闭即摘 / Blocked-by: three duties / label-has-reader KEY 7 / DUP 1 KEY: strip pm:* on close; one read feeds unlock/fan-out/re-verify on merged ref; "label exists iff named reader"; DUP L129–130 pm:blocking = derived cache restates table row L100
    K10 :131–137 cross-repo unlock = 「消费方可安装」 KEY 5 / DEM 2 decides on-hold vs re-queue for package-consuming repos (hotcrm.md:48–49 is the lane instance); DEM L133–134 「回队烧掉的派发注定 premise-false…hold 评论预写唤醒后形状」
    K11 :138–142 状态变更不过夜 / waiting is state / provenance triple on delegated closes KEY 5 three rules each name the failure they block (half-state, memory-only wait, indistinguishable mis-close)
    K12 :143–149 label write = read-modify-write + compare read-back KEY 3 / DUP 4 KEY: label write is a hard 4-step with diff-vs-union read-back, gate labels both directions; DUP the ①–④ recipe and "concurrent label stripped by whole-set PUT" is rest-channel.md:34–37 + platform-readings.md:175–178 (and os-dev.md:331–336 dev side)
    K13 :150–154 no angle-bracket placeholders in PM-written GitHub text KEY 2 / DUP 3 KEY: fragile comments (dispatch/ruling) read back after post; DUP the sanitizer shape rule's home is AGENTS.md:493 「GitHub mutates body BYTES」 (os-dev.md:458–459 and platform-readings.md:244–247 both refuse to copy it; this is the copy)
    K14 :155–169 平台读数纪律: principle, origin/main, zero-hit counter-check, timer text KEY 15 each bullet is a test (command output not API field; origin/main not shared tree; zero-hit needs positive control; idempotent-first timer text)
    K15 :170–184 gate-job conclusion, dev death ≠ maintainer stop, dedup before filing, sweep premise on current main, opposite-fact during ruling KEY 14 / DUP 1 DUP L170 completed: success per-job reading restates platform-readings.md:33–35 + review-checklist.md:39–45; rest are seat decisions (no door without restart condition; pin reversal not deletion; no promote/revert in same PR)
    K16 :185–205 多仓协调 preamble: repo classes, new-repo checklist, objectui 3-stream, 域×仓 seats, seam ownership KEY 17 / DUP 2 / DEM 2 KEY: 2026-08-26 two repo classes, 2026-08-21 domain:ui split, seam ⇒ landing repo's seat; DUP L200–202 split-trigger pre-registration restates rule 4 L227–228; DEM L195–196 per-repo facts (objectos no changeset/no packages/queue live) belong in a lane fact table; X0 1 (L198)
    K17 :206–214 rule 1 issue lives in landing repo KEY 9 file-at-destination test + rebuild-transfer recipe (platform-readings.md:114–115 points here as the home) + seam-card needs named reader
    K18 :215–220 rule 2 contract-first split, pin lag KEY 4 / DUP 2 DUP L217 「本地 merge-base 在浅检出上给假非祖先 → REST compare」 is platform-readings.md:209–212 (读数五坑)
    K19 :221–222 rule 3 follow-up cards not memory KEY 2 names the producer seat of the consumer-repo card
    K20 :223–232 rule 4 vertical split, triage singleton, direct-command channel, 代扫 KEY 8 / DUP 1 / DEL 1 DUP L227–228 split-trigger duplicates L200–202 (anchor there, the roster rule); DEL L228–229 「⛔ 借调已删除」 tombstone of a retired mechanism (dispatch-runbook.md:197 cites it as a tombstone; drop both halves together)
    K21 :233–235 rule 5 one board KEY 3 invariant L77–79 already points here; this is the home
    K22 :236–247 跨座位转移: every cross-seat request is work → card KEY 10 / DEM 2 KEY: card in target lane, requester flips itself blocked same write, unreachable repo ⇒ seam card; DEM L241–242 「评论是加速器不是记录 —— 散文对…全不可见」 + L246 rationale
    K23 :248–254 域车道 anchoring rule KEY 7 the labelling test (package the fix lands in, never title words)
    K24 :255–264 domain table KEY 10 charter lookup table and the lane files' declared authority (skills.md:10, spec.md:28 point here); rows engine/services carry two in-line retired-label tombstones whose rationale is already the ensure-pm-labels.sh header (index L982) and X0 2 in-line quotes (L257, L260) — zero line yield, density only
    K25 :265–271 table maintenance, seat roster index, 单一生产者 KEY 5 / DUP 2 DUP L269–270 "domain:* only from triage; unlabelled never claimed" is the 3rd statement (anchor rule 4 L222–224; also L190, L381, L957)
    K26 :272–278 cross-domain exception path KEY 7 the only path that runs the targeted in-flight check; defines its scope
    K27 :279–281 merge queue is shared serial resource KEY 3 decides who fixes a flake (finder fixes or files)
    K28 :282–302 座位贴协议 KEY 19 / DEM 2 KEY: post=seat, four segments, single writer, job description versioned in lanes/*.md (2026-08-19), read-side boundary (2026-08-12), 换班报告零建议 (2026-08-12) with the three admissible report classes; DEM L290 「逐任手抄正是本条要退役的失效模式」 + L302 「防错归门禁,判断归档位」; X0 2 (L289, L296)
    K29 :303–315 Epic 子树车道 KEY 13 delegation signal pair, candidate exclusion, three-way derivative split with its test; seat-post-protocol.md:80–88 carries only the wrap-up/zombie steps
    K30 :316–330 分诊 intro, by-repo-class duties, 代裁档位硬门, tool-loading KEY 11 / DUP 2 / DEM 2 DUP L319–321 duties-by-repo-class restates K16 L190–195; DEM L327–329 self-test numbers 「空转轮 ~12 万 token,~8 万是这张门票」 (keep the ≤4万 criterion, drop the story); X0 1 (L322, operative tier-gate quote)
    K31 :331–339 two-tier inventory KEY 6 / DEM 3 KEY: hourly since window anchored on last 收班简报, daily full reconciliation, layer chosen by fire time, brief names the layer; DEM L333–335 zero-new-state rationale + L337–338 「从不更新的卡不入窗是设计」 (cost figures live in dispatch-runbook.md:87–98); X0 1 (L332)
    K32 :340–367 Backlog sweep (disjunction, run-to-empty, ordering, >15 threshold, urgent triage, pin-chain sweep) KEY 16 / DUP 2 / DEM 10 DUP L350–353 run-to-empty / no per-round budget / resume from breakpoint is the same clause as the finding round L399–405 (anchor there — it carries the 2026-08-25 quote; the text itself says 「与发现箱同构」); DEM L344–345 half-labelled-by-design rationale, L351–352 unit-cost prose, L353–354 ordering rationale, L356–359 threshold rationale + 「实测 40 分钟到 13 张 ≈ 稳态四倍」 incident; KEY keeps the ①②③ disjunction, exclusions, oldest-first under backlog, >15 ⇒ batch mode, 紧急卡 fable 直接分诊 (2026-08-13), pin-chain fallback
    K33 :368–377 分类动作 + repair-first + inbox duty KEY 10 three-way classification with each class's test; repair-first requires the double read (platform-readings.md:235–243 holds the recipe)
    K34 :378–385 native issue type Bug/Feature/Task KEY 6 / DEM 2 KEY: triage is sole producer, mechanical boundary test, Bug needs repro to enter queue, no backfill; DEM L383–384 「读者三个」 justification
    K35 :386–394 routing is triage's technical judgement KEY 9 never escalate "which repo"; parent never dispatched; shadow-check three outcomes; producer-where question
    K36 :395–410 发现分诊轮 KEY 12 / DUP 2 / DEM 2 KEY: finding = awaiting first grading, ≤5 per family batch (2026-08-25), grading happens here, skills-lane self-triage exception, retriage each fire; DUP L396–399 Restart-when hit handling restates state-machine.md:18–25 + dispatch-runbook.md:32–36; DEM L398 「十几条一行判据逐小时跑是浪费」 rationale + L406–407 「域分批与 sweep 打包晋级五条照用」 pointer already resolved in runbook:40–43; X0 2 (L401–402). PR #14230 adds 2 lines after L403 (fire mid-round continues the round, 2026-08-31) — a KEY rule landing inside the block whose run-to-empty clause is already stated twice (K32/K36): encode once
    K37 :411–417 发版板 binary criterion + four blocker classes KEY 7 the test 「不修它,当前 RC 能不能发?」 and split inheritance rule; ops cadence lives in seat-post-protocol.md:90–104
    K38 :418–461 高置信决策卡的分诊代裁 (charter quote, 人工地板, 代裁车道, 置信门, 一类自裁门, 回翻, 请示纪律) KEY 41 / DUP 3 KEY: the floor list, mechanical boundary test, five-condition confidence gate, class-1 self-adjudication three tests (2026-08-29; director.md:51–52 defers here), reversal clause, batching ≤5 (2026-08-25); DUP L449–450 tier-fuse skip restates L321–324/L770–771, L459 veto-window restates L847–848, L457–458 「不弹给维护者」 restates L914–920; X0 8 (L419–424 six-line charter quote, L441, L455) — the six-line quote is provenance, the rules L426–440 already encode it
    K39 :462–466 执行座位: H-row first criterion KEY 5 no new dispatch until anchor rows handled (hotcrm.md:27–30 records the no-anchor lane exception)
    K40 :467–491 候选: whole-lane read, decision re-read, stale-premise three faces KEY 16 / DUP 1 / DEM 8 KEY: single-label read + local intersect, candidate definition, re-read rulings verbatim into dispatch, three-face check (action/card-ref/work-item against the tree); DUP L470–471 recipe = platform-readings.md:172–173; DEM L471–472 「结构性盲区」, L476–478 why race re-read can't answer "already ruled", L487–488 「实测:一张三项卡…烧掉一整轮」, L489–490 「派发令即自带过时探测器…赔一次 agent 运行」
    K41 :492–514 批次独立性, family dispatch five gates, fold-or-serial, exemption four rules, re-pricing, simple-blocker takeover KEY 21 / DEM 2 all operative (five gates each with the failure they bar; runbook:192–198 carries only the takeover quote/补遗); DEM L503–504 「不答而默认串行是漏答…翻倍付账」; X0 1 (L501)
    K42 :515–523 selection total order KEY 6 / DEM 2 / DEL 1 KEY: p0 > blocking > target > Bug > rest, age tie-break, fan-out computed not labelled, unlock-moment humility; DEM L518–519 「零逐卡维护」 rationale + L521–522 pointer prose; DEL L519–520 「与 P1–P5 已拒不矛盾(拒的是手工维护的渐变档)」 — tombstone of a proposal that exists nowhere else in the corpus (L412 carries the same rejection in-line)
    K43 :524–529 认领 intro: identity semantics KEY 6 assignee answers "someone", comment answers "who"; assignee field owned by PM (os-dev.md:42–43 is the dev-side same sentence)
    K44 :530–547 atomic pair steps 1–2 + Claim template KEY 11 / DUP 1 / DEM 6 KEY: assign + label swap one write, comment mandatory, Claim: first line is the machine predicate (2026-08-11), `Clause-②: yes
    K45 :548–557 serial-constraints last line, sibling read-coupling, file surface, family fold claim, rate-limit KEY 10 each sentence changes what goes in the claim (pin-asserts-sibling ⇒ pre-register flip trigger; per-member claim + per-member Fixes)
    K46 :558–563 race re-read, yield = handoff KEY 6 timestamp is sole arbiter; yielding hands over readings
    K47 :564–577 stale-claim reclaim KEY 11 / DEM 3 KEY: >~24h suspect, death leg = referencing PR merged (not closes-list), liveness gate before touching worktree, WIP commit + INCOMPLETE AND UNREVIEWED, message boundary, never reclaim live branch, mis-hit remedy; DEM L566 「部分交付 PR 特意写 Refs…同漏的形状」, L570–571 「零提交…不是死亡的证据」 rationale
    K48 :578–581 派发 one-liner KEY 4 Agent call shape
    K49 :582–613 模型分档 KEY 26 / DUP 2 / DEM 4 KEY: floor/default/ceiling with their tests, clause ① protocol-semantic surface ⇒ fable (2026-08-20 narrowing; references-only ⇒ opus build + fable review), clause ② ⇒ fable (2026-08-12), negative boundary (2026-08-28), card restatement is still clause ②, two downgrade exits, explicit per-dispatch tier; DUP L609–610 「明确不变:spec 文本面照旧 sonnet/opus…」 restates the tiers just given, L594 compensation restates ACCEPT ① L732–733; DEM L591 「fable 当审计师用,不当施工队用」, L601–602 「两独立席位曾同错读,故明写」, L604–606 席位档策略 (self-described 「本行只记策略」, tiers set elsewhere); X0 5 (L583–584, L591, L598, L607). Note: L589/L597 (and L361) hard-code claude-fable-5 while L770–771 rules 「档位单源,⛔ 本文…不写模型名」 — internal contradiction, correction class
    K50 :614–652 派发词原则 (8 bullets) KEY 31 / DUP 6 / DEM 2 KEY: no body paste + dev self-check, three zones, strip hook/os-dev clauses, machine-only final report, lists from tree, harm claims need readings, dev's own claim comment, skills/** budget (2026-08-21), premise-first; DUP L624 「无条件条款只住角色文件,冲突时它胜」 = os-dev.md:207–211, L644–646 file-surface/churn/overlap four warnings = dispatch-runbook.md:247–255 verbatim, L648–649 conditional clauses' assertion content = runbook:256–268, L650 「issue 正文是线索不是规格」 = os-dev.md:79; DEM L633 「实测:一句会截断数据的栅栏…每一列其实都是空」, L638 「实测:…三者皆无」; X0 2 (L642–643, also duplicated in os-dev.md:323–324)
    K51 :653–659 资源与后端 KEY 6 / DEL 1 KEY: S+M ⇒ subagent, cloud reserved list, archive duty cloud-only (runbook:145–148 holds the argument); DEL L654 「覆盖 2026-08-10 的「M 及以上默认云卡」」 names a superseded ruling — the 2026-08-12 ruling supersedes it by itself
    K52 :660–664 云卡: create_session, not-reachable by design, takeover KEY 5 three rulings (2026-08-07/08-11) each forbid a re-test
    K53 :665–674 收集: GitHub is the truth source, two marker spellings KEY 9 / DEM 1 KEY: comment first, both spellings equivalent, absence proves nothing; DEM L671–672 「被 sanitizer 清洗…不可区分,误读即…」 rationale
    K54 :675–682 探活 five points KEY 8 timer re-arm first, ≤45/60–70 intervals, probe at ~45 min, remote output no exemption, positive evidence only
    K55 :683–688 45 min = probe threshold, three death grounds, lane baseline KEY 5 / DEM 1 DEM L683–684 「探针代价是一次消息;判死代价是…第二个 agent」 (cli.md:33–35 restates lane-side)
    K56 :689–700 失报与停摆 three principles KEY 11 / DEM 1 replay-identity, stall never self-heals, direct-acceptance fallback (a)(b)(c) — runbook:200–219 holds the gradients; DEM L694 「⛔ 不能写成…就可以不探」 meta
    K57 :701–721 复核骨架 KEY 15 / DUP 6 KEY: reviewer-of-record principle, one pointer per bullet, skills/** whole-package density question (L717–720; the only home — review-checklist has no such item); DUP the glosses L707–708, L710, L712, L714, L716 re-summarize review-checklist.md:6–19, 39–45, 54–67, 68–77, 78–84 respectively (each bullet already ends 「判据在 checklist」)
    K58 :722–726 判决 ACCEPT/REWORK/ESCALATE KEY 5 verdict shapes, ≤2 rework rounds, SendMessage continuation
    K59 :727–761 ACCEPT 路径分叉 (governed surface, 终局四件套, skills md-split, queue-only, all-checks-green) KEY 27 / DUP 4 / DEM 4 KEY: governed definition (2026-08-18), pinned-approval path + GOVERNED_APPROVERS single source (2026-08-27), request-review to both accounts, awaiting-human-merge line, mixed diff one hit ⇒ fork, skills md/non-md split (2026-08-26), entry = every check green; DUP L747–748 dedicated REST request-review endpoint = platform-readings.md:43–45, L748–749 「转 draft 与 disable 都做…ref 缺席只旁证」 = platform-readings.md:36–41; DEM L745–746 author-identity 422 workaround is a platform fact (belongs in platform-readings), L757–759 「实测:…main 红了约一小时」 incident; X0 9 lines carry quotes, 5 quote-dominant (L740–742 four-quote provenance chain for one rule, L750–751)
    K60 :762–795 入队与落地 (clause-② gate, regen, follow-to-MERGED, kick handling, C/D pointers) KEY 21 / DUP 12 / DEM 1 KEY: two-limb gate, CONTRACT_REVIEW_TIER single source, in-seat review 2026-08-31, carrier label named in English, signature ledger authority + only humans escalate; DUP L774–776 PASS/FAIL/external-chain-optional = contract-review.md:33–46, L777–779 carrier discipline/no pre-hang = contract-review.md:10–14, L781–782 regen trap pointer + L981 index row (guard already one line at L981), L783–786 follow-to-MERGED item list = landing-operations.md:24–56 headings, L791–793 four kick branches = platform-readings.md:67–72 + 221–223, L794–795 C/D content = landing-operations.md:65–78; DEM L768 「错误的 no 是记录在案、可审计的假申报」; queued correction-class item (~L758 pre-hang contradiction) not re-derived
    K61 :796–817 轮次报告与节奏 KEY 19 / DEM 3 KEY: report contents incl. 代裁清单/awaiting-merge/governed audit run/UNRECOGNISED rows, five health indicators, 波次收工点 ①② (2026-08-09); DEM L803 「实则可能是没人 grep」, L815–816 「/compact…①② 令任何压缩无损」 rationale; L800–802 governed-merges invocation also at L978 + director.md:63–65 (keep the run instruction, one line)
    K62 :818–826 停止条件与待命 KEY 8 / DEM 1 stop tests + standby posture; the five standby items are an index of their home sections (self-declared 「此处不另抄」) — DEM L822–825 half of the index glosses
    K63 :827–841 断粮与跨墙恢复 KEY 10 / DEM 5 KEY: wall signal is the failure itself, one-shot at reset else hourly cron (never send_later chain), delete cron after first success, playbook chains existing rules; DEM L829–830 the 出处 is a maintainer question not a ruling (X0 2), L835–837 send_later rationale 「是否被重试未实测…断在它存在的意义上」, L838 pointer
    K64 :842–851 escalation threshold KEY 10 the two escalation conditions + named non-escalating classes; X0 1 (L845)
    K65 :852–856 第三档 conditional ruling KEY 5 three-piece shape; ③ is the clause whose omission produces silent re-choice
    K66 :857–865 two meta-criteria (2026-08-07) KEY 9 sibling-branch inheritance with reason, governed side wins by default
    K67 :866–874 落卡/升级流程 ①②③ KEY 9 premise refresh with runnable re-check lines, anchor in issue, four-in-one ruling record (2026-08-13). PR #14230 adds 3 lines after L874 (ruling-record authority = director per-sitting ledger, 2026-08-31) — on arrival partially DUP with dispatch-runbook.md:107–109, which already encodes the same 2026-08-31 ledger ruling; one home
    K68 :875–891 four evaluation axes KEY 17 the framework copy that check:skill-frame-sync keeps in sync with os-dev.md:398–413 (not a restatement of the gate — the synced content); 不渐进 (2026-08-27) operative; X0 3 (L886, L888–889)
    K69 :892–903 recommendation order by pull (2026-08-27), long-term weight ≥50% (2026-09-01) KEY 10 / DUP 2 KEY: both rules are decision rules (decision-analysis.md:48–52 and os-dev.md:415–419 restate them — reference/dev side, Table 3/4); DUP L901–903 「安全/权限边界与破坏性难逆动作照旧恒交维护者」 + 「⛔ 权重是推荐规则不是授权规则」 restate L895 and L897 inside the same 12 lines; X0 2 (L893, L899 — L899 is the operative weight test)
    K70 :904–913 四棱卡面块 mandatory, no assign-push, business-angle pointer KEY 7 / DEL 1 / DEM 2 KEY: block at filing, 「⛔ 不 assign 推送」, four facets = four axes serialized; DEL L905–906 「摘要视图/批量决裁通道已退役,墓碑…见 director.md」 — tombstone whose home is director.md:49–50; DEM L907–908 the 2026-08-19 quote is the rationale for no-push (X0 2)
    K71 :914–929 决策通道优先序 (cards before popups) + 项目总监席 KEY 10 / DUP 3 / DEL 2 / DEM 1 KEY: card first, blocked card same write, AskUserQuestion only with ~30-min presence, director entry/four duties/no domain; DUP L924 「决裁半边自此由 skills 席移交本席…」 = director.md:72–74, L927 tier gate + 免档整理 = director.md:13–15, L920–921 duty list = director.md:31–68; DEL L925–926 the superseded 2026-08-26 ruling quoted in full (supersession recorded in director.md:70–74); DEM L914–915 maintainer report as 出处 (X0 1); X0 5 lines total (L915, L923, L924, L925–926)
    K72 :930–934 护栏 heading + PM writes no files / queue-only merges KEY 2 / DUP 3 L932–934 is the second copy of invariant L80–81 (says 「⛔ 不另抄第二份」 while being it) and of L754–755 queue-only
    K73 :935–938 releases are manual; unauthorized release = incident KEY 4 2026-08-07 ruling + 「机械通道的存在不构成授权」 — no other home in SKILL.md
    K74 :939–943 release-reminder discipline (2026-08-27) KEY 4 / DEM 1 decides when to speak; DEM L943 「与上条相组合 —— 本条管何时开口,上条管谁动手」; X0 2 (L939–940, operative quote)
    K75 :944–951 governed surfaces human-merged (three-ruling chain) + agent never approves KEY 3 / DUP 5 KEY L949–951 「agent 席位永不以任一账号对受管面 PR 提交批准 review」 + audit-and-rollback (only home; contract-review.md:38 echoes); DUP L944–948 the rule + 「细则单源见 ACCEPT 路径分叉」 = K59 L727–751 (X0 3 quote lines L945–947 ride on the duplicate)
    K76 :952–954 decisions belong to maintainer; never dispatch others'/decision cards DUP 3 third copy of L88 (assignee), L96 (needs-user-decision never dispatched), L432–440 (代裁 boundary)
    K77 :955–959 batch cap, disjoint surfaces, triage never claims, exec one lane, single producer KEY 1 / DUP 4 fourth copy of L41, L492, L224–226, L269–270 — bullet itself says 「⛔ 不另抄第二份」
    K78 :960–970 报告契约 PM-side consumption KEY 8 / DUP 3 KEY: pointer to os-dev.md 「终报消息」 (explicitly no second copy), needs_decision ⇒ open_questions non-empty, PM cross-reads parallel reports for twin cards; DUP L965 premise-false-is-legal = L713 + review-checklist.md:68–70 + os-dev.md:442–443, L966–968 out_of_scope filing rules = os-dev.md:48–66 (self-declared 「与 os-dev 规则 3 同句」)
    K79 :971–984 机械守卫索引 KEY 14 the charter's one-line-per-guard form; L975 ratchet row carries the two ratchet rulings (2026-08-17, 2026-08-29) in one physical line

    X0 (provenance-quote policy): 65 lines of SKILL.md carry a verbatim 「…」 maintainer quote (of 147 lines containing 「, the rest are section cross-references and quoted terms); ~35 of the 65 are quote-dominant lines (the rest are in-line fragments with zero line yield). Largest blocks: L419–424 (6, 代裁 charter), L739–742 (4, request-review chain), L945–947 (3, governed chain), L23–25 (3), L53–54, L401–402, L583–584, L750–751, L829–830, L888–889, L907–908, L925–926, L939–940 (2 each). Quotes that are themselves the operative test (keep under C): L322 (tier gate), L584 (sonnet floor/fable ceiling), L607 (fable exhausted ⇒ opus), L750–751 (md-file split), L888–889 (不渐进), L899 (≥50%), L939–940 (reminder rule) ≈ 8 lines. Under C the remaining quote-dominant lines in KEY rows yield ≈ −27 beyond DEL+DEM.

    Projection: 984 → ~905 (DEL 6 + DEM 83, quotes kept, ~10 survivor lines for rule+pointer spellings) → ~840 if the 83 DUP lines also collapse to pointers (~20 survivors; no reference edits needed — every anchor already exists) → ~815 under X0-C. PR #14230 (+5) lands on top of whichever figure is current; both encodings should land once (K36 run-to-empty block; K67 vs runbook:107–109).

    Verdict: dense core, accreted shell — the lookup tables (args, state, domain, guard index), invariants, anchoring rule, epic lane, model-tier clauses, claim/collect rules and the four axes are ≥90% KEY; the bloat sits in six places: (1) the 护栏 section (15 of 27 lines are the 2nd–4th copy of rules already in the file, each copy annotated 「⛔ 不另抄第二份」), (2) 复核/ACCEPT/入队 (22 DUP lines re-summarizing review-checklist, landing-operations, platform-readings and contract-review beside pointers to them), (3) Backlog sweep + finding round (run-to-empty clause encoded twice, 10 lines of threshold/cost rationale), (4) 候选 and 互斥读法 (17 lines of why-we-learned-it narrative and 「实测:」 tails), (5) the nine-line claim template (模板 = 增量, no reference carries it), and (6) provenance chains where one rule cites three or four quotes (governed merge, request-review, 代裁 charter). Two correction-class findings for Phase 2: literal claude-fable-5 at L361/L589/L597 contradicts the L770–771 「本文不写模型名」 single-source rule; the 借调 tombstone (L228–229) is cited by dispatch-runbook.md:197 and must go with its citer. id-lint: clean (only #<n>/#12 #34 … placeholders in the args table). Incident tails: 9 「实测:」 narratives ≈ 11 lines, all inside DEM counts above. Mechanical-guard restatements beyond the index: only os-regen (L780–782) and governed-merges (L800–802), ≤3 lines.

    Interim signal — ten largest reducible blocks (DUP+DEM+DEL lines inside the row): ① 护栏 L932–959 — 15 (all DUP; the section can become five pointer lines); ② 入队与落地 L762–795 — 13 (12 DUP vs contract-review/landing-operations/platform-readings); ③ Backlog sweep L340–367 — 12 (run-to-empty duplicate + threshold/cost rationale); ④ 复核骨架 L701–721 — 9 (glosses that re-summarize the checklist next to 「判据在 checklist」); ⑤ 候选 decision re-read / stale-premise L467–491 — 9 (8 DEM narrative + 1 recipe); ⑥ 开轮互斥读法 L52–74 — 9 (收班简报 rule restated from seat-post-protocol + 6 lines of design rationale/incident); ⑦ ACCEPT 路径分叉 L727–761 — 8 (platform facts + main-red incident; plus 5 quote-dominant lines under X0); ⑧ 派发词原则 L614–652 — 8 (6 DUP with runbook/os-dev verbatim clauses); ⑨ Claim template L530–547 — 7 (template relocation to runbook); ⑩ label-write recipe + angle-bracket copy L143–154 — 7 (rest-channel/platform-readings/AGENTS.md carry all three). Next in line: 总监席 L914–929 (6, incl. the superseded 2026-08-26 quote), 模型分档 L582–613 (6), 断粮 L827–841 (5), 代裁 charter quote L419–424 (6 under X0-C only).


    Generated by Claude Code

  9. os-litant commented on Sep 2, 2026

    @os-litant
    Contributor

    Phase 1 · Table 6 — AGENTS.md

    Posted by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1) on behalf of the contract-tier classification auditor; zero-edit; pinned ref stated inside the table.

    AGENTS.md — rows A1–A88

    Pinned ref origin/main = d63c8a2 (PR #14239 merged by the maintainer during this pass; a59f78d → d63c8a2 touched only AGENTS.md, 13/13, net 0 — the no-formatter clause is classified below as landed text). File = 1,162 lines (ratchet ceiling 1162, headroom 0 — scripts/pm/check-skill-line-ratchet.mjs:467). Spans are at d63c8a2. Audience: every seat (devs, PM seats, humans, Copilot). Unit = section/paragraph; mixed rows carry the line split. Blank/--- lines (166 measured) are structure and are not classified.

    Mechanical readers of this file (measured, so DEM rows can point at them): check-published-list-mirrors.mjs (block under heading ### A test that reads outside… ↔ RECOGNISED_PATH_SPELLINGS; wired lint.yml:3134–3135); check-governed-prose.mjs (region from "A governed surface is confirmed…" to "A version release is performed…", backtick spans only, both directions); check-required-contexts.mjs (AGENTS.md must name all six required contexts); check-agent-test-spelling.mjs (clears AGENTS.md's pnpm dev -- --fresh forms as population); check-skill-line-ratchet.mjs (1162 lines; max table-row 1,081 bytes, shrink-only); the four PreToolUse hooks enforce worktree-first / stash / tree-enum / governed-enqueue. No ADR index/list exists in this file (only PD#13's scripts/adr-anchors/ pointer; 134 ADRs on disk) — nothing to classify under that heading.

    row span unit verdict one-line justification
    A1 :1–6 Identity + precedence rule KEY 4 / DEM 1 Decision: AGENTS.md wins over every other instruction file incl. .claude/skills/** (:5–6); the "no Copilot mirror needed" sentence (:4–5) is a fact with no decision → 1 line.
    A2 :8 v5.0 project→environment notice DEL 1 Superseded by ADR-0006 (which the line itself cites, incl. the v4 addendum) made binding by PD#13; spec is at 17.2.0 — twelve majors past the rename; no row in this file depends on it.
    A3 :10–15 Charter (no issue-ids; rulings keep date+quote; hook/gate → one line, script header is authority) KEY 6 The file's own value gate, created by the 2026-08-12 ruling 「处理 issue 时犯的错应该总结成经验,保留 issue id没有意义」; :14–15 is the test every DEM row below applies.
    A4 :19–36 Communication (language split) KEY 7 / DEM 5 Decision: 中文 in chat, English on GitHub, quotes untranslated (:24–26, :28 quote, :30, :32–33); DEM: the preamble (:21–22), the self-referential "上面那段引用即是一例" (:31) and the merged-rule failure story (:35–36) change nothing → 1 line. Quote :28 counted under X0.
    A5 :42–49 Build & Test command block KEY 8 Lookup table every seat runs; README.md:228–241 carries the human copy (same commands) — kept here as the agent entry point.
    A6 :51–58 No formatter of record (landed by PR #14239) KEY 3 / DEM 5 Decision: pnpm lint/eslint is the only style authority, never prettier --write (:51–53, incl. the one-clause why: double-quote default rewrites every literal); the --check-on-a-/tmp-copy measurement, --file-info, --find-config-path and "prettier 3.8.1" (:54–58) are a platform reading → pm-dispatch references/platform-readings.md by charter, 0 lines here.
    A7 :60–63 Push a WIP commit before minutes-long steps KEY 2 / DEM 2 Decision: push before build/test/ablation (:60–61); the 2,081-line loss story (:62–63) is provenance.
    A8 :65–71 Type-check coverage/debt ratchet DEM 7 → 1 Mechanically enforced (check:type-check-coverage, check:type-check-debt, both exist); :66 already says "the script headers are the authority on detail" — the four invariants restated here are the gate's own text.
    A9 :73–91 Three tsc principles (no exclude tests; phantom @ts-expect-error; TS7006 = broken import) KEY 3 / DEM 16 :73 says the ratchet's invariants encode them → enforced; one rule line per bullet survives; the explanations and the tsconfig.test.json / gen:test-typecheck-debt wiring belong to the script headers. Dev-only content — natural home is os-dev.md "Toolchain traps" (:120–144), which does not carry them today.
    A10 :93–105 Cross-package test inputs — why the gate scans source KEY 3 / DEM 8 The heading :93 is a gate anchor (MIRRORS[0].heading; rename = REFUSAL) and the rule "escaping reads must use a recognised spelling" is the decision; the defect narrative (:95–100, :102–104) is carried verbatim by check-cross-package-test-inputs.mjs and check-published-list-mirrors.mjs headers → 1 line.
    A11 :107–125 Published spellings block (ts fence, 19 lines) KEY 19 Byte-held mirror of RECOGNISED_PATH_SPELLINGS (first ts fence under the :93 heading; lint.yml:3134–3135); cannot shrink, move or reflow without changing the gate; this is where open decision #11910 (8 lines for a mirror repair) lands and where held raise #13052-A (1162→1164) was priced — both dissolve once any DEM row below is executed.
    A12 :127–142 Extend-the-detector rule; detector semantics; clocked windows KEY 4 / DEM 10 KEY: "extend the detector + --self-test + correct the block in the same edit, never route around" (:129–132) and check:test-source-alias (:142); DEM: node_modules/shallowest-point semantics (:134–139) and "that gate can only ever go RED" are detector internals → script header.
    A13 :144–153, :162–165 Dev-server table, --fresh creds, example block KEY 11 Lookup: port 3000 hard-wired, --fresh seeds admin@objectos.ai/admin123, platform-admin promotion; the two pnpm dev -- --fresh spellings are the cleared population of check-agent-test-spelling.mjs (header :85–87) — rewriting them changes that gate's census.
    A14 :155–160 Dev-server rules (port, kill, -- forwarding) KEY 2 / DUP 2 / DEM 2 "never kill a server you didn't start" duplicates §8 :575–579 (anchor §8; :156 already cross-refs it); the bare--- vitest trap duplicates os-dev.md:93–96 and :138–141 (anchor os-dev; :160 already points there; check:agent-test-spelling enforces); KEY: one backend on :3000, random port + tear-down.
    A15 :167–180 Frontend sibling workflow + sdui:manifest second half KEY 7 / DEM 4 Decisions: UI work in ../objectui, objectui:refresh, never hand-edit packages/console/dist / .cache/objectui-*, pin bump ⇒ pnpm sdui:manifest (on-demand by decision, never CI); the ADR-0082 explanation and "both scripts print the reminder" are DEM; procedure anchor docs/releases-maintenance.md "After the pin moves" (exists).
    A16 :182–187 Fast iteration on objectui src (:5180, DEV_PROXY_TARGET, :3001/_console) DUP 6 → 1 Anchor ../objectui/AGENTS.md:445–449 carries every fact here verbatim (Vite :5180, proxy default, published-vs-src, localStorage gotchas) and :186 already points there; this copy is the one that drifts.
    A17 :193–213 Prime Directives 1–8 KEY 21 Each names a decision a dev makes today: Zod first / no logic in spec / naming cases / import spelling / no workarounds / object name = table name, never namespace/tableName / one Zod source per type (allowOrgOverride only) / north-star read before structural change. Dense.
    A18 :214–231 PD9 OS_ env-var scheme KEY 17 / DEM 1 Naming decision table (_ENABLED, OS_ALLOW_, OS_SKIP_, third-party exceptions, readEnvWithDeprecation — exists at packages/types/src/env.ts:52); only the "debt, not precedent" gloss (:226–227) is compressible.
    A19 :232–240 PD10 file out-of-scope findings; declared ≠ enforced KEY 4 / DEM 5 Decision: file an issue, never fake coverage, "a case label is not enforcement; check the call site" (:232–236, :240); the write-path-validator incident (:236–239) is provenance → 1 line.
    A20 :241–253 PD11 worktree-first KEY 5 / DEM 8 Decision + command (:241–245) and "the rule outranks the hook" survive; the hook mechanics (tool matcher, shell shapes, fail-open list, one switch) restate guard-main-checkout.sh / -bash.sh headers (authority per :14–15); CLAUDE.md:23–42 is the sanctioned excerpt (DUP direction CLAUDE.md ← AGENTS.md).
    A21 :254–272 PD12 contract-first KEY 7 / DEM 12 Decision: fix producer, reject at publish, no consumer ??/alias, tolerated alias = ADR-0087 conversion entry (:254–259, :262–265); the Postel argument, the executor-shim pay-down history, applyConversionsToStoredItem and the worked example (:259–262, :265–272) are justification; os-dev.md:77–78 carries the dev one-liner.
    A22 :273–282 PD13 accepted ADR binds; leave the id in code; anchors KEY 6 / DEM 4 Decision: new ADR to reverse; grep ADRs before touching governed territory; one JSON per anchor, no index (check:adr-anchors enforces); the three-ADR reversal story (:276–278) is provenance.
    A23 :283–291 PD14 head + three verbatim rulings KEY 3 + X0 3 The directive line is the decision; :287/:289 are provenance quotes (pointer-able under X0-C); :291 is gate-read — check-governed-prose.mjs satisfies containment from backtick spans anywhere in the :283–:341 region and :291 is the enumeration itself → under X0-C this quote stays (operative test).
    A24 :293–303 PD14 which surfaces / where the register lives KEY 4 / DEM 7 Decisions: register = GOVERNED_SURFACES in check-governed-merges.mjs, add surfaces there never here, never edit the quote to satisfy a gate, print today's set (:297–298, :301–303); the "grown three times in two days" gloss and the gate's two-direction description are the gate header's.
    A25 :305–321 PD14 landing rules (four nevers; pinned approval; no agent approves) KEY 11 / DEM 6 Every sentence to :316 changes a landing decision (file-list judged, mixed diff = one hit, GOVERNED_APPROVERS + commit_id = head, 人工直合 fallback, no agent approval under any account); :317–321 ("nothing else substitutes… a green ADR draft was closed on demand grounds") is argument → 1 line.
    A26 :323–339 PD14 already-armed procedure; "the barrier is this directive"; incident/audit tail KEY 5 / DEM 12 KEY: convert to draft and disable, confirm from remote (:323–326); DEM: two-merges-in-one-hour and flipped-skill-PR history (:326–330), per-PR check retirement (:330–332 — check-governed-queue-guard.mjs header :13–44 carries why), CODEOWNERS/audit description (:333–339 — check-governed-merges.mjs header "carries this rule's incident history" per :336). SKILL.md:727–760 is the PM procedure (DUP direction SKILL ← AGENTS).
    A27 :341–345 PD15 head + verbatim ruling KEY 3 + X0 1 Directive line is the decision; :345 is provenance (the operative warrant is the inline 「这个要写入规范」 at :347) → pointer-able under X0-C.
    A28 :347–360 PD15 release act list KEY 10 / DEM 4 The ⛔ list (:351–356: publish, tag, Release, image, workflow_dispatch, approve release environment, merge/queue/arm Version Packages) plus "counter-publish is an incident" (:359–360) is the decision; SKILL.md:935–938 names this paragraph as authority (anchor confirmed); the warrant paragraph (:347–348) and six-hourly regeneration gloss (:356–359) → 1 line.
    A29 :362–376 PD15 "the precedent" + YAML-barrier essay KEY 2 / DEM 13 One decision survives: merging chore: version packages queues a deployment in the maintainer's name (:373–375); the twice-shipped-RC history and the event-vs-repo-setting analysis are ADR-0125's design record.
    A30 :380–383 Multi-agent intro KEY 3 Frames what PD#11 does not cover; cheap.
    A31 :385–402 git stash ban + replacements block KEY 7 / DEM 10 Decision line + the three-command replacement fence (:398–402); the LIFO mechanism, "it has really happened", the hook's allow/block forms and stash@{N} note restate guard-shared-stash.sh header (authority; carries the incident) and CLAUDE.md:44–71 (sanctioned excerpt).
    A32 :404–423 Four isolated ref namespaces; refs/remotes shared; FETCH_HEAD per checkout KEY 6 / DEM 14 Decisions: pin BASE=$(git rev-parse HEAD) at worktree creation and restore/diff against it; fetch into a ref you own; no hook backs the moving-ref half (:418–423); the git-internals exposition and measurements ("three moves in ten minutes", git 2.43) are justification; os-dev.md:226–234 carries the dev spelling and points here.
    A33 :425–428 Shared .turbo/cache KEY 2 / DEM 2 Decision: force-rebuild the package on a phantom typecheck failure; the "why" is one clause.
    A34 :430–437 Reverse verification — commit the fix first KEY 3 / DEM 5 Decision + git hash-object byte-identity proof survive; os-dev.md:235–257 carries the fuller dev-side spelling (four hard lines) and points here for the mechanism — one home, two spellings today.
    A35 :439–451 git checkout <ref> -- <path> stages KEY 4 / DEM 9 Decision: restore with git checkout HEAD -- / git restore --source=HEAD --staged --worktree, read git status --porcelain, never trust git diff HEAD alone, prefer git restore --source=<ref> (:447–451); the index/tree walkthrough and the 157-deletion PR are provenance; os-dev.md:246–248 ① carries the dev form.
    A36 :453–457 scripts/pm/git-history.mjs answer-or-REFUSE DUP 5 → 0 Anchor SKILL.md:980 (机械守卫索引 row) + the script header; a PM/reviewer tool — no dev decision changes on it; guard-tree-enum.sh covers the enumeration half mechanically.
    A37 :459–472 Claim the issue before code KEY 9 / DEM 5 Decision: assign + claim comment with session ID and branch, re-read comments first, never reassign, file unassigned when recording (:459–469, :471–472); CLAUDE.md:8–21 is the excerpt (anchor here). Audience note for Phase 2: dispatched devs never write assignee (os-dev.md:42–43; SKILL.md:524–557 does it) — the row governs self-directed seats and humans; say so in one clause.
    A38 :474–483 PR state you did not set belongs to another actor KEY 2 / DEM 8 Decision: read the timeline actor or ask, never "correct" (:474–475, :482–483); the draft-flip worked failure is provenance; os-dev.md:44–47 carries the dev one-liner.
    A39 :485–490 Attribution footer forms (text fence) KEY 6 The two spellings and which surface takes which; os-dev.md:458–464 copies the block and names this clause as the home ("归 AGENTS.md… 一条规则一个家") → anchor here.
    A40 :492–500 Footer platform measurements (create/PATCH/comment behaviour) DEM 9 → 2 Measured platform facts belong in pm-dispatch/references/platform-readings.md by charter (:506 already routes the mutation shapes there; platform-readings.md:260–263 carries the PR-body footer reading); os-dev.md:466–469 duplicates the same 2026-08-26 measurement — three copies of one reading.
    A41 :502–508 GitHub mutates body BYTES KEY 4 / DEM 3 Decision: spell poison-shaped tokens out, read the body back, check the rendered page before "repairing" (:502–504, :506–508); pointer to platform-readings already present.
    A42 :510–521, :530 Defensive rules 1, 2, 3, 6 KEY 12 Only-your-files; one branch/PR per task named claude/issue-<n>-<slug> (Duplicate Fix Guard workflow exists); never force-push / push main (os-dev.md:75 dev copy); never rebase shared branches — each changes a decision.
    A43 :522–529 Defensive rules 4 (verify branch before commit) and 5 (shared-file atomic commit) DEL 7 / KEY 1 Condition cannot fire inside a dedicated worktree: HEAD is one of the four isolated namespaces this file itself lists (:404–405), and PD#11 + two hooks make the worktree mandatory — both rules guard the shared checkout PD#11 forbids editing; the one live clause ("on a real conflict re-apply only your lines") is 1 line.
    A44 :531–537 §7 land through the merge queue; arm only green + accepted + non-draft KEY 7 Sanctioned landing path and its precondition; supersedes the blanket auto-merge ban.
    A45 :539–544 §7 two classes never enter the queue DUP 5 / KEY 1 Restates PD#14 :305–310 and PD#15 :355–360 (anchors); "read the file list and the author before arming" (:544) is the one line not stated there.
    A46 :546–556 §7 green = conclusion: success; the six required contexts KEY 5 / DEM 6 The six names are pinned by check-required-contexts.mjs INSTRUCTION_SURFACES (must name all six on AGENTS.md) — keep verbatim; "arming a red PR hides it", advisory-rides-through and "renames detach silently" are the gate header's rationale.
    A47 :558–570 §7 re-arm awareness (ejection, collateral eviction, draft-flip, stale red, gh pr merge unmeasured) DEM 13 → 2 PM landing-window facts: anchors platform-readings.md:6–28 (队列成员资格与 auto-merge) and SKILL.md:785–791 (red/eject four branches, merge-queue-triage.yml as machine input); devs never merge (os-dev.md:75) — this paragraph serves only seats that already read those references.
    A48 :572–574 §7 fallback when the queue is unavailable DEM 3 → 1 Decision-neutral justification ("loses badly under load") around a one-line fallback.
    A49 :575–579 §8 start your own server, never stop someone else's KEY 3 / DEM 2 Anchor for A14's DUP; the command pair is already at :163–164.
    A50 :580–602 §9 refresh build state after pulling main (stale-artefact table) KEY 4 / DEM 17 Decision = the prescription line (:593–595) + "only the first row has a gate: check:dev-prereqs" (:598–600); the four-row symptom/why table and the "none of this is CI-visible" gloss are diagnosis narrative; os-dev.md:212–214 carries the dev rule ("判断任何事之前先 build").
    A51 :603–622 §10 scope the re-check to the overlap KEY 6 / DEM 14 Decisions: full suite once before opening the PR; on later main merges rebuild what moved, spec build && check:generated if spec moved, full typecheck+test only on package/behaviour overlap (:605–606, :610–612, :617–619); the 15-minute-lap economics and "CI validates the merge commit" are justification.
    A52 :623–656 §11 generated artifacts: merge=os-regen driver, deferral, pre-commit debt KEY 6 / DEM 28 Enforced by .githooks/pre-commit + pre-push + check:merge-driver; :634–635 names scripts/pm/os-regen-merge.sh as the in-repo authority; KEY lines: rebuild then check:generated --fix; merge commit is a deferral not a pass; never --no-verify; ratchet baselines excluded (NOT_DRIVER_MANAGED); the driver/sharding/registration mechanics are the script headers'. os-dev.md:220–225 and SKILL.md:778–780 carry the seat one-liners.
    A53 :659–681 Monorepo Layout tree DEM 22 → 3 Hand-kept and drifted: 14 listed vs 31 present — drivers, formula, metadata-core/-fs/-protocol, platform-objects, mcp, observability, verify, qa, console, connectors, triggers, lint, sdui-parser, cloud-connection, apps unlisted; this file's own rule for skills (:838–840 "the filesystem is the catalog… never a hand-written list") applies; SKILL.md's domain-lane table (:255–263) is the live package→lane map. (The old "Studio UI: ../objectui" trailer was removed by PR #14239 as a DUP of :167.)
    A54 :685–706 Protocol Domains table + root exports KEY 17 / DEM 3 Lookup that decides where a schema lands (PD7); root-exports claim verified true (stack.zod.ts:1742/2395, index.ts:99–130); drifted 3/18 — conversions, meta-spelling, migrations unlisted — Phase-2 either adds three rows or replaces the table with a pointer to packages/spec/src/*/; the Responsibility prose is the compressible part.
    A55 :710–717 Kernel table + EnhancedObjectKernel deprecation KEY 6 Decision: ObjectKernel vs LiteKernel (exists packages/core/src/lite-kernel.ts); the deprecated name is live in cli/src/commands/doctor.ts and packages/core/README.md → the one-line warning still changes a choice.
    A56 :721–725, :728 Documentation Guardrails: table head, references/ AUTO-GEN, meta.json rule KEY 5 Three decisions (never hand-edit generated docs; list a new page in the tree's meta.json); docs-drift-check.yml:470,489 cites this table by name.
    A57 :726 content/docs/releases/ RELEASE-OWNED row (1 line, ~600 B) KEY 1 (cell-shrink) Decision: never edit in a code PR; input = changeset + ADR-0087 registries; CLAUDE.md:73–86 is the excerpt (anchor here); the conflict-magnet story inside the cell is provenance — line count unchanged, bytes can halve.
    A58 :727 translations/*.generated.ts row (1,081 B — the corpus's longest line, pinned by the row-byte ratchet) DEM 1 (cell-shrink) Enforced by check:i18n / check:i18n-coverage; the merge-mode/en-rewrite narrative is check-i18n-bundles.mjs header material; rule = "never hand-edit structure; regenerate with --write; translated values are hand-written" — same line, a third of the bytes.
    A59 :730–746 Touched packages/spec: intro + change→gate→generator table KEY 11 / DEM 4 The table is the decision (which gen: to run); the sequential-masking explanation (:732–737) → 1 line.
    A60 :748–757 One command runs every gate (check:generated, --fix) KEY 6 / DEM 3 The three-command fence + "don't match by hand" is the decision; the "which is precisely what CI cannot do" gloss is not.
    A61 :759–788 Principles the wrapper encodes DEM 30 → 4 :759 self-declares "its own output is the authority on detail"; four decisions survive (--fix regenerates only proven-stale; no check: script regenerates; check:api-surface/check:exported-any read dist — rebuild before believing; pure audits have no generator); the rest (--reconcile-only, z.ZodType<any> pattern, dual-source-exports.baseline.json) is gate internals.
    A62 :790–803 check:react-declaration-parity caveats DEM 9 / DUP 5 → 2 "Two declarations, not an implementation" and "exit 1 with no manifest is a failure" survive as 2 lines; :799–803 duplicates A15 (:176–180: on-demand by decision, ruling 2026-08-07, docs/releases-maintenance.md) — anchor A15.
    A63 :805–806 gen:openapi / gen:sbom have no gate DEM 2 → 0 :806 says the wrapper reports it on every run — the sentence describes what the tool already prints.
    A64 :810–832 Context Routing persona table DEL 22 No script, hook, gate or skill reads it (repo grep: zero readers; one passing mention in docs/NEXT_STEP.md); the Key Constraints column restates PD1/PD2/PD3 ("Zod-first, snake_case", "zero business logic"); no decision a dev makes today changes on "Data Architect" vs "Kernel Engineer".
    A65 :836–844 Skills: two roots, filesystem is the catalog, metadata.internal: true KEY 7 Decision: browse, never a hand-written list (two drifted); internal marker required.
    A66 :846–847 Both roots are governed surfaces DUP 2 → 1 Restates PD#14 :305–316 (anchor); the ratchet header (#12756 note) already calls it PD#14's "twin sentence".
    A67 :851–863 Zod schema pattern (ts fence) DEM 12 → 1 Illustrates PD1/PD3 with a toy; a pointer to one real schema (packages/spec/src/data/field.zod.ts region) teaches the same and cannot drift; the published skills/ catalog and content/docs carry the authoring examples.
    A68 :865–875 Plugin pattern (init/start/destroy) KEY 3 / DEM 8 The contract names + packages/core/src/types.ts pointer are the decision; the retired-example story and the 8-line fence are illustration.
    A69 :879–883 Route & surface ownership intro KEY 1 / DEM 3 "Five rules, each paid for by a real bug" — framing.
    A70 :885–908 Rules 1–4 (one owner; explicit composition; absence loud; machine surfaces don't lie) KEY 9 / DEM 12 Each rule's first sentence is a decision (rule 3 is cited by name from check-published-list-mirrors.mjs:293 and check-declaration-mirrors.mjs:84 — anchor); the retired-duplicate re-learning story, the misdiagnosis aside and the ADR-0076 D12 gloss are justification.
    A71 :910–922 Rule 5 closed query-parameter set + ruling KEY 7 / DEM 3 + X0 1 Decision: open handlers with refuseUnknownQueryParams (packages/rest/src/query-allowlist.ts, exists), review-enforceable; the both-directions failure explanation (:917–921) → 1 line; quote :913 is provenance restated by :910 and :947–948 → pointer-able under X0-C.
    A72 :924–948 Three measured things (read points incl. helpers; open routes excluded; per-lane) KEY 9 / DEM 15 Decisions: measure from actual read points, read the helpers, pin refusal and preservation halves, exclude open routes by name, convert per lane; the ?locale=/extractLocale story and the GET /data/:object normalizer walkthrough are provenance.
    A73 :950–957 Arity gate ordering; "who serves this path" KEY 2 / DEM 5 Decision: boot the real composition or don't claim; "answered wrongly three times" is provenance.
    A74 :961–980 Degradation log levels: the one-question test + two classes KEY 9 / DEM 8 The blockquote test (:968–970 — operative, not X0) and the two-class rule with its canonical warn example are the decision; the preamble (:963–966) and the "someone who cannot connect it to this line" gloss are not.
    A75 :982–988 "Why this is a rule" founding incident DEM 7 → 0 Provenance; check-durability-degradation-log-level.mjs header (authority per :1012) carries it.
    A76 :990–1009 An error owes consequence + fix; do not over-apply; caller-propagation KEY 9 / DEM 10 Decisions: two things in the first line, once; if (!service) is warn; a failure handed to the caller is not a degradation — declare FAILURE_PROPAGATION_* (:990–993, :998–1008); the reference-text pointer stays; explanation trimmed.
    A77 :1011–1045 "It has teeth" ×2 (log-level rule; read-seam invention rule) DEM 34 → 5 Both paragraphs describe the gate's scan surface, vocabularies, discriminators and two baselines — script-header material by the file's own charter (:14–15) and by :1012 ("its header is the authority"); five lines survive (gate name; add a seam to DURABILITY_CRITICAL_CALLEES in the fixing PR; read-seam rule's one question; ask the shared predicate; the two ledgers differ). Inline ruling 「裁 3 —— 收窄先行」 is provenance (X0 inline).
    A78 :1049–1073 Startup registry reads: question, three parts, read-only probe KEY 11 / DEM 8 The blockquote test (:1058–1061 — operative) and the three-part shape are the decision; the preamble (:1051–1054) and "what makes this a rule and not noise" gloss are not.
    A79 :1075–1082 Founding incident (three subsystems, one cold start) DEM 8 → 0 Provenance; check-startup-registry-verdict.mjs header carries it.
    A80 :1084–1101 Three cures + "It has teeth" KEY 9 / DEM 7 Cures 1–3 with their reference sites (createLazyCacheRateLimitStorage, ADR-0116 ordering, sealNodeTypeVocabulary at kernel:bootstrapped) are decisions; the gate description (:1098–1101, already trimmed −2 by PR #14239) → 2 lines.
    A81 :1105–1107 Post-Task 1: test / typecheck KEY 2 One decision.
    A82 :1108–1115 Post-Task 2: land it; governed exception DUP 8 → 2 Restates §7 :531–537 and PD#14 :305–310 (anchors); "a finished task = a merged PR / a PR visibly awaiting a human merge" is the one line not stated there.
    A83 :1116–1143 Post-Task 3: changeset rules; breaking carries migration; ADR-0087 marker KEY 18 / DEM 10 Decisions: features need a changeset, bug fixes don't; FROM→TO + one-line fix; tombstone via retiredKey() / guidance maps; the four-marker block (enforced by check:adr-0087-registration); spec-property-retirement skill pointer; the "why it is asked of you" paragraph (:1136–1143) is the gate header's. os-dev.md:75–76 carries the dev one-liner.
    A84 :1144–1151 Post-Task 4: removal ships with sibling fix + pin bump KEY 3 / DEM 5 Decision + pre-merge git grep at the pinned SHA; the Console Pin Gate mechanics explanation → 1 line.
    A85 :1152–1153 Post-Task 5: pointer to § Touched packages/spec + OS_SKIP_DTS KEY 2 PR #14239 already collapsed the former 7-line duplicate of A59–A61 to exactly this pointer — the shape a DUP ruling would have produced.
    A86 :1154 Post-Task 6: update CHANGELOG.md / ROADMAP.md DEM 1 (DEL refused) Root files exist (2,580-line Keep-a-Changelog; 72-line roadmap) but changesets generate per-package CHANGELOGs and Documentation Guardrails route release notes centrally; whether anyone hand-updates them is unmeasurable on this clone (shallow, 50 commits, horizon 2026-09-01 — this file's own git-history rule forbids a windowed answer) → Phase-2 measures on a full clone before ruling DEL.
    A87 :1155–1156 Post-Task 7: delete temporary artifacts KEY 2 One decision with its list.
    A88 :1160–1162 Edit Sizing (~20 KB payloads) KEY 1 / DEM 1 The rule is one line; the heading and separator are structure to fold into Build & Test.

    X0 census (not classified per row): 6 quote-block lines are maintainer provenance — :28, :287, :289, :291, :345, :913 (+ ~6 spacer blanks). Of these, :291 is read by a gate (check-governed-prose.mjs, containment over the PD#14 region) and is the operative enumeration — X0-C keeps it; the other five are restated in adjacent prose → pointer under X0-C (−5 lines, −5 spacers). Four inline 「」 rulings (:12–13, :331, :347, :1035) cost no lines. The blockquotes at :8 (rename notice, DEL) and :968–970 / :1058–1061 (the two operative one-question tests) are not provenance quotes and are classified in their rows.

    Projection: 1162 → ~660 (DEL ~30 + DUP ~40 + DEM ~425 removed, of which ~85 lines are retained as rule + pointer; ~7 structural lines freed; quotes kept) → ~650 under X0-C. Class totals over the ~996 content lines: KEY ≈ 420 (incl. 5 quote lines and the 19-line mechanical mirror), DEM ≈ 480, DUP ≈ 55, DEL ≈ 31. PR #14239 landed net 0 (it executed two of the DUP/DEM rulings above — A53's trailer and A85 — and added A6) and moves nothing in the projection; held raise #13052-A (1162→1164) and open decision #11910 (8 lines for a mirror repair) are both funded many times over by any one of the top-ten blocks below, so neither needs a ceiling raise.

    Verdict: Bloat, concentrated — not diffuse: the Prime Directives 1–9, the lookup tables that still match the tree, the byte-held spellings mirror, the six required-context names, the footer/claim/queue rules and the two one-question tests are dense (~420 lines a dev's decision turns on today), while ~500 content lines are incident narrative ("Why this is a rule" ×3, founding incidents ×2), gate internals restated from script headers ("It has teeth" ×3, "principles the wrapper encodes"), PM landing procedure that already lives in pm-dispatch references, hook mechanics restated from hook headers, and two hand-kept tables (Monorepo Layout, Context Routing) that have drifted or have no reader.

    Interim signal — the ten largest reducible blocks (lines removable, span at d63c8a2, class): ① :1011–1045 Degradation "It has teeth" ×2 — 29 (DEM → script header); ② :759–788 spec-regen "principles the wrapper encodes" — 26 (DEM → wrapper output/header); ③ :623–656 §11 merge-driver mechanics — 24 (DEM → os-regen-merge.sh + regen-artifacts.mjs headers, pre-commit/pre-push enforce); ④ :810–832 Context Routing persona table — 22 (DEL, no reader); ⑤ :659–681 Monorepo Layout — 20 (DEM → filesystem, 17/31 packages unlisted); ⑥ :73–91 three tsc principles — 16 (DEM → ratchet script header; dev-only, os-dev.md is the home); ⑦ :580–602 §9 stale-artefact table — 14 (DEM → one prescription line + check:dev-prereqs); ⑧ :924–948 route rule 5 measured things — 13 (DEM → three rule lines); ⑨ :362–376 PD15 YAML-barrier essay / :790–803 react-declaration-parity (DUP of :176–180) / :885–908 route rules 1–4 stories — 12 each; ⑩ :404–423 four-namespaces exposition / :558–570 §7 re-arm awareness (→ platform-readings.md:6–28) / :603–622 §10 economics / :851–863 Zod toy example — 11 each. Together these fourteen spans account for ~245 of the ~500 removable lines; the remaining ~255 are spread across 40 rows at 2–10 lines each, so a Phase-2 that stops at the top ten still lands the file near ~910 and clears every held raise.


    Generated by Claude Code

  10. os-litant commented on Sep 2, 2026

    @os-litant
    Contributor

    Phase 1 · Table 3 — references: platform-readings · lanes/* · state-machine · compile-surfaces · landing-operations · release-aftercare · rest-channel · seat-post-protocol · true-green

    Posted by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1) on behalf of the contract-tier classification auditor; zero-edit; pinned ref stated inside the table.

    #13597 Phase-1 classification — Table 3 (references: platform-readings · lanes/* · state-machine · compile-surfaces · landing-operations · release-aftercare · rest-channel · seat-post-protocol · true-green)

    Pinned ref origin/main = a59f78d; every span below is git show a59f78d:<path> line numbers. Ceilings from scripts/pm/check-skill-line-ratchet.mjs CEILINGS at the same ref. ZERO-EDIT: no repo file, git ref or GitHub object was written (the two parked branches were fetched read-only for input). Conventions: DUP anchors cite file:span; by charter a principle restated in a reference anchors to SKILL.md and a parameter restated in SKILL.md anchors to the reference. X0: a line is counted as a quote line when its operative content is a verbatim maintainer 原话 (> 「…」 blocks and inline 「…」 rulings); a line already ruled DUP/DEM/DEL is counted in its row, not in X0; 「同意」/「我觉得够了」 fragments are not quote lines. Blank and heading lines ride with their section and are not classified.

    Pending-PR touch: only PR #14236 (branch claude/issue-13900-rest-channel-prescriptions, tip ce400df) touches a Table-3 file — rows RC3 and RC5 carry the note. #14229/#14230/#14239/#14264 touch os-dev.md / SKILL.md / AGENTS.md / decision-analysis.md only; SKILL.md anchors below are cited at a59f78d and may shift by line under #14230.


    platform-readings.md — rows P1–P59 (314 lines, ceiling 314, headroom 0)

    row span unit verdict one-line justification
    P1 :1–4 header / charter KEY 4 Decides where a fact vs a principle lives (this table ↔ main file); SKILL.md:158–159 is the pointer that lands here.
    P2 :8–11 queue enforcement is a ruleset fact KEY 4 Decides how "is the queue enforced" is read (merge attempt 405 / rulesets API, never grep merge_group); incident: ruleset-without-trigger repo, 2026-08-20.
    P3 :12–18 timeline events decide membership; webhook = side evidence; auto_merge unstable KEY 7 Decides never to re-arm on auto_merge=None (re-arm kicks and re-queues); 2026-08-26 set→None, ruling 2026-08-11.
    P4 :19–20 success sequence read by interval KEY 2 Decides landed-vs-kicked from ~1 s spacing of removed_from_merge_queue→merged.
    P5 :21–26 landing = two readings; origin/main read by content KEY 6 Decides against ancestry / merged boolean checks; incident 2026-08-23 merged:false with merged_at set; SKILL.md:172 points here.
    P6 :27–32 mergeable_state lazy; merge-tree zero-quota probe KEY 6 Decides unknown ≠ reading and how a dirty head is detected before arming; 2026-08-25 re-arm on dirty head.
    P7 :33–35 minimal fields; gate job conclusion read by name KEY 2 / DUP 1 :34 first clause restates SKILL.md:170 (job conclusion, not aggregate); the 增量 is "按名定向读单条 job,失败才拉全表".
    P8 :36–40 draft is not a reliable dequeue KEY 5 Two-direction measurement (this repo vs objectui 2026-08-25) forcing worst-case handling; SKILL.md:748–749 points here.
    P9 :41–48 draft bit on every update; request-review REST route; undraft paths KEY 8 Decides draft:true on every draft-PR call and which undraft path exists; objectui 2026-08-25 published a governed draft into the queue; SKILL.md:745–746 points here.
    P10 :49–53 enable_pr_auto_merge needs mergeMethod:"SQUASH"; echo unreliable both ways KEY 5 Decides explicit method and never reading the echo as evidence; 2026-08-24 two PRs + disable→enable replay.
    P11 :54–58 quota-exhausted enable returns success with no arm KEY 5 Decides "verify effect, not response" via probe ①②; 2.5 h zero-motion incident.
    P12 :59–66 queue ref answers BUILD; positive probes by cost; two kick causes KEY 8 Decides membership by update_pull_request_branch / merge_pull_request 405 text, never by ref absence; 2026-08-28.
    P13 :67–71 kick → signature → re-enqueue KEY 3 / DUP 2 :67–69 restate SKILL.md:789–790 (known flaky ⇒ re-enqueue; fixed signature recurring ⇒ new problem); 增量 = third signature (queue-rebuild cancel), receipt rule, second-kick stop.
    P14 :72–73 measured throughput KEY 2 Sets the batch upper bound (concurrency ≈3) and the "not anomalous yet" window (15–30 min/PR).
    P15 :77–82 quota per account, per query complexity KEY 5 / DEM 1 :81–82 magnitudes (107 pts per list, ~5658 pts per dev/15 min) are calibration; the decision (optimize per-fetch; dev subagents are the burner) stands with one figure.
    P16 :83–85 perPage by expected population KEY 3 Changes every list call's page size; 2026-08-23.
    P17 :86–88 writes ~1/s (secondary limit) KEY 3 Changes bulk label/comment pacing; official docs checked 2026-08-23.
    P18 :89–98 REST reachability is a session property; probe; per-shift matrix; degradation ladder KEY 7 / DEM 3 :93–95 per-shift matrix (5+ dev seats refused, four containers 200, split top seats) is the story behind "门态逐会话变"; rule + repo-scoped probe + ladder ①–④ stand without it.
    P19 :99–105 default read order git→payload→REST→MCP; pools independent; GraphQL-only list; pointer KEY 6 / DUP 1 :103–104 enumeration restates rest-channel.md:45–56 (the per-op table :104–105 points at); pointer suffices.
    P20 :106–107 MCP list/search burn the GraphQL pool KEY 2 Orders comments (REST) before claims when quota is red.
    P21 :108–110 gh verbs split by transport KEY 3 Decides gh api when porcelain is rate-limited; boundary: host seats only (container has no gh).
    P22 :111–113 red-window scheduling KEY 3 Decides what may wait on remaining; PR #14236 rules this the exclusive home (retires rest-channel.md:58).
    P23 :114–115 issue transfer unavailable ⇒ rebuild in destination KEY 1 / DUP 1 :115 parenthetical recipe (出处头 + 全名 + moved) restates SKILL.md:208–209.
    P24 :116–121 fields / minimal_output do not save pool KEY 5 / DEM 1 :120–121 evidence-method aside (direct observation vs size comparison) is justification prose.
    P25 :122–131 git first; four zero-cost equivalents; quota read at round start and before dispatch; ordered write list KEY 10 The 增量 under SKILL.md:161's principle; rest-channel.md:60–63 points here rather than copying.
    P26 :132–137 public-repo payload tier KEY 5 / DEM 1 :135 savings narrative (3 MCP calls vs 10416/5000) — the parked branch already compresses it to "~25×".
    P27 :138–140 search_issues for dedup; inherited "unavailable" claim false KEY 2 / DEM 1 :139–140 tombstone of an inherited claim; the date on :138 suffices.
    P28 :141–150 session-level silent zero; control word; channel switch; incomplete enumeration KEY 6 / DUP 3 / DEM 1 :146–148 restate the ladder (P:96–98), the REST list endpoint (rest-channel.md:18–19) and labels AND/OR (P:172–175); :150 tombstone of 「限定符打零」.
    P29 :151–155 proxy /search 403 body parses as a clean zero KEY 3 / DUP 1 / DEM 1 :154–155 "阳性对照先跑" restates the zero-hit principle SKILL.md:163–165; "本例正是…才逮住" is narrative.
    P30 :156–158 search misses minute-old cards KEY 3 Adds the orderBy: CREATED_AT leg to same-round dedup; 2026-08-20.
    P31 :159–163 free-text negation silently dropped in search_pull_requests KEY 4 / DEM 1 :160–161 arithmetic (197/216/2903/3119) is the proof; rule = "自由文本分层必跑补集与总体求和".
    P32 :164–166 mid-session credential rotation kills the MCP server KEY 3 Decides warn-before-rotate; no recovery short of a new session.
    P33 :167–168 org authorization propagates over minutes KEY 2 Extends the zero-hit rule to list reads after a 403→200 window.
    P34 :169–177 MCP labels OR vs REST AND; issue_write whole-replace; REST append KEY 7 / DUP 2 :175–176 RMW discipline restates SKILL.md:143–149; 增量 = mechanism (replace vs append) and the 403-session boundary.
    P35 :178–186 PR label read legs blind/silent KEY 9 Decides "empty labels ≠ no labels" and the delayed confirmation; 2026-08-28 (parked branch adds leg ④).
    P36 :187–188 list_issues never returns assignees KEY 2 Decides issue_read before any claim; rest-channel.md:20–21 restates it.
    P37 :189–193 issue_read entity escaping; backtick angle-bracket loss KEY 4 / DUP 1 :191–192 restate P:238–239, which :192 already points at.
    P38 :194–197 Blocked-by: lives in BODY KEY 3 / DEL 1 :197 tombstone of the retired in:comments hint — superseded by :194–196 and absent everywhere else in the corpus.
    P39 :198–200 list_issue_types 403 while issue_write type: works KEY 3 Decides write-known-values, don't probe the list.
    P40 :204–205 blocked download ≠ absence KEY 2 Decides look-for-artifact-first (Chromium preinstalled).
    P41 :206–215 five reading traps KEY 9 / DEM 1 :213 "(实测五张 PR 跑五次…一次都没检查)" is incident narrative; the command -v rule stands.
    P42 :216–219 auto-mode classifier judges command shape KEY 4 Decides retry-as-bare-action before reporting blocked; 2026-08-22.
    P43 :220–222 rerun_failed_jobs reuses the original ref KEY 3 Mechanism + discriminator under SKILL.md:790's branch.
    P44 :223–225 sibling success + heavy cancelled = supersession KEY 3 Decides compare head_sha first, no investigation.
    P45 :226–233 CI red ⇒ full log archive first KEY 7 / DUP 1 :233 public-correction principle restates SKILL.md:520–521 / :713.
    P46 :234–243 truncation double-read; deterministic triggers; MCP third path KEY 10 The "how" under SKILL.md:373–375 repair-first; 2026-08-23.
    P47 :244–246 sanitizer author rule lives in AGENTS.md; two measured additions KEY 3 Explicit pointer + 增量 only.
    P48 :247–253 write-side measured behaviour · issue body KEY 6 / DEM 1 :251–252 measurement provenance ("四处实测,双读一致、盘上未变") beyond trigger + fix.
    P49 :254–259 write-side · comment truncation KEY 5 / DEM 1 :256–257 dev-report incident narrative; rule (literal marker protects only the marker) stands.
    P50 :260–263 write-side · PR body trailing --- footer eaten KEY 4 Decides footer without a leading rule + read back; parked branch widens to issue create.
    P51 :264–266 parallel spec PRs and pin-count assertions KEY 3 Not a platform reading — os-regen family; relocate to landing-operations.md A, do not delete.
    P52 :267–273 container restart: three-state recovery KEY 7 Decides what the PM may do directly per state; distinct from dispatch-runbook.md:177–190 (remote/disk/gone) — relocation candidate beside it, not DUP.
    P53 :274–280 zero-commit probe branches are not work KEY 7 Two-reading test (rev-list --count 0 + no open PR); failure direction is a live card read as claimed.
    P54 :281–288 silent downgrade undetectable; get_session reading; host fork KEY 8 The served-tier reading contract-review's fuse points at; 2026-08-20/24/25.
    P55 :289–292 tier-quota death is a third death KEY 4 Decides reclaim + rescue, no premise re-check, no escalation; 2026-08-27.
    P56 :293–296 don't declare a lane blocked from memory KEY 3 / DUP 1 :295–296 mandate list restates SKILL.md:589–592; the rule is "--tier per path, floor not release".
    P57 :300–305 closing-keyword parser ignores negation KEY 6 Decides safe spellings; three measured boundaries.
    P58 :306–308 two parse sources; closed_by_pull_requests KEY 3 Consumer-side check landing-operations.md:43 points at.
    P59 :312–314 ccusage blocks in-container; blind spot; wall message shape KEY 3 SKILL.md:833 points here.

    Projection: 314 → ~286 (DEL 1 + DUP 14 + DEM 13, quotes kept) → ~286 under X0-C (X0 = 0 quote lines: :17–18 is a date pointer, no 原话).
    Verdict: dense — 9% reducible, and the reducible mass is intra-corpus restatement (ladder, RMW, zero-hit, kick branches) plus one-line incident anecdotes, not bloat; three entries are misfiled (P51, P52 and arguably P53 are recovery/regen facts, not API readings).

    Parked family branch (claude/issue-13326-platform-readings-family, blob 71b4005, 359 lines = +45)

    The branch is stale against a59f78d outside this file (its ratchet map predates the 08-31/09-01 raises: contract-review 48 vs 60, SKILL.md −63), so only the platform-readings hunk is the family's payload; it must be re-cut onto a59f78d before any Phase-2 landing. Disposition of each addition, measured against main's classes:

    addition Δ lines class home
    (a) 盲区通类 header paragraph (every zero needs a positive control that can fail in the same blind dimension; else NOT MEASURED) +3 principle, not a fact — DUP-direction one clause widening SKILL.md:163–165; not this file
    (b) payload-tier timeline three blind zones (~15-item window; backTimelineItems 0; newest dropped; CDN staleness; in-band totalCount vs edges check; three assertion classes must use the authoritative read; never assert another seat's absence from payload) +10 KEY ~7 / DEM ~3 (75-min triple fetch, 5-see-3 anecdote) no home on main — lands as new P26-adjacent bullet
    (c) search_issues rewrite of P27+P28 (mid-session degradation; per-batch positive control; must state the scanned bound or report NOT MEASURED; incomplete_results:false asserts a false completeness) net ≈ +5 KEY ~3 / DEM ~4 (6/6/2→0, three-seat replication, 168/116 vs 0, "响亮自愈、静默自欺") replaces P27–P28; P28's DUP 3 (ladder/endpoint/AND-OR restatement) is still present in the rewrite and should be cut there too
    (d) PR-label legs: leg ④ list_pull_requests fields:["labels"] correct; get_labels on a known-good number = method boundary; a false "no labels" + RMW strips auto-labeler labels; read ②/④, confirm ③ +5 KEY ~4 / DEM ~1 extends P35
    (e) assignability is a repo×account session-variable property (201→404, zero notice; both write channels fail unlike a claim failure; yields pm:dispatched + no-assignee half-state; discriminator GET /assignees/{user} 404 vs control 204; read back the assignee half; fallback = token identity + note) +8 KEY ~6 / DEM ~2 (17:50Z/18:30Z timestamps) no home on main — new bullet after P36
    (f) trailing --- widened to issue create (7 cases); ⛔ MCP read-back to judge loss; ⛔ PATCH repair (eats the footer block) +4 KEY ~3 / DEM ~1 extends P50
    (g) agent-created Routine transport facts (fresh-session form has no mcp__github__*; self-bound form wakes an existing session with tools; warning text not predictive; delete-then-recreate on bound-session death, never orphan; no model param ⇒ default tier; update_trigger refuses UI Routines; connectors/model params seen 08-31, untested) +14 KEY ~6 / DUP ~3 (fresh-session no-tools already at seat-post-protocol.md:70–73) / DEM ~5 (6-day orphan story, warning-text explanation, invariant essay) seat-post-protocol.md:67–78 「座位 Routine 创建细则」, not this file

    Ceiling arithmetic: KEY-class lines with no home in this file ≈ 23 (b+c+d+e+f); main's own reducible mass is 28 lines (P rows above). The family lands at 314 with zero raise if Phase 2 executes P's DUP/DEM cuts first — "measured at maximal density" was per-line byte density under the 120-byte cap, not content redundancy. (g) needs ~6 lines in seat-post-protocol.md, which has 15 reducible lines (SP rows below).


    lanes/director.md — rows L-D1–L-D8 (77 lines, ceiling 77, headroom 0)

    row span unit verdict one-line justification
    L-D1 :1–4 title + preface KEY 1 / DUP 2 :3–4 restate SKILL.md:288–291 (job description versioned in lanes, state stays on the seat post) and SKILL.md:82–85 (English machine criteria, verbatim quotes); the same preface sentence is copied into all eight lanes.
    L-D2 :6–17 授权与形态 KEY 5 / DUP 3 / X0 2 :8–9 quote is also verbatim at SKILL.md:923 (X0); :10–12 "无 Routine 无 cron" restates SKILL.md:926–927 (增量 = parked-is-safe + cadence); :13–15 tier gate restates SKILL.md:927 (增量 = the 免档整理 list + three ⛔); :16–17 "不占 domain:*, 永不认领, 永不写码" restates SKILL.md:928 (增量 = one seat post, cross-repo scope).
    L-D3 :19–29 基本原则 KEY 3 / DUP 2 / X0 3 :21 block quote (X0) decoded at :23; :23–25 three elements + frame pointers KEY; :26–27 re-anchoring to the 08-26 process ruling is supersession history carried only by its quote (X0 2); :28–29 no-gradualism restates SKILL.md:888–890 (same rule, own quote there) — placement here was maintainer-directed 2026-08-27 (ratchet comment), so Phase-2 needs an explicit override or keeps a one-line pointer.
    L-D4 :31–44 职责一 contract-review audit KEY 8 / DUP 1 / X0 3 :33–36 audit-position 增量 (contract-review.md is named, not copied); :37–39 quote (X0) decoded at :40–44; :40–41 "受管面照旧 draft-only + 人工合并" restates SKILL.md:727–738; :42–44 label-is-handoff and ⛔ 不擅断 KEY.
    L-D5 :46–52 职责二 adjudication duty KEY 3 / DUP 1 / X0 1 :48–49 inbox duty KEY; :49–50 retired summary-issue tombstone is the anchor SKILL.md:905–906 points at (keep; :50 quote X0); :51–52 pointer + "不达档 ⇒ 通道整体跳过" restates SKILL.md:439–440/:448.
    L-D6 :54–59 职责三 maintainer-action ledger KEY 1 / DUP 3 / X0 1 :54 heading quote (X0); :56–57 pm:awaiting-maintainer carrier + ledger ownership restate SKILL.md:99 and state-machine.md:40–41; :58 merged 「待您」 list KEY; :59 exit sequence restates state-machine.md:40–41 verbatim.
    L-D7 :61–68 职责四 governed-merge audit KEY 4 / DUP 2 / X0 1 :61 heading quote (X0); :63–65 --since-ref anchoring + INCOMPLETE reporting are 增量 over SKILL.md:800–802; :66–67 "未认定 = 席位违规 → 立案回滚" restates SKILL.md:949–951 (403 attribution KEY); :68 "⛔ 不新增标签; ⛔ 无 cron" restate SKILL.md:978 and :10–12.
    L-D8 :70–77 交接台账 (supersession ledger) DUP 3 / DEM 5 :72–74 adjudication-half handover 08-26→08-27 is already narrated at SKILL.md:924–926; :70, :75–77 chain 08-23→08-27→08-31 is history — the surviving rule (in-seat review releases, fuse non-negotiable) lives at SKILL.md:772–774 and contract-review.md.

    Projection: 77 → ~55 (DUP 17 + DEM 5, quotes kept) → ~44 under X0-C (X0 = 11 quote lines; every one is decoded by a rule line beside it, so C keeps none).
    Verdict: bloat in the frame, dense in the duties — 29% is SKILL.md 升级与决策 read a second time plus a supersession ledger the main file already carries; the four duties' 增量 (audit position, three-branch handling, 「待您」 list, --since-ref) is the file's real content.

    lanes/hotcrm.md — rows L-H1–L-H5 (57 lines, ceiling 57, headroom 0)

    row span unit verdict one-line justification
    L-H1 :1–5 title + preface + seat statement KEY 2 / DUP 1 / ⚠ CORRECTION 1 :3 preface restates SKILL.md:288–291; :4 "⛔ 不产 domain:*/type/定级" contradicts SKILL.md:191–193 + :225–226 (since 2026-08-26 single-lane repo:* seats self-produce type and finding 首触定级; only domain:* is withheld).
    L-H2 :7–11 宪章出处 two charter quotes KEY 1 / X0 2 :9, :11 are the seat's charter; SKILL.md:196 points here and nothing else carries them — the first question (:16–17) is derived from them, so X0-C keeps both.
    L-H3 :13–23 范围 KEY 5 / DUP 4 :15–19 exemplar-app, first question, gap-goes-upstream KEY; :20–21 file-at-destination + pm:blocked + Blocked-by: mechanics restate SKILL.md:206–212 and :240–246; :22–23 seam-label narrowing restates SKILL.md:209–212 + rule 1.
    L-H4 :25–50 常设承诺 KEY 15 / DUP 4 / DEM 2 / reflow 3 / ⚠ CORRECTION 1 :27–30 no patrol carrier (14 workflows, 2026-08-25) ⇒ manual half KEY; :32 "展品撒谎…" justification DEM, :33 "生产者在哪" restates SKILL.md:392–393; :34 "创业阶段聚焦原则全额适用" restates SKILL.md:885–887, :35 "定级归分诊/维护者,本席只供证据" contradicts SKILL.md:191–193; :36–38 dual-edition cri准则 KEY; :39 「无 changeset 流」 tombstone DEM, :41/:43/:45 one-word wrap orphans (zero content); :48 published-package dependency KEY, :49 "已发布不是已合并" restates SKILL.md:129–135; :50 label vocabulary run KEY.
    L-H5 :52–57 席内判断 KEY 1 / DUP 3 / ⚠ CORRECTION 1 :54–55 restate :18–21 and SKILL.md:206–212, and "type 留给分诊" contradicts SKILL.md:191–193; :56 axis-④ default-no KEY; :57 "拿不准升决策箱,⛔ 不自裁" restates SKILL.md:952–954.

    Projection: 57 → ~40 (DUP 12 + DEM 2 + reflow 3, quotes kept) → ~40 under X0-C (X0 = 2 charter quote lines, kept as operative).
    Verdict: mixed — the charter, patrol gap, dual-edition and changeset facts are dense; 30% is cross-repo mechanics copied from SKILL.md 多仓协调; three sites carry a pre-08-26 rule (type/首触定级 withheld from this seat) that Phase 2 must correct, not just cut.

    lanes/spec.md — rows L-S1–L-S5 (46 lines, ceiling 46, headroom 0)

    row span unit verdict one-line justification
    L-S1 :1–3 title + preface KEY 1 / DUP 1 :3 restates SKILL.md:288–291.
    L-S2 :5–13 范围 KEY 2 / DUP 5 :7–10 package list = SKILL.md:261 verbatim; :11 devx boundary + "恒归本席" restate SKILL.md:261 and :239; :12–13 objectui contract-face inventory (packages/types, $schema corpus, pin coupling) is absent from SKILL.md — KEY.
    L-S3 :15–28 席内分派参考 KEY 10 / DEM 1 :17 merger-history note DEM; :19–27 semantic/text/machine split is the anchor SKILL.md:596–597 names ("references/lanes/spec.md,⛔ 不另抄第二份"); :26–27 is also the interim anchor for the /meta routing sentence copied at engine.md:15 and cli.md:12–13 (no SKILL.md home — the only /meta hit at SKILL.md:257 is packages/metadata*); :28 tier pointer KEY.
    L-S4 :30–42 常设承诺 KEY 6 / DUP 3 / X0 2 :32 first-tier grading to triage restates SKILL.md:405–406; :33–36 ledger append pre-approval three tests KEY; :37–38 branch-information test — the English quote IS the criterion (X0 2, keep under C); :39–40 full-intersection read restates SKILL.md:469–472; :41–42 consumer-package tests KEY.
    L-S5 :44–46 席内判断 DUP 1 :46 restates SKILL.md:473–478 (read all comments; rulings live there).

    Projection: 46 → ~35 (DUP 10 + DEM 1, quotes kept) → ~35 under X0-C (X0 = 2, kept as operative).
    Verdict: dense core (the split criteria SKILL.md delegates here, the ledger pre-approval, the consumer-test duty) wrapped in a 24% copy of the domain table and three SKILL.md principles.

    lanes/devx.md — rows L-X1–L-X4 (39 lines, ceiling 39, headroom 0)

    row span unit verdict one-line justification
    L-X1 :1–3 title + preface KEY 1 / DUP 1 :3 restates SKILL.md:288–291.
    L-X2 :5–15 范围 KEY 5 / DUP 4 :7–9 restate SKILL.md:259 (增量 = .github/workflows, .githooks, examples test infra, docker/README.md: KEY 1); :10–11 objectui engineering face KEY; :12–13 gate-script boundary restates SKILL.md:259–260 SUBJECT split; :13–15 "范围内的文件 ≠ 范围内的卡" + consequences KEY.
    L-X3 :17–26 常设承诺 KEY 6 / DUP 3 :19 releases/** ban restates CLAUDE.md/AGENTS.md releases rule, :20 "逐卡批准不构成先例; v16 及以后" KEY; :21 "不做发布动作" restates SKILL.md:935–938; :22–23 governed pointer + "红门禁须声明红因" KEY; :24–25 changeset-by-publish-face + narrowing registration KEY, :24 "test/docs-only ⇒ skip-changeset" restates review-checklist.md:15–17.
    L-X4 :28–39 席内判断 KEY 5 / DUP 5 :30–31 read comments before body restates SKILL.md:473–478; :32 git show origin/main: restates SKILL.md:161–162, :33–34 FETCH_HEAD-is-shared KEY (absent from SKILL.md; AGENTS.md §9 covers refs/remotes only); :35–37 gate self-description, deliberate-harm proof, anti-no-op限 KEY; :38–39 "re-measure yourself" restates SKILL.md:626–628.

    Projection: 39 → ~26 (DUP 13, quotes kept) → ~26 under X0-C (X0 = 0).
    Verdict: one-third copy — the unique content (file≠card, gate self-proof, FETCH_HEAD, changeset by publish face) is 13 lines; the rest is SKILL.md 候选与批次 / 派发词原则 read again.

    lanes/engine.md — rows L-E1–L-E4 (36 lines, ceiling 40, headroom 4)

    row span unit verdict one-line justification
    L-E1 :1–4 title + preface + merger note KEY 1 / DUP 3 :3 preface; :3–4 merger note restates SKILL.md:257, which carries the ruling verbatim and the retired labels.
    L-E2 :6–17 范围 KEY 1 / DUP 9 :8–9, :11–13 package list = SKILL.md:257 verbatim; :10 metadata-facade.ts caveat KEY (absent from SKILL.md); :14–17 red lines derive from the domain table rows (services, devx) and copy the /meta sentence from spec.md:26–27 (no SKILL.md anchor — hoist one line into the table's cli/spec rows).
    L-E3 :19–23 常设承诺 KEY 2 / DUP 1 :21–22 driver-conformance ledger only-down + before/after reading KEY; :23 clause-② pointer with zero 增量.
    L-E4 :25–36 席内判断 KEY 8 / DUP 2 :27–29 area≠file, deletion itinerary, symbol anchoring KEY; :30 inheritance fact restates compile-surfaces.md:12, :31–32 evidence-weighting consequence KEY; :33–35 merge semantics per key class KEY; :36 "生产者在哪" restates SKILL.md:392–393.

    Projection: 36 → ~21 (DUP 15, quotes kept) → ~21 under X0-C (X0 = 0).
    Verdict: 42% copy — the 席内判断 section is the file (eight dense lines); the 范围 section is the domain-table row plus routing derivable from it.

    lanes/cli.md — rows L-C1–L-C4 (35 lines, ceiling 35, headroom 0)

    row span unit verdict one-line justification
    L-C1 :1–3 title + preface KEY 1 / DUP 1 :3 restates SKILL.md:288–291.
    L-C2 :5–13 范围 DUP 7 :7–10 = SKILL.md:262 verbatim; :11 "误标只上报不改签" restates SKILL.md:224–225; :12 spec ownership restates SKILL.md:239; :12–13 /meta sentence is the spec.md:26–27 copy.
    L-C3 :15–26 常设承诺 KEY 6 / DUP 4 :17–18 six required-check names KEY (parameter with no other home — misfiled: true-green.md objectstack section); :19–20 "逐 job 读 conclusion, 不认聚合; advisory 红止血立单" restate SKILL.md:170–172; :21–22 PR-green ≠ queue-green + queue-branch name format KEY; :23 path-floor vs clause-② content restates SKILL.md:765–770, :24 pnpm lint blind spot KEY; :25 never-weaken restates SKILL.md:429–430/:975, :26 escape-hatch scope KEY.
    L-C4 :28–35 席内判断 KEY 4 / DUP 2 :30–32 probe-baseline discipline KEY; :33–34 "静默是探针门槛不是判死" restates SKILL.md:683–686 verbatim; :33 lane baseline 35–50 min is the number SKILL.md:685–686 orders each lane to measure — KEY.

    Projection: 35 → ~21 (DUP 14, quotes kept) → ~21 under X0-C (X0 = 0).
    Verdict: 40% copy — the 范围 section has zero 增量; the required-check names and the probe-baseline rule are the content.

    lanes/skills.md — rows L-K1–L-K4 (35 lines, ceiling 35, headroom 0)

    row span unit verdict one-line justification
    L-K1 :1–3 title + preface KEY 1 / DUP 1 :3 restates SKILL.md:288–291.
    L-K2 :5–13 范围 KEY 1 / DUP 6 :7–11 = SKILL.md:260 verbatim including its own "全量判据与裁决引文在 SKILL.md 域车道表" pointer (the pointer is the surviving spelling); :12 QA-loop ownership + qa-run-is-carrier KEY; :13 ownership handoff restates SKILL.md:772–774 and :920–928.
    L-K3 :15–28 常设承诺 KEY 2 / DUP 10 :17 restates SKILL.md:875; :18–19 restate SKILL.md:727–749, :800–802 and landing-operations.md:32–35; :20–21 restate SKILL.md:582–611; :22 re-wrap ban restates SKILL.md:975, :23 "砍点逐条核幸存" KEY; :24–25 restate SKILL.md:405–406 and :952–954; :26–27 restate SKILL.md:82–85, :558–559, :143–149; :28 QA waves maintainer-triggered KEY.
    L-K4 :30–35 席内判断 KEY 1 / DUP 3 :32 "谁在读这一行 / token 税" review question KEY; :33 self-contained + id-lint restates SKILL.md:25–27 and :976; :34–35 fold-or-serial pointer restates SKILL.md:501–504.

    Projection: 35 → ~15 (DUP 20, quotes kept) → ~15 under X0-C (X0 = 0).
    Verdict: bloat — 57% is SKILL.md read twice by the one seat that reads SKILL.md most carefully; five lines (QA ownership, QA waves, paydown-survivor check, who-reads-this-line, review-question) are the job description.

    lanes/services.md — rows L-V1–L-V4 (30 lines, ceiling 30, headroom 0)

    row span unit verdict one-line justification
    L-V1 :1–4 title + preface + merger note KEY 1 / DUP 3 :3 preface; :3–4 merger note restates SKILL.md:258.
    L-V2 :6–13 范围 DUP 6 :8–11 = SKILL.md:258 verbatim; :12 spec zero-holding restates SKILL.md:239; :12–13 security-boundary human floor restates SKILL.md:427–428 verbatim.
    L-V3 :15–22 常设承诺 KEY 6 :17–18 ablation test for negative pins KEY (absent from SKILL.md and review-checklist); :19–20 security disclosure discipline KEY; :21–22 two gate readings (type-check-debt, check:i18n prerequisite) KEY — misfiled: true-green.md objectstack section.
    L-V4 :24–30 席内判断 KEY 3 / DUP 2 :26–28 auth-stack version-family hot surface + re-read premises KEY; :29–30 same-seam serial + re-pricing restate SKILL.md:492–493 and :507–510.

    Projection: 30 → ~19 (DUP 11, quotes kept) → ~19 under X0-C (X0 = 0).
    Verdict: 37% copy — the six 常设承诺 lines are dense and unique; 范围 has zero 增量.

    Lanes subtotal: 355 → ~232 (DUP 112 + DEM 11, quotes kept) → ~220 under X0-C (X0 = 15: director 11 dropped, hotcrm 2 + spec 2 kept). Structural findings: (i) the preface sentence is copied eight times (anchor SKILL.md:288–291); (ii) seven lanes copy their SKILL.md domain-table row — 24 lines of package lists with 增量 only at engine:10, devx:8–9, spec:12–13; (iii) the /meta routing sentence exists in three lanes and nowhere in SKILL.md — hoist once; (iv) three per-repo gate facts are misfiled in lanes/rest-channel and belong in true-green.md; (v) hotcrm carries a superseded rule at three sites (correction class).


    state-machine.md — rows S1–S5 (44 lines, ceiling 44, headroom 0)

    row span unit verdict one-line justification
    S1 :1–3 header / charter KEY 3 Pointer target of SKILL.md:97–101.
    S2 :5–14 通则 cross-state invariants KEY 6 / DUP 2 :7–8 six-state ONE-OF + one-write replace KEY (set enumeration absent from SKILL.md; H29–31 authority); :9–10 3-day rot horizon KEY; :11 generator-output carve-out KEY (ruled 2026-08-25); :12–13 "挂与清各一笔、两向都读回(被剥不是红灯是放行)" restate SKILL.md:147–148 and contract-review.md:10/:40; :13–14 legal intermediate state + "交接即标签" KEY (the latter also at SKILL.md:240–242 — keep here as the H-check reading).
    S3 :16–25 pm:on-hold KEY 7 / DUP 1 :18–19 legality restates SKILL.md:97 ("仅当带机器可读 Restart-when: 行…才合法"); :19–20 fired by the unlock scan, hold-comment three fields, no second label KEY; :21–23 Restart-touch: canonical line KEY (SKILL.md:97 points here); :24–25 release double-check KEY (SKILL.md:97 points here).
    S4 :27–36 pm:blocked KEY 7 / DUP 1 :29–31 canonical marker + wait-for-PR/release mapping KEY; :32–34 Unlock-action: is a parameter — anchor HERE; SKILL.md:98's parenthetical restates it nearly verbatim (Table-5 DUP, direction ruled by charter); :35 "改判是否有新阻塞,⛔ 不反射式放行" restates SKILL.md:520–522; :36 body-is-canonical-home + stale patrol KEY.
    S5 :38–44 pm:awaiting-maintainer + pm:retriage KEY 5 :40–41 anchor for the awaiting exit (SKILL.md:99 and director.md:59 point here); :42–44 anchor for retriage hang/strip (SKILL.md:101 points here).

    Projection: 44 → ~40 (DUP 4, quotes kept) → ~40 under X0-C (X0 = 0; :41 "2026-08-27 裁" is a date pointer).
    Verdict: dense — the residual overlap runs the other way: SKILL.md:97–99 state-table rows carry parameters (Restart-when: legality, Unlock-action: value) that belong here, a Table-5 cut, not a Table-3 cut.

    compile-surfaces.md — rows CS1–CS5 (26 lines, ceiling 26, headroom 0)

    row span unit verdict one-line justification
    CS1 :1–6 header / charter KEY 4 / DUP 2 :5–6 maintenance + re-verify rule is stated again at :20–22 and :24–26 (intra-file; anchor :20–26).
    CS2 :8 measurement stamp KEY 1 Dates the table; stale-by-design under CS5.
    CS3 :10–18 surface table KEY 9 Eight surfaces + half-surface + unfrozen row each change the per-surface declaration list a dispatch order must carry; :18's freeze/unfreeze history (2026-08-05→08-11) is DEM-in-row (no line saved; rows are metered by MAX_TABLE_ROW_BYTES).
    CS4 :20–22 PR-maintained discipline KEY 3 Anchor (true-green.md:5 points here).
    CS5 :24–26 re-verify grep string KEY 3 The operative check; paths and line numbers move daily by design.

    Projection: 26 → ~24 (DUP 2, quotes kept) → ~24 under X0-C (X0 = 0).
    Verdict: dense — a lookup table with its own maintenance contract; the only slack is the contract stated three times.

    landing-operations.md — rows LO1–LO5 (80 lines, ceiling 80, headroom 0)

    row span unit verdict one-line justification
    LO1 :1–4 header KEY 2 Pointer target of SKILL.md:762.
    LO2 :6–22 A generated-artifact PRs KEY 12 / DUP 1 :8–10 read os-regen list live KEY; :12 "四步序已机械化 os-regen-merge.sh" restates SKILL.md:778–779, rebase/force-push ban + script authority KEY; :15–16 MERGE-state gen:schema trap KEY; :18–22 sibling-entry assertion, implementation-body check, anchor-assertion wording, ⛔ hand-edit anchor KEY.
    LO3 :24–63 B follow to MERGED KEY 30 / DUP 4 / DEM 1 :26–28 flip timer 6–9 min, ladder re-arm, webhook unreliable KEY; :28–29 "确认 MERGED —— 两个读数" restates platform-readings.md:21–22; :29–30 "契约复核 PASS…已 ready + auto-merge" restates SKILL.md:772–774; :32–34 governed pre-check restates SKILL.md:727–738 in operational form (DUP 2), queue-guard consequence KEY; :35–38 dirty ⇒ merge main, "队列从不主动拉 PR", zero-enqueued three-step KEY; :40–43 Part of close-out at MERGED + closed_by check KEY (anchor SKILL.md:706–707 points at); :45–50 post-merge inventory reconciliation KEY, :47–48 "互补不互替…实测抓住…正是这一步" justification DEM; :52–56 subscribe/unsubscribe/archive KEY (anchor SKILL.md:782); :58–63 main-red two conventions KEY (anchor SKILL.md:171–172/:760; 「同意」 fragments not quote lines).
    LO4 :65–69 C draft-parked dependent PR KEY 5 Anchor SKILL.md:792 points at.
    LO5 :71–80 D serial relay KEY 10 Anchor SKILL.md:793–794 points at; the three relay rules are the only text on semantic hand-off.

    Projection: 80 → ~74 (DUP 5 + DEM 1, quotes kept) → ~74 under X0-C (X0 = 0).
    Verdict: dense — 7% reducible, all of it restatement of the ACCEPT fork and the two-readings rule that SKILL.md already states as principle.

    release-aftercare.md — rows RA1–RA6 (58 lines, ceiling 58, headroom 0)

    row span unit verdict one-line justification
    RA1 :1–5 header KEY 4 :5 ledger pointer (2026-08-21/23) is the pointer the DEM rows collapse into.
    RA2 :7–23 A placement re-draw KEY 9 / DEM 1 :9–13 re-draw physics, server ≈ 33 + 23 × RTT, ≤200 ms gate, must re-read placement KEY; :17–18 WAKER rule KEY, :19 California/us-east anecdote DEM; :20 measurement pollutes the next draw KEY; :21–22 protocol order KEY; :23 re-draw, never move the threshold KEY.
    RA3 :25–31 B real user-path probe KEY 2 / DEM 3 :27–28 rule KEY; :29–31 five-week SSO story and its moral are the founding incident — rule + "(实测 2026-08-22 SSO)" pointer.
    RA4 :33–42 C hand-edit = tourniquet KEY 5 / DEM 2 :35–36, :38, :39, :42 KEY; :40–41 reseed-reverted-it anecdote DEM.
    RA5 :44–50 D interrupted long loop KEY 3 / DEM 2 :46–48 KEY; :49–50 orphaned re-draw loop anecdote DEM.
    RA6 :52–57 E honesty clause KEY 3 / DEM 2 :54–55 rule + :57 "已合并 ≠ 已证实" KEY; :55–56 SQL DEFAULT anecdote DEM (principle kin: SKILL.md:520–521 public correction — this is the post-merge instance, keep).

    Projection: 58 → ~48 (DEM 10, quotes kept) → ~48 under X0-C (X0 = 0).
    Verdict: rules dense, stories heavy — the only Table-3 file where DEM (17%) exceeds DUP; each of the five sections carries its founding incident as a two-line story that the target spelling (rule + dated pointer) replaces.

    rest-channel.md — rows RC1–RC7 (87 lines, ceiling 87 → 93 under PR #14236)

    row span unit verdict one-line justification
    RC1 :1–5 header KEY 4 Pointer to the read-order policy at platform-readings.md:99 is the DUP-target spelling, kept.
    RC2 :7–14 通道边界 KEY 5 / DUP 3 :7 token/pool facts restate platform-readings.md:101–102, egress-proxy scope KEY; :8–9 ✓ legend KEY; :10–12 2026-08-25 session-gate matrix restates platform-readings.md:89–96; :12–14 /rate_limit credential discriminator KEY (platform-readings.md:92–93 delegates it here) + "未带 ✓ 不当已验证" KEY.
    RC3 :16–29 读侧 KEY 11 / DUP 3 :18 REST list endpoint is the anchor (platform-readings.md:147 copies it), :19 OR-contrast parenthetical restates platform-readings.md:172–174; :21 assignees rationale restates platform-readings.md:187–188; :25 files-endpoint 404 ⇒ git restates platform-readings.md:123; rest KEY. PR #14236 inserts +8 lines after :19 (refuse Link: rel="next", &page=N to short page, open_issues_count cross-check, cause-unknown boundary, keyword-control blind spot; dedup must include closed) — KEY-class parameters with no other home.
    RC4 :31–41 写侧 KEY 9 / DUP 2 :34–35 append/targeted-delete endpoints KEY; :35–37 "整组替换…静默剥标" + "403 回退 = RMW + 读回" restate platform-readings.md:175–177; :33, :38–41 KEY.
    RC5 :43–58 不可迁移 KEY 6 / DUP 7 :45–46 draft→ready GraphQL-only KEY, :46–47 REST PATCH doc-check restates platform-readings.md:47–48; :48 KEY, :49 red-window-no-exit restates platform-readings.md:112–113; :50 KEY, :51 fallback restates platform-readings.md:96–98/:151–152; :52 KEY, :53 restates platform-readings.md:117; :54 KEY, :55–56 rebuild recipe restates platform-readings.md:114–115; :58 red-window rule restates platform-readings.md:111–113 — PR #14236 retires :58 (DEL by that PR; home ruled exclusive to the 配额段) and folds a pointer into the :43 heading.
    RC6 :60–63 第三桶 git equivalents KEY 4 Pointer section that states the correct discipline ("⛔ 不在两处各存一份") the rest of the file breaks.
    RC7 :65–87 队列路由的读法 KEY 13 / DUP 4 / DEM 4 :67 merged_by = enqueuer KEY, :68 "一周内三席…三次全假" DEM; :69–72 three probes restate platform-readings.md:8–11, :12–14, :60–62 (:72 concedes "本条只归拢判据"); :73–77 count-is-not-mechanism: surviving rule KEY 2 (zero count = weak prior; read the ruleset's required set; re-measure any written count), the same-day refutation story 0→8→224 DEM 3; :78–84 required-name/shard coupling + objectui's nine names + "required 只 gate 等待不 gate 触发" KEY 7 (misfiled: true-green.md objectui section; 「我觉得够了」 is a 4-char fragment); :85–87 push-only jobs + unexpanded matrix KEY 3.

    Projection: 87 → ~64 (DUP 19 + DEM 4, quotes kept) → ~64 under X0-C (X0 = 0). Under #14236: 93 → ~70 (its +8 are KEY; its −2 is RC5 :58 already counted).
    Verdict: bloat in 不可迁移 and 队列路由 — 26% is platform-readings re-collated against the file's own §第三桶 discipline; #14236's ruling C (red-window rule single-homed in platform-readings) is the precedent for the whole cut.

    seat-post-protocol.md — rows SP1–SP19 (105 lines, ceiling 105, headroom 0)

    row span unit verdict one-line justification
    SP1 :1–4 header KEY 3 Pointer target of SKILL.md:300–301.
    SP2 :6–9 贴 = 座位, four sections KEY 2 / DUP 2 :6–7 first clause + :8 restate SKILL.md:284–289; 增量 = "段段皆现值" and the legacy-post shrink rule (:9).
    SP3 :10–13 title = status board KEY 4 Template + vocabulary; slow-state-only rule.
    SP4 :14–15 assignee = seated PM KEY 2 Routine exception is the boundary.
    SP5 :16–18 current-PM triple; author field is the hard reading KEY 3 Decides takeover arbitration source.
    SP6 :19–20 read-side boundary DUP 2 Restates SKILL.md:291–293 verbatim ("token 税" rationale is DEM-in-line).
    SP7 :21–22 shift narrative stays out KEY 1 / DUP 1 :21 restates SKILL.md:291/:293; :22 unbounded-post failure mode KEY.
    SP8 :23–25 takeover compression KEY 3 Edit-history-is-archive + version pointer + oversize surfacing.
    SP9 :26–27 hot-file serial queue shape KEY 1 / DUP 1 :26 restates SKILL.md:293–294; the shape (file → ordered cards → area) KEY.
    SP10 :28–29 residual race KEY 1 / DUP 1 :28 restates SKILL.md:294–295; :29 new-seat index check KEY.
    SP11 :30–36 liveness two paths; >24h reclaim; never from updated_at/title KEY 6 / DEM 1 Anchor for the >24h line (dispatch-runbook.md:65 calls it "既有回收线"); :35–36 "贴陈旧 18h…15 张卡在飞" anecdote DEM.
    SP12 :37–40 write-side refresh points KEY 3 / DUP 1 :37 restates SKILL.md:291; enumeration + protocol-migration + Routine close-out KEY.
    SP13 :41–47 close of shift KEY 5 / DUP 2 :46–47 release criterion + title-lag restate SKILL.md:67–69.
    SP14 :48–53 linger KEY 5 / X0 1 Anchor (SKILL.md:69 points here); :49 proposal-fragment quote X0.
    SP15 :54–63 handover checklist ①–⑦ KEY 10 Anchor SKILL.md:825 points at.
    SP16 :64–65 epic not in seat posts; spec ownership DUP 2 SKILL.md:301 verbatim.
    SP17 :67–78 座位 Routine 创建细则 KEY 10 Unique transport facts; the home for the parked family's (g) Routine facts (:70–73 already carries fresh-session no-tools).
    SP18 :80–88 epic close-out + zombie reclaim KEY 8 Anchor SKILL.md:314 points at.
    SP19 :90–104 release-board ops KEY 11 / DUP 1 / DEM 1 :92–93 per-repo producer KEY; :94 three queries KEY, :95 "归零 = 三张板都空" restates SKILL.md:809–810, :96 retired-reading tombstone DEM; :97–98 freshness cadence KEY; :99–101 clear-board triage KEY; :102–104 pin precondition KEY.

    Projection: 105 → ~90 (DUP 13 + DEM 2, quotes kept) → ~89 under X0-C (X0 = 1, dropped).
    Verdict: dense operational detail — 14% reducible, all of it the 座位贴协议 principle restated from SKILL.md:284–301; the other half of that overlap (SKILL.md's 18-line section carrying parameters that belong here) is a Table-5 question.

    true-green.md — rows TG1–TG4 (33 lines, ceiling 34, headroom 1)

    row span unit verdict one-line justification
    TG1 :1–6 header / charter KEY 4 PR-maintained contract by pointer to compile-surfaces.md:20–22.
    TG2 :8–18 objectstack KEY 9 Verify-lock entry + VERDICT line, Linux-only degradation, dispatch-gates no-path + --repo; each is a false-green failure mode with its fix.
    TG3 :20–25 objectui KEY 5 Root-only pnpm test, type-check spelling — both measured false greens.
    TG4 :27–33 cloud KEY 5 Preflight + the error TS grep blind spot.

    Projection: 33 → 33 (nothing reducible) → 33 under X0-C (X0 = 0).
    Verdict: dense — one fact per line; intake candidate for the three misfiled per-repo gate facts (cli.md:17–20, services.md:21–22, rest-channel.md:78–84 ≈ +10 lines), which needs a ceiling raise here that the lanes' cuts can fund only if the maintainer moves budget across files.


    X0 — quote-line count per file

    file quote lines X0-C disposition
    platform-readings.md 0 — (date pointers only)
    lanes/director.md 11 (:8–9, :21, :26–27, :37–39, :50, :54, :61) drop all 11 — every quote is decoded by a rule line beside it; :8–9 is also verbatim at SKILL.md:923
    lanes/hotcrm.md 2 (:9, :11) keep — the charter quotes are the operative test and have no other home (SKILL.md:196 points here)
    lanes/spec.md 2 (:37–38) keep — the English branch-information test is the criterion itself
    lanes/devx · engine · cli · skills · services 0 —
    state-machine.md 0 —
    compile-surfaces.md 0 —
    landing-operations.md 0 — (「同意」 fragments at :58, :62)
    release-aftercare.md 0 —
    rest-channel.md 0 — (「我觉得够了」 fragment at :84)
    seat-post-protocol.md 1 (:49) drop — proposal fragment; the rule stands on :48–53
    true-green.md 0 —
    Table 3 total 16 C removes 12, keeps 4

    Table 3 totals

    file lines ceiling DEL DUP DEM X0 → after DEL+DEM+DUP → under X0-C
    platform-readings 314 314 1 14 13 0 ~286 ~286
    lanes (8) 355 359 0 112 11 15 ~232 ~220
    state-machine 44 44 0 4 0 0 ~40 ~40
    compile-surfaces 26 26 0 2 0 0 ~24 ~24
    landing-operations 80 80 0 5 1 0 ~74 ~74
    release-aftercare 58 58 0 0 10 0 ~48 ~48
    rest-channel 87 87 (→93) 0 19 4 0 ~64 ~64
    seat-post-protocol 105 105 0 13 2 1 ~90 ~89
    true-green 33 34 0 0 0 0 33 33
    total 1102 1 169 41 16 ~891 (−19%) ~879 (−20%)

    Corrections (not cuts): hotcrm.md :4, :35, :55 — type / 首触定级 withheld from the single-lane seat, superseded by SKILL.md:191–193 (2026-08-26). Relocations (not cuts): cli.md:17–20, services.md:21–22, rest-channel.md:78–84 → true-green.md; platform-readings.md:264–266 → landing-operations A; platform-readings.md:267–273 → beside dispatch-runbook.md:177–190. Hoist: the /meta routing sentence (spec.md:26–27 = engine.md:14–15 = cli.md:12–13) has no SKILL.md home — one line in the domain table's cli/spec rows retires all three.

    Interim signal

    The mass splits sharply by file type, and the method discriminates both ways. The six fact tables (platform-readings, state-machine, compile-surfaces, landing-operations, seat-post-protocol, true-green) are dense: 0–14% reducible, and what is reducible is almost entirely intra-corpus restatement (the degradation ladder, the RMW label discipline, the zero-hit rule, the kick branches, the ACCEPT fork, the seat-post principle) rather than prose — the per-line byte density the ratchet measures is real there. The bloat has two loci. First, the eight lane files: 35% reducible and 91% of that is DUP — every lane copies its SKILL.md domain-table row (24 lines of package lists, 增量 in three places), a one-sentence preface (eight copies), and 5–10 lines of SKILL.md principles each; skills.md is 57% restatement, director.md carries the supersession ledger SKILL.md already narrates, and hotcrm.md still states a rule the 08-26 ruling reversed at three sites. Second, rest-channel.md: 26% reducible, its 不可迁移 and 队列路由 sections re-collate platform-readings facts against the discipline its own §第三桶 states, and #14236's ruling C is the precedent that settles direction. release-aftercare is the one DEM-dominant file (17%): rules are tight, but each section carries its founding incident as a two-line story. X0 is small in this slice (16 lines, 12 droppable, 11 of them in director.md). Net: Table 3 projects 1102 → ~891 (−19%), i.e. the thesis holds for the seat charters and the channel table and fails for the fact tables — and the platform-readings ceiling problem behind the parked family is a redundancy problem, not a density problem: its own 28 reducible lines cover the ~23 KEY-class family lines, so the family lands at 314 with no raise once Phase 2 cuts first.


    Generated by Claude Code

  11. os-litant commented on Sep 2, 2026

    @os-litant
    Contributor

    Phase 1 COMPLETE — Tables 3–6 posted; errata; resume state

    Skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1), under the maintainer's 2026-09-02 order 「审核所有的 skills,进行全面的优化。」 (program anchor #14292). Tables 3–6 were produced by contract-tier classification auditors (fable, read-only, pinned refs stated inside each table) and posted verbatim by a relay agent with programmatic read-back: comments 5503220186 (Table 3, references) · 5503108537 (Table 4, os-dev.md + CLAUDE.md) · 5503165609 (Table 5, SKILL.md) · 5503187659 (Table 6, AGENTS.md).

    Errata (relay transcription, source files are correct): Table 6 row A46 reads "must name" — the source and the gate constant read mustName (one word). Table 3 row L-H4 reads "dual-edition cri准则 KEY" — source: "dual-edition criterion KEY". Table 3 row L-X4 reads "anti-no-op限 KEY" — source: "anti-no-op limb KEY". Also, GitHub's sanitizer stripped angle-bracket placeholders inside a few backticked spans (rows O5, O36, A35, A42, A61, the Table-3 header, one Table-5 verdict line) — read a bare backtick pair there as "a placeholder was here".

    Corpus-wide Phase-1 result (all six tables):

    file / layer lines projection (DEL+DEM+DUP, quotes kept) under X0-C verdict
    dispatch-runbook (T1) 271→(277) ~235 ~222 bloat in rationale tails
    contract-review · decision-analysis · review-checklist (T1–T2) 48 · 46 · 84 46 · 45 · ~81 KEY — dense
    references remainder (T3: platform-readings, lanes/*, state-machine, compile-surfaces, landing-ops, release-aftercare, rest-channel, seat-post-protocol, true-green) 1,102 ~891 (−19%) ~879 fact tables dense; the eight lane files 35% DUP of SKILL.md; rest-channel 26%
    os-dev.md (T4) 469 ~350 ~347 dense dev parameters; bloat = restated git-family rules + one prohibition written at four sites + the gate-locked four-axes copy
    CLAUDE.md (T4) 86 86 as sanctioned excerpt (2 corrections) ~30 if excerpts collapse to rule + hook + pointer two of four hand-copied blocks have drifted
    pm-dispatch SKILL.md (T5) 984 ~905 ~840 with DUP collapsed → ~815 dense core, accreted shell (护栏 section 15/27 lines are 2nd–4th copies)
    AGENTS.md (T6) 1,162 ~660 ~650 ~500 content lines are incident narrative, gate internals restated from script headers, PM procedure already in references, two drifted hand-kept tables

    Corrections (not cuts) surfaced by the tables: lanes/hotcrm.md states a rule reversed on 2026-08-26 at three sites; SKILL.md hard-codes claude-fable-5 at three lines against its own single-source rule; CLAUDE.md's stash block points at the wrong AGENTS.md section and carries a statistic with no source; AGENTS.md:8 (the v5.0 rename notice) is superseded; the Context Routing persona table has no reader. Held raises #13052-A and decision #11910 are funded many times over by any top-ten AGENTS.md block, so neither needs a ceiling raise once Phase 2 executes.

    Resume state: Phase 2 = maintainer batch rulings on the classification, presented in batches of ≤5 rows-groups each with full prose (the decision-presentation rule), starting with the highest-yield blocks (AGENTS.md top ten, SKILL.md top ten, CLAUDE.md excerpt form, X0 quote policy); Phase 3 = rewrite PRs per ruling at the file's mandated tier (SKILL.md / os-dev.md / frame copies at fable; references at opus build + fable review) with every ratchet re-locked DOWN in one pin PR at the end. Frozen inputs (#13300, #13432, #13680 on os-dev rows O25/O47; the platform-readings family on Table 3's P rows) discharge with their rows' rulings. ⛔ No state change to this card (pm:dispatched stays; the program is in progress).


    Generated by Claude Code

  12. os-litant commented on Sep 2, 2026

    @os-litant
    Contributor

    Phase 2 — the four maintainer-floor items the Phase-1 tables left open are presented as items 2–5 of decision batch 3, #14685: the X0 provenance-quote policy (A keep all · B date + pointer · C quote only where it is the operative test, Table 1's recommendation), the CLAUDE.md excerpt form (Table 4 rows C1–C6), the four-copy decision frame locked by check:skill-frame-sync (Table 4 row O56), and cross-file line-budget moves (Table 3's platform-readings intake). The Phase-2 execution flights on this corpus (#14445 · #14209 · #14133 and the intake) start on that ruling; until then the corpus files stay held as recorded on the seat post.


    Generated by Claude Code

  13. os-litant commented on Sep 3, 2026

    @os-litant
    Contributor

    Phase 2 ruled, Phase 3 dispatched — skills-lane seat (session session_01LraLgQVGq8egUwfYZpbYt1), 2026-09-03T05:29Z.

    The Phase-2 maintainer ruling on this audit's internal-corpus questions came through decision batch 3 (#14685, items 2–5), recorded by the director seat at 04:40Z (comment 5520452691; verbatim 「同意,然后执行契约复审」):

    • X0 quote policy → C: a maintainer quotation stays verbatim only where it is itself the operative criterion; the rest become a date plus a pointer to the ruling comment.
    • CLAUDE.md excerpt form → B: each of the four hand-copied excerpts collapses to one ⛔ rule sentence, the enforcing hook or override switch, and a pointer to the AGENTS.md anchor (about 30 lines); the two measured drifts are fixed; the charter sentence is rewritten as ruled.
    • Decision frame → B: two copies (internal-pm, published-pm); dev-side copies replaced by the {decision_frame} placeholder path; check:skill-frame-sync watches two sites.
    • Cross-file line-budget moves → A: the per-file line ratchet admits a same-PR cross-file move under a no-total-increase gate, the ruling cited in the ratchet comment; check:ratchet-remedy-authority's self-description gains the exception; platform-readings.md absorbs the three misplaced per-repo facts.

    Phase 3 is dispatched from #14685 (claim comment there names the four branches), one draft PR per item, each Part of #14685 + Part of #13597, in-seat contract review before any human review request. The ceiling re-lock pin PR (single writer on check-skill-line-ratchet.mjs) stays the last step, after these land. The parked platform-readings intake (#14133, #14445, #14209 and the #13326 family) becomes dispatchable once item 5 is on main.


    Generated by Claude Code

  14. claude commented on Sep 4, 2026

    @claude
    Contributor

    Maintainer ruling recorded — 2026-09-04 (live PM chat, skills seat session_019RfFHiRCSs3JXLK4cwcfox, os-steve). Asked whether the PM skills should be re-reviewed for plain-language readability (「要不要把所有的项目经理 skills 再复核一遍,语言改的通顺一点,便于人类审核,目前我看起来好累」), and on the seat's core-vs-secondary reading, the maintainer ruled, verbatim:

    各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊

    ⇒ provenance narratives and incident post-mortems leave the skill corpus entirely; rules only, in plain language; a quotation survives only where its words are the operative criterion. This supersedes the X0 policy C (#14685 item 2: date + pointer) wherever the two differ — a pointer to a ruling comment is provenance too, and goes. Execution family: #15379 (member 1 = SKILL.md, dispatched now; members 2–5 = the references in two groups, os-dev.md, AGENTS.md, each a governed draft PR with a rule-inventory table for human review; net shrink only; the frame block untouched). Phase 3 of this audit continues under that ruling.


    Generated by Claude Code

  15. claude commented on Sep 4, 2026

    @claude
    Contributor

    Maintainer's word on the digest's format, recorded verbatim (skills seat, session session_019RfFHiRCSs3JXLK4cwcfox, os-steve; live PM chat, 2026-09-04 15:0xZ, after the maintainer merged/queued PR #15402, the digest):

    15402 是我合并的,但问题是以后skills也是按照这种格式写吗?以后改动也是这种格式吗?

    我不能确保每一条都合理,但是这种格式审核起来确实很舒服。

    The seat's reading, put to the maintainer in the same chat as the standard the remaining members follow unless the maintainer says otherwise:

    1. The digest's shape is the house style for every agent-facing constitution text this lane owns — .claude/skills/pm-dispatch/SKILL.md, its references/**, .claude/agents/os-dev.md, root AGENTS.md / CLAUDE.md: one rule per line (≤120 bytes), plain Chinese with identifiers in backticks, grouped under the file's own sections; lookup data stays in tables; forms and templates stay as pointers to references/; ⛔ marks a prohibition and nothing else; no dates, no quotations, no incident narratives, no issue or PR numbers, no ⚠️/⭐; each line says what to do or never do and the threshold or name it depends on.
    2. Future changes follow the same shape: a rule change edits the rule line; if the rule is one of the digest's, the digest line changes in the same PR; provenance (the ruling, the date, the incident) goes into the PR body's 改前 → 改后 table, never into the file; net line count never grows past the ratchet without a ruling; the decision-frame block stays byte-identical to its watched copies.
    3. The published teaching skills under skills/** are a different genre (schemas, examples, walkthroughs for AI authors) and keep their tutorial shape; the same hygiene applies to them (no incident narratives, no issue numbers, no dates), which they already meet.
    4. The maintainer's 「不能确保每一条都合理」 is the review model working as intended: each rule is now one line that can be challenged by number; a challenged line becomes a card in this lane.
    5. A mechanical hold on the style is added as the family's last member: a hygiene gate on the PM corpus (dates, 「」, ⚠️/⭐, first-person seat voice) beside the existing id-lint and line ratchet, so the corpus cannot drift back to the old shape.

    Member 1b (the SKILL.md rewrite) is dispatched under this standard as soon as core-rules.md is on main.


    Generated by Claude Code

  16. claude commented on Sep 4, 2026

    @claude
    Contributor

    Maintainer's rulings on the format's two open points, recorded verbatim (skills seat, session session_019RfFHiRCSs3JXLK4cwcfox, os-steve; live PM chat, 2026-09-04 15:1xZ).

    On marking importance — the seat put option A (importance by placement, three layers: 红线 at the top of each file, the 150-line 核心条款 digest, the 细则 files; ⛔ only for absolute prohibitions; a short explicit precedence rule: maintainer ruling > AGENTS.md > 红线 > 核心条款 > 细则 > seat judgment, ⛔ lines outside the four-axes weighing, conflicting 细则 resolved by the stricter reading plus a card) against option B (a per-line tier tag). On CLAUDE.md — the seat put "one pointer line + the red lines, one line each, nothing else" (CLAUDE.md is the only file auto-loaded into every session; AGENTS.md is not; two of the four red lines have no hook), with the @AGENTS.md import as a later option once AGENTS.md is small. The maintainer:

    同意你的建议
    然后开始修改

    Executed as: member 1b (SKILL.md rules-only rewrite, 红线 first, a precedence section, the digest's 护栏 moved to the top in the same PR) dispatched as soon as core-rules.md is on main; member 5 (root AGENTS.md rules-only + CLAUDE.md = pointer + red lines) dispatched once the open PR on those two files has landed; the objectui pair follows its own in-flight PR the same way.


    Generated by Claude Code

  17. objectstack-fleet commented on Sep 28, 2026

    @objectstack-fleet
    Contributor

    Closed completed: the PM-corpus audit is delivered, and the corpus-hygiene gate is not built (a new gate defaults to no)

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-09-28T14:35Z.

    Provenance: the maintainer's ruling. In the triage seat's chat (2026-09-28), the long-term-program batch 1 was presented in the director format with this card as item ③. Option A was 「按完成关闭;门禁按「门禁默认不加」不做」, recommended A with C as the fallback. The maintainer replied, verbatim: 「13597 A 14292 A 13658 A」.

    Delivered.

    What is not done, by ruling.

    • The "lower every ceiling at once" closing PR. The ceilings were lowered PR by PR as each rewrite landed, and the line ratchets hold the result. No single closing PR is owed.
    • The corpus-hygiene gate. It is not built. SKILL.md: 「新增门禁默认否…例外只有维护者点名」. The maintainer chose A, not B.

    The assignee is released in this act; the claim ends with the program.

    Reopen when the maintainer names a PM-corpus gate, or a new audit round is directed. A new round is its own card.

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions