Skip to content

moooon

Motir

Vibe your whole project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.

  • Vibe Project
  • Open Source
  • AI Agent
  • AI Loop
1
requests
0
upvotes
145
planned
1,361
shipped

Motir · Work items

MOTIR-3309Done

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, where type-migration.md loads for {code, chore, deploy} rather than one type. Under-claiming is as wrong as over-claiming — a limb typed [code] that also applies to chore work stops reaching it.
  • phases — nearly all of these are deepen: they discipline what a card's body CLAIMS, which is written while deepening. A limb that governs how a level's children are laid is skeleton. 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 sourceRef list.
  • Each row states its types and phases sets 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 remaining pending rows are listed with the reason.

Context refs

  • motir-ai src/seed/lessons.base.ts — the destination and its row shape.
  • motir-meta notes.html — #296, #305, #319, #320, #324, #331, #350, the entries behind the limbs.
  • motir-meta prompts/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 sourceRef list to merge into.