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

Retire the manual seed path — delete seed-lessons.yml and the script, once the migration carries the rows

.github/workflows/seed-lessons.yml is on: workflow_dispatch — a one-click prod re-seed that runs pnpm seed:lessons inside the deployed machine over fly ssh. Its own header says it "Productizes the 'run the lessons seed against prod' manual step".

Once the migration carries the rows, this is the abandoned path, and emptying it is not the deliverable — deleting it is. A dispatch-only workflow that nothing calls is not inert: it is a live invitation to re-adopt, and the next person seeing a red retrieval will click it.

Enumerate the path before deleting it — the entry point is only the first element:

  1. .github/workflows/seed-lessons.yml — the trigger.
  2. scripts/seed-lessons.ts — what it runs.
  3. src/seed/seedBaseLessons.ts — what that calls, and check whether anything else still calls it, tests included.
  4. The seed:lessons package.json script.
  5. The MOOOON_CORE_* Fly secrets the workflow's header documents as its one-time prerequisite — and whether anything else reads them.

Ask of each element "if this were absent, what would start happening?"nothing marks a client, safe to remove. lessons.base.ts is NOT on this list: it stays as the authored source the generator reads.

⚠️ The seam this retirement would otherwise drop silently. The workflow is refresh-on-change: it re-embeds base lessons whose curated content in lessons.base.ts has DRIFTED from the live row. A migration inserting ON CONFLICT ("sourceRef") DO NOTHING does not do that — it adds new rows and leaves edited ones stale. So editing an existing lesson's text is a capability the manual path has and the migration path does not. Resolve it explicitly: either the generator emits an update for changed content, or this card records that editing a shipped lesson is out of scope and names the card that owns it. Do not delete the workflow while that question is open.

Acceptance criteria

  • Every element of the enumerated path is either deleted in this card or named as a sibling card's scope — no third option, and the enumeration appears in the PR body with a disposition per row.
  • seed-lessons.yml, scripts/seed-lessons.ts and the seed:lessons script are gone, unless a listed element is retained with a stated reason.
  • git grep proves no remaining caller of anything deleted, tests included; the grep and its hit count are in the PR body.
  • The refresh-on-change gap is resolved before deletion: either the generator emits updates for drifted content, or a named card owns it and this card says so.
  • lessons.base.ts is untouched — it remains the authored source.
  • CI is green with the workflow removed; no other job referenced it.

Context refs

  • motir-ai .github/workflows/seed-lessons.yml — the workflow_dispatch trigger and its refresh-on-change claim.
  • motir-ai scripts/seed-lessons.ts, src/seed/seedBaseLessons.ts, package.json (seed:lessons).
  • motir-ai tests/lessonsBaseSeed.test.ts — a possible remaining caller.
  • MOTIR-3307 — the generator and migration that replace this path.