Repository navigation
PM corpus audit (maintainer-directed): classify every instruction line — keep / duplicate / demote / delete — then rewrite and re-lock every ratchet #13597
Description
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
- 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.
- Phase 2 — maintainer batch ruling on the classification table (决裁批 mechanism; director seat records verbatim rulings).
- 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
- Value gate on every skills queue admission: ① does the text change a specific decision? ② can deletion replace addition? ③ construct over prose. Already applied: Carry the ls-tree enumeration idiom into its three remaining instruction-text homes (os-dev.md · platform-readings · AGENTS.md §9) — deferred from #13305 by face-holds and the re-wrap funding ban #13484 and os-dev.md's Part-of bullet lacks the bookkeeping-sentence / quote-backtick shapes that PR #13505 sharpened in review-checklist.md — deferred by the frame-region fence #13506 rejected not_planned; PR docs(pm-dispatch): state the duty-7 reader-count method's applicability domain #13580 closed unmerged per the B ruling.
- Prose-additive queue cards FROZEN into this audit (pm:queue → pm:on-hold; restart = Phase-2 ruling): [finding] The re-wrap funding ban lives only in the PM's SKILL.md — two devs paying line ratchets hit it independently in one hour because the dev contract never shows it #13116 · [finding]
.claude/agents/os-dev.mdrule 1 lists the verify lock's four guarantees and no non-guarantee, one line above a wall-clock absolute — every dev agent reads exclusivity the brief never promised #12800 · Make check:generated's "not run here" source-audit list a hard obligation in the os-dev contract — disposition 2 of #13207, routed to the skills lane #13300 · [finding] The os-dev contract statesskip-changesetas BOTH a closed path list and a publication test — asrc/file that never reachesdistsatisfies one and violates the other #13432. - Parked escalations become audit inputs: [finding] A contract-review PASS leaves ZERO trace on the PR itself — verdict on the card, label cleared, no review object — so a legitimate un-park is indistinguishable from an intruder from the PR side #13417 (PR-side PASS trace — one funded line against contract-review.md's 48/48, headroom 0) · the platform-readings ceiling escalation (branch
claude/issue-13326-platform-readings-family@71b4005bb, 359 lines vs ceiling 314; whitespace-only re-wrap measured to GROW that file, sha-proven ⇒ it is at maximal density, so Phase 3 must cut or split content there, never compress; family: [finding] MCPsearch_issuesis returning FALSE ZEROS — reproduced on three seats across two repos, and it DEGRADED mid-session, so every dedup that rode on it passed vacuously #13326 [finding] The zero-quota payload channel silently drops the NEWEST timeline items once an issue outgrows the SSR first window — measured 3 of 5 comments, both 2026-08-30 dispatch comments missing #13373 [finding] The zero-quota payload channel renders only the FIRST 15 timeline items and returns an EMPTY tail — so a read-back of a just-posted comment reads byte-identical to sanitizer damage #13385 [finding] An issue body ending in a---rule followed by the attribution footer loses EVERYTHING FROM THE RULE ONWARD on create — 5 measured instances, silently stripping the required footer #13384 [finding] The zero-quota issue-page payload is CDN-CACHED and can be minutes-to-hours stale — cache-busting and no-cache did NOT defeat it, and one seat asserted a half-state about another seat's work on that stale read #13387 Record the agent-created-Routine transport facts in references/platform-readings.md — fired sessions get no GitHub MCP tools, and self-binding trades new-session recoverability for tool availability #13257 [finding] MCPissue_read get_labelsfails on a FRESH PR number whilelist_pull_requestsreturns its labels — misread as "no labels", the mandated RMW fallback strips concurrent bot labels #13141 [finding] LIVE:os-elonis no longer assignable on this repo — every seat's claim protocol silently loses its assignee half, mid-session #13561 [finding] MCPissue_read get_labelscannot resolve a PR number ("Could not resolve to an Issue") whilepull_request_read getreturns the same PR's labels — one wasted call per misread #13583). - Ruled-but-unlanded ceiling raises HELD: [finding]
git worktree add -bcan fail writing upstream config and leave the branch created but no worktree — the recipe's own half-state, and.git/configis shared like the stash #13052-A (AGENTS.md 1162→1164) · [finding] Atimeout-killed command reports near-zero CPU to the shell'stime, understating cost 14x-82x — and it reads exactly like "this step blocks rather than computes" #12980-A-FLOOR (os-dev.md 466→471) — serial behind PR docs(pm-dispatch): three maintainer-ruled standing rules + the Part-of bookkeeping-sentence warning #13505 regardless; the audit may render both moot. If the maintainer wants either landed before the audit, say so and it rides the chain as already ruled. - Corrections still flow: text contradicting a standing ruling stays fixable now (e.g. the SKILL.md:758 pre-hang contradiction, card finding(skills): 预挂 needs:contract-review 在 2026-08-28 裁定后持续复发——两日 9 例,分诊/执行席的定级流程文本未吸收「可复审增量存在前永不挂标」 #13557). The freeze is for additions, not for making the corpus honest.
Refs: #12911 (thesis) · #11901 (construct-removal precedent) · #13304 (first construct removal executed) · #13484 / #13506 (first value-gate rejections).
Generated by Claude Code
Activity
zhuangjianguo commentedon Aug 31, 2026
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–bat the pinned ref) · unit name · class (KEY / DUPLICATE / DEMOTABLE / DELETE) · measured justification.What "measured justification" must contain, per class:
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: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 sectionsreferences/contract-review.md— 48references/decision-analysis.md— 46references/review-checklist.md— 84references/platform-readings.md— 314 (+ the parked family branch71b4005bbas input)references/lanes/*(director.md 77 · skills.md · siblings).claude/agents/os-dev.md— 466SKILL.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 passAGENTS.md— 1,162 ·CLAUDE.md— 86 — repo-wide audience, so their rows carry the most careInputs 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
zhuangjianguo commentedon Aug 31, 2026
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
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
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
zhuangjianguo commentedon Aug 31, 2026
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
Verdict: healthy — 45/46 KEY. Re-lock at 45–46.
review-checklist.md — rows V1–V3
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
zhuangjianguo commentedon Aug 31, 2026
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
71b4005bbas 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
huangyiirene commentedon Aug 31, 2026
Phase-3 rider recorded (from the #13588 flight, 2026-08-31): SKILL.md's clause-② gate paragraph routes readers to
references/contract-review.mdfor 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.mjslast). 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
os-justin commentedon Sep 1, 2026
Phase-3 rider recorded (from #14081's completed census, 2026-09-01): the close-reason discipline line —
state_reasonmust 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,029completedcloses (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
os-litant commentedon Sep 2, 2026
Phase 1 · Table 4 —
.claude/agents/os-dev.md+CLAUDE.mdPosted 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.mdPinned 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) andAGENTS.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–O62name/description/model: opus)descriptionis the dispatch-trigger text; themodel:pin is gate-enforced (check:agent-model-declared→scripts/check-agent-model-declared.mjs) — 10 non-prose lines.os-dev-reportmarker)check:pm-skill-id-lint,EXTRA_FILESincludes os-dev.md) ⇒ one sentence by its own charter. :25 and :27 are broken wraps (2 lines carrying 3 characters).-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).Blocked-by:, label by kind (SKILL.md:966–968 cites "os-dev 规则 3 同句"),mcp_callsreport 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.releases// force-push / pushmain/ merge; changesetneeds_decision) — the routing is the increment.premise_still_validflock, 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.--trapworktree remove --forcegit statusthere first" (KEY); :98–100 why (DEM).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).OS_VERIFY_LOCK_SLOT; ~20 min ⇒ narrow orblocked+--status--statusverified live (os-verify-lock.sh:7,1370,1496); "实测:这么做的每个 agent 都无通知停摆" and "沉默是唯一错误答案" (DEM). Mechanism anchor for O54's queue clause.--workspace-concurrencyplacement; pnpm 10installrejects itoverrideslive inpnpm-workspace.yamldelete()+ overwrite an existing doublecheck:engine-double-contract) + "overwrite, don't pin new" decision.--filterexits 0; objectuitype-checkplaywright installdispatch-gates.mjswith no hand-fed paths; script's own test suitegit difflist", "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").--repo--repoparameter (KEY); sibling-repo explanation (DEM).rev-parse --short HEAD| headbreaksPIPESTATUSpipefail) (KEY); :196 "已判定不可机械化" and repetition (DEM).typecheckexcludes tests;MODULE_NOT_FOUND)--listFilescheck + class list (KEY); "(实测一次…0 命中)" (DEM).dist-lies restates AGENTS.md:766–769 and the command restates O19.packages/specanchor rewrite; MERGE-state trap;os-regen-merge.shauthorable-surface.base.json;baseRevlag is info (KEY); :224–225 MERGE-commit deferral + script restate AGENTS.md:624–634 (DUP). Secondary carrier of frozen input #13300 (generated-artefact family).origin/mainmoves;$BASEgit reset --soft origin/mainstaging others' merged files (:232–234) is NOT in AGENTS.md (which coverscheckout origin/main -- <paths>) — KEY. PR #14229: :229–231 → 1 pointer line (−2).git diff HEADempty, which AGENTS.md:434–439 measures as blind to a polluted index — safe only because ① mandatescheckout HEAD --; the residue line should lead withgit status --porcelain.code+statusenvelopeKNOWN_UNALIASED_TEST_IMPORTSledger, per-leg sequence +ablation-dist-preflight.mjs(--absent), evidence ≠ editor exit code, anchoredgrep -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.Fixes/Part of; neverFixesa decision-box card; negated closing keywords; squash trailers; English; footerskills/**diff: two readings + budget (2026-08-21 quote)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.skip-changesetper repo: criterion + closed list; label at PR open; additive write + read-back; objectui neverscripts/__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 anddispatch-gates.mjs:7152"write one unless this card is docs-only", verified). Classified only; the Phase-2 ruling on this row discharges both.<…>; read-backneeds_decision+open_questions; four-axes headerstartanchor ofcheck:skill-frame-syncCOPIESinternal-dev— not editable without the gate.skills/objectstack-pm-dispatch/SKILL.md); held isomorphic bycheck:skill-frame-sync⇒ not a block edit: Phase 2 must rule on retiringinternal-devfrom COPIES (pointer to SKILL.md) — the copy taxes every dispatch for the rareneeds_decisionpath. :411–412 already paraphrases the 2026-08-04 ruling without a quote (option-B).mainbroken ⇒blockedbindinganchor); :419–420 blocked triggers are KEY but misfiled under this heading (belong with O44/O48).rework/premise_still_valid: falsesemantics; template is a toolcheck:nul-bytes; self-scan grepTotals (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–C6git stashmain"; 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).content/docs/releases/in a code PRmainin 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).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 bycheck:skill-frame-sync; the decision is a construct decision — retireinternal-devfrom 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 onneeds_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 waycheck-published-list-mirrorsalready 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_HEADin 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
os-litant commentedon Sep 2, 2026
Phase 1 · Table 5 —
.claude/skills/pm-dispatch/SKILL.mdPosted 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/maina59f78d (checkout HEAD a39b02a;git diff a39b02a a59f78don 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 20references/**/*.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./pm-dispatchargs table.claude/PR; English + three Chinese channels; claim-first/AGENTS.md wins); X0 1 (L84)Unlock-actionclause is an in-line copy of state-machine.md:32–34 (zero line yield); X0 1 in-line (L101)Blocked-by:three duties / label-has-readerpm:blocking= derived cache restates table row L100completed: successper-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)domain:uisplit, 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)ensure-pm-labels.shheader (index L982) and X0 2 in-line quotes (L257, L260) — zero line yield, density onlysincewindow 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)Claim:first line is the machine predicate (2026-08-11), `Clause-②: yesFixes)claude-fable-5while L770–771 rules 「档位单源,⛔ 本文…不写模型名」 — internal contradiction, correction classGOVERNED_APPROVERSsingle 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)CONTRACT_REVIEW_TIERsingle 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-derivedcheck:skill-frame-synckeeps 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)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-5at 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
os-litant commentedon Sep 2, 2026
Phase 1 · Table 6 —
AGENTS.mdPosted 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'spnpm dev -- --freshforms 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'sscripts/adr-anchors/pointer; 134 ADRs on disk) — nothing to classify under that heading..claude/skills/**(:5–6); the "no Copilot mirror needed" sentence (:4–5) is a fact with no decision → 1 line.project→environmentnoticepnpm lint/eslint is the only style authority, neverprettier --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-pathand "prettier 3.8.1" (:54–58) are a platform reading → pm-dispatchreferences/platform-readings.mdby charter, 0 lines here.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.excludetests; phantom@ts-expect-error; TS7006 = broken import)tsconfig.test.json/gen:test-typecheck-debtwiring belong to the script headers. Dev-only content — natural home is os-dev.md "Toolchain traps" (:120–144), which does not carry them today.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 bycheck-cross-package-test-inputs.mjsandcheck-published-list-mirrors.mjsheaders → 1 line.RECOGNISED_PATH_SPELLINGS(firsttsfence 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.--self-test+ correct the block in the same edit, never route around" (:129–132) andcheck: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.--freshcreds, example block--freshseedsadmin@objectos.ai/admin123, platform-admin promotion; the twopnpm dev -- --freshspellings are the cleared population ofcheck-agent-test-spelling.mjs(header :85–87) — rewriting them changes that gate's census.--forwarding)--vitest trap duplicates os-dev.md:93–96 and :138–141 (anchor os-dev; :160 already points there;check:agent-test-spellingenforces); KEY: one backend on :3000, random port + tear-down.sdui:manifestsecond half../objectui,objectui:refresh, never hand-editpackages/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 anchordocs/releases-maintenance.md"After the pin moves" (exists).DEV_PROXY_TARGET,:3001/_console)../objectui/AGENTS.md:445–449carries 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.namespace/tableName/ one Zod source per type (allowOrgOverrideonly) / north-star read before structural change. Dense.OS_env-var scheme_ENABLED,OS_ALLOW_,OS_SKIP_, third-party exceptions,readEnvWithDeprecation— exists atpackages/types/src/env.ts:52); only the "debt, not precedent" gloss (:226–227) is compressible.caselabel is not enforcement; check the call site" (:232–236, :240); the write-path-validator incident (:236–239) is provenance → 1 line.guard-main-checkout.sh/-bash.shheaders (authority per :14–15); CLAUDE.md:23–42 is the sanctioned excerpt (DUP direction CLAUDE.md ← AGENTS.md).??/alias, tolerated alias = ADR-0087 conversion entry (:254–259, :262–265); the Postel argument, the executor-shim pay-down history,applyConversionsToStoredItemand the worked example (:259–262, :265–272) are justification; os-dev.md:77–78 carries the dev one-liner.check:adr-anchorsenforces); the three-ADR reversal story (:276–278) is provenance.check-governed-prose.mjssatisfies containment from backtick spans anywhere in the :283–:341 region and :291 is the enumeration itself → under X0-C this quote stays (operative test).GOVERNED_SURFACESincheck-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.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.check-governed-queue-guard.mjsheader :13–44 carries why), CODEOWNERS/audit description (:333–339 —check-governed-merges.mjsheader "carries this rule's incident history" per :336). SKILL.md:727–760 is the PM procedure (DUP direction SKILL ← AGENTS).workflow_dispatch, approvereleaseenvironment, 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.chore: version packagesqueues 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.git stashban + replacements blockstash@{N}note restateguard-shared-stash.shheader (authority; carries the incident) and CLAUDE.md:44–71 (sanctioned excerpt).refs/remotesshared;FETCH_HEADper checkoutBASE=$(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..turbo/cachegit hash-objectbyte-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.git checkout <ref> -- <path>stagesgit checkout HEAD --/git restore --source=HEAD --staged --worktree, readgit status --porcelain, never trustgit diff HEADalone, prefergit 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.scripts/pm/git-history.mjsanswer-or-REFUSEguard-tree-enum.shcovers the enumeration half mechanically.pm-dispatch/references/platform-readings.mdby 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.claude/issue-<n>-<slug>(Duplicate Fix Guard workflow exists); never force-push / pushmain(os-dev.md:75 dev copy); never rebase shared branches — each changes a decision.HEADis 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.conclusion: success; the six required contextscheck-required-contexts.mjsINSTRUCTION_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.gh pr mergeunmeasured)merge-queue-triage.ymlas machine input); devs never merge (os-dev.md:75) — this paragraph serves only seats that already read those references.main(stale-artefact table)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").mainmerges rebuild what moved,spec build && check:generatedif 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.merge=os-regendriver, deferral,pre-commitdebt.githooks/pre-commit+pre-push+check:merge-driver; :634–635 namesscripts/pm/os-regen-merge.shas the in-repo authority; KEY lines: rebuild thencheck: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.drivers,formula,metadata-core/-fs/-protocol,platform-objects,mcp,observability,verify,qa,console,connectors,triggers,lint,sdui-parser,cloud-connection,appsunlisted; 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.)stack.zod.ts:1742/2395, index.ts:99–130); drifted 3/18 —conversions,meta-spelling,migrationsunlisted — Phase-2 either adds three rows or replaces the table with a pointer topackages/spec/src/*/; the Responsibility prose is the compressible part.EnhancedObjectKerneldeprecationObjectKernelvsLiteKernel(existspackages/core/src/lite-kernel.ts); the deprecated name is live incli/src/commands/doctor.tsandpackages/core/README.md→ the one-line warning still changes a choice.references/AUTO-GEN,meta.jsonrulemeta.json);docs-drift-check.yml:470,489cites this table by name.content/docs/releases/RELEASE-OWNED row (1 line, ~600 B)translations/*.generated.tsrow (1,081 B — the corpus's longest line, pinned by the row-byte ratchet)check:i18n/check:i18n-coverage; the merge-mode/en-rewrite narrative ischeck-i18n-bundles.mjsheader material; rule = "never hand-edit structure; regenerate with--write; translated values are hand-written" — same line, a third of the bytes.packages/spec: intro + change→gate→generator tablegen:to run); the sequential-masking explanation (:732–737) → 1 line.check:generated,--fix)--fixregenerates only proven-stale; nocheck:script regenerates;check:api-surface/check:exported-anyreaddist— rebuild before believing; pure audits have no generator); the rest (--reconcile-only,z.ZodType<any>pattern,dual-source-exports.baseline.json) is gate internals.check:react-declaration-paritycaveatsdocs/releases-maintenance.md) — anchor A15.gen:openapi/gen:sbomhave no gatedocs/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".metadata.internal: truepackages/spec/src/data/field.zod.tsregion) teaches the same and cannot drift; the publishedskills/catalog andcontent/docscarry the authoring examples.init/start/destroy)packages/core/src/types.tspointer are the decision; the retired-example story and the 8-line fence are illustration.check-published-list-mirrors.mjs:293andcheck-declaration-mirrors.mjs:84— anchor); the retired-duplicate re-learning story, the misdiagnosis aside and the ADR-0076 D12 gloss are justification.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.?locale=/extractLocalestory and theGET /data/:objectnormalizer walkthrough are provenance.warnexample are the decision; the preamble (:963–966) and the "someone who cannot connect it to this line" gloss are not.check-durability-degradation-log-level.mjsheader (authority per :1012) carries it.errorowes consequence + fix; do not over-apply; caller-propagationif (!service)iswarn; a failure handed to the caller is not a degradation — declareFAILURE_PROPAGATION_*(:990–993, :998–1008); the reference-text pointer stays; explanation trimmed.DURABILITY_CRITICAL_CALLEESin the fixing PR; read-seam rule's one question; ask the shared predicate; the two ledgers differ). Inline ruling 「裁 3 —— 收窄先行」 is provenance (X0 inline).check-startup-registry-verdict.mjsheader carries it.createLazyCacheRateLimitStorage, ADR-0116 ordering,sealNodeTypeVocabularyatkernel:bootstrapped) are decisions; the gate description (:1098–1101, already trimmed −2 by PR #14239) → 2 lines.retiredKey()/ guidance maps; the four-marker block (enforced bycheck:adr-0087-registration);spec-property-retirementskill 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.git grepat the pinned SHA; the Console Pin Gate mechanics explanation → 1 line.packages/spec+OS_SKIP_DTSCHANGELOG.md/ROADMAP.mdX0 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.mjsheaders, 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
os-litant commentedon Sep 2, 2026
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 isgit show a59f78d:<path>line numbers. Ceilings fromscripts/pm/check-skill-line-ratchet.mjsCEILINGS 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 citefile: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)
grep merge_group); incident: ruleset-without-trigger repo, 2026-08-20.auto_mergeunstableauto_merge=None(re-arm kicks and re-queues); 2026-08-26 set→None, ruling 2026-08-11.removed_from_merge_queue→merged.origin/mainread by contentmergedboolean checks; incident 2026-08-23merged:falsewithmerged_atset; SKILL.md:172 points here.mergeable_statelazy;merge-treezero-quota probeunknown≠ reading and how a dirty head is detected before arming; 2026-08-25 re-arm on dirty head.draftbit on every update; request-review REST route; undraft pathsdraft:trueon 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.enable_pr_auto_mergeneedsmergeMethod:"SQUASH"; echo unreliable both waysupdate_pull_request_branch/merge_pull_request405 text, never by ref absence; 2026-08-28.perPageby expected populationghverbs split by transportgh apiwhen porcelain is rate-limited; boundary: host seats only (container has nogh).remaining; PR #14236 rules this the exclusive home (retires rest-channel.md:58).issue transferunavailable ⇒ rebuild in destinationfields/minimal_outputdo not save poolsearch_issuesfor dedup; inherited "unavailable" claim false/search403 body parses as a clean zeroorderBy: CREATED_ATleg to same-round dedup; 2026-08-20.search_pull_requestslabelsOR vs REST AND;issue_writewhole-replace; REST appendlist_issuesnever returns assigneesissue_readbefore any claim; rest-channel.md:20–21 restates it.issue_readentity escaping; backtick angle-bracket lossBlocked-by:lives in BODYin:commentshint — superseded by :194–196 and absent everywhere else in the corpus.list_issue_types403 whileissue_write type:workscommand -vrule stands.rerun_failed_jobsreuses the original refsuccess+ heavycancelled= supersessionhead_shafirst, no investigation.---footer eatenrev-list --count0 + no open PR); failure direction is a live card read as claimed.get_sessionreading; host fork--tierper path, floor not release".closed_by_pull_requestsccusage blocksin-container; blind spot; wall message shapeProjection: 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:
backTimelineItems0; newest dropped; CDN staleness; in-bandtotalCountvs edges check; three assertion classes must use the authoritative read; never assert another seat's absence from payload)search_issuesrewrite of P27+P28 (mid-session degradation; per-batch positive control; must state the scanned bound or report NOT MEASURED;incomplete_results:falseasserts a false completeness)list_pull_requests fields:["labels"]correct;get_labelson a known-good number = method boundary; a false "no labels" + RMW strips auto-labeler labels; read ②/④, confirm ③pm:dispatched+ no-assignee half-state; discriminatorGET /assignees/{user}404 vs control 204; read back the assignee half; fallback = token identity + note)---widened to issue create (7 cases); ⛔ MCP read-back to judge loss; ⛔ PATCH repair (eats the footer block)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_triggerrefuses UI Routines;connectors/modelparams seen 08-31, untested)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)
pm:awaiting-maintainercarrier + 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.--since-refanchoring + 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.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)
repo:*seats self-producetypeand finding 首触定级; onlydomain:*is withheld).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.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)
packages/types,$schemacorpus, pin coupling) is absent from SKILL.md — KEY./metarouting sentence copied at engine.md:15 and cli.md:12–13 (no SKILL.md home — the only/metahit at SKILL.md:257 ispackages/metadata*); :28 tier pointer KEY.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)
.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.git show origin/main:restates SKILL.md:161–162, :33–34 FETCH_HEAD-is-shared KEY (absent from SKILL.md; AGENTS.md §9 coversrefs/remotesonly); :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)
metadata-facade.tscaveat KEY (absent from SKILL.md); :14–17 red lines derive from the domain table rows (services, devx) and copy the/metasentence from spec.md:26–27 (no SKILL.md anchor — hoist one line into the table's cli/spec rows).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)
/metasentence is the spec.md:26–27 copy.pnpm lintblind spot KEY; :25 never-weaken restates SKILL.md:429–430/:975, :26 escape-hatch scope 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)
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)
type-check-debt,check:i18nprerequisite) KEY — misfiled: true-green.md objectstack section.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
/metarouting 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)
pm:on-holdRestart-touch:canonical line KEY (SKILL.md:97 points here); :24–25 release double-check KEY (SKILL.md:97 points here).pm:blockedUnlock-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.pm:awaiting-maintainer+pm:retriageProjection: 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)
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)
os-regenlist live KEY; :12 "四步序已机械化 os-regen-merge.sh" restates SKILL.md:778–779, rebase/force-push ban + script authority KEY; :15–16 MERGE-stategen:schematrap KEY; :18–22 sibling-entry assertion, implementation-body check, anchor-assertion wording, ⛔ hand-edit anchor KEY.dirty⇒ merge main, "队列从不主动拉 PR", zero-enqueuedthree-step KEY; :40–43Part ofclose-out at MERGED +closed_bycheck 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).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)
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.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)
/rate_limitcredential discriminator KEY (platform-readings.md:92–93 delegates it here) + "未带 ✓ 不当已验证" KEY.Link: rel="next",&page=Nto short page,open_issues_countcross-check, cause-unknown boundary, keyword-control blind spot; dedup must include closed) — KEY-class parameters with no other home.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)
updated_at/titleProjection: 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)
--repo; each is a false-green failure mode with its fix.pnpm test,type-checkspelling — both measured false greens.error TSgrep 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
Table 3 totals
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/metarouting 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
os-litant commentedon Sep 2, 2026
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):
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-5at 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:dispatchedstays; the program is in progress).Generated by Claude Code
os-litant commentedon Sep 2, 2026
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.mdexcerpt form (Table 4 rows C1–C6), the four-copy decision frame locked bycheck: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
os-litant commentedon Sep 3, 2026
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 「同意,然后执行契约复审」):
CLAUDE.mdexcerpt form → B: each of the four hand-copied excerpts collapses to one ⛔ rule sentence, the enforcing hook or override switch, and a pointer to theAGENTS.mdanchor (about 30 lines); the two measured drifts are fixed; the charter sentence is rewritten as ruled.{decision_frame}placeholder path;check:skill-frame-syncwatches two sites.check:ratchet-remedy-authority's self-description gains the exception;platform-readings.mdabsorbs 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 oncheck-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 onmain.Generated by Claude Code
tooling(pm): admit a same-PR cross-file move in the skill line ratchet
tooling(pm): admit a same-PR cross-file line-budget move, and take th…
claude commentedon Sep 4, 2026
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:⇒ 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
claude commentedon Sep 4, 2026
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):The seat's reading, put to the maintainer in the same chat as the standard the remaining members follow unless the maintainer says otherwise:
.claude/skills/pm-dispatch/SKILL.md, itsreferences/**,.claude/agents/os-dev.md, rootAGENTS.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 toreferences/; ⛔ marks a prohibition and nothing else; no dates, no quotations, no incident narratives, no issue or PR numbers, noskills/**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.Member 1b (the SKILL.md rewrite) is dispatched under this standard as soon as
core-rules.mdis onmain.Generated by Claude Code
claude commentedon Sep 4, 2026
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.mdimport 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.mdis onmain; member 5 (rootAGENTS.mdrules-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
fix(pm): report a claim that parses to ZERO branches instead of disca…
skills(pm-dispatch): the contract-review PASS leaves its provenance c…
fix(pm): read the ownership markers through the undecorated line, and…
feat(pm): close-cards packs one card into ONE fleet-write dispatch (c…
objectstack-fleet commentedon Sep 28, 2026
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.
SKILL.mdprinciple-only on 2026-09-23 (815 → 319 lines), and it is still 319 lines onorigin/maintoday.5542555278: importance by placement, the precedence rule, CLAUDE.md as a pointer) are in force.What is not done, by ruling.
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.