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-3394Done

op-replan / op-sprint — lesson rows, the mirror, and the op-sprint routing slot

The motir-ai half of the operation overlays, and the card that closes the third routing hole.

The hole, measured on origin/main: CORPUS_ORDER carries exactly one op-replan segment — RECONCILE_EXISTING_NOT_DONE_WORK, which holds the whole referrer-sweep family — and no op-sprint entry at all, so PLANNING_RULE_PACK_ORDER's twelve names include no sprint overlay. The re-validate-the-sprint post-condition that every motir plan pass runs on the manual side reaches the shipped planner nowhere.

Opening the slot means landing content in it. A pack name with no segments composes to an empty string — routing that asserts nothing while looking complete. So either lift the restated op-sprint.md rule into a segment tagged op-sprint and add the name to PLANNING_RULE_PACK_ORDER, or record in the PR body why the routing stays as it is — the two dispositions the story's criterion allows, and no third.

A judgement worth making explicitly rather than by default: the sprint post-condition is about a live sprint's blocker closure, which the shipped planner may or may not be positioned to evaluate. Read resolvePlanningRulePacks and the operation overlay before deciding, and write the reasoning down either way. "It didn't seem to apply" left unwritten is how the hole got here.

The rest is the standard family shape. Lesson rows and the mirror in one PR: for each migrate row in RESTATEMENT.md's op-replan and op-sprint sections, add a BASE_LESSONS row or record a MERGED line naming the covering row's sourceRef. The referrer-sweep family is the one most likely to already be in the store — it has recurred often enough to have several entries behind it — so probe before adding.

Same two constraints as every lesson card here: no new sourceRef may carry a #N above CORPUS_HEAD = 356, 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 and the baselines: locate the destination by probing the constant for the restated wording; refresh sharedPlanningRules.baseline.txt and read its diff; delete any planningRulePacks.test.ts assertion pinning a migrated phrase; refresh planningRuleRouting.baseline.txt if the cells changed; and refresh the register ceiling DOWNWARD — this is the last card in the chain, so the number it leaves is the ceiling the corpus lives under.

blocked_by the previous link in the motir-ai chain as well as its own source card.

Acceptance criteria

  • RECONCILE_EXISTING_NOT_DONE_WORK carries the restated sweep family, and every migrated phrase probes to zero in the composed constant.
  • PLANNING_RULE_PACK_ORDER gains op-sprint with at least one segment tagged to it in CORPUS_ORDER, and every legal cell selecting the sprint overlay resolves to a non-empty pack — or the PR body records why the routing stays as it is, naming what was read to decide.
  • Every migrate row in RESTATEMENT.md's op-replan and op-sprint sections has a disposition here: a new BASE_LESSONS row or a MERGED line with its covering sourceRef and reason.
  • No new sourceRef carries a #N above 356; CORPUS_HEAD is unchanged; the totality, uniqueness, generic-rewrite and date guards pass unweakened.
  • pnpm lessons:generate-migration is run and its delta migration committed; the PR body names the directory and row count.
  • No existing segment changes its pack tag or its position in CORPUS_ORDER.
  • sharedPlanningRules.baseline.txt refreshed with removed-word and added-word counts reported; registerCeiling.json refreshed with the ceiling FALLING and before/after figures quoted; planningRuleRouting.baseline.txt refreshed or explicitly reported unaffected.
  • The PR body quotes the final cautionaryCeiling and prescriptiveAtCeiling and states that this is the last motir-ai card in the chain, so the numbers are the corpus's resting values.
  • pnpm typecheck, pnpm format:check and pnpm test are green, all four planning-rule suites included.
  • No file outside motir-ai is changed.

Context refs

  • motir-ai src/llm/planningRulePacks.tsRECONCILE_EXISTING_NOT_DONE_WORK, CORPUS_ORDER, PLANNING_RULE_PACK_ORDER, resolvePlanningRulePacks, legalPlanningRuleCells, and the PlanningRuleOperation overlay.
  • motir-ai tests/planningRuleRouting.test.ts + tests/fixtures/planningRuleRouting.baseline.txt.
  • motir-ai src/seed/lessons.base.ts · tests/lessonsBaseSeed.test.ts · scripts/generate-lessons-migration.ts.
  • motir-ai tests/planningRuleConservation.test.ts · planningRuleRegister.test.ts · planningRulePacks.test.ts, and the three scripts/refresh-*.ts.
  • motir-meta prompts/plan-rules/RESTATEMENT.md · op-replan.md · op-sprint.md — read-only inputs.
  • MOTIR-3311 — the card that built the register ratchet this one leaves at its final setting.