Appearance
date: 2026-06-08 tags: [github, projects-v2, issue-fields, triage, labels] status: graduated graduated_to: docs/agents/triage-labels.md # Area §2 — defined as a label
Native org Issue Fields aren't board fields — and aren't reliably agent-writable; classify with labels
Symptom — triage couldn't set the Area value. The Projects v2 board (#3 "Tempo") listed no Area field, yet older issues showed an Area value, so it looked broken/missing.
Root cause — Area is a GitHub org-level Issue Field (Settings → Issue fields: Area, Priority, Start date, Target date, Effort) — a different thing from a Projects v2 board single-select field. Issue Fields don't appear in projectV2.fields, and there's no stable REST/GraphQL mutation to set them with a plain $GH_TOKEN; only the GitHub MCP's issue_write(issue_fields) path writes them — useless when the MCP is down.
Fix — migrated Area to labels (App / Harness / App + Harness): created via the labels API, applied to all open issues, and made canonical in docs/agents/triage-labels.md + the triage/organise/to-issues/find-untracked-work/build-dev-plan skills. Labels are settable via POST /issues/{n}/labels, visible in plain issue lists, and filterable without the board.
Guard — docs/agents/triage-labels.md §2 now defines Area as a label (not the Issue Field). Rule of thumb: for any classification an AFK agent must set, use a label or the Projects v2 Status field — not a native Issue Field, which the agent's tooling can't reliably write.