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
144
planned
1,366
shipped

Motir · Roadmap

MOTIR-3916Done

The PHASE axis, applied — the framing takes a phase, and `core` splits on what a session can DISCHARGE

Opened by Zhu Yue ·

MOTIR-3891 cut the rule corpus on SUBJECT and never on ACT. This story adds the second test and applies it to the two tiers that axis has never touched: the prompt FRAMING, and core.

The model, as decided

A rule belongs to the phase whose TOOL SURFACE can discharge it.

A DEEPEN session's whole surface is DEEPEN_PHASE_TOOLSdeepen_node, validate_plan, log_planning_mistake, log_planning_bug. It writes ONE body and stops. It cannot propose a card, split one, re-parent one, reconcile an existing one, or wire an edge. So a rule discharged by propose_node / modify_node / remove_node / link_work_items is unreachable at deepen whatever its subject — and the subject test cannot see that, because such a rule is usually about something every card has.

The evidence, measured on MOTIR-3891's own output

A translate deepen cell is 117,494 chars, of which 504 are about translation. The rest:

tiercharsshare
core51,71544.0%
phase-deepen65,27155.6%
type-translate5040.4%

1. The framing is not phase-aware at all. buildGenerationSystemPrompt takes a mode, not a phase, so every deepen session gets 5,161 chars of skeleton instruction — THE COMET SHAPE, the 5-step TITLES-FIRST SKELETON, THE FIRST LEVEL IS EPICS — naming propose_node, complete_level and drill_into, three tools the session does not have. The prompt contradicts the tool surface.

2. core is exempt from every axis, including phase. ≈27KB of it is skeleton-only: RECONCILE_EXISTING_NOT_DONE_WORK (15,383, discharged by modify_node / remove_node), THE_GATE (5,861, "BEFORE YOU PROPOSE ANYTHING"), A_CARD_THAT_DECLARES_ITS_SPLIT (5,376), AUTHOR_ONE_CARD_AT_A_TIME (510).

3. phase-deepen holds skeleton rules too. THE_DESIGN_GATE (5,292) is a card and an edge from end to end. It landed there because MOTIR-3897 needed the minimal superset available when kind-leaf-deepen was retired — correct under the subject test, and the reason the subject test is not enough.

⚠️ AMENDED 2026-08-29 (MOTIR-3918's own run) — the "5,161 chars" figure above is WRONG, and it UNDERSTATES the defect. It was measured by cutting the composed system message at the first occurrence of SHARED PLANNING RULES — which is a CROSS-REFERENCE inside the framing ("…all in the SHARED PLANNING RULES below", RUNBOOK_PROMPT offset 5,217), not the start of the rule section. The command was right and the cut point was not: a denominator swap of exactly the shape core.md gate 2's QUANTITY limb names.

Re-measured from the constants: the framing is 10,211 chars (the full deepen system message 127,705 minus the rule section 117,494), made of RUNBOOK_PROMPT 6,997 + GENERATION_FEWSHOT 2,742 + the mode note and separators ≈472. Of that, the SKELETON-only portion is ≈8,416:

sectionchars
RUNBOOK_PROMPT — THE COMET SHAPE610
RUNBOOK_PROMPT — THE ONBOARDING WORKFLOW (the 5-step TITLES-FIRST SKELETON)2,819
RUNBOOK_PROMPT — THE FIRST LEVEL IS EPICS747
RUNBOOK_PROMPT — THE ONBOARDING GROUNDING (the catalog epics are carved from)1,098
RUNBOOK_PROMPT — the RECONCILE half of YOUR RECONCILE + CAPTURE TOOLS≈400
GENERATION_FEWSHOT"A level is authored skeleton-first (titles + edges, no prose)"2,742

The claim the figure supported is unchanged and is now larger: a deepen session is handed instructions it cannot follow. Planning bug MOTIR-3926.

Acceptance criteria

  • A DEEPEN session's system message — framing INCLUDED — names no tool absent from DEEPEN_PHASE_TOOLS, and carries no rule whose discharge requires one. Asserted over every legal deepen cell on the composed string, not reviewed by eye.
  • A SKELETON session's message carries the skeleton framing and the skeleton tiers unchanged; the phase split MOVES rules and deletes none.
  • No rule stops firing: for every clause that moves, the routing baseline shows the cells carrying it are a superset of the cells where its situation can occur.
  • The composed size of every cell is measured before and after and stated in the PR — BOTH directions. A deepen cell falling while a skeleton cell rises by the same amount is the expected shape of a phase cut, and a report showing only the fall has measured half of it.
  • Text is unchanged except where a segment is DIVIDED; each division is proved by a word-diff over its parts showing zero runs lost, and the conservation and register baselines are refreshed deliberately with their diffs reviewed.
  • motir-meta is NOT mirrored by this story. MOTIR-3907 carries this cut AND MOTIR-3891's outstanding SUM cut as one pass over the same two files, blocked_by this story.

Context refs

  • motir-ai src/llm/treeGeneration.tsbuildGenerationSystemPrompt, SKELETON_PHASE_TOOLS, DEEPEN_PHASE_TOOLS, runDeepenSession.
  • motir-ai src/llm/planningRulePacks.tsCORPUS_ORDER and the core / phase-* tiers.
  • MOTIR-3891 — the subject cut this completes; MOTIR-3892 — the SEGMENT unit that makes any of it addressable.
  • MOTIR-3907 — the single motir-meta mirror, deliberately after this story.

Discussion

No comments yet.

Adding to this discussion signs you in on app.motir.co and brings you back to this request.

Add a comment