Caching: Update reads version and copy from one durable store read (update-copy-from-stored-bytes) #170

Merged
libby merged 6 commits from golden-write/update-from-stored-bytes into main 2026-11-13 19:55:56 +00:00
Member

CultCache.Update reads its version and its apply input from one durable read of the record's home store (new internal CacheBackingStore.ReadDurable), never from the held instance, so an in-place mutation of a held object can no longer be persisted by Update. A store-less cache keeps the held copy. The per-loss pull is replaced by one pull before LostRace.

Spec variants:cut_spec:cut-update-from-stored-bytes.r1, report variants:cut_report:cut-update-from-stored-bytes.h1, follow-up variants:follow_up:update-copy-from-stored-bytes. Consumer-side test in GameCult.Caching.OutsideStoreTests.

🤖 Generated with Claude Code

CultCache.Update reads its version and its apply input from one durable read of the record's home store (new internal CacheBackingStore.ReadDurable), never from the held instance, so an in-place mutation of a held object can no longer be persisted by Update. A store-less cache keeps the held copy. The per-loss pull is replaced by one pull before LostRace. Spec `variants:cut_spec:cut-update-from-stored-bytes.r1`, report `variants:cut_report:cut-update-from-stored-bytes.h1`, follow-up `variants:follow_up:update-copy-from-stored-bytes`. Consumer-side test in GameCult.Caching.OutsideStoreTests. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Add CacheBackingStore.ReadDurable (single-file and directory stores), factor the
directory pull's lease/retry load into LoadManifestPages, and make a store-backed
Update take apply's argument and the Expected version from that read, with the load's
deterministic element ids. The per-loss pull moves to the LostRace branch; a
store-less cache keeps the held copy and its codec refusal.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Caching tests: pin the variant refusal message and ReadDurable leaving the store view alone; start TwoWriters rounds together
Some checks failed
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Failing after 20m27s
d3edf80ed3
The directory race test no longer collided once each attempt reads fresh, so each round
now starts both writers at a barrier.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Caching: Update reads every candidate home of T for its version and copy, refuses a two-store key and a cross-home move; pin the unpinned rules
Some checks failed
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Has been cancelled
739a2e552f
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
ci: rerun the portability job (runs 887 and 847 ended failed and cancelled with no log)
Some checks failed
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Has been cancelled
f3a5c4998b
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Caching: CandidateHomes and Home each carry their own comment (variants:finding:cut-update-from-stored-bytes.s2.candidatehomes-comment-misplaced)
Some checks failed
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Has been cancelled
51368402ac
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
ci: rerun after the runner cap cancelled run 895 at 30:02
All checks were successful
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Successful in 23m2s
c0a5a6fb04
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
libby merged commit 50f919c75b into main 2026-11-13 19:55:56 +00:00
libby deleted branch golden-write/update-from-stored-bytes 2026-11-13 19:55:56 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/CultLib!170
No description provided.