Skip to content

Failed queue cancellation hides work that is still scheduled on the host #923

Closed

Description

@currentbits

Priority: P1. Reproduced/reviewed at commit 6c7a6fbe on 2026-09-05.

Cancel removes a queued follow-up from the UI before the host confirms cancellation. If the call fails, the queue stays hidden while the host still holds work that can run at turn end.

Reproduction

  1. Open a working thread with a persisted queued follow-up.
  2. Make api.threads.setQueued({prompt:null}) reject.
  3. Click the queued follow-up's Cancel action.
  4. The queue strip disappears.
  5. Read the thread from the host/fakeCoder: its queued prompt is unchanged.

Confirmed in the mounted App with the host queue and rendered queue checked separately.

Cause

useCoder.cancelQueued optimistically replaces queued with null. The catch only sets the global run error and never restores or reloads the queue.

Acceptance

  • Keep the queue visible until cancellation is confirmed, or reconcile it on failure.
  • Clearly indicate a failed cancellation and offer a retry.
  • Do not overwrite a newer queue update when reconciling.
  • Verify that UI and host agree after both success and failure; a failed cancellation must not look successful.

Source: src/useCoder.ts#L830.

Requested disposition: separate Planboard issue, plan:todo. Scope is the concrete defect above.

Activity

  1. added and removed on Oct 9, 2026
  2. currentbits commented on Oct 9, 2026

    @currentbits
    OwnerAuthor

    Fixed: when setQueued fails, the held queue is put back (src/useCoder.ts:1024-1035). Closing in the 2026-10-09 board cleanup (#1532).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions