phase-deepen restated as RULES — its cautionary body becomes lessons, and a guard keeps the pack prescriptive
The proof pack, and the worst offender by a wide margin. Measured on origin/main after MOTIR-3155's merge (2026-08-21 08:55):
phase-deepen.md is 658 lines and runs 53:1 cautionary to prescriptive — 53 wrong-register markers against 1. It is the largest pack in the corpus and the largest single segment of the shipped SHARED_PLANNING_RULES.
Its units split cleanly. Four are method and stay: BOTH content axes, AC satisfiable inside the boundary, one update_plan_item per card, no shortcuts. The rest is the precondition-verification family — a method head (name your preconditions, verify each against shipped reality, cite where) wrapped around limbs that are each one incident plus a fixture: the PROSPECTIVE limb, the NEGATIVE, the ENUMERATION, the HANDED SCAN, plus the asserted-absence limb and the context-ref claim gate.
The head is a rule. The limbs are lessons. This story states the head positively, moves each limb's body into the lesson store with its axes, and leaves the pack holding method.
Nothing is deleted. Each migrated limb becomes a lesson row whose sourceRef points at its notes.html entry, and the PR carries the limb-to-lesson table so a reader can follow any paragraph to where it went.
⚠️ RE-MEASURE BEFORE YOU START — these numbers decay and have already moved once. They were first taken as 685 / 61 / 2, in a worktree that contained the measurer's own uncommitted addition — the exact failure the ENUMERATION limb warns about, committed while planning the card that migrates that limb. Corrected against
origin/main, and then MOTIR-3155 merged into this very pack mid-planning. Take the counts at your own base and quote the ref; the thresholds below are relative to whatever you measure, not to the figures printed here.
The guard is what stops the pack refilling. A register check — cautionary markers against prescriptive ones — is cheap, and its threshold is a ratchet in one direction: the number may not go up.
Acceptance criteria
- Each unit of
phase-deepen.mdis either restated in positive form or migrated, and the PR carries a table with one row per unit naming which. - The precondition-verification head survives as a rule stating what to do; its limbs plus the asserted-absence limb and the context-ref gate are migrated.
- Every migrated limb has a lesson row carrying its axes and its
sourceRef; the PR table names the row for each. - The pack's cautionary-register count falls and its prescriptive count rises, both measured at the run's own base with the ref quoted, and both the before and after figures stated in the PR. Do not target the numbers printed in this card.
- The restated pack is mirrored into
SHARED_PLANNING_RULESand the conservation baseline is refreshed in the same commit, with the fixture's own diff reviewed. - A guard asserts the pack's register ratio does not regress, and fails when a cautionary paragraph is appended.
Context refs
motir-metaprompts/plan-rules/phase-deepen.md— the pack, at 658 lines onorigin/mainpost-MOTIR-3155.motir-metaprompts/plan-rules/CORPUS-MAINTENANCE.md— RULES vs LESSONS, and THE THIRD TIER.motir-aisrc/llm/planningRulePacks.ts—VERIFY_EVERY_PRECONDITIONand thephase-deepenconstants.motir-aitests/planningRulePacks.test.ts,tests/planningRuleConservation.test.ts,tests/planningRuleRouting.test.ts— the three guard suites; the conservation baseline is a strict length equality that any change breaks.- motir-meta#302 · motir-ai#265 — MOTIR-3155's merges into these paths, which moved the counts mid-planning.