Unblock auto-release on handled duplicate-import dogfood errors
Merged
UN
4mo ago+85+85+01234567890123456789-1-1-0123456789
Outcome
Unblocks the 2026-07-10 daily Auto Release without weakening Sentry reliability enforcement. The package import dogfood intentionally exercises merge-strategy=fail twice; its handled, pre-write duplicate refusal is now classified as expected, while an isUnhandled=true twin with identical text remains blocking.
Changes
- add a narrow handled
CommandErrorclassifier for duplicate-import refusals - add a TDD regression proving handled and unhandled twins are partitioned correctly
- record the incident as
pm-io4twith full files, test, result, live-ops, dependency, note, and learning evidence - regenerate
CHANGELOG.mdwith latestpm-changelog2026.7.8
Verification
- pre-push Greptile review: confidence 5/5, no findings
- focused regression: 49/49 passing
- full repository coverage: 270 files, 5,506 tests
- statements: 100% (34,380/34,380)
- branches: 100% (24,588/24,588)
- functions: 100% (6,882/6,882)
- lines: 100% (33,039/33,039)
- typecheck and contract snapshot: pass
- ESLint, jscpd (0 clones), static quality/docstring gate, token budget: pass
- docs/skills and changelog checks: pass
- secret scan and production dependency audit: pass / no known vulnerabilities
- live Sentry gate with production token: critical=0, high=0;
PM-CLI-1Xexpected-handled - live telemetry gate: 0.25% finish error rate, 0 missing error-code rows
- telemetry inline flush: queue drained to zero on disk
Incident lineage
- failed scheduled run: https://github.com/unbraind/pm-cli/actions/runs/29073827938
- blocker issue: #492
- current tracker item:
pm-io4t - historical classifier precedent:
pm-yohx
Summary by cubic
Unblocks the 2026-07-10 auto-release by teaching the Sentry gate to treat the intentional, handled duplicate-import error from the package dogfood as expected. Unhandled errors with the same message remain blocking.
- Bug Fixes
- Classify handled
CommandErrorfor duplicate-import (merge-strategy "fail": bead ...) as expected inscripts/release/sentry-telemetry-gate.mjs. - Add regression test that ignores the handled event while still blocking the unhandled twin.
- Update
CHANGELOG.mdwithpm-changelog2026.7.8 and record incidentpm-io4t.
- Classify handled