Re-tag `core` on the act test — six segments to `phase-skeleton`, two divided, no new packs
core is the pack every one of the 22 cells loads, and it is the only pack no axis has ever narrowed. Applying the ACT test to it is the largest single reduction still available.
The measurement
core is 51,864 chars, 44% of a translate deepen cell. Segments a DEEPEN session cannot act on, because their discharge needs a tool it does not have:
| segment | chars | discharged by |
|---|---|---|
RECONCILE_EXISTING_NOT_DONE_WORK | 15,383 | modify_node / remove_node — skeleton-only |
THE_GATE | 5,861 | "BEFORE YOU PROPOSE ANYTHING" |
A_CARD_THAT_DECLARES_ITS_SPLIT | 5,376 | splitting a card is emitting a card |
AUTHOR_ONE_CARD_AT_A_TIME | 510 | it IS the phase boundary |
≈27KB — over half of core — on 17 cells that cannot act on any of it. The final classification is the ACT decision's, not this card's; these are the ones the measurement already names, and the decision's own criteria require the full list.
What this card does
Splits core per that decision. Whether the result is core + core-skeleton + core-deepen, or only the two halves, is settled by the decision and NOT re-opened here — this card executes the shape it names.
⚠️ AMENDED 2026-08-29 (MOTIR-3917 settled it) — THERE ARE NO NEW PACKS, and this card's title is now wrong about its own deliverable.
DECISION.rule-phase.md§3: acorerule that fails the act test moves into the EXISTINGphase-skeleton/phase-deepenpack. Acore-skeletonpack would be reachable from exactly the five cellsphase-skeletonis already loaded on — a second name for the same tier, which TOTAL RESOLUTION would accept and no reader could justify.PLANNING_RULE_PACK_ORDERdoes not change; this is a re-tag ofCORPUS_ORDERrows plus three divisions.And the scope is now FIXED rather than to-be-determined.
DECISION.rule-phase.md§5 names it, and the arithmetic is verified against the constant at734b8c4:coreis 51,864 chars = 30,817 MOVE (six segments, re-tag only) + 10,155 STAY (the intersection set) + 10,892 DIVIDED (two segments — the estimation gate and the coding-conventions/repo-pin pair — each owing a word-diff).THE_DESIGN_GATE(5,292) and the precondition limbs (8,445) are MOTIR-3920's, not this card's.
It is a RE-TAG plus a SPLIT, and the two need different evidence. A segment that moves whole is proved by its routing row; a segment DIVIDED — the estimation gate is the likely one — is proved by a word-diff over its parts, exactly as MOTIR-3898 proved the eight-way cut of the precondition rule.
Acceptance criteria
- Every
coresegment lands in the tier the ACT decision assigns it, and the PR carries the per-segment table: segment, old tier, new tier, and the ACT that discharges it. A segment whose row says "both" cites the decision clause that permits it. - The routing baseline's superset proof shows, for every moved segment, that the cells carrying it are a superset of the cells where its situation can occur — and any segment that LOSES a surviving cell is named with the act that cannot occur there. This is the same instrument MOTIR-3897 / MOTIR-3899 / MOTIR-3900 used and it is not optional.
- TOTAL RESOLUTION holds: every legal cell still resolves to a non-empty duplicate-free pack list, every pack is reachable, and no pack is declared empty. If a tier ends up empty it is RETIRED explicitly, as
kind-leafwas, not left declared. - No rule text changes except where a segment is DIVIDED, and each division is proved by a word-diff over its parts showing zero runs lost. The conservation classifier reports the named divisions and nothing else; the baseline is refreshed in the same commit with its diff reviewed.
- The register ratchet holds: the corpus-wide cautionary count does not rise.
- The composed size of every cell is measured before and after and stated in the PR, with the largest reduction and any increase both named. No skeleton cell may grow by more than the segments the decision moves INTO it.
composeSkeletonRules()— the union a skeleton session composes when the kind is unknown — is re-derived over the new tiers and asserted still to carry no deepen pack.
Context refs
motir-aisrc/llm/planningRulePacks.ts—CORPUS_ORDER,PLANNING_RULE_PACK_ORDER,resolvePlanningRulePacks,composeSkeletonRules.motir-aitests/planningRuleRouting.test.ts+tests/fixtures/planningRuleRouting.baseline.txt— the superset proof.motir-aitests/planningRuleConservation.test.ts,tests/planningRuleRegister.test.ts— the text and register guards, and their deliberate-refresh paths.motir-aitests/planningRulePacks.test.ts— TOTAL RESOLUTION, reachability, the cell arithmetic.- MOTIR-3898 — the eight-way cut whose method this follows, including how a division is proved.