Skip to content

Fix project sync completion lock race - #26

Merged
Hydralerne merged 1 commit into
mainfrom
fix/project-sync-completion-lock
Oct 2, 2026
Merged

Hydralerne merged 1 commit into
mainfrom
fix/project-sync-completion-lock

Conversation

@Hydralerne

Copy link
Copy Markdown
Member

What & why

The v0.1.37 release gate failed because a sync conflict became visible before its deferred project-lock release. A client could see a finished operation and still be blocked from using the project.

Publish terminal operation results and release their reservations in one SQLite transaction. Keep import reservations until the final result is published, and retain protection if a recovery journal cannot be read. Remove the separate deferred unlock paths.

Regression coverage checks status/lock agreement, rollback when either database write fails, isolation from other reservations, and restart recovery without replaying already committed files.

Component

  • daemon (Go)

Type of change

  • Bug fix

Checklist

  • Read CONTRIBUTING.md.
  • Daemon formatting, vet, build, and vulnerability check pass.
  • Full local race suite passes: go test -race ./... -skip '^TestLiveClaude$'. The excluded test would use this Mac's authenticated Claude account for a live model request; CI skips it when unauthenticated.
  • The original failing conflict test passes 100 consecutive runs under -race.
  • SDK typecheck, build, and unit tests pass (176 passed, 19 opt-in tests skipped).
  • Added regression tests.

No public API or documentation changes are required.

@Hydralerne
Hydralerne marked this pull request as ready for review October 2, 2026 09:53
@Hydralerne
Hydralerne merged commit 5fdf2c6 into main Oct 2, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant