The migrated phase-deepen limbs become categorized lesson rows
The destination half of the migration: each limb the source card marked migrate becomes a retrievable lesson.
Most of these limbs already have a notes.html entry behind them — the NEGATIVE is #296, the OMISSION #331, the HANDED SCAN #350, the ENUMERATION #324 among others — and the backfill story will already have written rows for several. Merge into the existing row rather than adding a second: read the sourceRef list that story's PR published, and only create a row where none exists.
Each row gets its three axes, and the widths matter:
types— every type the limb actually fires for, as a set. These limbs are about reading code: grepping call sites, counting a population, diagnosing a rendered surface. Model the width on the corpus's own routing, wheretype-migration.mdloads for{code, chore, deploy}rather than one type. Under-claiming is as wrong as over-claiming — a limb typed[code]that also applies tochorework stops reaching it.phases— nearly all of these aredeepen: they discipline what a card's body CLAIMS, which is written while deepening. A limb that governs how a level's children are laid isskeleton. Deciding this per limb is the point of the axis; defaulting every one to both wastes it.kinds— usually empty. Most of these fire on any leaf.
Where a limb is genuinely unconstrained on an axis, leave that axis empty and say so in the PR — empty means universal, and it must be a decision rather than an omission.
Acceptance criteria
- Every limb marked migrate has exactly one lesson row: newly written here or an existing row it merged into, named per limb in the PR body.
- No limb produces a second row duplicating one the backfill already wrote, verified against that story's published
sourceReflist. - Each row states its
typesandphasessets per limb in the PR, with any axis left empty called out as a deliberate decision. - Every axis value is in the legal vocabulary — no typo, which would never match.
- No row names a repo, a card key, a rule pack or a gate number.
- The source card's table is updated so no row is left
pending, or the remainingpendingrows are listed with the reason.
Context refs
motir-aisrc/seed/lessons.base.ts— the destination and its row shape.motir-metanotes.html— #296, #305, #319, #320, #324, #331, #350, the entries behind the limbs.motir-metaprompts/plan-rules/MANIFEST.md— the routing table, as the model for how wide a type set should be.- MOTIR-3308 — the keep/migrate table this discharges.
- MOTIR-3305 — the published
sourceReflist to merge into.