You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This repo currently has only the 9 default GitHub labels (bug, documentation, duplicate, enhancement, good first issue, help wanted, invalid, question, wontfix). For a project with 250+ open issues and community contributors, this is insufficient for triage, prioritization, or tracking upstream contributions.
This issue proposes a label taxonomy based on patterns from Node.js, Rust, Go, Bun, Deno, Next.js, and React — adapted for MiMo-Code's specific needs as a fork of opencode.
Proposed labels
Keep existing (9 labels)
Label
Color
Description
bug
d73a4a
Something isn't working
documentation
0075ca
Improvements or additions to documentation
duplicate
cfd3d7
This issue or pull request already exists
enhancement
a2eeef
New feature or request
good first issue
7057ff
Good for newcomers
help wanted
008672
Extra attention is needed
invalid
e4e669
This doesn't seem right
question
d876e3
Further information is requested
wontfix
ffffff
This will not be worked on
Add: Type (4 labels)
Label
Color
Description
confirmed bug
b60205
Reproduced and confirmed
regression
e11d48
Used to work, now broken
crash
b60205
Runtime crash / segfault / panic
performance
e99695
Performance issue
Add: Status (5 labels)
Label
Color
Description
needs triage
CC767F
Needs initial review and labeling
needs investigation
fef2e2
Confirmed, needs root cause analysis
needs repro
fef9c3
Needs a minimal reproduction
blocked
b3312d
Blocked on another issue, PR, or upstream
stale
ededed
No activity for 30+ days
Add: Resolution (2 labels)
Label
Color
Description
working as designed
0e8a16
Not a bug — behavior is correct
backlog
fbca04
Acknowledged, low priority
Add: Priority (4 labels)
Label
Color
Description
P0: critical
b60205
Security, data loss, or crash affecting many users
P1: high
e11d48
Major functionality broken, no workaround
P2: medium
fbca04
Bug with workaround, or significant feature request
P3: low
c5def5
Nice-to-have, minor polish, edge case
Priority defaults to P2: medium if no priority label is set. Only maintainers should set P0/P1.
Add: Upstream / Fork coordination (2 labels)
Label
Color
Description
upstream: cherry-pick candidate
1d76db
Fix exists here; should be contributed to opencode
upstream: needs assessment
0d447d
May exist in opencode; needs assessment before cherry-pick
Why two upstream labels instead of one: Early in a fork's life, nearly everything is a cherry-pick candidate because the codebases haven't diverged much. As they diverge, assessing whether a fix applies upstream becomes more effort. The upstream: needs assessment label marks "we should check if this is relevant to opencode" without committing to cherry-picking it. The upstream: cherry-pick candidate label marks "we've confirmed this fix should go upstream."
This pattern is modeled on React's meta-exported label (marking issues synced from Meta's internal fork) and Go's CherryPickCandidate/CherryPickApproved system. As MiMo-Code diverges further from opencode, the upstream: needs assessment label will see more use and upstream: cherry-pick candidate will become rarer.
Add: Area (initial set — extend as needed)
Label
Color
Description
area:tui
c5def5
Terminal UI
area:server
c5def5
Server / backend / API
area:models
c5def5
Model providers, routing, configuration
area:install
c5def5
Package manager (bun install equivalent)
area:config
c5def5
Configuration, settings, AGENTS.md
area:platform
bfd4f2
OS-specific or platform-specific issues
Tier 2: Roadmap and release communication (4 labels)
These follow best practice from projects like Rust (tracking issues, release-notes), Node.js (version labels, semver labels), and Go (release-blocker). They communicate roadmap intent and ensure release documentation coverage:
Label
Color
Description
release-notes
bfdadc
Should be mentioned in release notes
tracking
d4c5f9
Tracking issue or meta-issue for a feature
v0.1.x
bfd4f2
Affects v0.1.x release line
v0.2.x
bfd4f2
Affects v0.2.x release line
Issue workflow
Issues follow a state machine from triage to resolution. Labels are the state markers:
Priority is orthogonal to state — a P0: critical confirmed bug still goes through needs investigation → PR open → closed, but it gets faster attention at each transition.
Users should not self-assign priority labels. CI should auto-apply needs triage to every new issue. See #585 for automation recommendations (Dosu for initial triage, CodeRabbit for PR review).
Who sets labels
Label type
Who sets it
How
needs triage
CI (auto)
Applied to every new issue automatically
Type (bug, enhancement, question)
Submitter (via template) + maintainer review
Issue templates pre-set type; maintainers refine
Priority (P0–P3)
Maintainers only
Never set by submitters
Status (needs repro, confirmed bug, etc.)
Maintainers + CI
CI can auto-confirm bugs with repro steps
Resolution (duplicate, wontfix, etc.)
Maintainers only
Area (area:*)
CI suggestion + maintainer confirmation
Dosu or similar tool suggests area labels; maintainer confirms
Upstream (upstream:*)
Maintainers only
Requires assessment of upstream applicability
Total label count
Category
Count
Existing (kept)
9
Type (new)
4
Status (new)
5
Resolution (new)
2
Priority (new)
4
Upstream (new)
2
Area (new)
6
Tier 2: Roadmap (new)
4
Total
36
For comparison: Bun has 144 labels, Rust has 861, React has 76, Node.js has 202, Deno has 122. At 36 labels, this is deliberately lean — enough structure for triage, not enough to be overwhelming.
Implementation
This can be done with a single script using the GitHub API. Labels are purely additive — no existing labels are renamed or deleted.
See #585 for the companion automation (auto-labeling, triage bot, PR review) needed to prevent maintainer burnout with this label system.
Summary
This repo currently has only the 9 default GitHub labels (
bug,documentation,duplicate,enhancement,good first issue,help wanted,invalid,question,wontfix). For a project with 250+ open issues and community contributors, this is insufficient for triage, prioritization, or tracking upstream contributions.This issue proposes a label taxonomy based on patterns from Node.js, Rust, Go, Bun, Deno, Next.js, and React — adapted for MiMo-Code's specific needs as a fork of opencode.
Proposed labels
Keep existing (9 labels)
bugd73a4adocumentation0075caduplicatecfd3d7enhancementa2eeefgood first issue7057ffhelp wanted008672invalide4e669questiond876e3wontfixffffffAdd: Type (4 labels)
confirmed bugb60205regressione11d48crashb60205performancee99695Add: Status (5 labels)
needs triageCC767Fneeds investigationfef2e2needs reprofef9c3blockedb3312dstaleedededAdd: Resolution (2 labels)
working as designed0e8a16backlogfbca04Add: Priority (4 labels)
P0: criticalb60205P1: highe11d48P2: mediumfbca04P3: lowc5def5Priority defaults to
P2: mediumif no priority label is set. Only maintainers should set P0/P1.Add: Upstream / Fork coordination (2 labels)
upstream: cherry-pick candidate1d76dbupstream: needs assessment0d447dWhy two upstream labels instead of one: Early in a fork's life, nearly everything is a cherry-pick candidate because the codebases haven't diverged much. As they diverge, assessing whether a fix applies upstream becomes more effort. The
upstream: needs assessmentlabel marks "we should check if this is relevant to opencode" without committing to cherry-picking it. Theupstream: cherry-pick candidatelabel marks "we've confirmed this fix should go upstream."This pattern is modeled on React's
meta-exportedlabel (marking issues synced from Meta's internal fork) and Go'sCherryPickCandidate/CherryPickApprovedsystem. As MiMo-Code diverges further from opencode, theupstream: needs assessmentlabel will see more use andupstream: cherry-pick candidatewill become rarer.Add: Area (initial set — extend as needed)
area:tuic5def5area:serverc5def5area:modelsc5def5area:installc5def5bun installequivalent)area:configc5def5area:platformbfd4f2Tier 2: Roadmap and release communication (4 labels)
These follow best practice from projects like Rust (tracking issues, release-notes), Node.js (version labels, semver labels), and Go (release-blocker). They communicate roadmap intent and ensure release documentation coverage:
release-notesbfdadctrackingd4c5f9v0.1.xbfd4f2v0.2.xbfd4f2Issue workflow
Issues follow a state machine from triage to resolution. Labels are the state markers:
stateDiagram-v2 [*] --> New: Issue opened New --> Triaged: needs triage (auto-applied) Triaged --> Needs_Repro: bug + needs repro Triaged --> Confirmed_Bug: confirmed bug Triaged --> Enhancement: enhancement Triaged --> Question: question Triaged --> Duplicate: duplicate Triaged --> Invalid: invalid Triaged --> Wontfix: wontfix Triaged --> Working_as_Design: working as designed Triaged --> Backlog: backlog Needs_Repro --> Confirmed_Bug: repro provided Needs_Repro --> Stale: no response 30d Confirmed_Bug --> Needs_Investigation: needs investigation Needs_Investigation --> PR_Open: fix in progress PR_Open --> Closed: fix merged Enhancement --> Backlog: acknowledged, low priority Enhancement --> PR_Open: accepted, work starts Stale --> Closed: auto-close after 60d Backlog --> PR_Open: prioritizedPriority is orthogonal to state — a
P0: criticalconfirmed bug still goes throughneeds investigation→PR open→closed, but it gets faster attention at each transition.Users should not self-assign priority labels. CI should auto-apply
needs triageto every new issue. See #585 for automation recommendations (Dosu for initial triage, CodeRabbit for PR review).Who sets labels
needs triagebug,enhancement,question)P0–P3)needs repro,confirmed bug, etc.)duplicate,wontfix, etc.)area:*)upstream:*)Total label count
For comparison: Bun has 144 labels, Rust has 861, React has 76, Node.js has 202, Deno has 122. At 36 labels, this is deliberately lean — enough structure for triage, not enough to be overwhelming.
Implementation
This can be done with a single script using the GitHub API. Labels are purely additive — no existing labels are renamed or deleted.
See #585 for the companion automation (auto-labeling, triage bot, PR review) needed to prevent maintainer burnout with this label system.