Two harness correctness fixes, both found chasing the S05 flake.
REVOKED GATE. `MergeGateRevokedError` escaped the graph dispatch and failed the
scenario. It is a DEFERRAL, not a failure — FN-180's own contract, and the reason
it carries a dedicated error type so callers cannot convert a gate lost mid-merge
into a retry or a failed park. It fires when a merge admitted on an earlier turn
reaches its ref-advance fence after a REVISE has already returned the card to
in-progress: the engine refusing correctly while the driver races it. The dispatch
now swallows ONLY that type, by NAME rather than by import, because importing
merger-errors.js would break the pre-FN-180 differential run the harness self-test
enforces.
TEARDOWN ORDER. `dispose` reset the shared mock registry and cleared
`activeSessionRegistry` BEFORE stopping the engine, stranding in-flight sessions on
default scripts mid-teardown and hiding them from the liveness checks the stop path
consults. Both are process-global, so the damage landed on whichever file ran next.
Together these took S05 on builtin:coding-ideas-v2 from failing 3 runs out of 3 to
2 out of 6 — a real reduction, and not zero, so it is still not shipped. S05 stays
on its original workflows, where the lane is green four consecutive full runs:
122.4s, 126.6s, 124.0s, 116.9s of the 150s budget.
builtin:coding-ideas-v2 remains at 18 of 19 scenarios plus the multi-repository
workspace drive.