Skip to content

The correctness release (v0.3.0): every review finding reproduced, then closed - #21

Merged
flyingrobots merged 1 commit into
mainfrom
fix/correctness
Sep 16, 2026
Merged

flyingrobots merged 1 commit into
mainfrom
fix/correctness

Conversation

@flyingrobots

Copy link
Copy Markdown
Member

Closes #13. Merging tags v0.3.0.

Reproduced as failing tests first, then fixed: fail-open reads, self-contradicting transactions, family membership outside the conflict boundary, release by name instead of by acquisition, JSON broken by diagnostics. Plus: JSON Lines only (--text removed), record on claims and slots with release --record, a test-only pause gate that forces the child-under-release interleaving, lexical path normalisation, a harness guard against the real HOME and make test-docker. README's "The contract" section answers the review's three questions. 272 checks.

…d then closed

An outside review of 0.2.1 found five defects under the guarantees; each
was reproduced as a failing test first, then fixed:

- a failed store read was reported as free: reads now fail closed with a
  store-read error (exit 2); sem acquire --wait refreshes per attempt
- transactions contradicted themselves: every write compiles into one
  transition per ref (create, update from an expected old value, delete with
  an expected old value, verify) before git sees it
- family membership was outside the conflict boundary: a child admission
  bumps a family generation on the parent's record and moves the parent's
  refs, so a stale release or sweep fails and re-plans; a batch child under
  a same-batch parent must share the holder; claim-time eviction of an
  expired parent terminates the family like release and sweep do
- release by job name could release someone else's later acquisition: claim
  lines carry the record id, release --record and with release only that
  acquisition
- a git diagnostic inside a refusal could break the JSON: escaping covers
  every control character; errors and usage are objects too

Also, on James's instruction: JSON Lines everywhere, --text removed; a
pause-before-commit gate for deterministic interleaving tests; lexical path
normalisation; the harness refuses to run under the real HOME and gains a
Docker target. README carries the contract as answers to the review's three
questions. 272 checks. Closes #13.
@coderabbitai

coderabbitai Bot commented Sep 16, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 19 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 141389f7-e538-428d-8107-fcc024dc5aa0

📥 Commits

Reviewing files that changed from the base of the PR and between 910dcd2 and a2de844.

📒 Files selected for processing (6)
  • CHANGELOG.md
  • Makefile
  • README.md
  • bin/git-locks
  • schema/git-locks.schema.json
  • test/test.sh

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@flyingrobots
flyingrobots merged commit e3706f2 into main Sep 16, 2026
3 checks passed
@flyingrobots
flyingrobots deleted the fix/correctness branch September 16, 2026 02:44
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.

json_str escapes only backslash, quote, tab and CR; other control characters produce invalid JSON

1 participant