Skip to content

Mission dispatcher can deadlock on stale reviewer assignment while real work continues elsewhere #86

@jeremyplichta

Description

@jeremyplichta

Summary

In mission mode, the dispatcher can get stuck on a stale reviewer-assignment state even though the actual implementation work is still progressing on a worker task.

Observed behavior

  • A mission work item was initially assigned to the wrong lane.
  • A later conductor correction reassigned the real ownership conceptually, but the mission bookkeeping kept the old reviewer-blocked state.
  • The mission status continued to report that the work item was blocked waiting on reviewer approval, even after the reviewer had no current task and the worker had the live task.
  • Dispatcher "help" events continued to point at the stale blocked state instead of converging on the live owner/task.
  • Informational conductor nudges to the live worker were auto-consumed and did not materially move the mission state.
  • The worker and sidecars could idle out while the mission still appeared active and blocked on the stale assignment.

Why this is harmful

  • The operator/conductor loses trust in mission status because the displayed blocker is no longer the real blocker.
  • Reviewers can be shown as the assigned gate even when they have no current task.
  • A conductor may keep nudging the correct worker, but the mission state never reflects that correction.
  • The run can end up in a limbo where code exists locally, but mission-mode orchestration never reaches PR submission.

Expected behavior

  • A conductor correction should be able to supersede a stale reviewer-blocked mission state.
  • If the live current task belongs to a worker and the reviewer has no current task, the mission should stop presenting the reviewer as the active blocker.
  • Informational/query messages that materially change execution should be surfaced in mission state rather than silently disappearing into an idle loop.
  • The dispatcher should converge on the live owner/task pair, not keep re-emitting stale blocked reasons.

Reproduction shape

This does not require any project-specific task details. The generic pattern is:

  1. Mission work item is assigned to the wrong lane.
  2. Conductor creates a new worker-owned task and sends a correction note.
  3. Reviewer lane no longer has a real current task.
  4. Mission status still claims the work item is blocked on reviewer approval.
  5. Worker continues or idles independently, but mission bookkeeping never catches up.

Requested fix ideas

  • Treat conductor correction notes as first-class state transitions for mission ownership.
  • Reconcile mission blocked reasons against actual task current ownership for the agents involved.
  • Detect and clear reviewer-blocked states when the reviewer no longer has a current task.
  • Distinguish FYI auto-consumption from actionable state transitions in the dispatcher.
  • Add a recovery path that rebinds the mission work item to the live worker task when they diverge.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions