phase-skeleton / kind-container / kind-story — lesson rows, the mirror, and both baselines
The motir-ai half of the skeleton-and-containers family: the migrated limbs become lesson rows, the restated wording reaches SHARED_PLANNING_RULES, and the three baselines move with it.
Seven segments in CORPUS_ORDER carry this family: PLAN_ALONG_THE_USER_JOURNEY (kind-container), DEPENDENCY_GRAPH_IS_THE_BUILD_SEQUENCE and THE_MOTIR_GRAMMAR (phase-skeleton), and STORY_IS_A_VERTICAL_SLICE, A_STORY_MAY_SPAN_REPOSITORIES, COUNT_THE_VERIFICATION_RECIPE, STORY_LEVEL_JOURNEY_AUDIT (kind-story).
⚠️ OWNERSHIP IS BY SOURCE PACK, NOT BY THE MIRROR'S PACK TAG. The two homes disagree about which pack owns a rule — the claim-vs-pointer gate is gate 2 of core.md in the source and sits under phase-deepen in CORPUS_ORDER. So treat that list as a starting point, not an answer: probe the constant for the restated text of each unit the source card touched and edit whatever segment carries it, keeping its existing pack tag and position. One to check explicitly — PLAN_ALL_SUBTASK_TYPES_AND_COMPOSITION is tagged kind-leaf but the plan ALL subtask types material is cited to kind-story.md in the procedure; where the source text this card restated is what that segment carries, it belongs here despite its tag. Record the mapping either way.
Lesson rows first, then the mirror, both in this one PR. For each migrate row in the three RESTATEMENT.md sections the source card wrote, either add a BASE_LESSONS row or record a MERGED line naming the covering row's sourceRef. The dependency-arrow family is heavily represented in the store already, so expect merges to dominate; a duplicate row costs a retrieval slot rather than nothing.
Same two constraints as every lesson card in this story: no new sourceRef may carry a #N above CORPUS_HEAD = 356 (the notes.html corpus is frozen — a post-freeze limb takes a sourceRef with no #N at all), and title / body / howToApply may name no repository, file, symbol, card key or date. Run pnpm lessons:generate-migration and commit the emitted delta.
Then the mirror, with all three baselines: refresh sharedPlanningRules.baseline.txt and read the diff; delete any planningRulePacks.test.ts assertion pinning a migrated phrase, naming each against its table row; refresh planningRuleRouting.baseline.txt if a segment title moved; and refresh the register ceiling DOWNWARD so the ratchet tightens instead of preserving the headroom this card just created.
blocked_by the core mirror card as well as its own source card. Both refresh sharedPlanningRules.baseline.txt, whose assertion is a strict equality over the whole constant, and two of them computed from different bases leave main red after the second merge — a genuine build dependency, not a queue.
Acceptance criteria
- Every migrate row in
RESTATEMENT.md'sphase-skeleton,kind-storyandkind-containersections has a disposition here: a newBASE_LESSONSrow or a MERGED line with its coveringsourceRefand reason. - The PR body lists the mirror segments this card edited, each with the source unit it carries and the pack tag it kept, plus any segment it deliberately left to a sibling and why.
- No new
sourceRefcarries a#Nabove 356;CORPUS_HEADis unchanged; the totality, uniqueness, generic-rewrite and date guards pass unweakened. pnpm lessons:generate-migrationis run and its delta migration committed; the PR body names the directory and row count.- Every segment this card owns carries the restated wording, every migrated phrase probes to zero in the composed constant, and no segment changes its pack tag or its position in
CORPUS_ORDER. sharedPlanningRules.baseline.txtrefreshed with removed-word and added-word counts reported;registerCeiling.jsonrefreshed with the ceiling FALLING and before/after figures quoted;planningRuleRouting.baseline.txtrefreshed or explicitly reported unaffected.- Every
planningRulePacks.test.tsassertion pinning a migrated phrase is deleted and named against its table row; none is weakened to pass. pnpm typecheck,pnpm format:checkandpnpm testare green.- No file outside
motir-aiis changed.
Context refs
motir-aisrc/llm/planningRulePacks.ts— the seven segments andCORPUS_ORDER.motir-aisrc/seed/lessons.base.ts·tests/lessonsBaseSeed.test.ts·scripts/generate-lessons-migration.ts.motir-aitests/planningRuleConservation.test.ts·planningRuleRegister.test.ts·planningRulePacks.test.ts·planningRuleRouting.test.ts, and the threescripts/refresh-*.ts.motir-metaprompts/plan-rules/RESTATEMENT.mdand the three restated packs — read-only inputs.- MOTIR-3309 · MOTIR-3310 — the two proof cards this one folds into a single PR.