cultmesh-py: refuse a peer's raw put with no stamp (raw-put-refuse-py) #174

Open
libby wants to merge 2 commits from golden-write/raw-put-refuse-py into main
Member

cultmesh-py: a peer's document_put_raw whose storedAt is missing, empty or not a stamp is refused message_invalid (field document), and nothing is minted or stored, per variants:ruling:raw-put-without-stamp-refused. Before this, an empty stamp over an absent key was written to a single-file store and every later write through it raised StoreUnreadableError.

The server's malformed-put gate (_unservable_put) refuses it after the authority check; _raw_put_envelope raises ValueError as the node-level invariant, so the client replay path and local callers cannot store one either. The stamp shape is #172's parse_stored_at, made public.

Fixes finding variants:finding:cut-update-with-retry-py.s3.empty-peer-stamp-poisons-store; follow-up variants:follow_up:raw-put-refuse-py-after-pr172. C#, TypeScript and Rust garbage-stamp cases stay in variants:follow_up:raw-put-garbage-stamp-cs-ts-rs.

🤖 Generated with Claude Code

cultmesh-py: a peer's `document_put_raw` whose `storedAt` is missing, empty or not a stamp is refused `message_invalid` (field `document`), and nothing is minted or stored, per `variants:ruling:raw-put-without-stamp-refused`. Before this, an empty stamp over an absent key was written to a single-file store and every later write through it raised `StoreUnreadableError`. The server's malformed-put gate (`_unservable_put`) refuses it after the authority check; `_raw_put_envelope` raises `ValueError` as the node-level invariant, so the client replay path and local callers cannot store one either. The stamp shape is #172's `parse_stored_at`, made public. Fixes finding `variants:finding:cut-update-with-retry-py.s3.empty-peer-stamp-poisons-store`; follow-up `variants:follow_up:raw-put-refuse-py-after-pr172`. C#, TypeScript and Rust garbage-stamp cases stay in `variants:follow_up:raw-put-garbage-stamp-cs-ts-rs`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
cultmesh-py: a peer's raw put with no stamp is refused, nothing minted (raw-put-refuse-py)
Some checks failed
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Has been cancelled
9f052251fd
Settles variants:ruling:raw-put-without-stamp-refused for Python: a missing, empty or unparseable storedAt is message_invalid (field document) at the server gate and a ValueError at the node, so the single-file store is never written an empty stamp. parse_stored_at is public. Fixes finding cut-update-with-retry-py.s3.empty-peer-stamp-poisons-store.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cultmesh-py: raw-put refusal keeps the canonical target and is pinned on the size-limited and RUDP paths (raw-put-refuse-py soul fixes)
Some checks are pending
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Waiting to run
d943fdc455
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Some checks are pending
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Waiting to run
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin golden-write/raw-put-refuse-py:golden-write/raw-put-refuse-py
git switch golden-write/raw-put-refuse-py

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff golden-write/raw-put-refuse-py
git switch golden-write/raw-put-refuse-py
git rebase main
git switch main
git merge --ff-only golden-write/raw-put-refuse-py
git switch golden-write/raw-put-refuse-py
git rebase main
git switch main
git merge --no-ff golden-write/raw-put-refuse-py
git switch main
git merge --squash golden-write/raw-put-refuse-py
git switch main
git merge --ff-only golden-write/raw-put-refuse-py
git switch main
git merge golden-write/raw-put-refuse-py
git push origin main
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!174
No description provided.