This document defines the label taxonomy for ARPAHLS/OPSIE. Labels are declared in labels.json and synced to GitHub by the Sync GitHub labels workflow (or manually on first setup).
Implements Option A: reporters file issues quickly; maintainers apply area and work-type labels during triage.
Closes the label-strategy portion of #21; contributes to #20.
- Choose one of six issue templates.
- Fill required fields, including one primary area (dropdown).
- Optionally pick one secondary area (or
None). - GitHub applies kind labels from the template (e.g.
bug,enhancement) plusneeds-triage.
The dropdown value is stored in the issue body. It does not auto-apply area:* labels (GitHub limitation).
- Read Primary area (and Also affects if set) from the issue body.
- Add the matching
area:*label (one primary; at most one secondary). - Remove
needs-triageand addconfirmedwhen scope is accepted. - Add work-type labels if not already clear:
refactor,infrastructure,dependencies,testing. - Add
priority:highorpriority:lowonly when needed (maintainers; not reporters). - Use
blocked,help wanted,good first issue,duplicate,invalid,wontfixas usual.
| Rule | Detail |
|---|---|
| One kind | Prefer a single kind label: bug, enhancement, documentation, question, security, or maintenance kinds added at triage |
| One primary area | Exactly one area:* for ownership |
| One secondary area max | Only when the fix clearly spans two subsystems |
| No conflicting workflow | Do not keep needs-triage and confirmed together |
| No duplicate vocabulary | Use area:voice, not a separate voice label |
| Priority | priority:high / priority:low are maintainer-only |
| Secrets | Never ask reporters to label security for paste-in keys; use coordinated disclosure |
| Label | When to use |
|---|---|
bug |
Incorrect or broken behavior |
enhancement |
New feature or meaningful improvement |
documentation |
Docs-only change |
question |
Information or discussion |
security |
Security template; policy or hardening |
refactor |
Same behavior, structural change (often from Maintenance triage) |
infrastructure |
.github, CI, repo layout |
dependencies |
requirements.txt, Ollama/Chroma/Postgres pins |
testing |
Tests and smoke harness |
GitHub defaults retained: duplicate, invalid, wontfix, good first issue, help wanted.
| Label | Module / scope |
|---|---|
area:core |
OPSIIE_0_3_80_XP.py — router, boot, streaming, globals |
area:boot-auth |
Gate, kun.py, arpa_id, /status |
area:memory |
PostgreSQL, Chroma, /recall, /forget, /memorize |
area:terminal |
terminal_colors.py, help.py, themes, slash UX |
area:persona |
System prompt, Soul Signature, utils.py persona text |
area:config |
.env, kun.example.py, configuration docs |
area:agentic |
agentic_network.py, /ask, live agents |
area:markets |
markets.py, markets_mappings.py, /markets |
area:web3 |
web3_handler.py, /0x, receive |
area:mail |
mail.py, /mail |
area:dna |
dna.py, /dna |
area:genai |
/imagine, /music, video.py, /video |
area:rooms |
room.py, /room, outputs/rooms/ |
area:voice |
/voice*, TTS/STT, system sounds |
| Label | When to use |
|---|---|
needs-triage |
Default on new templated issues |
confirmed |
Repro or scope accepted |
blocked |
Waiting on dependency or decision |
| Label | When to use |
|---|---|
priority:high |
Target next patch |
priority:low |
Backlog |
| Template | Labels applied on create | Maintainer adds |
|---|---|---|
| Bug report | bug, needs-triage |
area:*, confirmed, optional priority:* |
| Feature request | enhancement, needs-triage |
area:*, confirmed |
| Documentation | documentation, needs-triage |
area:* if subsystem-specific |
| Security | security, needs-triage |
area:*, priority:high if urgent |
| Question | question, needs-triage |
area:*; convert to bug/enhancement if needed |
| Maintenance | needs-triage only |
refactor / infrastructure / dependencies / testing, area:* |
Copy the label name before the em dash in the primary area dropdown:
| Dropdown prefix | GitHub label |
|---|---|
area:core |
area:core |
area:boot-auth |
area:boot-auth |
area:memory |
area:memory |
area:terminal |
area:terminal |
area:persona |
area:persona |
area:config |
area:config |
area:agentic |
area:agentic |
area:markets |
area:markets |
area:web3 |
area:web3 |
area:mail |
area:mail |
area:dna |
area:dna |
area:genai |
area:genai |
area:rooms |
area:rooms |
area:voice |
area:voice |
Other / unsure |
Ask reporter; leave only needs-triage until clarified |
Colors are set in labels.json. Adjust in the GitHub UI if a label already existed with a different color.
| Group | Example labels | Hex (no #) |
|---|---|---|
| Kind | bug |
e8b4b4 |
| Kind | enhancement |
b8d4e8 (former documentation blue) |
| Kind | documentation |
f0e8c8 (same as dependencies, near triage) |
| Kind | good first issue |
c8f030 (lime, high contrast) |
| Kind | help wanted |
f5e020 (bright yellow) |
| Area | all area:* |
d0f5f0 (shared; matches former area:dna) |
| Workflow | needs-triage |
f0f0d8 |
| Workflow | confirmed |
d8f0d8 |
| Priority | priority:high |
f0b8b8 |
Automatic (after merge to main):
- Merge a PR that includes
.github/labels.json(or workflow changes). - Workflow Sync GitHub labels runs on push, or run it manually: Actions → Sync GitHub labels → Run workflow → branch
main.
The workflow uses the GitHub API to create and update labels (including color changes). Re-run after editing colors in labels.json.
Manual (without Actions):
- Open Issues → Labels → edit each label, or use
gh label edit <name> --color <hex> --description "...".
Labels not listed in labels.json are kept (nothing is deleted).
- Reporter: Bug report, primary area
area:voice, steps, no secrets. - On create:
bug,needs-triage - Maintainer: add
area:voice,confirmed, removeneeds-triage
- Reporter: Bug, primary
area:core, secondaryarea:voice - Maintainer:
area:core,area:voice,confirmed
- Reporter: Maintenance, work type Infrastructure, primary Infrastructure / .github only
- Maintainer:
infrastructure,area:configor no area if purely.github,confirmed
| File | Role |
|---|---|
| ISSUE_TEMPLATE/ | Six issue forms + config.yml |
| labels.json | Label definitions for sync |
| pull_request_template.md | PR checklist |
| ../CONTRIBUTING.md | Contributor overview |
Future: GitHub Action to parse primary_area from issue body and apply area:* automatically (optional; not in scope for #21).