Fix Pipeline Phase Timing
Pipeline phase timing is structurally broken. Three bugs produce incorrect or missing timestamps for Plan and Verify phases. The user wants accurate phase duration measurements across all pipeline stages so proof chain entries reflect real session times, not artifact-gap estimates.
verdict PASSscore 17 / 17findings 6 (0 risk · 1 debt · 5 obs)duration 1h 2mrejection cycles 0shipped May 7, 2026surface cli
Pipeline timeline
Intent to proven code in 1h 2m across Think, Plan, Build, and Verify.
Think31m
Plan9m
Build13m
Verify10m
Assertion ledger
17 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | Starting work from inside a worktree during Verify phase records the verify session start time | verified | ok |
| A002 | Starting work from inside a worktree during Build phase records the build session start time | verified | ok |
| A003 | Starting work from main during Plan phase records the plan session start time | verified | ok |
| A004 | Plan duration uses the actual session start time when available | verified | ok |
| A005 | Plan duration falls back to artifact gap when no session start was recorded | verified | ok |
| A006 | Plan template tells the agent to record session start | verified | ok |
| A007 | Dogfood plan template tells the agent to record session start | verified | ok |
| A008 | Plan timing rejects session starts that happen after the contract is saved | verified | ok |
Findings 6 total
obspackages/cli/src/commands/work.ts→ closed
Early-return missing-worktree warning uses misleading message when inside worktree but plan dir absent
obspackages/cli/src/commands/work.ts→ closed
Early-return phase detection adds 3 globSync calls per work start from inside worktree — not cached
obspackages/cli/src/commands/work.ts→ closed
Race condition in writeTimestamp: read-modify-write on .saves.json is not atomic
debtpackages/cli/src/commands/work.ts→ closed
A003 has no dedicated tagged test — verified by source inspection only
obspackages/cli/tests/commands/work.test.ts→ closed
Fix-phase test (early-return) has no @ana tag — not linked to any contract assertion
+1more findings
Integrity seal
scopesha256:20b93884dc21a...
contractsha256:5ac86cd400896...
plansha256:a562ee48c8f4e...
specsha256:9fee4dc700893...
build-reportsha256:0294179940196...
build-datasha256:174d05019f6bc...
verify-reportsha256:71ad161bbfc10...
verify-datasha256:6ead88c3ee4a9...
audit cmd$ ana proof audit phase-timing-fix → all hashes match