Repository navigation
acpmux: fork before a recorded prompt with durable retry identity - #27364
Conversation
|
Found 2 test failures on Blacksmith runners: Failures
|
|
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)
Gallery before/after for
States
Pick other states with a Passes: CI passes on CI passes on Written by web and size checks: green Shipped in:
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/41407469077 at 7b24abd failed: cmux-next checks (god files, concurrency, crash safety, l10n). |
|
Bead |
|
The protocol contract and inventory failures match base by test name and error. Comparison run https://github.com/manaflow-ai/cmux/actions/runs/40859020378 shows |
|
Owned by an agent session · session |
…k-before # Conflicts: # cmux-tui/crates/acpmux/docs/acpmux-schema.json # cmux-tui/crates/acpmux/src/hub/mod.rs # cmux-tui/crates/acpmux/src/hub/session.rs # cmux-tui/crates/acpmux/src/server/fork_through.rs # cmux-tui/crates/acpmux/src/server/requests.rs # cmux-tui/crates/acpmux/tests/fake_claude.py # cmux-tui/crates/acpmux/tests/remote_guard_codex_bridge.rs # webviews/src/agent-session/acpmux/protocol/generated/methods.ts
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. |
|
Review (subagent claude-opus-5-5 medium): SHIP at f3034b8 Visual verdict: no UI in this diff Checked the merge resolution with Follow-ups:
|
|
Review (subagent claude-opus-5-5 medium): SHIP at 3b59d4c The usage report is only appended from Follow-ups: none |
|
Review (subagent claude-opus-5-5 medium): SHIP at 6ee2e72 Visual verdict: no UI in this diff Checked 3b59d4c..6ee2e72 only: Follow-ups: none |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Edit and Resend needs a child containing only the history before the selected prompt.
acp.session.forkgains an authoritativebeforePromptIdboundary with persistedrequestIdretries. The true first prompt produces an empty configured child; later prompts use the completed preceding turn. The source transcript stays unchanged.Leo's request:
The capability is
acp.session.fork.beforePromptId. Unknown, ambiguous, steering, unreconstructable and conflicting requests fail explicitly. Partial creation never allocates a replacement child on retry. Existing remote guards still run, including the phone Full-access marker now preserved through canonical fork normalization.Overlap audit supplied by the area coordinator: “beforePromptId” and “fork before prompt” matched no PR. “edit and resend” matched merged desktop work #19470, #19679, #20318, #18754, #19565, unrelated iOS work #27286/#27314 (untouched), and the companion mobile-host classification PR #27347. The VM broker does not support the search endpoint or pr-overlap GraphQL request form.
Validation:
cd cmux-tui; cargo test -p acpmux --test hub_integration fork_through::; cargo test -p acpmux --test remote_guard_codex_bridge canonical_fork_boundaries_keep_the_phones_full_access_requirement; cargo test -p acpmux --lib protocol_ir_is_current.test_live_raw_v12_layout_and_history_contracts_are_exact/new-pane-rightexpects a field map missing the existing optionalside. Both head and base have 64 tests, one identical failure; remaining generation checks passed independently.Risk: strict completeness checks conservatively refuse adopted/imported, compacted or incomplete histories. Source metadata retains request reservations even when a child is purged. The additive fields preserve old-store deserialization and are stripped during transfer import. No policy is widened.
This cohesive change exceeds the usual 800-line target because the boundary must ship together with empty-child semantics, durable retry state, guard parity, native-history verification, generated protocol types and regression fixtures. Advertising a partial boundary without those guarantees would expose a misleading contract to mobile clients.
No capture: backend protocol, generated types and test fixtures only; this prerequisite changes no visible UI.
Agent session: agent session