Files
orca/tests
Jinwoo-H 1045909bc1 fix(orchestration): publish the resume fence only from main's committed state
Codex review of #19344 found the startup reply could re-fence a retired pane.
Two paths, one defect: the reply was built somewhere other than the object that
owns fence publication. The runner read `plan.blockedPanes` captured before it
awaited workspace resolution, inventory and persistence, so a release or takeover
landing inside that window produced a reply older than its own lift; and a pass
whose `setWorkspaceSession` threw published nothing through the push channel yet
still returned those keys, fencing a pane no later pass could retire.

The persistence object is now the only publisher. It exposes the set it has
actually committed, counted by a commit generation, and the runner reads that
after the pass finishes rather than deriving anything from the starting plan. A
pass that commits nothing reports the previous committed state, which also keeps
an unreadable plan from ever reading as "no pane needs its fence". The generation
travels with both channels, so the renderer applies main's whole committed set
and drops a reply that a newer lift has already overtaken. That makes the seed
authoritative instead of additive, which is what finally retires a fence on a
pane that has no sleeping record to sweep.

Manual sleep and hibernation rollback both committed a record captured before the
await, erasing a fence delivered during the stop. Both now resolve the flag from
state at commit time through the same predicate as every other rebuild.

Also: the degraded-startup routing gate searched for the call the seed helper
replaced, so its ordering assertion silently passed on -1; it now follows the
helper and asserts the indirection still reaches main. The shared fake-CLI e2e
fixture is re-materialized on demand, because the first spec file's teardown
deleted it out from under the next file in the same worker.
2026-09-07 17:04:32 -04:00
..