MotirBuilding in public
MOTIR · moooon
onMotir
You’re viewing a public project. Anyone can view it — no account needed. Sign in to submit, upvote, or comment on requests.View-only — you can’t edit work items
MOTIR-2928

Planning bug: a bug card's COVERAGE NEGATIVE ("no board spec rides that lane") went unchecked and is false — and its 500 does not reproduce at the reporter's own base commit

Done
Description

Telemetry about the planner, filed by motir run MOTIR-2912. The correction is already appliedMOTIR-2912 ships its surviving deliverable and states both falsifications in its PR body — so this card holds up nothing and carries no sprint.

The card

MOTIR-2912 was logged by motir run MOTIR-2763: under playwright.cloud.config.ts, /boards rendered Next's built-in error page. The card is careful where bug cards usually are not — it rules out the seed, rules out 2763's own diff, names the seven-read Promise.all at app/(authed)/boards/page.tsx:154, names both candidate causes, and prescribes capturing the webServer stack rather than inferring.

Every one of those is a retrospective reading. Its two prospective claims were unchecked, and both are false.

Defect 1 — the coverage negative

"The board has therefore never been rendered with MOTIR_CLOUD=true by any test in the repo."

grep -n "/boards" tests/e2e/cloud-*.spec.ts returns cloud-video.spec.ts:189 and :196 — a shipped cloud-lane spec that navigates to /boards and asserts the "Awaiting acceptance" badge. playwright.cloud.config.ts's own header names that coverage in prose ("the only coverage of … the board's awaiting badge"), and the card cites that file twice for other lines.

This sentence was not incidental. It was the card's reason for believing the failure was real, its high priority argument, and its acceptance criterion 3.

Defect 2 — the reproduction

A probe seeding exactly the shape the card names — signUpprojectsService.createProjectactiveProjectId, free tier, no billing-fixture entry — rendered /boards at 200.

Ten renders: five seeds × two commits. One of the two is cb3b2552, MOTIR-2763's own branch base, and it included a replay of 2763's full journey (65 work items, /items/home/boards) at both viewports the card reports, 1280×800 and 390×844. No error page in any of them.

git log cb3b2552..HEAD -- 'app/(authed)/boards/' is empty — the code serving that page is byte-identical across the window, so "fixed in between" is excluded as well.

The one throw the probe did capture is the likely original: ProjectNotFoundError out of assertCanBrowse, fired by an in-flight request landing after a resetDatabase() truncated under it. On a box where several motir run sessions share one Postgres, a sibling's truncation mid-render produces exactly the reported symptom — on whichever page happens to be rendering, which is why /items and /home were fine "in the same run".

Why nothing caught either

  • A coverage negative has no artifact to point at. Every plan-side gate reads the graph or the card's shape; none greps the repo. validate_work_item returned valid: true with one advisory (the relates_to on MOTIR-2763) and nothing else — correctly, because a claim about a directory is not a reference to a work item.
  • A bug card is self-warranting. Somebody SAW it, and the reporter was the run that saw it — the strongest provenance a defect can have. But an E2E observation on a shared-Postgres sandbox is not a controlled one. "Reproduced twice in one run" is one run, and it is exactly the window a sibling truncation occupies: a single observation stated as a repetition.

Acceptance criteria

  1. notes.html carries the lesson (landed as #296 — locate by title, the numbering shifts on append collisions; motir-meta PR is linked below).
  2. The authoring-side rule states that a sentence of the form "nothing / no test / no spec / no card does X" is a grep the card must carry, with the command and its output, exactly as a root cause carries its file:line.
  3. The run-side rule states that a bug card's first deliverable is the reproduction, at the reporter's own base commit — and that git log <their base>..HEAD -- <path> is what separates "fixed in between" from "never reproduced", two opposite findings that look identical from a green run.
  4. If either rule is judged universal rather than incident-specific, it is promoted into the plan-rules/ pack that owns prospective claims (phase-deepen.md § THE PROSPECTIVE LIMB, where MOTIR-2907's sibling rule already lives) — otherwise this card says explicitly that it stays a lesson.

Context refs

  • MOTIR-2912 — the card this is about.
  • MOTIR-2907 — the same family, filed one day earlier about the same reporter card's sibling section; notes.html #292 is its lesson and plan-rules/phase-deepen.md § THE PROSPECTIVE LIMB is its rule.
  • notes.html #250 — "there is NO existing design asset for this area", the same existence-claim shape in a design costume.
  • tests/e2e/cloud-video.spec.ts:189 · playwright.cloud.config.ts — the evidence that falsifies defect 1.