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

Distill notes.html #112–#155 into categorized lessons.base.ts rows — the 44 entries the seed never accounted for

notes.html entries #112 through #155, 44 entries — the range that is not "new" material at all, and is the reason this story's population had to be re-measured.

Why this range exists as its own card

Measured on origin/main (motir-ai @ f682d19, motir-meta origin/main) on 2026-08-21:

  • src/seed/lessons.base.ts holds 70 rows whose sourceRefs account for #1–#111{#156, #157, #158} — 112 distinct entries. EXCLUDED_ENTRIES holds #1 and #19 with reasons.
  • #112–#155 appears in neither set. These 44 entries were never seeded and never excluded; they are the corpus's oldest un-accounted material, written before the entries the rest of this story covers.

They sit inside the blind spot of the seed's own totality check (tests/lessonsBaseSeed.test.ts:83 asserts exhaustively for n <= 111, then checks a hardcoded [156, 157, 158]), which is why no red test has ever named them. That hole is closed by MOTIR-3306; this card supplies the rows.

The bar

Identical to its successors — read MOTIR-3304's criteria as this card's too. For each entry: read it, decide what a planner working a different product would need to know, and write that as a title + howToApply pair. Strip our repo names, our card keys and our dates — the shipped constant's guard suites ban that vocabulary, and a lesson that only makes sense inside this project cannot help the customer whose plan it is injected into.

This range dedups the hardest, and that is the work. It is immediately adjacent to the 112 entries already in the store, so a larger share of it restates a lesson that already has a row than in either later range. A second row means the ranker returns the same advice twice and crowds out something else — so read the 70 existing rows before writing, and prefer a merge over a new row wherever the takeaway is the same.

Read MOTIR-1948's five comments before starting. That card is retired by this re-plan, but its discussion carries per-entry routing decisions Yue already made — #180, #196, #224 among them, each with a suggested generic register and a dedup note. Those decisions stand; they are inputs to this card and to MOTIR-3304 / MOTIR-3305, not work to redo.

Acceptance criteria

  • Entries #112-#155 each have exactly one disposition in the PR body — new row, merge (naming the row), or drop (with the reason). The disposition count is 44.
  • Every new row carries a sourceRef, its kind/type/phase axes, and a title + howToApply written generically.
  • No row contains motir-core, motir-ai, motir-gateway, motir-meta, a MOTIR-<n> key, or a date.
  • No row is a verbatim paste of its source entry.
  • The PR body lists the sourceRef of every row created, and states the command and ref the 44-entry count was re-measured on.
  • The file parses and the existing seed tests pass; only the changed files are run locally.

Context refs

  • motir-meta notes.html — entries #112-#155.
  • motir-ai src/seed/lessons.base.ts — the 70 existing rows, their shape, EXCLUDED_ENTRIES, and the sourceRef convention.
  • motir-ai tests/lessonsBaseSeed.test.ts — the suite that must stay green, and (line 83) the blind spot this range fell into.
  • MOTIR-1948 — retired by this re-plan; its comments carry Yue's per-entry routing decisions.
  • MOTIR-3299 — the kind/type/phase axis columns these rows fill.