Rust: a payload is one MessagePack value (bytes-after-rs) #131

Merged
libby merged 6 commits from hands/bytes-after-rs into main 2026-11-12 05:43:56 +00:00
Member

cultlib-gaps:follow_up:bytes-after-leaves, spec cultlib-gaps:cut_spec:cut-bytes-after-rs.r1, ruling trailing-bytes-refuse: cultcache-rs refuses a record payload with bytes after its first MessagePack value, by count, naming type and key, never echoing the tail, through one owner check_record_payload (depth first, then one value). Single-file, redb and load_soa run it at load for every record (as C# and Python refuse at open), and so does every raw-envelope/batch put. Vectors: bytes-after-outcomes.msgpack (4 rows) walked.

Moved with it, stated: depth is now refused at load too (a store holding a past-bound payload no longer loads), and a cache whose last pull was refused refuses every write and removal (CultCacheLoadRefused, one require_loaded gate) until a pull succeeds. Before, a refused pull left an empty writable cache and the next put_prepared_batch replaced the store; this closes that for the duplicate-index and retype refusals too. Open Low: a never-pulled cache still has that hole (follow-up cache-must-pull-before-write).

Semver: Unreleased/Breaking in the cultcache-rs CHANGELOG; implies a minor bump while 0.x (0.3.1 to 0.4.0), cultnet-rs 0.3.0 to 0.4.0.

Soul: verdicts cut-bytes-after-rs.s1 to .s3 (s1 load forked on index; s2 refused-load batch wiped the store; s3 holds). Reports h1 to h3. Full cultcache-rs, cultnet-rs, cultmesh-rs suites pass (914 tests). Expect a rebase on #127 (slot-readonly-rs) at decode_payload and the changelog head.

🤖 Generated with Claude Code

`cultlib-gaps:follow_up:bytes-after-leaves`, spec `cultlib-gaps:cut_spec:cut-bytes-after-rs.r1`, ruling `trailing-bytes-refuse`: cultcache-rs refuses a record payload with bytes after its first MessagePack value, by count, naming type and key, never echoing the tail, through one owner `check_record_payload` (depth first, then one value). Single-file, redb and `load_soa` run it at load for every record (as C# and Python refuse at open), and so does every raw-envelope/batch put. Vectors: `bytes-after-outcomes.msgpack` (4 rows) walked. Moved with it, stated: depth is now refused at load too (a store holding a past-bound payload no longer loads), and a cache whose last pull was refused refuses every write and removal (`CultCacheLoadRefused`, one `require_loaded` gate) until a pull succeeds. Before, a refused pull left an empty writable cache and the next `put_prepared_batch` replaced the store; this closes that for the duplicate-index and retype refusals too. Open Low: a never-pulled cache still has that hole (follow-up `cache-must-pull-before-write`). Semver: Unreleased/Breaking in the cultcache-rs CHANGELOG; implies a minor bump while 0.x (0.3.1 to 0.4.0), cultnet-rs 0.3.0 to 0.4.0. Soul: verdicts `cut-bytes-after-rs.s1` to `.s3` (s1 load forked on index; s2 refused-load batch wiped the store; s3 holds). Reports h1 to h3. Full cultcache-rs, cultnet-rs, cultmesh-rs suites pass (914 tests). Expect a rebase on #127 (slot-readonly-rs) at `decode_payload` and the changelog head. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
One private payload check (depth, then one value) behind decode_payload and
raw-envelope/batch admission; refuses a tail by count, never walks or quotes it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Single-file, redb and load_soa refuse a tail at load through check_record_payload,
indexed or not; depth beats a tail is pinned; the dead end guard is gone.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A cache whose load was refused refuses every write and removal; depth pinned at load; map names the live owner
Some checks failed
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Has been cancelled
bcc3052aa0
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Merge origin/main (09b825d6, slot-readonly-rs) into hands/bytes-after-rs
All checks were successful
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Successful in 20m27s
acad89c713
Both sides kept: the payload check (depth, one value) runs before the mark scope opens
and before the held read-only check; the load gate covers slot-held stores.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
libby merged commit 363a8d6fe5 into main 2026-11-12 05:43: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!131
No description provided.