refactor(cli): extract the shell-run hydration state machine from pi-tui-runner.ts
#1,412 opened on Jul 23, 2026
Repository metrics
- Stars
- (1 star)
- PR merge metrics
- (PR metrics pending)
Description
Part of #1084 (second-pass sink-file and boundary governance). The underlying buffer primitives (ShellRunUpdateBuffer, mergeShellRunUpdate, projectShellRunUpdateForSession) and shell-run-elapsed-ticker.ts are already extracted; the runner-local state machine is not. Scope re-verified against current main (pi-tui-runner.ts, 2642 lines).
Scope
Move the hydration controller (~L456–543) into shell-run-hydration.ts:
- local state:
shellRunOwnerMappings,hydratingShellRunsFor,shellRunHydrationEpoch,shellRunHydrationRetryTimer,pendingShellRunUpdates - closures:
applyShellRunViewUpdate,replayPendingShellRunUpdates,resetShellRunSessionState,hydrateShellRuns, and the update subscription
Expose a controller that takes driver/applyToTranscript deps; the runner keeps only wiring.
Invariants
Same as #1084: behavior-neutral; stable exports; no reverse imports; flat PR off main.
Verification
Typecheck/build + the existing behavior-driven runner tests.