Repository navigation
test(drive): add running-indicator gauntlet and reconnect family probe - #105
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
A V2 TUI showed a session as running in the open picker hours after the session and all of its subagents had gone idle. The picker's spinner depends on a client store fed by live execution events plus a
/api/session/activesnapshot on reconnect, and no probe exercised that contract against subagents, interrupts, and connection faults.What Changes
Two manual TUI regression probes:
stale-running.ts/api/session/active"reconnect-child-family.tsThe gauntlet creates roots and prompts through the clean SDK, so the TUI only observes. Its transitions are:
Each passing verification prints the observed spinner map, so a seed that never checked a running root is visible.
Picker Rows Only. The parser reads only rows below the picker's filter input. The tab strip behind the dialog also draws titles with spinners, but its busy state includes queued inbox items. An earlier draft of the parser read the tab strip and reported false divergences on seeds 4 and 8.
Findings
Seed 5 found a real divergence on current V2. A connection kill landed 7ms before a background child was created, so the TUI missed
session.created. The reconnect snapshot restoredactive[child] = "running", but the child never joined its root's family, so the root row stayed idle while the child ran. The OpenCode fix is anomalyco/opencode#53012. The deterministic probe fails on V2d1f8f5b35eand passes with that fix.Scope
These are test-only additions under
test/manual/tui-regressions, plus README sections. A follow-up should add file-backed service restarts as gauntlet transitions; the original stale-spinner report happened in an environment with frequent managed-service restarts, which this gauntlet does not exercise yet.Verification
bun run checkpasses.d1f8f5b35e, seeds 1–4 and 6–12 passed; seed 5 failed twice at the same checkpoint with the divergence above. Seeds 6, 7, 8, 9, and 11 verified running roots as well as idle ones.reconnect-child-family.tsfailed ond1f8f5b35e(rootRowRunning: false) and passed on the fix (rootRowRunning: true).