maxFrameBytes

open val maxFrameBytes: Int?

The largest frame send accepts, or null when this link cannot name a ceiling.

This is where a frame limit enters kuilt: a length-prefixed transport knows its own bound (:kuilt-stream's framed() takes maxFrameSize and throws FrameTooLargeException past it), and publishing it here is what lets the seam above surface it as us.tractat.kuilt.core.Seam.maxPayloadBytes and the layers above that reserve room for their own headers (#2047). null means unknown, never "unbounded" — see us.tractat.kuilt.core.Seam.maxPayloadBytes for what a caller may infer.

A Connection decorator that adds no bytes to a frame delegates this unchanged; one that adds bytes subtracts them, floored at zero.

Fixed for the life of the link. Unlike us.tractat.kuilt.core.Seam.maxPayloadBytes — which a mesh derives from a link set that grows and shrinks, so it moves — this number is a property of one transport and must not change once the link exists. That is what makes it the sound thing to pre-check a payload against: a seam reading it immediately before send cannot be overtaken by a tightening it did not see (#2069). A transport whose real ceiling is negotiated publishes the settled value, or null until it settles.