Fix CI Matrix and Broken Tests
CI has been red for 50+ consecutive runs. Three tests in `work.test.ts` have never passed in CI since they were added (May 13-14). Windows runners intermittently timeout on top of that. The entire user base runs on macOS/Linux (Claude Code doesn't run natively on Windows), and the CLI has zero OS-specific code paths. We're burning billable minutes and developer attention on platforms that don't serve our users, and the constant red masks real regressions.
verdict PASSscore 20 / 20findings 6 (0 risk · 2 debt · 4 obs)duration 1h 44mrejection cycles 0shipped May 15, 2026surface cli
Pipeline timeline
Intent to proven code in 1h 44m across Think, Plan, Build, and Verify.
Think19m
Plan19m
Build53m
Verify5m
Assertion ledger
20 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | Claude PID resolution returns a valid process ID when the process tree is available | verified | ok |
| A002 | Claude PID resolution returns null when the ps command fails | verified | ok |
| A003 | Claude PID resolution returns null when ps returns an invalid number | verified | ok |
| A004 | A rebase conflict during pull causes the process to exit with failure | verified | ok |
| A005 | The conflict error message tells the user what went wrong | verified | ok |
| A006 | The conflict error message tells the user how to recover | verified | ok |
| A007 | CI runs on Ubuntu only, not Windows or macOS | verified | ok |
| A008 | CI runs on Ubuntu only, not Windows or macOS | verified | ok |
Findings 6 total
debtpackages/cli/tests/commands/work-ci-mocked.test.ts→ accept
Broad mock intercept matches any git command with 'pull' in args, not specifically 'git pull --rebase'
debtpackages/cli/tests/commands/work-ci-mocked.test.ts→ monitor
createMergedProject duplicated between work-ci-mocked.test.ts and work.test.ts — both have independent copies with different mock routing
obs→ closed
Stale finding 'Conditional PID guard makes 8 tests potential no-ops' resolved by this build — getClaudePid tests now use deterministic mocks
obs→ closed
Stale finding 'Conflict test creates bareDir and cloneDir as siblings of tempDir' resolved by this build — mocked version creates no temp directories outside tempDir
obs→ closed
Stale finding 'staging branch in trigger list is a no-op' resolved by this build — staging removed from test.yml
+1more findings
Integrity seal
scopesha256:2e5077a957ac0...
contractsha256:cbf34eb02b669...
plansha256:3a211a891abbb...
specsha256:ec34d0621c292...
build-reportsha256:83ec572b5a02e...
build-datasha256:d0c5534922720...
verify-reportsha256:077ff45e76b9e...
verify-datasha256:93cecb194f168...
audit cmd$ ana proof audit fix-ci-matrix-and-broken-tests → all hashes match