cultmesh-rs: single and batch publish complete on the result frame, not the transport ack #57

Merged
libby merged 21 commits from libby/rs-client-ack-finding into main 2026-11-08 13:18:42 +00:00
Member

cultmesh-rs: publish_cultnet_message_to_rudp_catalog and publish_cultnet_messages_to_rudp_catalog are now one loop. A put completes on the catalog's result frame: a cultnet.error.v0 fails the call whether it arrives before the ack, after it, or inside the new result_window option (default 500 ms); a success frame ends the wait early. A catalog that admits a put sends no success frame, so the window is the interim bound (no server code). The batch no longer finishes on flush_reliable alone, so a refusal cannot be hidden. A failed batch does not say which message was refused (answers carry no message id).

Doc line 'fire-and-forget: an ack or a return is not admission; read the result frame' on send, send_reliable, flush_reliable (cultnet-rs rudp.rs) and the tcp_framed send.

Tests: ack-then-refusal, refusal-then-ack (single and batch), success frame completes without waiting out a 30 s window. Mutants killed: window check removed, success counting removed, refusal branch disabled.

🤖 Generated with Claude Code

cultmesh-rs: `publish_cultnet_message_to_rudp_catalog` and `publish_cultnet_messages_to_rudp_catalog` are now one loop. A put completes on the catalog's result frame: a `cultnet.error.v0` fails the call whether it arrives before the ack, after it, or inside the new `result_window` option (default 500 ms); a success frame ends the wait early. A catalog that admits a put sends no success frame, so the window is the interim bound (no server code). The batch no longer finishes on `flush_reliable` alone, so a refusal cannot be hidden. A failed batch does not say which message was refused (answers carry no message id). Doc line 'fire-and-forget: an ack or a return is not admission; read the result frame' on `send`, `send_reliable`, `flush_reliable` (cultnet-rs rudp.rs) and the tcp_framed `send`. Tests: ack-then-refusal, refusal-then-ack (single and batch), success frame completes without waiting out a 30 s window. Mutants killed: window check removed, success counting removed, refusal branch disabled. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
cultmesh-rs test (FAILS, findings): publish completes on the ack when the refusal follows it; the batch publish completes on the ack whatever the refusal
Some checks failed
CultMesh QUIC native / Build win32-x64 (pull_request) Has been skipped
CultMesh QUIC native / Build linux-x64 (pull_request) Has been skipped
CultMesh QUIC native / Release native binaries (pull_request) Has been skipped
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Failing after 7m32s
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Successful in 26s
9e734447f6
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
libby changed title from WIP: FINDING cultmesh-rs: publish completes on the ack when the refusal follows it; batch publish is ack-only to cultmesh-rs: single and batch publish complete on the result frame, not the transport ack 2026-11-08 13:18:41 +00:00
libby merged commit 1b3b625474 into main 2026-11-08 13:18:42 +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!57
No description provided.