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.

Think
19m
Plan
19m
Build
53m
Verify
5m

Assertion ledger

20 claims, each independently verified. Showing 8 — show all →

IDSaysMatcher
A001Claude PID resolution returns a valid process ID when the process tree is availableverifiedok
A002Claude PID resolution returns null when the ps command failsverifiedok
A003Claude PID resolution returns null when ps returns an invalid numberverifiedok
A004A rebase conflict during pull causes the process to exit with failureverifiedok
A005The conflict error message tells the user what went wrongverifiedok
A006The conflict error message tells the user how to recoververifiedok
A007CI runs on Ubuntu only, not Windows or macOSverifiedok
A008CI runs on Ubuntu only, not Windows or macOSverifiedok

Findings 6 total

debtpackages/cli/tests/commands/work-ci-mocked.test.tsaccept
Broad mock intercept matches any git command with 'pull' in args, not specifically 'git pull --rebase'
debtpackages/cli/tests/commands/work-ci-mocked.test.tsmonitor
createMergedProject duplicated between work-ci-mocked.test.ts and work.test.ts — both have independent copies with different mock routing
obsclosed
Stale finding 'Conditional PID guard makes 8 tests potential no-ops' resolved by this build — getClaudePid tests now use deterministic mocks
obsclosed
Stale finding 'Conflict test creates bareDir and cloneDir as siblings of tempDir' resolved by this build — mocked version creates no temp directories outside tempDir
obsclosed
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