@@ -525,7 +525,11 @@ export const CEILINGS = new Map([
525525 // `ruledRaises` records quoting their own rulings, which is what keeps that
526526 // declaration's `was` at this file's literal pre-move 314 while the move's own
527527 // raise still reads +10 against the sources' −11.
528- [ '.claude/skills/pm-dispatch/references/platform-readings.md' , 397 ] ,
528+ // Lowered 397 → 359 by the rules-only rewrite (maintainer 2026-09-04:
529+ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates,
530+ // ruling citations and incident narrative left; every rule stayed. Landed count,
531+ // headroom 0, same convention (lowering is always legitimate).
532+ [ '.claude/skills/pm-dispatch/references/platform-readings.md' , 359 ] ,
529533 // Per-operation REST/GraphQL/git channel mapping — which fleet operation has
530534 // a REST twin (each row executed in a real session, provenance date carried
531535 // per row), the handful that are GraphQL-only, and the queue-routing
@@ -561,7 +565,11 @@ export const CEILINGS = new Map([
561565 // file's own header already routes the queue-section readings there and
562566 // refuses to keep a second copy, so nothing is left behind but the rows that
563567 // are channel mappings. Landed count, headroom 0, same convention.
564- [ '.claude/skills/pm-dispatch/references/rest-channel.md' , 88 ] ,
568+ // Lowered 88 → 82 by the rules-only rewrite (maintainer 2026-09-04:
569+ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates,
570+ // ruling citations and incident narrative left; every rule stayed. Landed count,
571+ // headroom 0, same convention (lowering is always legitimate).
572+ [ '.claude/skills/pm-dispatch/references/rest-channel.md' , 82 ] ,
565573 [ '.claude/skills/pm-dispatch/references/review-checklist.md' , 84 ] ,
566574 [ '.claude/skills/pm-dispatch/references/landing-operations.md' , 80 ] ,
567575 // Release-aftercare duties — what a lane PM still owes AFTER a tagged release
@@ -574,7 +582,11 @@ export const CEILINGS = new Map([
574582 // deliberately not restated here: a live number copied into a neighbour's
575583 // comment goes stale the next time that file moves — which is what happened to
576584 // the arithmetic this sentence replaces.
577- [ '.claude/skills/pm-dispatch/references/release-aftercare.md' , 58 ] ,
585+ // Lowered 58 → 50 by the rules-only rewrite (maintainer 2026-09-04:
586+ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates,
587+ // ruling citations and incident narrative left; every rule stayed. Landed count,
588+ // headroom 0, same convention (lowering is always legitimate).
589+ [ '.claude/skills/pm-dispatch/references/release-aftercare.md' , 50 ] ,
578590 [ '.claude/skills/pm-dispatch/references/seat-post-protocol.md' , 105 ] ,
579591 // Per-repo「真绿」跑法索引 — the canonical test invocation, the gates a CI-log
580592 // grep cannot see, and the local preflight, one fact per line per repo. Added
@@ -586,7 +598,11 @@ export const CEILINGS = new Map([
586598 // (that one is the published `skills/` catalog, and only it). Set at the landed
587599 // line count read from this ratchet's own run — headroom 0, same convention as
588600 // the entries above.
589- [ '.claude/skills/pm-dispatch/references/true-green.md' , 34 ] ,
601+ // Lowered 34 → 32 by the rules-only rewrite (maintainer 2026-09-04:
602+ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates,
603+ // ruling citations and incident narrative left; every rule stayed. Landed count,
604+ // headroom 0, same convention (lowering is always legitimate).
605+ [ '.claude/skills/pm-dispatch/references/true-green.md' , 32 ] ,
590606 // Per-surface compile/typecheck coverage index — which surfaces a repo-wide
591607 // typecheck actually reaches, which are compiled only by their own package's
592608 // script, and the frozen ones. #12098: after true-green.md above it was the
@@ -598,7 +614,11 @@ export const CEILINGS = new Map([
598614 // from this ratchet's own run — headroom 0, same convention. ⚠️ Its seven
599615 // over-120B lines are all `table` rows, structurally exempt and NOT
600616 // re-wrappable; they are metered instead by MAX_TABLE_ROW_BYTES below.
601- [ '.claude/skills/pm-dispatch/references/compile-surfaces.md' , 26 ] ,
617+ // Lowered 26 → 24 by the rules-only rewrite (maintainer 2026-09-04:
618+ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates,
619+ // ruling citations and incident narrative left; every rule stayed. Landed count,
620+ // headroom 0, same convention (lowering is always legitimate).
621+ [ '.claude/skills/pm-dispatch/references/compile-surfaces.md' , 24 ] ,
602622 // Plain-language digest of the corpus's binding rules, one rule per line, added
603623 // under the 2026-09-04 rules-only ruling so the maintainer reviews the rules
604624 // instead of the corpus. Set at the landed line count (headroom 0, same
@@ -612,23 +632,51 @@ export const CEILINGS = new Map([
612632 // 2026-08-23) — the patrol-anchor sentence was carried verbatim by all seven
613633 // lanes and now lives once in SKILL.md 执行座位职责, so every lane drops it.
614634 // cli.md pays −2 because it was carrying the map's last line of headroom.
615- [ '.claude/skills/pm-dispatch/references/lanes/engine.md' , 40 ] ,
635+ // Lowered 40 → 32 by the rules-only rewrite (maintainer 2026-09-04:
636+ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates,
637+ // ruling citations and incident narrative left; every rule stayed. Landed count,
638+ // headroom 0, same convention (lowering is always legitimate).
639+ [ '.claude/skills/pm-dispatch/references/lanes/engine.md' , 32 ] ,
616640 // Lowered 30 → 28 and 35 → 31 as the other two SOURCES of the cross-file
617641 // move recorded on platform-readings.md above. A per-repo gate reading in a
618642 // lane charter is read by one lane and missed by the other six, which is the
619643 // whole defect the move repairs: services.md gave up the two aggregate-
620644 // reading boundaries, cli.md the required-check set with its `in_progress`
621645 // and advisory clauses. Landed counts, headroom 0, same convention.
622- [ '.claude/skills/pm-dispatch/references/lanes/services.md' , 28 ] ,
623- [ '.claude/skills/pm-dispatch/references/lanes/cli.md' , 31 ] ,
624- [ '.claude/skills/pm-dispatch/references/lanes/devx.md' , 39 ] ,
625- [ '.claude/skills/pm-dispatch/references/lanes/skills.md' , 35 ] ,
626- [ '.claude/skills/pm-dispatch/references/lanes/spec.md' , 46 ] ,
646+ // Lowered 28 → 27 by the rules-only rewrite (maintainer 2026-09-04:
647+ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates,
648+ // ruling citations and incident narrative left; every rule stayed. Landed count,
649+ // headroom 0, same convention (lowering is always legitimate).
650+ [ '.claude/skills/pm-dispatch/references/lanes/services.md' , 27 ] ,
651+ // Lowered 31 → 29 by the rules-only rewrite (maintainer 2026-09-04:
652+ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates,
653+ // ruling citations and incident narrative left; every rule stayed. Landed count,
654+ // headroom 0, same convention (lowering is always legitimate).
655+ [ '.claude/skills/pm-dispatch/references/lanes/cli.md' , 29 ] ,
656+ // Lowered 39 → 38 by the rules-only rewrite (maintainer 2026-09-04:
657+ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates,
658+ // ruling citations and incident narrative left; every rule stayed. Landed count,
659+ // headroom 0, same convention (lowering is always legitimate).
660+ [ '.claude/skills/pm-dispatch/references/lanes/devx.md' , 38 ] ,
661+ // Lowered 35 → 33 by the rules-only rewrite (maintainer 2026-09-04:
662+ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates,
663+ // ruling citations and incident narrative left; every rule stayed. Landed count,
664+ // headroom 0, same convention (lowering is always legitimate).
665+ [ '.claude/skills/pm-dispatch/references/lanes/skills.md' , 33 ] ,
666+ // Lowered 46 → 43 by the rules-only rewrite (maintainer 2026-09-04:
667+ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates,
668+ // ruling citations and incident narrative left; every rule stayed. Landed count,
669+ // headroom 0, same convention (lowering is always legitimate).
670+ [ '.claude/skills/pm-dispatch/references/lanes/spec.md' , 43 ] ,
627671 // repo:hotcrm lane charter (maintainer rulings 2026-08-20: exemplar-app repo —
628672 // platform capabilities implemented upstream, 展现平台能力, 不扩散需求, runs on
629673 // community edition). Set at landed line count (headroom 0, same convention).
630674 // 45 → 44: same patrol-anchor hoist deletion as the six lanes above.
631- [ '.claude/skills/pm-dispatch/references/lanes/hotcrm.md' , 57 ] ,
675+ // Lowered 57 → 53 by the rules-only rewrite (maintainer 2026-09-04:
676+ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates,
677+ // ruling citations and incident narrative left; every rule stayed. Landed count,
678+ // headroom 0, same convention (lowering is always legitimate).
679+ [ '.claude/skills/pm-dispatch/references/lanes/hotcrm.md' , 53 ] ,
632680 // Project Director seat charter (maintainer ruling 2026-08-27, verbatim in the
633681 // file: 「项目总监 由人工定期指挥,负责处理 contract-review 类别的和需要决裁的。」) — a
634682 // human-invoked seat owning the contract-review chain, the adjudication duty and
@@ -640,7 +688,11 @@ export const CEILINGS = new Map([
640688 // directive; the file sat at headroom 0 with no losslessly compressible slack in
641689 // the touched sections (arithmetic in the raising PR), so the directive is the
642690 // ruling that pays for exactly the two lines it dictates.
643- [ '.claude/skills/pm-dispatch/references/lanes/director.md' , 77 ] ,
691+ // Lowered 77 → 72 by the rules-only rewrite (maintainer 2026-09-04:
692+ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates,
693+ // ruling citations and incident narrative left; every rule stayed. Landed count,
694+ // headroom 0, same convention (lowering is always legitimate).
695+ [ '.claude/skills/pm-dispatch/references/lanes/director.md' , 72 ] ,
644696 // 399 → 405 (#11126): maintainer-ruled (2026-08-23, option B, quoted in that
645697 // PR) — the +6-line cross-repo dispatch-gates caveat, sized so the queued
646698 // #11137 (395→399 on main) and this PR's +6 compose to exactly 405.
@@ -830,22 +882,22 @@ export const CROSS_FILE_MOVES = new Map([
830882 date : '2026-09-04' ,
831883 delta : 34 ,
832884 } ,
833- {
834- // The third increment, ruled the same day as the one above and in the
835- // same way. Quoted beside this entry's ceiling too, where the +39 is
836- // accounted for member by member. Copied from there, not paraphrased.
837- ruling :
838- 'the third-increment raise on `.claude/skills/pm-dispatch/references/platform-readings.md`'
839- + ' — maintainer, decision batch #34, 2026-09-04, verbatim and untranslated:'
840- + ' 「决裁批 #34 同意」 on the presented recommendation, item 1 = A; and the director'
841- + ' record\'s own sentence for that item: "raise the ceiling by the measured +39,'
842- + ' 358 → 397". Measured per member rather than estimated: attribution-footer'
843- + ' scoping +12, the MCP-side rate refusal read as a window reading +6, the CDN'
844- + ' cause behind the payload channel\'s absence rule +5, and the Routine transport'
845- + ' family +16 = +39 exactly.' ,
846- date : '2026-09-04' ,
847- delta : 39 ,
848- } ,
885+ // RETIRED HERE, and retired rather than re-numbered, because the ceiling
886+ // above no longer stands high enough to carry both records. The rules-only
887+ // rewrite gave 38 of these 73 ruled lines back (397 → 359), so 35 of them
888+ // still stand while the destination is only 45 above `was` — and a set of
889+ // records claiming more than that reads as an over-claim, which is exactly
890+ // what `crossFileMoveVerdict` refused. The header names the remedy: a ruled
891+ // raise since given back is spent, so retire its record. The THIRD-INCREMENT
892+ // record is the one retired (maintainer, decision batch #34, 2026-09-04,
893+ // 「决裁批 #34 同意」, +39, quoted in full beside the ceiling above) rather
894+ // than the intake-family record below it, and the choice is the conservative
895+ // direction rather than a preference: 34 declared against 35 actually
896+ // standing prices this move at +11 for a raise that took +10, while keeping
897+ // the +39 instead would price it at +6 — under-pricing the move is the
898+ // failure the header warns about. Neither ruling is reopened by this: both
899+ // are still quoted beside the ceiling, which is where a reader gets back to
900+ // them, and the lines they bought are the lines this rewrite handed back.
849901 ] ,
850902 sources : [
851903 [ '.claude/skills/pm-dispatch/references/lanes/cli.md' , 35 ] ,
0 commit comments