Repository navigation
acpmux: show unfinished tools after restart - #26984
Conversation
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
red: cmux-next checks (god files, concurrency, crash safety, l10n); base red: the same failure on the base 31cb279; does not block |
|
Bead |
|
Review (subagent, correctness first): SHIP at a7e781e |
|
Review (subagent, correctness first): SHIP at 70161fa |
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Owned by an agent session · took over from an earlier session · session |
…tart-resume-tools # Conflicts: # cmux-tui/crates/acpmux/src/hub/restart_resume.rs
|
Review (codex gpt-6.1-sol high fast, review-router; started by the backlog lander): SHIP at 9a2e199 SHIP
|
|
Shipped in:
|
After a daemon restart interrupts a turn, the continuation lists unfinished tool calls with their name, ID, and bounded input prefix. Terminal and replayed updates remove finished calls; root/child attribution follows the harness session identity.
Leo: "I think the various situations we have with cloud and whatnot, like just having that done real nicely will be quite important."
Recovery skips historical tool payloads and visits each interrupted-turn tool record once. It retains 33 complete identity histories and renders at most 32 unfinished calls. Terminal state is absorbing, so repeated starts and terminal replays cannot resurrect a retained completed call. A separate warning distinguishes another proven unfinished call from histories whose completion status is unknown. With more than 33 identities, a later active call may not be retained; the continuation explicitly directs the reader to check the journal rather than claiming that discarded calls are unfinished.
Sensitive structured subtrees are redacted directly using shared scanner field vocabulary; overlong keys fail closed. Once a decoded string names a sensitive assignment, its remaining bounded preview is replaced with
[secret]. This deliberately discards later command suffixes instead of guessing language-specific quote boundaries. Non-sensitive prefixes remain useful. Titles, IDs, and previews are bounded and normalized.Performance
The same deterministic
completed_tool_histories_are_visited_oncefixture feeds 10,000 starts and 10,000 completions to the old and new folds. These are measured scan/update-visit counts, not wall-clock timings.884c6dc1)Validation
021f12f7f9f14ac7bf7e2a345537409d, baseline6051497bd8a50666ffcdc556e8d8a13fe77beae0.50ded1fadf0e4bb18bbb4d5942996452. The exact884c6dc1dc791c9f256bbb47b501b5287ad0e7absource is overlaid with the two regression tests: the fold visits 6,080,000 updates rather than 20,000, and the quoted-assignment test fails with an exposedopen sesamesuffix.3ac5bb11f15f45a78d2a011cdfb7252f: precedingce8a9762code compiles but fails with an exposed password suffix. The same regression passes in the final focused run.87ad0817bd4c59f0411c8e6cdb58dd38c57c2398. Focused green 40931105677, job11ab52b277e3446d971979a9ec5ea31e: 24 restart-resume tests, 14 secret-scanner tests, strict all-target clippy. The performance fixture prints one scan and 20,000 update visits.2e916646615d454999d83aa6b3a1a1db: 1,882 pass; onlyprotocol::tests::protocol_ir_is_currentfails with the matching base assertion below.dd795fe649c648f9b36853142f1637ce, verified base31cb279970c39628118dc9c8ccdb1eeb71082dd8, failsprotocol::tests::protocol_ir_is_currentwith the identical stale-spec assertion; the full suite executes, so this does not hide tests.80b44be05ac94c198a278608ba89fde5, head and verified base both run 64 tests with the identicaltest_ir.IrTests.test_live_raw_v12_layout_and_history_contracts_are_exactfailure forcommand=new-pane-rightat test_ir.py:384.20af65b3a87b4317bc7f73021bfdae1e, head and verified base31cb279970c39628118dc9c8ccdb1eeb71082dd8exit 1 with identical findings forHomeChatColorsPanel.swiftandHomeChatColorsView.swift; neither changes here.87ad0817bd4c59f0411c8e6cdb58dd38c57c2398; reviewed the delta from884c6dc1dc791c9f256bbb47b501b5287ad0e7ab, confirming remainder redaction and the single-pass bounded fold.The recovery fold and privacy regressions stay together so the tested continuation matches its implementation; there is no new timer or background task.
Changelog
Show bounded, redacted unfinished tool details when resuming a turn interrupted by daemon restart.
Agent session: agent session