MOTIR-3310Done
Mirror the restated phase-deepen pack into SHARED_PLANNING_RULES and refresh the conservation baseline
Carry the restated wording into the shipped constant — the copy that actually costs customers tokens.
This is a removal, which none of the corpus's guard suites has faced before. Every prior mirror change was an append, and two of the three guards are shaped around that assumption:
planningRuleConservation.test.tsclassifies the diff and treats areplaceordeleteas fatal, permitting only a whole added sentence. A restatement is a replace-and-delete by construction, so this card will turn it red, and the refresh is the deliberate act the check exists to require. Refresh it, then review the fixture's own diff — that diff is the point of the check, and this is the first time it will show removed words. Report the removed-word count rather than the usual zero.planningRulePacks.test.tsasserts specific phrases survive into every cell. Phrases belonging to migrated limbs must be removed from that suite in the same commit, not left to fail; each removal is named in the PR body against its table row.planningRuleRouting.test.tsconserves delivery by segment title. Restating a rule's first line moves a title, so this baseline may need refreshing too — read its diff before accepting it.
Find the destination by a text probe over the constant, never a pack-name lookup: the mirror files some rules under a different pack than the source does, and the constants carry no exported prefix.
Acceptance criteria
- The restated units appear in
SHARED_PLANNING_RULESand the migrated limbs are gone from it. - The conservation baseline is refreshed in the same commit; the fixture's removed-word and added-word counts are both quoted in the PR body, with a sentence on why removal is expected here.
- Guard assertions pinning migrated phrases are deleted in the same commit, each named against its table row — no assertion is left failing and none is weakened to pass.
- The routing baseline is refreshed if segment titles moved, with its diff reviewed and reported; otherwise state that it was unaffected.
pnpm typecheck,pnpm format:check, and all four planning-rule suites pass.- The composed corpus still names no repo, no card key and no corpus file.
Context refs
motir-aisrc/llm/planningRulePacks.ts—CORPUS_ORDER, the rule constants,composePlanningRules.motir-aitests/planningRuleConservation.test.ts+tests/fixtures/sharedPlanningRules.baseline.txt— the classifier and the strict length equality.motir-aiscripts/refresh-planning-rules-baseline.ts,scripts/refresh-planning-rule-routing-baseline.ts.motir-aitests/planningRulePacks.test.ts,tests/planningRuleRouting.test.ts,tests/treeGeneration.test.ts.- MOTIR-3308 — the restated source wording this mirrors.