cultnet-ts: the Odin presence publisher completes on the result frame, not the ack #56

Merged
libby merged 4 commits from libby/ts-client-ack-finding-cultnet into main 2026-11-08 13:15:08 +00:00
Member

cultnet-ts: the Odin presence publisher (publishDocument) completes on Odin's result frame, not the transport ack. A cultnet.error.v0 rejects with IdunnPresenceRefusedError (carries code, response) whether it arrives before the ack, after it, or inside the result window. A success reply ends the wait early; with no server success frame the wait is bounded by a 500 ms result window (interim, no server code). peer.ts raw send primitives get the doc line: fire-and-forget, an ack or a return is not admission, read the result frame.

Tests: refusal piggybacked, ack-then-refusal, refusal-then-ack each reject typed. Mutants killed: result window collapsed to 1 ms; post-ack wait removed. Full run: only the pre-existing esbuild failure; the earlier parallel-run publisher failures were the stub's delayed send firing after socket close (fixed: timers cancelled on test end), 4 runs under 12 CPU burners and 4 full runs clean.

Caller audit: no production caller of this publisher; Idunn waitForWriteLease does not depend on Odin.

🤖 Generated with Claude Code

cultnet-ts: the Odin presence publisher (`publishDocument`) completes on Odin's result frame, not the transport ack. A `cultnet.error.v0` rejects with `IdunnPresenceRefusedError` (carries `code`, `response`) whether it arrives before the ack, after it, or inside the result window. A success reply ends the wait early; with no server success frame the wait is bounded by a 500 ms result window (interim, no server code). `peer.ts` raw send primitives get the doc line: fire-and-forget, an ack or a return is not admission, read the result frame. Tests: refusal piggybacked, ack-then-refusal, refusal-then-ack each reject typed. Mutants killed: result window collapsed to 1 ms; post-ack wait removed. Full run: only the pre-existing esbuild failure; the earlier parallel-run publisher failures were the stub's delayed send firing after socket close (fixed: timers cancelled on test end), 4 runs under 12 CPU burners and 4 full runs clean. Caller audit: no production caller of this publisher; Idunn `waitForWriteLease` does not depend on Odin. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
cultnet-ts test (FAILS, a finding): the Odin presence publisher completes on the ack when the refusal follows it
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) Has been cancelled
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Has been cancelled
7766348c75
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
WIP cultnet-ts: Odin presence publisher completes on the result frame, not the ack (passes alone; two publisher tests fail inside the parallel full run, unexplained)
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 5m32s
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Successful in 30s
0b326fa5ee
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cultnet-ts test: cancel the Odin stub's delayed send when the test ends
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 7m47s
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Successful in 57s
531fce567d
The stub's 120 ms second packet fired after peer.close() and threw
ERR_SOCKET_DGRAM_NOT_RUNNING as an uncaught exception, failing whichever
publisher test was running when the timer landed (load-dependent). Timers are
now cleared in the test's after hook instead of swallowing the error.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
libby changed title from WIP: FINDING cultnet-ts: the Odin presence publisher completes on the ack when the refusal follows it to cultnet-ts: the Odin presence publisher completes on the result frame, not the ack 2026-11-08 13:14:56 +00:00
libby merged commit 3162e2ea66 into main 2026-11-08 13:15:08 +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!56
No description provided.