---
type: convention
title: "Forgejo issue triage labels — afk / hitl / blocked"
summary: "The three-label triage vocabulary for issues on the Forgejo tracker: triage/afk (agent-ready), triage/hitl (needs human), triage/blocked (waiting on another issue). How to apply them and why the taxonomy is deliberately minimal."
tags:
  - type/convention
  - tool/forgejo
  - convention/issue-triage
  - domain/ai-agents
scope: global
last_updated: 2026-07-08
---

# Forgejo Issue Triage Labels

Established 2026-07-08 (first applied on `jared/servers`). Create these labels in any repo that gets issues; keep the vocabulary identical across repos.

| Label | Color | Meaning |
|---|---|---|
| `triage/afk` | `0e8a16` (green) | Fully specified — an autonomous agent can pick it up and complete it with no human decisions. Issue body must contain acceptance criteria. |
| `triage/hitl` | `d93f0b` (red) | Needs the human's hands or judgment: account access, physical machines, spending decisions, design calls. |
| `triage/blocked` | `c5def5` (light blue) | Has an unresolved blocker issue. Remove when blockers close. Coexists with afk/hitl — the other label says what the issue becomes once unblocked. |

## Rules

- Every published issue gets exactly one of `afk`/`hitl`, plus `blocked` if applicable.
- `afk` is a promise: the issue body follows the tracer-bullet template (What to build / Acceptance criteria / Blocked by) and is self-sufficient without conversation context.
- Prefer `afk` over `hitl` — split the human step into its own small `hitl` issue rather than tainting a whole slice.
- Deliberately minimal (no priority/size/area facets): per the avoid-speculative-tooling principle, add more facets only when their absence actually hurts, not preemptively.

## Creating in a new repo

```bash
tea labels create --name triage/afk --color 0e8a16 --description "Ready for an autonomous agent - no human decisions needed"
tea labels create --name triage/hitl --color d93f0b --description "Needs human action or decision"
tea labels create --name triage/blocked --color c5def5 --description "Waiting on another issue"
```
