Repository navigation
test(prefixed): pin /stage and /status exclusive replacement, two-value /remove-lifecycle, mixed-case allowlist values and the first protected offender - #539
Conversation
…ue /remove-lifecycle, mixed-case allowlist values and the first protected offender Six single-operator mutants of src/labels/prefixed.ts survived the full related suite: the /stage and /status registry entries with exclusive flipped off, .some -> .every in the /remove-<cmd> present filter, the allowlist key fold at requestedLabels, sameLabel's requested-side fold and find -> findLast on the protected-label offender. Each new case fails exactly the mutant it is named for. Closes #538 Signed-off-by: quality <280983584+hivecommons-hive[bot]@users.noreply.github.com>
|
Important Held for human review by the hive's ACMM level gate. This PR was opened by the "quality" agent while Hive policy required a human checkpoint for that agent. Agent PRs are held at ACMM L3–L5; an Hive will keep the |
|
Please add a kind label with |
mrbobbytables
left a comment
There was a problem hiding this comment.
Copilot review performed under the maintainer's explicit authorization to update, review, release reviewed holds, and merge eligible PRs in this cleanup.
The cases assert exclusive stage/status replacement, multi-label removal, both sides of configured-value casing, and the first protected-label refusal without a label write.
Verified successful build-test, e2e-coverage and DCO results on head 54d5849. Any folded issue findings remain assigned to the canonical destinations in the updated scope tables.
Test Improvement
src/labels/prefixed.tsis 100 % covered by both suites, but six single-operator mutants survivednpx vitest related src/labels/prefixed.ts --run(722 tests) onmain@ 88241f4. This pins each one; nosrc/ordist/change.__tests__/label/lifecycle.test.ts(built-in/lifecycle,/stage,/status):it.each:/stage betaoverstage/alphaand/status in-reviewoverstatus/in-progress→['DELETE <stale>', 'POST <label>']— killsexclusive: true → falseon the/stage(line 32) and/status(line 33) registry entries; only/lifecycleand/priorityhad a replacement case/remove-lifecycle stale frozenwith both on the issue → twoDELETEs — kills.some → .everyin thepresentfilter (line 136); every other/remove-*case names one valuewith a mixed-case yaml value(lifecycle:\n - Frozen\n):/lifecycle frozen→POST lifecycle/Frozen— kills the droppedvalue.toLowerCase()key inrequestedLabels' canonical map (line 239)lifecycle/frozenalready present →POSTonly, nothing deleted — killssameLabel'sa === b.toLowerCase()(line 266) on the exclusive stale filter/remove-lifecycle frozenoverlifecycle/frozen→DELETE lifecycle%2Ffrozen— kills the same mutant on the removal path__tests__/label/label.test.ts›protected labels:/label hold lgtmis refused naminghold— killsfind → findLaston the protected-label offender (line 255)Files:
__tests__/label/lifecycle.test.ts,__tests__/label/label.test.ts. Disjoint from every open hold PR #510–#537: none touches either file orsrc/labels/prefixed.ts(#512 edits__tests__/label/remove.test.tsonly).Verification (this branch, local)
npx vitest run __tests__/label/lifecycle.test.ts __tests__/label/label.test.ts: 54 passed (47 before)src/labels/prefixed.tsagainst those two files: every one now fails, and only the test(s) named above fail for itnpm run test:coverage: 163 files / 2213 passed, 100 / 99.75 / 100 / 100 (unchanged floor; the four remaining branch records are the docs(contributing): record the four negative-count BRDA branches as a v8 await artifact, not a gap #511 artifacts)npx eslinton both files: cleanRelated Issue
Closes #538
Filed by quality agent (hold-gated mode). Human review required.
— hive: agent=quality backend=copilot model=claude-fable-5.1 copilot=1.0.88