Skip to content

fix(store): publish lock ownership atomically - #88

Merged
trvon merged 5 commits into
masterfrom
fix/lock-publication-authority
Sep 5, 2026
Merged

fix(store): publish lock ownership atomically#88
trvon merged 5 commits into
masterfrom
fix/lock-publication-authority

Conversation

@trvon

@trvon trvon commented Sep 5, 2026

Copy link
Copy Markdown
Owner

Summary

  • publish complete lock ownership atomically
  • prevent empty lock files from being stolen during initialization
  • add deterministic persistence race coverage

Validation

  • focused persistence suite: 110 tests passed
  • full branch suite: 905 tests passed

Stack

1 of 6. Merge before the execution-identity authority PR.

Copilot AI lite review requested due to automatic review settings September 5, 2026 01:41

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The new stale-lock cleanup can delete malformed-but-non-empty lock contents, which can allow a live lock to be stolen under partial/truncated content scenarios.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR hardens ReducerBackedStore’s file lock protocol so that lock ownership is published atomically (preventing a second writer from “stealing” an empty lock inode during initialization), and adds a deterministic regression test to cover the persistence race.

Changes:

  • Reworks lock acquisition to write an owner record to a candidate file and atomically “publish” it via linkSync, and updates unlock to verify ownership before removing the lock.
  • Updates lock parsing to accept both legacy pid and new pid:uuid formats.
  • Adds a deterministic test (AUD-10) ensuring an empty live lock can’t be replaced or entered by a second writer.
File summaries
File Description
src/reducer-backed-store.ts Implements atomic lock-owner publication via hard-linking and owner-verified unlock semantics.
test/reducer-backed-store.test.ts Adds deterministic coverage for the “empty live lock cannot be stolen” race scenario.
Review details
  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/reducer-backed-store.ts
@trvon
trvon merged commit 2a399cf into master Sep 5, 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.

2 participants