triage-assignlisted
Install: claude install-skill a-canary/arc-agents
# triage-assign — Unset Row Assignment Loop
Drains ledger rows missing `agent` or `pool` assignment. This is the **agent-actor backstop** to `bin/factory.ts`'s `triageUnset` pure-SQL heuristic (shipped in PR-3, I-0011). The factory's SQL rule covers obvious cases (kind=task → agent=developer, kind=sprint → agent=sprint, etc.); `triage-assign` handles the hard cases the heuristic punts on — ambiguous payloads, mixed-kind parents, cross-context rows.
When factory dispatches a `agent=triage` row, this is the skill it runs.
## Inputs
No flags required. The worker claims `agent_unset` / `pool_unset` rows atomically from the ledger (via bookie) and processes them in batch.
## Procedure
1. **List unset rows.**
```
ledger.ts list --agent agent_unset --limit 20
# also
ledger.ts list --pool pool_unset --limit 20
```
Deduplicate (a row may have both unset).
2. **For each row, read payload + context.**
- `ledger.ts show <id>` — kind, tier, title, body_md, parent_id.
- Parent row if present: kind + body_md (what does the parent expect of children?).
- Sibling rows (same parent): existing agent/pool assignments (for consistency).
3. **Assign {tier, pool, agent}.**
Apply these rules in order:
| Signal | Assignment |
|---|---|
| kind=sprint | agent=sprint, pool=build |
| kind=event, source_module=arc-chat | agent=chat, pool=interactive |
| kind=task, body mentions "HITL" or "human review" | agent=chat, pool=interactive |
| kind=task, b