Repository navigation
🤖 tests: phone repro editCancelKeepsDraft once showed an empty composer after Cancel #5810
Description
Activity
Second occurrence, first reported as #5876. Same test, same phone target, same assertion.
- Run: https://github.com/coder/xum/actions/runs/37763109369, job "Test / E2E (linux 1/4)", the merge-group run for 🤖 tests: runner library for the bug-bash sandbox, with the first image digest #5875.
FAIL phone repros/editCancelKeepsDraft.e2e.ts > Cancel in edit mode leaves edit mode and keeps the unsent draftASSERTION_FAILED: expect.toHaveValue failed: expectedunsent draft, observed"", atrepros/editCancelKeepsDraft.e2e.ts:28:5.- The same tree passed this shard on the PR run (https://github.com/coder/xum/actions/runs/37761591117). 🤖 tests: runner library for the bug-bash sandbox, with the first image digest #5875 changes only
tests/bugbash/sandbox/, which no repro imports.
Two occurrences in about 10 days, both on phone, both after Cancel. Still not reproduced locally (an earlier 20-run loop passed 20/20 on main). The cause is still open: a real intermittent draft loss at phone width, or a timing gap between
toBeHiddenand the value check. The planned fix for #5672 and #5571 (replacing #5801) must run this repro in a loop on its branch and on main and report both counts.
Generated with
xum• Model:anthropic:claude-opus-5-5• Thinking:high- addedinvestigationTriage: proposal / research / trackingTriage: proposal / research / tracking
on Oct 9, 2026 Another sighting, this time on the web target.
- Run 37985323071,
Test / E2E (linux 1/4): https://github.com/coder/xum/actions/runs/37985323071/job/114005814158 - Same assertion: after Cancel, the composer ("Message") held
""instead ofunsent draft(editCancelKeepsDraft.e2e.ts:28). - PR 🤖 tests: wait for the failed turn's terminal policy in G4 goal-advancement tests #5959 changes only a bun unit test (
goalAdvancement.test.ts), so it is unrelated. - A rerun of the failed jobs passed: https://github.com/coder/xum/actions/runs/37985323071/job/114011416724
- Run 37985323071,
Third sighting, again on web. This time it removed a PR from the merge queue.
- Merge-group run 38082874892,
Test / E2E (linux 1/4)(job 114303270432), commit449fbe9846(mainea19a44101plus 🤖 tests: bug-bash sandbox runtime fixes from the readiness reviews (D1) #6082). 🤖 tests: bug-bash sandbox runtime fixes from the readiness reviews (D1) #6082 changes onlytests/bugbash/sandbox/**and docs. - Same assertion:
editCancelKeepsDraft.e2e.ts:28, composer""instead ofunsent draft. The failed attempt took 6.53 s. Passing runs take about 2.2 s, and the phone target in the same job passed in 1.87 s. - Local check on
449fbe9846with the mock app AI and--retries 0: 16 of 16 passed. 10 were the repro alone on web, and 6 were the whole web repro phase in CI order. - The job uploads no e2e artifacts, and
trace: on-first-retryrecords nothing with retries 0. So no sighting so far left a trace or screen. The next step is a trace on CI, for exampletrace: 'retain-on-failure'for the repro phase, so the next failure shows its state.
The coordinator desk owns this issue now.
Generated with
xum• Model:anthropic:claude-opus-5-5• Thinking:high- Merge-group run 38082874892,
Problem
The bug-bash repro
tests/bugbash/repros/editCancelKeepsDraft.e2e.tsfailed once on the phone target in CI. The web target passed in the same job. It is an assertion failure, not a timeout:Test / E2E (linux 1/4)), on PR 🤖 refactor: expose Token Budget counts for turn-start stages (no behavior change) #5805's head 8da02cc. 🤖 refactor: expose Token Budget counts for turn-start stages (no behavior change) #5805 changes no frontend code.ASSERTION_FAILED: expect.toHaveValue failed: the composer textbox ("Message") should holdunsent draftafter Cancel hides the edit box. It held an empty value.So after Cancel on a phone-width layout, the composer sometimes shows an empty box instead of the unsent draft. If the user then types or sends, the draft is lost.
Notes
applyDraftFromPending,restorePreEditDraftinChatInput/index.tsx). A restore that races the composer remount or the draft store echo could produce this.Next step
Run the phone repro in a loop on main and on #5801's head (for example 20 times each) and compare the failure counts.
Generated with
xum• Model:anthropic:claude-opus-5-5• Thinking:high