ci(triage): stop over-labelling well-specified issues#4792
Conversation
Two auto-labellers were classifying issues from their full body text, which meant the better-specified an issue was, the more wrong labels it collected. The v0.9.2 localization issues (#4787, #4790) landed tagged `bug, question` purely because their acceptance criteria said "fails when a pack drifts" and a scope heading said "How to add a locale". triage.yml: match type labels against the title only. A title states what an issue *is*; a body just discusses it. Also drop `error` and `fail(ed|ure)` from the bug rule outright — they describe what nearly every issue mentions, not what any issue is. This trades a little recall for precision: a genuine bug whose title avoids the word "bug" now needs manual triage, which is the cheaper error. agent-task-labels.yml: `tui` required only a bare \btui\b, so any issue that referenced the terminal UI in passing was tagged as touching it. Anchor on `crates/tui`, `ratatui`, and `codewhale-tui` instead. Those signals are also the ones that survive the single-binary refactor (#4747): the crate path and the framework stay when codewhale-tui is lib-ized, while the binary name goes away. Verified against the four issues that misfired: `bug` and `question` clear on all of them, `tui` is retained where the body genuinely cites crates/tui, a synthetic "Crash on startup: panic in ratatui render loop" still classifies as bug+tui, and a passing "how the tui differs from the web UI" mention no longer fires.
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Claude finished @Hmbown's task in 1m 54s —— View job Review: PR #4792 — stop over-labelling well-specified issues
SummarySmall, well-scoped fix. I traced both regex changes against Correctness
Minor / non-blocking
Agreed, out of scopeThe area/OS labels at No changes requested. |
5ce0136 to
2fb9202
Compare
|
Claude finished @Hmbown's task in 1m 32s —— View job Review: PR #4792 — stop over-labelling well-specified issues (re-check)
SummaryNo new commits since the prior automated pass (still 1 commit, Correctness
Minor / non-blocking (unchanged from prior pass)
Agreed, out of scope
No changes requested. |
Both auto-labellers classify issues from full body text, so the better-specified an issue is, the more wrong labels it collects. #4787 and #4790 landed tagged
bug, questionbecause their acceptance criteria said "fails when a pack drifts" and a scope heading said "How to add a locale".Changes
triage.yml— type labels (bug,enhancement,documentation,question) now match the title only. A title states what an issue is; a body just discusses it.errorandfail(ed|ure)are dropped from the bug rule outright — they describe what nearly every issue mentions.agent-task-labels.yml—tuirequired only a bare\btui\b, so any passing reference to the terminal UI tagged the issue as touching it. Now anchored oncrates/tui,ratatui,codewhale-tui.Those anchors are deliberately the ones that survive the single-binary refactor (#4747): the crate path and the rendering framework stay when
codewhale-tuiis lib-ized, while the binary name goes away. A comment in the file says not to reintroduce a bare word match.Verification
Replayed both regex sets over the real title+body of the four issues that misfired:
bug, question, tuituibug, question, tuituibug, tuituituituiRegression guards: a synthetic
Crash on startup: panic in ratatui render loopstill classifiesbug, tui;Docs: explain how the tui differs from the web UIno longer firestui.Both workflows re-validated: YAML parses and the embedded
github-scriptbodies passnode --check.Known tradeoff
Title-only typing trades recall for precision. #4786 is a real bug whose title doesn't contain a type keyword, so it would no longer be auto-tagged
bug— it was labelled by hand. Under-labelling is the cheaper error here; a wrongbuglabel on planned work actively misleads triage.Separate finding — not fixed here, needs your call
Every area/OS rule in
triage.yml(lines 32–44) is inert. It emitsarea:tui,area:core,area:mcp,area:state,area:execpolicy,area:tools,area:install,os:windows,os:macos,os:linux,lang:zh— and none of those 11 labels exist on the repo, so the existing-label filter drops all of them. That classification has never worked. Two options, both out of scope for this PR:area:tuiwould duplicate thetuilabel this PR just tightened, and the area taxonomy needs rethinking against the single-binary layout anyway.I'd lean (2), then reintroduce a deliberate area taxonomy once #4747 settles what the areas actually are.
🤖 Generated with Claude Code