wai: ingest the browser capability-negotiation mapping (WebCodecs) #54
Open
dcharlot
wants to merge 2 commits from
wai-webcodecs-negotiation into main
pull from: wai-webcodecs-negotiation
merge into: Transaction-Science:main
Transaction-Science:main
Transaction-Science:ci/macos-energy-widen
Transaction-Science:ci/neural-e2e-guard
Transaction-Science:ci/smart-byte-pack
Transaction-Science:ci/tier2-packs
Transaction-Science:ci/macos-energy-backend
Transaction-Science:feat/wai-video-workflow
Transaction-Science:ci/joule-code-pack
Transaction-Science:ci/jcp-pack
Transaction-Science:joulecontract/run-negative-vectors
Transaction-Science:ci/jouleclaw-arm64-debuginfo
Transaction-Science:ci/run-conformance-verifiers
Transaction-Science:mesh/cost-calibration
Transaction-Science:diagnose/grounding-backing
Transaction-Science:wai/energy-operating-point
Transaction-Science:wai/2030-transport-landscape
Transaction-Science:wai/constraints-and-unidirectional
Transaction-Science:wai/determinism-tier-covers-emitted-medium
Transaction-Science:wai/moq-streaming-format
Transaction-Science:wai/mpeg-ai-part6-mapping
Transaction-Science:wai/prior-carriage-and-derivations
Transaction-Science:wai/receipt-classes-and-key-discovery
Transaction-Science:wai/task-fidelity
Transaction-Science:wai/transparency-emission
Transaction-Science:wai/c2pa-emitter
Transaction-Science:compliance/eu-scale-pack
Transaction-Science:compliance/composite-grade-v2
Transaction-Science:jcp/erasure-tombstone-v2
Transaction-Science:jcp/avoided-energy
Transaction-Science:jcp/erasure-tombstone
Transaction-Science:jcp/environment-binding
Transaction-Science:proof/stub-on-the-wire
Transaction-Science:compliance/composite-grade
Transaction-Science:mesh/context-cost-profile
Transaction-Science:ar-1-on-main
Transaction-Science:jcp/mcp-meta-receipt
Transaction-Science:wai/energy-binding
Transaction-Science:jcp/energy-coverage-relanded
Transaction-Science:jcp/energy-coverage
Transaction-Science:wai/video-byte-equality
Transaction-Science:eoc/multi-tenant-allocation
Transaction-Science:compliance/banding-function
Transaction-Science:ci-standards-workspaces
Transaction-Science:sandbox/honest-tier
Transaction-Science:proof/joule-ceiling
Transaction-Science:chore/rust-1.98-and-deps
Transaction-Science:wai-jpegai-full-wasm
Transaction-Science:wai-3d-landscape
Transaction-Science:wai-binding-real-decode
Transaction-Science:wai-determinism-tiers
Transaction-Science:wai-jpegai-wasm-demo
Transaction-Science:wai-jpegai-integrate
Transaction-Science:fix-byte-exact-includes
Transaction-Science:ci-windows-shell
Transaction-Science:jpegai-dequant-derive
Transaction-Science:ci-rust-setup
Transaction-Science:fl2-land
Transaction-Science:ci/cross-workspace-check
Transaction-Science:ci-enable
Transaction-Science:jcp-training-receipt
Transaction-Science:joule-code/repair-grant-literals
Transaction-Science:jcp-gateway-flow-relay
Transaction-Science:jcp-receipt-flow-seal
Transaction-Science:jcp-runtime-flow-gate
Transaction-Science:jcp-flow-witness
Transaction-Science:jcp-flow-lattice
Transaction-Science:rust-toolchain-1.97.1
Transaction-Science:score-binary-on-320fa1e
Transaction-Science:sandbox/cred-injection-2
Transaction-Science:sandbox/credential-injection
Transaction-Science:corpus-embedder-s5
Transaction-Science:jcp/cite
Transaction-Science:receipts-corpus-connector
Transaction-Science:jcp/grant-caveats
Transaction-Science:feat/jpegai-derive-inputs
Transaction-Science:feat/jpegai-weight-tools
Transaction-Science:feat/jpegai-icci-validation
Transaction-Science:jcp/x402-example-settlement
Transaction-Science:jcp/x402-bridge
Transaction-Science:jcp/receipt-payload-hash
Transaction-Science:fix/jpegai-pih-flags
Transaction-Science:feat/jpegai-e2e-chain
Transaction-Science:feat/jpegai-e2e-z
Transaction-Science:feat/jpegai-ton
Transaction-Science:jcp/dual-ceilings
Transaction-Science:feat/jpegai-pih
Transaction-Science:feat/jpegai-bitstream
Transaction-Science:feat/jpegai-icci-net2
Transaction-Science:feat/jpegai-icci-net
Transaction-Science:feat/jpegai-dwt
Transaction-Science:feat/jpegai-color
Transaction-Science:score-binary-rerank
Transaction-Science:feat/jpegai-efl
Transaction-Science:feat/jpegai-lef
Transaction-Science:feat/jpegai-efn
Transaction-Science:feat/jpegai-lsbs
Transaction-Science:feat/jpegai-reconstruct
Transaction-Science:jcp/orchestrate-profile-mapping
Transaction-Science:jpegai-sigma-index
Transaction-Science:hyperscale-floorfix
Transaction-Science:feat/jpegai-pipeline-dequant
Transaction-Science:feat/jpegai-e2e-synthesis
Transaction-Science:recovery/jpegai-decoders
Transaction-Science:wai/jpegai-synthesis-executor
Transaction-Science:jouletag-standard
Transaction-Science:wai/jpegai-gate-fixes
Transaction-Science:wai/int-transformer-executors
Transaction-Science:wai/int-transformer-kernels
Transaction-Science:energy/rapl-nvml-hardware-fixes
Transaction-Science:fix/omni-build-and-gguf-tokenizer
Transaction-Science:jouletable-standard
Transaction-Science:jouleclaw/gguf-decoders
Transaction-Science:wai/confidentiality-freshness
Transaction-Science:joulehook-standard
Transaction-Science:honest-counter-provenance
Transaction-Science:amd-kds-adapter
Transaction-Science:evidence-derived-grounding
Transaction-Science:mapping-physically-rooted-clarify
Transaction-Science:attested-efficiency-demo
Transaction-Science:efficiency-energy-attestation
Transaction-Science:mapping-attested-kernel
Transaction-Science:energy-counter-attestation
Transaction-Science:efficiency-surface
Transaction-Science:efficiency-spec
Transaction-Science:harness-econ
Transaction-Science:federation-quic-on-main
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
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!54
Loading…
Reference in a new issue
No description provided.
Delete branch "wai-webcodecs-negotiation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
SOTA ingest: WAI's §4 dispatch is the browser's own capability primitive —
WebCodecs
isConfigSupported(), whose documented fallback is a WASM decoder.extensions/webcodecs-negotiation.mdmaps §4 onto a browser sink in two tiers:native when the platform reports the codec supported, WAI's pure-integer wasm
decoders otherwise, with the classical floor always reachable through wasm.
Informative — it does not change the wire format or the algorithm.
Why the second commit exists
While this sat,
extensions/capability-constraints.mdlanded, which makesdispatch a precondition check: a sink satisfies a capability when it advertises
capand the object's declared parameters satisfy a registered constraintset. Rebased as-is, the two extensions would read as overlapping claims about §4
with nothing saying how they relate.
They are not in tension — the newer one makes this one sharper.
isConfigSupported()is not a codec-string test: it takes a wholeVideoDecoderConfig(codec,codedWidth,codedHeight, …), so the native tieris already a constraint evaluator, and a browser meets that extension's three
requirements structurally rather than with extra machinery:
capability-constraints.mdrequiresisConfigSupported()is pre-flight; it configures nothingsupported: false, returned before any payload is committed toIt also returns the normalised
configthe platform would accept, which is theaccepted parameter set — so a sink SHOULD use that rather than re-derive one.
The limit is stated, not glossed. WebCodecs' parameter vocabulary is the
conventional-media one (codec, resolution, frame rate, bit depth, profile) — the
same shape as the ratified registers
capability-constraints.md§3 draws on, andwith the same gap: no WebCodecs configuration describes the neural, quantum,
world or haptic families. Those have no native tier to constrain at all, resolve
through the WASM tier, and stay unconstrained until WAI authors their register
entries. That is the state §3 already describes, not a shortfall introduced here.
Verification
Docs only —
wai/CHANGELOG.md,wai/SPEC.md, and the extension.§4/§5section references were re-checked against current
SPEC.mdand are unchanged(§4 Capability dispatch, §5 Registered capabilities). All relative links resolve.
scripts/check-no-vanity-metrics.shpasses.Correction: the WAI workflows did trigger, and the windows legs will fail
I first wrote here that this touches no source path, so
wai-conformance.ymlandwai-byte-equality.ymlwould not trigger. That was wrong — both ran, and threewindows contexts are present.
The likely cause, from the evidence rather than from Forgejo's source: the
paths:filter appears to be evaluated against the push delta (old head → new head)
rather than the PR's diff against its base. This branch was force-pushed from a
2026-08-03 commit onto 2026-09-20 main, and that delta is 222 files, 15 of them
under
wai/wai-rs/— which matcheswai/wai-rs/**. The PR's own diff againstmain is the three Markdown files listed above and matches nothing.
So rebasing a stale branch can trigger workflows its content does not touch.
Worth knowing before rebasing anything else that has sat.
The practical consequence is that this PR is now blocked the same way #82 is: the
only
runs-on: windowshost,cbio-device-0000(100.98.19.25), has beenoffline since ~2026-08-28 —
tailscale statusreports "offline, last seen 24dago", and it does not answer ping, so it cannot be restarted remotely. Its jobs are
never claimed and are eventually cancelled, which the status API reports as
failurewith description"Has been cancelled". That is infrastructure, not thischange. Every other leg is green.
🤖 Generated with Claude Code
4b2bc24087b5b7bd3686View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.