Python: a payload is one MessagePack value (bytes-after-py) #129

Merged
libby merged 6 commits from hands/bytes-after-py into main 2026-11-12 05:23:25 +00:00
Member

cultlib-gaps:follow_up:bytes-after-leaves, spec cultlib-gaps:cut_spec:cut-bytes-after-py.r1, ruling trailing-bytes-refuse: cultcache-py refuses a record payload with bytes after its first MessagePack value, by count, naming the type, never echoing the tail; the depth refusal wins over the tail (as in C#) through one owner read_payload_tree, which the witness bundle decode also uses. Vectors: bytes-after-outcomes.msgpack (4 rows) walked.

Semver: cultcache-py manifest to 0.4.0 in this change; cultnet-py and cultmesh-py pins raised to cultcache-py>=0.4.0; a ported dependency-range test (packages/cultnet-py/tests/test_declared_dependency_ranges.py) pins the pairing. Unreleased/Breaking entries in the changelogs.

Soul: verdicts cut-bytes-after-py.s1 to .s3 (s1 depth-vs-tail ordering, s2 reader-less pin; s3 holds). Open Lows: range test skips in CI (shallow checkout, no tags), shard-log replay silently skips a stamp-routed unknown schema with a tail, an inert ExtraData branch in schema inference; follow-up store-push-raw-tail-py. cultcache-py 231, cultnet-py 173, cultmesh-py 149 passed.

🤖 Generated with Claude Code

`cultlib-gaps:follow_up:bytes-after-leaves`, spec `cultlib-gaps:cut_spec:cut-bytes-after-py.r1`, ruling `trailing-bytes-refuse`: cultcache-py refuses a record payload with bytes after its first MessagePack value, by count, naming the type, never echoing the tail; the depth refusal wins over the tail (as in C#) through one owner `read_payload_tree`, which the witness bundle decode also uses. Vectors: `bytes-after-outcomes.msgpack` (4 rows) walked. Semver: cultcache-py manifest to 0.4.0 in this change; cultnet-py and cultmesh-py pins raised to `cultcache-py>=0.4.0`; a ported dependency-range test (`packages/cultnet-py/tests/test_declared_dependency_ranges.py`) pins the pairing. Unreleased/Breaking entries in the changelogs. Soul: verdicts `cut-bytes-after-py.s1` to `.s3` (s1 depth-vs-tail ordering, s2 reader-less pin; s3 holds). Open Lows: range test skips in CI (shallow checkout, no tags), shard-log replay silently skips a stamp-routed unknown schema with a tail, an inert `ExtraData` branch in schema inference; follow-up `store-push-raw-tail-py`. cultcache-py 231, cultnet-py 173, cultmesh-py 149 passed. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
DocumentDefinition.decode_payload turns msgpack.ExtraData into the shared bytes-after refusal, by count.

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>
Pin cultcache-py>=0.4.0 where read_payload_tree and index_text are imported; a tail gives routing no hint
All checks were successful
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Successful in 19m52s
c1895d3b75
cultcache-py is 0.4.0 in this change so the workspace install resolves the bound.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
libby merged commit 13ce5ea50a into main 2026-11-12 05:23:25 +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!129
No description provided.