TypeScript: a payload is one MessagePack value (bytes-after-ts) #130

Merged
libby merged 6 commits from hands/bytes-after-ts into main 2026-11-12 06:02:51 +00:00
Member

cultlib-gaps:follow_up:bytes-after-leaves, spec cultlib-gaps:cut_spec:cut-bytes-after-ts.r1, ruling trailing-bytes-refuse: cultcache-ts refuses a record payload with bytes after its first MessagePack value, by count, naming the type, never walking or echoing the tail, through one owner (checkPayloadIsOneValue, shared by decodeDocumentPayload and the inspector); depth refusal wins at depth > 256. Store load, putEnvelope, CultNet replication apply, the provider command and the CDN manifest all refuse a tail. Vectors: bytes-after-outcomes.msgpack (4 rows) walked.

Stated limit: a definition with its own formatter is not walked, so a tail there is accepted (depth works the same way).

Semver: Unreleased/Changed in the cultcache-ts CHANGELOG; implies a minor bump while 0.x (0.16.0).

Soul: verdicts cut-bytes-after-ts.s1 (holds, four Lows, all closed in h2) and .s2. cultcache-ts: same 12 failures as main in this sandbox (esbuild bundle + interop needing cargo/dotnet); cultnet-ts 1 (esbuild); cultmesh-ts 0.

🤖 Generated with Claude Code

`cultlib-gaps:follow_up:bytes-after-leaves`, spec `cultlib-gaps:cut_spec:cut-bytes-after-ts.r1`, ruling `trailing-bytes-refuse`: cultcache-ts refuses a record payload with bytes after its first MessagePack value, by count, naming the type, never walking or echoing the tail, through one owner (`checkPayloadIsOneValue`, shared by `decodeDocumentPayload` and the inspector); depth refusal wins at depth > 256. Store load, `putEnvelope`, CultNet replication apply, the provider command and the CDN manifest all refuse a tail. Vectors: `bytes-after-outcomes.msgpack` (4 rows) walked. Stated limit: a definition with its own `formatter` is not walked, so a tail there is accepted (depth works the same way). Semver: Unreleased/Changed in the cultcache-ts CHANGELOG; implies a minor bump while 0.x (0.16.0). Soul: verdicts `cut-bytes-after-ts.s1` (holds, four Lows, all closed in h2) and `.s2`. cultcache-ts: same 12 failures as main in this sandbox (esbuild bundle + interop needing cargo/dotnet); cultnet-ts 1 (esbuild); cultmesh-ts 0. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
decodeDocumentPayload refuses bytes after the first value by count, from the
checkPayloadDepth walk's end, with the shared clause; readWire's own trailing
check is deleted. Walks bytes-after-outcomes.msgpack on the plain, codec, store
and putEnvelope paths.

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>
Changelog: the one-value check is internal, not new API
Some checks failed
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Has been cancelled
8c36ce4771
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The one-value check runs before decodeMarked, so a tail or deep payload is refused before any slot is marked.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Pin: a tail on a payload with unread slots is refused before any slot is marked or the record held
All checks were successful
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Successful in 18m51s
34d85b2b59
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
libby merged commit 66bea107d5 into main 2026-11-12 06:02:51 +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!130
No description provided.