From b549d73183aa36c6ebb8163ebc68cad60b09c85d Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 20 Oct 2026 17:31:05 +0200 Subject: [PATCH] cultcache-ts CHANGELOG: scope the C# claim to what the code does Fixes variants:finding:cut-ts-store-write.s2.changelog-csharp-any-write-overclaim: a C# conditional commit on a clean store lands onto the current file; other C# writes can still overwrite concurrent TypeScript records. Co-Authored-By: Claude Opus 5.5 --- packages/cultcache-ts/CHANGELOG.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/cultcache-ts/CHANGELOG.md b/packages/cultcache-ts/CHANGELOG.md index f603f6f3..5c7a1561 100644 --- a/packages/cultcache-ts/CHANGELOG.md +++ b/packages/cultcache-ts/CHANGELOG.md @@ -10,8 +10,9 @@ All notable changes to `@gamecult/cultcache-ts` are recorded here, following interoperable with the C# and Rust runtimes (`flock` on Unix, `LockFileEx` on Windows). `push` and `delete` read the current file, merge and replace it under the lock, so concurrent TypeScript and Rust writers no longer lose each other's records across those calls. A full - `pushAll` still replaces the whole store, and so does any C# write, so records a concurrent - writer added are still lost to either of them. + `pushAll` still replaces the whole store, so records a concurrent writer added are lost to it. + C# writes are not all alike: a conditional commit on a clean store lands onto the file as it + is, but C# writers can still overwrite records a concurrent TypeScript writer added. - The staged file is fsynced before the replace, and on Unix the directory after it. A directory sync failure after the replace is reported as replaced but not durable.