Rust: a record with unread slots is held read-only (slot-readonly-rs) #127

Merged
libby merged 6 commits from hands/slot-readonly-rs into main 2026-11-12 04:44:04 +00:00
Member

cultlib-gaps:follow_up:bytes-after-land-and-slot-leaves, spec cultlib-gaps:cut_spec:cut-slot-readonly-rs.r1, rulings slot-mark-consent, slot-unmeasurable-type: cultcache-rs holds a record whose payload carries slots past its reader's declared slots, at any depth, read-only (every write, removal and load_soa replacement refused, store unchanged). Consent follows the union-parity README (Rust has no compatible ids, so every mark is unconsented). Vectors walked: extra-slot-store.cc (minus the variant row, unreadable here), extra-slot-consent.cc, slot-outcomes.msgpack (not grown; outcomes.msgpack still 9 rows). A held payload this build cannot decode is read-only too.

Divergences stated, not hidden: a mesh raw snapshot pull keeps documents applied before a refused one while C# applies one atomic commit (follow-up mesh-snapshot-atomic); a corrupt held record has no cache-level exit (follow-up read-only-corrupt-record-exit); a written payload carrying slots is judged at the next write.

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

Soul: verdicts cut-slot-readonly-rs.s1 (blocked on load_soa laundering a marked record), .s2 (no blockers), .s3. Reports h1 to h3. cultcache-rs, cultnet-rs, cultmesh-rs exit 0; 28 hand mutations killed.

🤖 Generated with Claude Code

`cultlib-gaps:follow_up:bytes-after-land-and-slot-leaves`, spec `cultlib-gaps:cut_spec:cut-slot-readonly-rs.r1`, rulings `slot-mark-consent`, `slot-unmeasurable-type`: cultcache-rs holds a record whose payload carries slots past its reader's declared slots, at any depth, read-only (every write, removal and `load_soa` replacement refused, store unchanged). Consent follows the union-parity README (Rust has no compatible ids, so every mark is unconsented). Vectors walked: `extra-slot-store.cc` (minus the variant row, unreadable here), `extra-slot-consent.cc`, `slot-outcomes.msgpack` (not grown; `outcomes.msgpack` still 9 rows). A held payload this build cannot decode is read-only too. Divergences stated, not hidden: a mesh raw snapshot pull keeps documents applied before a refused one while C# applies one atomic commit (follow-up `mesh-snapshot-atomic`); a corrupt held record has no cache-level exit (follow-up `read-only-corrupt-record-exit`); a written payload carrying slots is judged at the next write. Semver: Unreleased/Breaking in the cultcache-rs CHANGELOG; implies a minor bump while 0.x (0.3.1 to 0.4.0). Touches one line in cultnet-rs `replication.rs`. Soul: verdicts `cut-slot-readonly-rs.s1` (blocked on `load_soa` laundering a marked record), `.s2` (no blockers), `.s3`. Reports h1 to h3. cultcache-rs, cultnet-rs, cultmesh-rs exit 0; 28 hand mutations killed. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
The derives' slot visitors count the slots past the declared ones and note them into a scope the decode entry opens,
instead of skipping them silently; a unit arm with slots decodes and marks. Every write entry asks one check over the
held envelope, decoded under the mark, and refuses with SchemaConflictError.unread_slots before any store is touched.
Breaking for struct-literal construction of SchemaConflictError (0.3.x to 0.4.0).

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>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Name follow-up mesh-snapshot-atomic
All checks were successful
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Successful in 21m8s
fa5a872895
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
libby merged commit 09b825d689 into main 2026-11-12 04:44:04 +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!127
No description provided.