Skip to content

td reject leaves issues orphaned in in_progress — never re-enters agent work queue #45

@ricktraveler

Description

@ricktraveler

Summary

When an issue is rejected via td reject, it moves to in_progress status. However, the agent session that originally worked on it has ended. No agent is actively working on the issue, yet it's stuck in a state that implies one is. Since td next only returns open issues, the rejected issue never re-enters the work queue and is effectively orphaned.

The Problem

td is designed for agentic AI workflows where agents pick up work via td next. The lifecycle breaks down on rejection:

  1. Agent picks up issue via td next → starts work → submits for review
  2. Reviewer runs td reject <id> -m "reason"
  3. Issue moves to in_progress
  4. The original agent session/context window no longer exists
  5. No agent will ever pick this issue up again — td next only shows open issues
  6. td query "rework()" knows about it, but no agent is told to run that

The in_progress status means "an agent is actively working on this." After rejection, that's not true — the session that implemented it is gone. The issue is orphaned.

Steps to Reproduce

  1. td create "Example task" --type task --priority P1
  2. td start <id> (begin work in an agent session)
  3. td review <id> (submit for review)
  4. td reject <id> -m "Doesn't meet acceptance criteria"
  5. td next → rejected issue does not appear
  6. Issue sits in in_progress indefinitely with no agent working on it

Expected Behavior

Rejected issues should re-enter the work queue so that td next picks them up. The most natural fix would be for td reject to set the status back to open rather than in_progress, since no agent owns the issue after rejection.

Alternatively, td next could be made aware of rejected/rework issues and surface them (potentially with higher priority, since they already have context and rejection feedback).

Why This Matters

The core value proposition of td is that agents can autonomously work through a queue of tasks across context windows. If rejected issues silently fall out of that queue, the feedback loop is broken — a reviewer rejects work expecting it to be reattempted, but nothing happens unless a human manually intervenes. This defeats the purpose of the agentic workflow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions