Filed by motir run MOTIR-2919 (2026-08-17), guard #4.
CORRECTION, same session. This card was written while motir-core#2089 was open. It merged at
18:55:45Z— 37 seconds before theblocked_byedge and the Blocked flip were written (18:56:22Z/18:56:24Z). Thegh pr viewbehind the verdict returnedOPENand was accurate when taken, about a minute earlier. So MOTIR-2919 was unblocked and run in this same session; the Blocked state lasted ~4 minutes. Everything below about the authoring defect stands — the false-readiness window was real and lasted 53 minutes (18:02:24Z–18:55:45Z), and it closed by a merge, not by design. What is corrected is only the consequence: no run was actually held up. The second lesson this produced — a guard verdict is a claim about the world at the instant it is WRITTEN, not when it was computed — is innotes.html#295 alongside the first.
MOTIR-2919's opening line: "Its twelve conversions landed; this is the thirteenth failure." And its first acceptance criterion:
TEST_DB_APP_ROLE=1 pnpm vitest run tests/mcp/dependency-edges.test.tsreports 0 failures … (It reports 1 today — this failure — and 13 before MOTIR-2911.)
origin/mainNothing of MOTIR-2911. Its PR #2089 is OPEN (green, mergeStateStatus: CLEAN, awaiting Yue's merge), and it carries the twelve conversions to the very file the criterion measures:
$ git diff --stat origin/main...subtask/MOTIR-2911-test-side-unbound-clients \
-- tests/mcp/dependency-edges.test.ts
tests/mcp/dependency-edges.test.ts | 41 ++++++++++++++++++++++++++++++--------
1 file changed, 33 insertions(+), 8 deletions(-)
So from origin/main the file reports 13 failures, not 1. A perfect MOTIR-2919 fix leaves the other twelve standing and the criterion reads red — satisfiable only by rebuilding MOTIR-2911's half on a second branch, which is the two-green-PRs-one-red-main shape guard #4 exists to refuse.
The timestamps are the sharp part. MOTIR-2919 was created at 2026-08-17T18:02:24.716Z. PR #2089 was opened at 2026-08-17T18:04:35Z — 2 min 11 s later. The word "landed" was written before the pull request that would land it existed.
A second overlap, independent of the criterion: tests/integration/work-items/link-repository.test.ts asserts CrossWorkspaceLinkError at :208 and is also in #2089's changed-file list, so MOTIR-2919's blast radius intersects the open PR in two files, not one.
blocked_by. What was wired was relates_to, which carries no readiness semantics — so the card read ready: true, openBlockers: [], validate_work_item → valid: true, and claim_next_ready would have dispatched it against a substrate that is not on main. This is the [[ac-needs-blocked-by]] family (notes.html #187/#189/#204; MOTIR-1826/1834/1806/1942/2011/2075/2397, and MOTIR-2877 / MOTIR-2848 / MOTIR-2905 / MOTIR-2831 in this home).
validate_work_item MOTIR-2919 returned exactly one advisory:
{"item":"MOTIR-2919","referenced":"MOTIR-2911",
"referencedStatus":"in_review","severity":"likely-missing-edge"}
Right tier, right blocker, right severity. And this time a step read it. MOTIR-2075 is the fixture where the advisory fired and the card dispatched anyway because nothing consumed the verdict; MOTIR-2397 is where it was consumed at the wrong tier. Here run.md guard #4's advisory block was executed as written — grep origin/main for the substrate, find it only on an open PR, wire the edge, Blocked, stop. The RUN-side half of this family now works. What remains open is the AUTHORING side: nothing at plan time stops a card from asserting a sibling's work "landed" and wiring relates_to.
link_work_items MOTIR-2919 blocked_by MOTIR-2911 (the relates_to is left in place — it is also true).transition_status MOTIR-2919 → Blocked.blocked → todo → in_progress, worktree subtask/MOTIR-2919-cross-tenant-link-error off 95361d3a.blocked_by edge is KEPT. It is a true dependency and a satisfied one gates nothing; removing it would erase the only record that the card consumed MOTIR-2911.The block cleared when #2089 merged; MOTIR-2919 needs no re-scoping, only a base that contains its sibling.
get_work_item MOTIR-2919 shows a blocked_by edge to MOTIR-2911 (Done at filing. The blocked STATUS was correct for ~4 minutes and has since been lifted — see the correction above; the edge is the durable half.)notes.html entry for this instance exists and names the two-minute timestamp gap, the fact that the advisory was consumed correctly, AND the 37-second staleness of the verdict. (#295, motir-meta#213 — open; merges after #211.)motir-meta/prompts/run.md — guard #4's advisory block (the step that fired).