v2026.5.16: SPEC-029 sendability enforcement
v2026.5.16: SPEC-029 sendability enforcement
Section titled “v2026.5.16: SPEC-029 sendability enforcement”Janus now enforces the SPEC-029 sendability rule before the actor wire path
ships. Proven actor, channel, and mailbox .send(...) calls are checked by
the compiler:
ref Tcannot cross the send boundary. The compiler emits E2801.iso Tcan cross the boundary, and the binding is consumed by the send.- A later read of that consumed
isobinding emits E2802. val Tandtag Tare sendable.
The check is intentionally bounded to proven send boundaries. A normal method
named send on an unrelated object is not treated as an actor or channel send.
This is not a Serialize trait gate. Janus actor sendability comes from
reference capabilities and, for wire transport, SBI-compatible layout.
As of the typed local message ABI closure, node-local ActorRef[Msg] and
local GrainRef[Msg] payload sends use the same visible .send(...) surface:
unit variants lower to tags, payload-bearing variants lower to boxed
SBI-scalar slot vectors, and receive can destructure those payload fields.
Cross-node actor/grain wire transport remains deferred to SPEC-039/SPEC-236.
Verification gates
Section titled “Verification gates”./scripts/zb test-intent-enforcement./scripts/zb test-diagnostics-intents./scripts/zb test-capability./scripts/zb test-parser-cap-seam./scripts/zb test-spec-085-pipeline./scripts/zb test-cluster-send-safety-payload./scripts/zb test-cluster-actors