v6.1.0-beta.10 — Verify-after-write, assertion counter, SSE stream, small-viewport polish
Pre-releasev6.1.0-beta.10 — 2026-05-16 — Verification stuck-loop detector + live event stream
Two follow-ups on the beta.9 verify-after-write foundation:
Driver-loop assertion-failure counter
When a specialist's spawn produces an artifact that fails its
post-write check (byte-count drift, magic-header mismatch, partial
write), the driver loop now increments a per-subtask
consecutiveAssertionFailures counter. Three failures in a row on
the same subtask force a verify_fail block — preventing the
"specialist keeps reporting success but the artifact never matches"
stuck-loop pattern. A passing verification resets the counter.
Pairs with the existing consecutiveIdenticalErrors (catches
repeated tool throws) and consecutiveNeedsInfoCount (catches empty
needs_info loops) — three independent termination paths now defend
the driver from different stuck-loop shapes.
GET /api/verification/stream (Server-Sent Events)
New SSE endpoint that pushes every verification event as it happens
(file_write / file_append / file_edit / image_download /
browser_fetch). On connect the server replays the last 32 events
as a snapshot frame so a fresh subscriber sees current state
without polling. Heartbeat every 15 s keeps proxies from reaping
the connection.
Subscribed by the Mission Canvas trust line in a follow-up UI ship.
Tests
- 5 new tests in
tests/verification.test.ts(24 total) for
verificationEventsSincetime + kind filtering and for
subscribeVerificationfan-out, unsubscribe, and listener
isolation (a thrown listener does not break the recorder). - 57 driver-state tests continue to pass with the new branch.
No API contract changes. No schema changes. No new dependencies.