# Triage Agent Brief — what to do with each state

## needs-triage (inbound)

A task lands here by default — no state assigned yet. Read the task
description, the linked artifacts, and CONTEXT.md (if relevant).

Decide:

- Is the task **concrete enough** to act on?
  - **Yes, agent can act:** → `ready-for-agent`. Note required acceptance
    criteria and files.
  - **Yes, but needs human judgment:** → `ready-for-human`. Note WHY
    (design taste / product call / security review).
  - **No, missing info:** → `needs-info`. Note what's missing.
  - **No, not going to act:** → `wontfix`. Note reason.

Category: assign `bug` or `enhancement`. Don't conflate them — bug
triage and enhancement triage have different priorities downstream.

## needs-info (blocked on the reporter)

Don't keep grilling. Write one clarifying question, surface it to the
reporter (via the backend adapter or by tagging the user in the
local-only case), and stop. Re-enter triage when the answer arrives.

If the info is never supplied:

- After 30 days with no response → `wontfix` with reason "no response
  to clarification request"
- Earlier than 30 days, only on a clear signal that the reporter
  abandoned the task

## ready-for-agent

The task is concrete: files identified, acceptance criteria stated,
no human-judgment-required gates ahead. An agent can take it.

This is NOT a green-light to start `/apt:plan` automatically — the
triage agent's job ends here. The user (or a downstream skill) picks
ready-for-agent tasks off the queue and runs them.

## ready-for-human

The task requires human judgment that no agent should auto-resolve.
Common reasons:

- Design taste (apt:design / apt:mockup needed, then human chooses
  between variants)
- Product decision (does this belong in the product at all?)
- Security review (a credential / auth / data-handling change that
  needs human eyes)
- Legal / compliance call

Tag the human reviewer in the backend's mention surface (GitHub
Issues assignee, app-inbox owner field, or local-only `task.owner`).

## wontfix (closed without implementation)

Record the reason verbatim. Patterns:

- "Out of scope — belongs to {parallel track / v2 / separate area}"
- "Already addressed by {commit-sha / task-id / decision in
  context-notes}"
- "No actionable behavior change — task description was a question
  better answered by {apt:zoom-out / docs / discussion}"
- "Reporter abandoned — no response to clarification request after 30 days"

`wontfix` is terminal. Re-opening requires a fresh `needs-triage`
record.

## When in doubt

Default to `ready-for-human` over `wontfix`. False-positive `wontfix`
loses real work; false-positive `ready-for-human` just adds one review
turn. The cost asymmetry favors the more conservative call.
