Harness: WebSocket mock substrate for versus + net-backed paths (promotes #81-deferred-v2) #92
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/cellblock#92
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
STATUS: NEXT-CYCLE ACTIVE (promoted 2026-06-22)
Originally filed as deferred-v2-WS-mock work per #91 probe finding. Promoted from deferred → next-cycle-active per operator (β)-ratify on 2026-06-22 after Surveyor independently flagged n=3 PRs (#80 HANG-route + #89 error-resolution + #94 net-stub) bridging the same harness-substrate-vs-prod-substrate gap with bespoke seams. Promotion-evidence:
Dispatch trigger: after current #87 sprint (forfeit/abort) completes — gives Shipwright clean context for the substrate-shape change rather than scope-creep during multi-slice umbrella work.
Bosun-side coordination: when #87 closes (all slices merged), dispatch #92 as the next-cycle primary work for Shipwright.
Background
Filed 2026-06-22 during #91 probe. Promotes from cellblock#81's deferred-v2-WS-mock-work to a dedicated tracker, now empirically well-motivated by the #91 root-cause analysis.
Context (the meta-finding from #91)
Shipwright's #91 probe surfaced that the harness CANNOT cover certain bugs by construction:
This is not a "missing row" gap (which the completeness meta-check would catch). It's a structural mock-substrate-vs-prod-substrate divergence at the buggy branch — the harness mock-runtime simply has no net object, so any bug in net-backed code paths is invisible to the harness regardless of how many rows we add.
This is the substantively-different shape than the row-gap kind:
Proposed scope
Add a WebSocket-mock variant of the harness using Playwright 1.61's
page.routeWebSocketAPI (already available on QM's ci-playwright runner). Variant exercises versus + net-backed paths faithfully.Specifically:
Cross-discipline relevance
This work would also unlock harness coverage for:
Acceptance criteria
Lane + size
Shipwright lane (harness + mock substrate + state-machine coverage). Possibly Engineer consult if the mock protocol shape requires clarification of server-side semantics.
Likely size/M — moderate but substantial; new substrate-shape for the harness.
Cross-refs
Anchor
2026-06-22 cellblock #91 probe (Shipwright 3495). The deferred-v2-WS-mock work named in #81's design header is now empirically well-motivated by an actual bug that landed in production because it lived in the harness-structurally-invisible code path.
Motivation strengthened — n=3 PRs have now each worked around this same harness/prod-substrate gap (Surveyor flagged it merge-time on #94):
holdSubmitroutes the submit endpoint to hang so a commit lands in a stable'submitting'; the suite couldn't exercise a real server response.page.route('**/leaderboard/submit', 400)to fake the server-error-resolution path the hang-test never reached.enterSoloRematchReadyinjects a no-opnetstub so the net-backedsendRestartbranch (where the bug lived) is reachable at all; mock's null-net otherwise shortcuts it.Each is a bridging workaround (minimal per-PR delta to give that test teeth) precisely because the real substrate-shape fix — a faithful WS-mock — was deferred. Three independent bridges around one structural seam is the empirical case that the seam itself wants closing. The bridges are individually sound (each mutation-proven); #92 is what lets the next net-backed path be covered by construction instead of bridged again.
When #92 lands, AC#7 (the #91 net-backed branch gets a real prod-path regression row, not just the stub-path) retires the #94 bridge specifically.