payloadBudgetGap
Tracking URL for why this fabric names no frame ceiling — the accountability analog of midSessionDeathDeclaration for us.tractat.kuilt.core.Seam.maxPayloadBytes (#2069).
Deliberately still a String?, and not an ObligationDeclaration (#2568). The other three hooks were converted because their two states could not express "by design"; this one is a different animal on every axis that made the conversion worth it. Its selector is a value the fabric publishes rather than a harness hook, so there is no injection whose return value could cross-check an arm — ObligationDeclaration.NotApplicable.ContractDiffers has nothing to demonstrate and ObligationDeclaration.NotApplicable.NotConstructible nothing to refute, which would leave both arms as exactly the self-certified opt-out that type exists to refuse. Its default is a doc anchor, not an issue umbrella, precisely because null is usually the honest answer here rather than a shortfall (see below) — so there is no false-gap population to migrate, which is what #2568 was about. And the pairing already binds in both directions, which is the accountability the by-design arms were added to supply elsewhere: publishing a number requires this to be cleared, so it cannot be left behind as an opt-out.
The base default is a non-null umbrella (CapabilityGaps.PAYLOAD_BUDGET), so a fabric that publishes nothing is declared, never silently green; a fabric that publishes a number MUST override this to null/blank, and is then held to that number by payloadOfExactlyTheBudgetIsCarried and overBudgetAddressedSendIsRefusedNotLeaked. payloadBudgetObligationIsTrackedWhenUnpublished enforces the pairing in both directions.
This is deliberately not a SeamCapabilities flag, though #2069 first asked for one. Every false flag there is a contract shortfall for which everyFalseCapabilityDeclaresAGap demands a per-fabric issue URL — but maxPayloadBytes == null is the honest answer from a fabric with no wire limit to name, so a flag would have demanded a permanently-open issue from nearly every subclass of this suite. The hook's shared umbrella default costs those fabrics nothing while still making the one real hazard — a fabric enforcing a ceiling it does not publish — a declaration somebody has to write down.