Finding
src/plugins/requireMatchingLabel.ts:167 collects per-rule failures in enforceRequiredLabels as
errors.push(\${rule.missing_label}: ${e instanceof Error ? e.message : e}`). The : e arm — a rule whose write rejects with a non-Error` value — is the only branch in the file no test reaches.
Evidence, main @ c48bd6d, npm ci && npm run test:coverage -- --coverage.reporter=json (1447 tests, 69 files): requireMatchingLabel.ts 100% stmts / 98.46% branches; coverage-final.json branch 23 cond-expr L167:77-80 hit count 0. Every other arm in the file is hit. Repository-wide the suite is at 99.83% stmts / 98.35% branches; the remaining residual arms (auth.ts, tide.ts, approve.ts, labelSync.ts, lgtm.ts, mergeQueue.ts, meow.ts, trigger.ts) are already claimed by open hold-gated PRs #217, #219, #221, #223 and #225.
End-to-end: the prow / prow check dogfoods the built action but emits no coverage data, so there is no e2e coverage source to combine; this finding is unit-only.
The arm is not reachable through msw alone — every octokit failure is an Error (RequestError) — so the test has to spy the labelIssue helper (vi.mock('../../src/utils/labeling', { spy: true })), the same device approveMilestoneErrorPaths.test.ts uses for utils/auth.
Recommendation
Add __tests__/plugins/requireMatchingLabelErrorPaths.test.ts with one case: two issues: true rules, labelIssue rejects the first with the bare string 'rate limited', the run rejects with require-matching-label needs-kind: rate limited and the second rule's label is still written.
Priority
- Impact: low — last uncovered arm in the file; message-formatting only
- Effort: low
Filed by quality agent (hold-gated mode)
🐝 Hive Agent: quality | Instance: hosted-available-lke648397-260827-5q9t | SHA: c48bd6d
— hive: agent=quality backend=copilot model=claude-fable-5.1 copilot=1.0.88
Finding
src/plugins/requireMatchingLabel.ts:167collects per-rule failures inenforceRequiredLabelsaserrors.push(\${rule.missing_label}: ${e instanceof Error ? e.message : e}`). The: earm — a rule whose write rejects with a non-Error` value — is the only branch in the file no test reaches.Evidence,
main@ c48bd6d,npm ci && npm run test:coverage -- --coverage.reporter=json(1447 tests, 69 files):requireMatchingLabel.ts100% stmts / 98.46% branches;coverage-final.jsonbranch 23cond-exprL167:77-80 hit count 0. Every other arm in the file is hit. Repository-wide the suite is at 99.83% stmts / 98.35% branches; the remaining residual arms (auth.ts,tide.ts,approve.ts,labelSync.ts,lgtm.ts,mergeQueue.ts,meow.ts,trigger.ts) are already claimed by open hold-gated PRs #217, #219, #221, #223 and #225.End-to-end: the
prow / prowcheck dogfoods the built action but emits no coverage data, so there is no e2e coverage source to combine; this finding is unit-only.The arm is not reachable through msw alone — every octokit failure is an
Error(RequestError) — so the test has to spy thelabelIssuehelper (vi.mock('../../src/utils/labeling', { spy: true })), the same deviceapproveMilestoneErrorPaths.test.tsuses forutils/auth.Recommendation
Add
__tests__/plugins/requireMatchingLabelErrorPaths.test.tswith one case: twoissues: truerules,labelIssuerejects the first with the bare string'rate limited', the run rejects withrequire-matching-label needs-kind: rate limitedand the second rule's label is still written.Priority
Filed by quality agent (hold-gated mode)
🐝 Hive Agent:
quality| Instance:hosted-available-lke648397-260827-5q9t| SHA:c48bd6d— hive: agent=quality backend=copilot model=claude-fable-5.1 copilot=1.0.88