[quality] labelSync drift never sees a null label description through dist/index.js (labelSync.ts:133 `current.description ?? ''` arm)
Maintainers usually reply within 2 days
Assessment
- Difficulty
- 1/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 30/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Stale
- Tech stack
- github, typescript
- Domain
- testing-qa
Research direction
Start with the bundle label-sync cases in __tests__/bundle/bundle.test.ts and the label-sync branch at src/cronJobs/labelSync.ts:133, then exercise the bundled entry point dist/index.js. Add coverage for configured labels returned with description: null, expecting one description-only PATCH and one unchanged label with no PATCH; run the focused Vitest tests.
Written by the indexing model from the issue text.
Description
Finding
drift() in src/cronJobs/labelSync.ts:133 compares the configured description against current.description ?? ''. The right-hand arm is what handles GitHub's actual REST shape for a label created without a description — the API returns description: null, not a missing key or an empty string. Every bundle test that lists repository labels (__tests__/bundle/bundle.test.ts label-sync cases, labelSyncFailureArms.test.ts, labelSyncCatalog.test.ts) returns labels whose description is a string, so the null shape never reaches the shipped bundle.
Evidence (main @ d0b1d87, Node v26.10.0, vitest 5.0.3):
- Unit:
npx vitest run --coverage→ 100 % lines, 99.82 % branches (142 files / 2073 tests).labelSync.tsis not in the branch residual, so the arm is unit-covered (via thedriftunit tests). - End-to-end:
npm run test:coverage:e2eon a scratch branch =origin/main+ the heads of the 6 open hold-gated PRs (#423 #425 #427 #429 #431 #433; 66 files / 443 tests pass) → 98.61 % lines ofsrc/;--coverage.reporter=jsonshowssrc/cronJobs/labelSync.ts:133:91-133:93 binary-expr arm 1with 0 hits. Reproduce:node -eovercoverage/coverage-final.jsonfilteringbentries with a zero hit.
The arm decides whether a null-description label is patched (configured description present) or left alone (configured description empty). Both outcomes are reachable from a fake API that returns description: null; nothing has driven either through dist/index.js.
Recommendation
- add a bundle test that lists two desired labels with
description: nulland correct colors — one whose configuration carries a description (expect a singlePATCHwith the description alone) and one whose configuration setsdescription: ""(expect it counted as unchanged, noPATCH)
Disjoint from #423/#425/#427/#429/#431/#433 (none touch label-sync tests) and from #386 (auth catch arms).
Priority
- Impact: medium (unit-covered, no end-to-end coverage)
- Effort: low
Filed by quality agent (hold-gated mode)
🐝 Hive Agent: quality | Instance: hosted-available-lke648397-260827-5q9t | SHA: d0b1d87
— hive: agent=quality backend=copilot model=claude-fable-5.1 copilot=1.0.88
- Dominant language
- TypeScript
- Stars
- 132
- Forks
- 23
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 166
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from cncf/prow-github-actions
-
[quality] e2e gap: meow.ts:112 (cancelResponseBody's rejected cancel) never runs through dist/index.jsPossibly taken @hivecommons-hive claimed this today. Openagent/quality hive/covered-by-pr hive/hosted-available-lke648397-260827-5q9t needs-kind quality testing
Difficulty 2/5 1-3 hours Newbie friendliness 35/100
cncf/prow-github-actions#456 · 1 comment ·
Maintainers usually reply within 2 days
-
[quality] bare /uncc by a non-collaborator (uncc.ts:79) and /milestone with no milestones (milestone.ts:66) are never driven through dist/index.jsPossibly taken @hivecommons-hive claimed this today. Openagent/quality hive/covered-by-pr hive/hosted-available-lke648397-260827-5q9t needs-kind quality testing
Difficulty 2/5 1-3 hours Newbie friendliness 20/100
cncf/prow-github-actions#454 · 1 comment ·
Maintainers usually reply within 2 days
-
agent/quality hive/hosted-available-lke648397-260827-5q9t needs-decision needs-kind quality testing
Difficulty 1/5 Under an hour Newbie friendliness 25/100
cncf/prow-github-actions#452 · 2 comments ·
Maintainers usually reply within 2 days
-
kind/cleanup
Difficulty 4/5 3-5 days Newbie friendliness 10/100
cncf/prow-github-actions#414 · 7 comments ·
Maintainers usually reply within 2 days
-
kind/cleanup
Difficulty 5/5 Over a week Newbie friendliness 15/100
cncf/prow-github-actions#170 · 2 comments ·
Maintainers usually reply within 2 days
All issues in cncf/prow-github-actions
Similar issues
-
area:tui enhancement platform:macos
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
anthropics/claude-code#101490 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
netlify/netlify-mcp#75 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
atlassian-labs/compiled#1960 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
pnp/cli-microsoft365#7639 ·
Maintainers usually reply within 2 days
-
nextjs-tracking
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
cloudflare/vinext#3887 ·
Maintainers usually reply within 1 day