A stalled probe hangs forever — no step deadline anywhere in the harness, so the merge gate never returns nf-0gr ← Beads

open priority 2 task unassigned

Twinned from https://github.com/cfsh/ninefold/issues/747 by tools/beads/import_github.py's reconcile pass.

Found while measuring design 005 piece 2 (#746). Filing rather than fixing: it is not only a parallelism problem, and the fix is a design choice about what a deadline should do.

What is true

There is no step timeout in shared/VisualProbe.cs. budget_ms looks like one and is not — it warns and never fails (VisualProbe.cs:301, added by #572 for the opposite purpose: telling a reader that a frame-counted wait took longer than expected under load). A step that never satisfies its condition waits for the next frame, forever.

Observed, not theorised

8-way parallel run on nf-dev-sg, 2026-08-07. cold-start stalled after

``` [playtest] journal armed: build bea4101 -> …/probe_out/playtest ```

and was still stuck ~9 minutes later, when I killed it. The other seven finished in 32 s. The same probe passes serially 3/3 immediately afterwards, so the probe is fine — it was starved of the fresh-install user:// state that #746 is about.

Why it matters beyond #746

The cause there is a race #746 will fix. The shape is not fixed by that, and it is worse than a failure:

This is a fifth thing that gets called "flakiness" and is not: #615 resolved three causes wanting opposite fixes, #668 added frame-counted waits, #691 added "assertions all passed but Godot crashed on shutdown". This one is "nothing was reported at all."

Directions, not a decision

Related: #746 (the race that exposed it), #691, #615, #572, #620, #728.

Unclaimed.

Dependencies

None.

Comments

No comments.

Add a comment