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

Distill notes.html #159-#255 into categorized lessons.base.ts rows, one disposition per entry

The middle stretch of the backfill: notes.html entries #159 through #255, 97 entries.

This is a distillation, not an import. 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 own 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.

Every one of the 97 entries gets a disposition, recorded in the PR body: a new row, a merge into one of the rows already there, or a drop with its reason. Dropping silently is the specific failure the corpus-distillation gate exists to prevent, and the count of dispositions must equal 97.

Each new row carries its kind/type/phase axes and its sourceRef (the notes.html number), which is also the idempotency key the seed dedups on.

Dedup before writing: several entries in this range restate a lesson already in the store, and a second row means the ranker returns the same advice twice and crowds out something else. The set to dedup against is the 70 existing rows PLUS whatever the #112–#155 card added — its sibling "Distill notes.html #112–#155 … the 44 entries the seed never accounted for" is blocked_by-ahead of this one precisely so the older, more overlap-prone material is settled before this range is read.

Read MOTIR-1948's five comments before starting. That card was retired by the 2026-08-21 re-plan of this story, but its discussion carries per-entry routing decisions Yue already made — #180, #196 and #224 fall in THIS range, each with a suggested generic register and a dedup note. Those decisions stand; they are inputs, not work to redo.

Acceptance criteria

  • Entries #159-#255 each have exactly one disposition in the PR body — new row, merge (naming the row), or drop (with the reason). The disposition count is 97.
  • 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.
  • #180, #196 and #224 are dispositioned consistently with the routing already decided in MOTIR-1948's comments, or the PR body says why that decision was departed from.
  • The file parses and the existing seed tests pass.

Context refs

  • motir-meta notes.html — entries #159-#255.
  • motir-ai src/seed/lessons.base.ts — the existing rows, their shape, and the sourceRef convention.
  • motir-ai tests/lessonsBaseSeed.test.ts — the suite that must stay green.
  • MOTIR-1948 — retired; its comments carry Yue's per-entry routing decisions for this range.
  • MOTIR-3299 — the category columns these rows fill.