Planning bug: `notes.html` entries #68 and #203 still PRESCRIBE the dead branch-prefix CI-skip mechanism — the MOTIR-819 retrieval hands it to future runs as advice
Repo · motir-meta. Found by the run of MOTIR-3150 (motir-meta PR #300), whose acceptance criteria scope the sweep to prompts/** — so notes.html was correctly out of that card's reach and is filed here rather than absorbed (notes.html #27 / the drive-by rule).
MOTIR-3148 replaced ci.yml's !startsWith(head_ref, 'design/'|'docs/'|'seed/') lane gates with a diff-based changes job. MOTIR-3150 corrected the four sites in prompts/run.md. Two notes.html entries carry the same falsified mechanism in PRESCRIPTIVE text — a lesson and a prompt-hint are exactly what the MOTIR-819 retrieval step lifts into a dispatched prompt, so this is the corpus handing a dead mechanism to a future run as advice.
The sites — measured on origin/main at 4d5a36c
git grep -n -i "prefix" origin/main -- notes.html, filtered to the skip/preview/E2E clauses:
- Entry #68 (
notes.htmllines 5468–5519, "Mechanically applied thedesign/branch prefix …"):- the title — "that prefix exists to make CI SKIP the Playwright/integration jobs and the Vercel preview deploy"
- "What happened" — quotes the old
run.mdsentence verbatim - the Lesson — "The
design/prefix earns its skips only when the diff is design-assets-only … Before choosing a prefix that suppresses the Vercel preview, ask 'does this diff change runtime UI?'" - the prompt-hint — "
design/(skips E2E/integration/Vercel-preview) ONLY when the change is confined todesign/<area>/**assets;subtask/whenever the diff touches runtime code … so the preview deploys and full CI runs"
- Entry #203 (
notes.htmlline ~16298, the branch-protection required-contexts entry): "read a skipped run on each branch prefix that skips jobs, and require only the contexts that appear on all of them."
Entry #254 (line ~22370) also mentions the clause, but as a 2026-08-15 amendment already flagging it as stale text — a historical record, not a prescription. No change is owed there, and changing it would damage the record.
What is true now, and why the entries do not simply get deleted
Both entries' underlying LESSONS survive and are strictly reinforced; only their mechanism died:
- #68's lesson becomes stronger, not obsolete. "A branch-prefix / CI-skip rule is a CONDITIONAL, not a lookup on the card's
type" is now ENFORCED by the machine:ci.yml'schangesjob classifies the diff, so a design-typed card shippingapp/globals.cssgets the full suite whatever its branch is called. The narrative of MOTIR-1055 stays as written; what needs correcting is the prescriptive tail that tells a reader the prefix controls CI cost and the Vercel preview. - #203's conclusion is unchanged — require the jobs with no
if:and no matrix. Only its METHOD sentence needs the swap: the classes to read a skipped run against are now the DIFF classes (docs/*,design/*,scripts/plan-seed/*,*.md⇒app=false), not the branch prefixes. The twoif:-gated families (app,images) are also a wider skip surface than the entry was written against. - The Vercel half was already dead before MOTIR-3148.
motir-coredeploys to Fly;vercel.jsoncarries"git": { "deploymentEnabled": false }since motir-core#1929 (2026-08-07, "stop creating deployments — previews and production — until the Fly cutover"). So "usesubtask/so the preview deploys" names an outcome no branch has produced since that date — the strongest form of the trap, because a runner following it will change a branch name and see nothing happen.
Acceptance criteria
notes.htmlentry #68'slessonandprompt-hintcarry a dated correction naming the diff predicate (ci.yml'schangesjob, MOTIR-3148) and stating that the Vercel preview no longer exists for any branch. The NARRATIVE sections (title, What happened, What corrected me) are left as the historical record they are — an amendment is added, the account is not rewritten.notes.htmlentry #203's "read a skipped run on each branch prefix that skips jobs" sentence names the diff classes instead. Its conclusion (require the five unconditional jobs) is unchanged, and the entry says so explicitly so a reader does not read the amendment as reopening it.- Entry #254 is left untouched, and the card's own close-out says why — its mention is an amendment already recording the clause as stale.
git grep -n -i "prefix" origin/main -- notes.htmlfiltered toskip|preview|E2E|Vitest|integrationreturns no unamended prescriptive hit: every surviving hit is either inside a narrative section or carries its correction on the same entry.prompts/run.md's step-8 citation "(mistake #68 — whose own reasoning names the now-dead lane-skip mechanism; read it against the correction below)" is re-read once #68 is amended, and softened or kept on the evidence.
Context refs
motir-meta/notes.html— entries #68 (5468–5519), #203 (~16165–16300), #254 (~22321–22375).motir-meta/prompts/run.mdstep 8 — the corrected text this card mirrors (motir-meta PR #300).motir-core/.github/workflows/ci.yml— thechangesjob;motir-core/vercel.json.