dispatch: capability constraints, and delivery over bearers that cannot answer #87

Merged
dcharlot merged 1 commit from wai/constraints-and-unidirectional into main 2026-09-10 12:23:05 -04:00
Owner

Two seams the tree could not express.

Capability constraints

WAI dispatch treats support as binary — a sink either claims a capability or doesn't. Real sinks support a codec to a level: up to a resolution, frame rate, bit depth, profile. "This capability, but only to 4K60 10-bit, this profile" is the normal case and was unexpressible.

So partial support failed at decode time rather than selection time, and rendition selection had nothing to evaluate — deferring to a deployer policy the specification never states.

Ingests the constraint-set grammar and register pattern from AMWA's ratified Receiver/Sender Capabilities work (BCP-004-01/-02, v1.0.0): ORed sets of enum/min/max constraints over register-named parameters. Grammar and pattern only — not the transport, not the discovery model, and explicitly not the pre-flight negotiation framing, because capability-plus-budget binding before execution is already owned by JCP and two mechanisms for one job is worse than none.

The honest limit is in §3 rather than hidden: the ratified registers are broadcast-essence-shaped and cover only the conventional media families. There are no entries for neural, quantum, world or haptic — WAI must author those itself, and until it does those capabilities stay unconstrained, which is the true state rather than a pretended one.

Unidirectional delivery

Three assumptions quietly presume the sink can talk back: jwp-receipts assumes relay-chain linkage; targeting presumes the source learns something about the sink; and pre-emption has no signer class, because nothing in WAI has needed to assert authority over a sink before.

Terrestrial broadcast, satellite and multicast object carriage break all three — and none is repaired by defining a bearer.

  • Sink-evaluated predicates (§2). The object carries a condition the sink evaluates against local state the source never learns, under a predicate-equivalence contract. The specifiable property is determinism and auditability, not enforcement — every sink receives every byte and can lie about its own state, and the text says so. The real claim is narrow and worth having: the source learns nothing, the dual of source-side targeting.
  • Authority and pre-emption (§3). Pre-emption is the highest-authority instruction a media object can carry — it displaces what a person chose to watch — and today an object either lacks the field or has one anyone may set. Requires a sink-held trust anchor provisioned out of band; a trust anchor delivered over the bearer it authorises is not one. A valid signature establishes who signed, never that they were entitled to.
  • Detached receipts (§4). An honest profile, not a proof. Such receipts attest what was transmitted — not what was received, not what was rendered — and MUST declare the bearer unidirectional. No receipt can prove rendering over a bearer with no return path. What this prevents is the quieter error: a receipt saying "delivered" because a transmitter transmitted, on a link that cannot tell it whether anyone was listening.

Generalised from deployed national early-warning systems — the one place a sink evaluating a condition the source never learns has had to work at scale.

Ingest queue items 10 and 11 (#80 §4.2, §4.3).

🤖 Generated with Claude Code

Two seams the tree could not express. ## Capability constraints WAI dispatch treats support as **binary** — a sink either claims a capability or doesn't. Real sinks support a codec *to a level*: up to a resolution, frame rate, bit depth, profile. **"This capability, but only to 4K60 10-bit, this profile" is the normal case and was unexpressible.** So partial support failed at **decode** time rather than **selection** time, and rendition selection had nothing to evaluate — deferring to a deployer policy the specification never states. Ingests the constraint-set grammar and register pattern from AMWA's ratified Receiver/Sender Capabilities work (BCP-004-01/-02, v1.0.0): ORed sets of enum/min/max constraints over register-named parameters. **Grammar and pattern only** — not the transport, not the discovery model, and explicitly **not** the pre-flight negotiation framing, because capability-plus-budget binding before execution is already owned by JCP and two mechanisms for one job is worse than none. The honest limit is in §3 rather than hidden: the ratified registers are broadcast-essence-shaped and cover only the conventional media families. **There are no entries for neural, quantum, world or haptic — WAI must author those itself**, and until it does those capabilities stay unconstrained, which is the true state rather than a pretended one. ## Unidirectional delivery Three assumptions quietly presume the sink can talk back: `jwp-receipts` assumes relay-chain linkage; targeting presumes the source learns something about the sink; and pre-emption has no signer class, because nothing in WAI has needed to assert authority *over* a sink before. Terrestrial broadcast, satellite and multicast object carriage break all three — and none is repaired by defining a bearer. - **Sink-evaluated predicates (§2).** The object carries a condition the *sink* evaluates against local state the source never learns, under a predicate-equivalence contract. **The specifiable property is determinism and auditability, not enforcement** — every sink receives every byte and can lie about its own state, and the text says so. The real claim is narrow and worth having: *the source learns nothing*, the dual of source-side targeting. - **Authority and pre-emption (§3).** Pre-emption is the highest-authority instruction a media object can carry — it displaces what a person chose to watch — and today an object either lacks the field or has one anyone may set. Requires a sink-held trust anchor provisioned out of band; **a trust anchor delivered over the bearer it authorises is not one.** A valid signature establishes *who signed*, never that they were entitled to. - **Detached receipts (§4).** An honest profile, not a proof. Such receipts attest **what was transmitted** — not what was received, not what was rendered — and MUST declare the bearer unidirectional. **No receipt can prove rendering over a bearer with no return path.** What this prevents is the quieter error: a receipt saying "delivered" because a transmitter transmitted, on a link that cannot tell it whether anyone was listening. Generalised from deployed national early-warning systems — the one place a sink evaluating a condition the source never learns has had to work at scale. Ingest queue items 10 and 11 (#80 §4.2, §4.3). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
dispatch: capability constraints, and delivery over bearers that cannot answer
All checks were successful
no-vanity-metrics / Scan committed Markdown for vanity metrics (pull_request) Successful in 3s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m47s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m13s
standards workspaces build + test / aac-rs (pull_request) Successful in 46s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 49s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m11s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m0s
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 3m50s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 39s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m30s
standards workspaces build + test / map-rs (pull_request) Successful in 36s
standards workspaces build + test / mesh-rs (pull_request) Successful in 32s
standards workspaces build + test / openpay (pull_request) Successful in 1m48s
standards workspaces build + test / arl-rs (pull_request) Successful in 9m9s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 9m9s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 9m33s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 9m4s
standards workspaces build + test / sense-rs (pull_request) Successful in 8m31s
2a0cc7a9eb
Two seams the tree could not express, both surfaced by the landscape survey.

CAPABILITY CONSTRAINTS. WAI dispatch treats support as binary — a sink either
claims a capability or does not. Real sinks support a codec TO A LEVEL: up to a
resolution, a frame rate, a bit depth, a profile. "This capability, but only to
4K60 10-bit, this profile" is the normal case and was unexpressible, so partial
support failed at DECODE time rather than SELECTION time, and rendition selection
had nothing to evaluate and deferred to a deployer policy the spec never states.

Ingests the constraint-set grammar and register pattern from AMWA's ratified
Receiver/Sender Capabilities work (BCP-004-01 / -02, v1.0.0) — ORed sets of
enum/min/max constraints over register-named parameters. Grammar and pattern
only: not the transport, not the discovery model, and explicitly NOT the
pre-flight negotiation framing, because capability-plus-budget binding before
execution is already owned by JCP and two mechanisms for one job is worse than
none.

The honest limit is stated in §3 rather than hidden: the ratified registers are
broadcast-essence-shaped and cover only WAI's conventional media families. There
are no entries for neural, quantum, world or haptic, and WAI must author those
itself — until it does, those capabilities remain unconstrained, which is the
true state rather than a pretended one.

UNIDIRECTIONAL DELIVERY. Three assumptions quietly presume the sink can talk
back: jwp-receipts assumes relay-chain linkage, targeting presumes the source
learns something about the sink, and pre-emption has no signer class because
nothing in WAI has needed to assert authority over a sink before. Terrestrial
broadcast, satellite and multicast object carriage break all three, and none is
repaired by defining a bearer.

  * Sink-evaluated predicates (§2): the object carries a condition the SINK
    evaluates against local state the source never learns, under a
    predicate-equivalence contract in the shape of state-feeds §3. The
    specifiable property is determinism and auditability, NOT enforcement —
    every sink receives every byte and can lie about its own state, and this
    text says so. The real claim is narrow and worth having: the source learns
    nothing, which is the dual of source-side targeting.
  * Authority and pre-emption (§3): pre-emption is the highest-authority
    instruction a media object can carry — it displaces what a person chose to
    watch — and today an object either lacks the field or has one anyone may
    set. Requires a sink-held trust anchor provisioned out of band; a trust
    anchor delivered over the bearer it authorises is not one. A valid signature
    establishes who signed, never that they were entitled to.
  * Detached receipts (§4): the deliverable is an honest profile, not a proof.
    Such receipts attest WHAT WAS TRANSMITTED, not what was received or
    rendered, and MUST declare the bearer unidirectional. No receipt can prove
    rendering over a bearer with no return path; what this prevents is the
    quieter error of a receipt saying "delivered" because a transmitter
    transmitted, on a link that cannot tell it whether anyone was listening.

Generalised from deployed national early-warning systems, which are where a sink
evaluating a condition the source never learns has had to work at scale.

Ingest queue items 10 and 11 (#80 §4.2, §4.3).

Co-Authored-By: Claude Opus 5 <[email protected]>
dcharlot force-pushed wai/constraints-and-unidirectional from 2a0cc7a9eb
All checks were successful
no-vanity-metrics / Scan committed Markdown for vanity metrics (pull_request) Successful in 3s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m47s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m13s
standards workspaces build + test / aac-rs (pull_request) Successful in 46s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 49s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m11s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m0s
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 3m50s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 39s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m30s
standards workspaces build + test / map-rs (pull_request) Successful in 36s
standards workspaces build + test / mesh-rs (pull_request) Successful in 32s
standards workspaces build + test / openpay (pull_request) Successful in 1m48s
standards workspaces build + test / arl-rs (pull_request) Successful in 9m9s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 9m9s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 9m33s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 9m4s
standards workspaces build + test / sense-rs (pull_request) Successful in 8m31s
to b912d6faa8
Some checks failed
no-vanity-metrics / Scan committed Markdown for vanity metrics (pull_request) Successful in 3s
standards workspaces build + test / aac-rs (pull_request) Successful in 38s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 43s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m49s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m13s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m11s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m0s
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 5m8s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 43s
standards workspaces build + test / map-rs (pull_request) Successful in 39s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m34s
standards workspaces build + test / mesh-rs (pull_request) Successful in 1m30s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 31s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 14s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 40s
standards workspaces build + test / openpay (pull_request) Successful in 3m51s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 1m16s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 30s
standards workspaces build + test / arl-rs (pull_request) Successful in 9m17s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 10m26s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 11m6s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 12m27s
standards workspaces build + test / sense-rs (pull_request) Successful in 11m33s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 1m30s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 22s
WAI conformance / cargo-class corpora · windows (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · windows (pull_request) Has been cancelled
2026-09-10 10:25:42 -04:00
Compare
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
Transaction-Science/open-standards!87
No description provided.