4.1 KiB
| id | date | status | supersedes | superseded-by | affected-paths | affected-components | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0046 | 2026-07-18 | Accepted |
|
|
0046 — Ticket readiness labels ready-for-agent/ready-for-human replace the hitl/semi/afk-ready autonomy trio
Context
ADR-0029 gave the hitl/semi/afk-ready autonomy trio its operational semantics in the Planka era (afk-ready cards skip Review, hitl cards are never moved by the AI), and ADR-0042 (retiring Planka) carried the trio forward 'unchanged' into the git-issues label scheme as part of a broader tracker migration. Neither ADR enumerated or originated the full ten-label taxonomy (priority P0-P3, autonomy hitl/semi/afk-ready, state next/waiting/review) as a designed set — that enumeration exists only in plugins/os-backlog/skills/route/SKILL.md. Revisiting the trio during the 2026-07-18 never-ask-twice grill (parent mechanism: ADR-0045) found the semi/hitl boundary has no operational test: nothing distinguishes when a ticket needs a human check-in mid-flight versus proceeding autonomously, and artifact/PR review already provides proceed-and-flag for free regardless of the label. Matt Pocock's /triage skill offers a two-state readiness vocabulary with a falsifiable test instead.
Decision
Retire the hitl/semi/afk-ready autonomy trio. Replace it with two-state ticket readiness: ready-for-agent (falsifiable test: 'fully specified — an agent completes it without asking'; an agent that asks a clarifying question or bounces the ticket disproves the label) and ready-for-human. A ticket that is neither is under-decomposed: split it into ordered agent/human parts, agent-first where dependencies allow — never given a third label or left unlabeled in limbo. This is paired with two-state decision-category coverage (a record exists, so proceed and cite it, or it doesn't, so ask) which needs no label or config surface of its own. os-backlog's taxonomy drops from ten labels to nine: priority P0-P3, readiness ready-for-agent/ready-for-human, state next/waiting/review. route/capture/list skill label lists, and existing labeled tickets, need updating (tracked as a follow-up issue, not done in this ADR).
Consequences
Easier: readiness has an operationally checkable definition instead of a subjective hitl/semi split; production usage itself falsifies mislabeled tickets (an agent asking or bouncing proves the ticket wasn't ready-for-agent), giving a feedback signal the old trio never had; under-decomposed work is forced into explicit splits instead of hiding behind a middling label. Harder: every project that adopted the ten-label taxonomy via /os-backlog:route needs a migration pass (new labels created, old ones retired, open issues relabeled) before its next ticket-working session; route/capture/list SKILL.md all need their label lists updated; ADR-0042's 'autonomy labels carry over unchanged' claim is now stale prose in an otherwise-standing ADR.
Alternatives rejected
Keep the three-tier hitl/semi/afk-ready trio — rejected: the semi/hitl boundary was never operationally testable, and artifact/PR review already delivers the proceed-and-flag behavior semi was meant to provide, making the middle tier redundant. Add a third readiness label for under-decomposed tickets rather than forcing a split — rejected: a third label re-creates an untestable middle tier by another name; splitting into agent/human parts is mechanical and keeps every ticket in a checkable state. Leave the ten-label taxonomy as-is and treat readiness as an orthogonal new label set — rejected: ready-for-agent/ready-for-human directly replace autonomy rather than adding to it, since the old and new labels encode the same slot (how a ticket should be worked) and running both would be redundant, not additive.