Commit timestamps written by work start
`ana work start` writes timestamps to `.saves.json` on the artifact branch without committing, creating dirty tracked state that blocks `git pull --rebase` for concurrent pipeline work. The user wants this fixed — it caused a confirmed failure during concurrent work on 2026-05-07 and is a recurring friction source. Secondary: comments and messages in the affected files say "main" when they mean "artifact branch," which is misleading for customers using a different artifact branch name.
verdict PASSscore 14 / 14findings 5 (0 risk · 1 debt · 4 obs)duration 2h 17mrejection cycles 0shipped May 9, 2026surface cli
Pipeline timeline
Intent to proven code in 2h 17m across Think, Plan, Build, and Verify.
Think38m
Plan4m
Build6m
Verify5m
Assertion ledger
14 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | Starting a new work item commits the timestamp to the artifact branch | verified | ok |
| A002 | The start-work commit message identifies the slug | verified | ok |
| A003 | The start-work commit includes the co-author trailer | verified | ok |
| A004 | Starting a plan phase commits the timestamp to the artifact branch | verified | ok |
| A005 | The plan-phase commit message identifies the phase | verified | ok |
| A006 | The plan-phase commit includes the co-author trailer | verified | ok |
| A007 | Repeating work start for the same phase does not create an empty commit | verified | ok |
| A008 | Repeating work start for the same phase does not error | verified | ok |
Findings 5 total
debtpackages/cli/tests/commands/work.test.ts→ scope
A010 test creates untracked file after commit — doesn't test scoped staging during commit
obspackages/cli/src/commands/work.ts→ closed
commitSaves silently swallows commit failures — index.lock or other git errors invisible to user
obspackages/cli/tests/commands/work.test.ts→ closed
A011 no-push test relies on absence of remote as indirect proof — no spy or mock verifying git push not called
obspackages/cli/src/commands/work.ts→ closed
commitSaves mixes runGit (throws) and spawnSync (returns status) for git operations — works correctly but inconsistent API usage
obs→ closed
Race condition in writeTimestamp still present — read-modify-write on .saves.json is not atomic (pre-existing, from Fix Pipeline Phase Timing)
Integrity seal
scopesha256:5ea1b779fa680...
contractsha256:586072a4fe4a9...
plansha256:d4f06da5a769c...
specsha256:6b72ea8141b56...
build-reportsha256:bc82a09605ab5...
build-datasha256:bdfbaade08eef...
verify-reportsha256:ff824ac36f46a...
verify-datasha256:5f7479454c187...
audit cmd$ ana proof audit commit-work-start-timestamps → all hashes match