Some checks failed
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 15s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 18s
wai-app and Create / wai-app · does this change touch it (push) Successful in 15s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 32s
wai cross-architecture byte-equality / does this change touch it (push) Successful in 11s
wai-fleet service / does this change touch it (push) Successful in 11s
wai-audit collector and player integration / does this change touch it (push) Successful in 15s
WAI operation catalogue / does this change touch it (push) Successful in 15s
wai-key-proxy / does this change touch it (push) Successful in 14s
wai-ops integer operators / does this change touch it (push) Successful in 14s
wai-ledger service / does this change touch it (push) Successful in 18s
wai-quantum studio and desktop / does this change touch it (push) Successful in 14s
wai-quantum for JavaScript / does this change touch it (push) Successful in 16s
wai-sink-android native sink library / does this change touch it (push) Successful in 16s
wai-sink-swift native sink package / does this change touch it (push) Successful in 11s
WAI Studio / does this change touch it (push) Successful in 12s
joule-code conformance gate / Build + round-trip C1-C4 vectors (push) Has been cancelled
joule-code conformance gate / joule-moq-relay, every target (push) Has been cancelled
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (push) Has been cancelled
joule-code conformance gate / joule-moq-ingest, every target (push) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (push) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Has been cancelled
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Has been cancelled
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Has been cancelled
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Has been cancelled
wai-audit collector and player integration / collector · linux (push) Has been cancelled
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Has been cancelled
WAI operation catalogue / the catalogue and every door · linux (push) Has been cancelled
wai-fleet service / service · linux (push) Has been cancelled
wai-fleet service / service · macos (push) Has been cancelled
wai-ledger service / service · linux (push) Has been cancelled
wai-ledger service / service · macos (push) Has been cancelled
wai-quantum for JavaScript / javascript · linux (push) Has been cancelled
wai-quantum studio and desktop / studio · browser (push) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (push) Has been cancelled
wai-quantum studio and desktop / desktop app · linux (push) Has been cancelled
wai-quantum studio and desktop / desktop app · windows (push) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (push) Has been cancelled
WAI Studio / Studio in WebKit · linux (push) Has been cancelled
wai cross-architecture byte-equality / windows-x86_64 (push) Successful in 1m7s
wai cross-architecture byte-equality / macos-arm64 (reference) (push) Successful in 24s
wai-ops integer operators / macos-arm64 (push) Successful in 57s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 7s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 7s
wai cross-architecture byte-equality / linux-x86_64 (push) Successful in 1m2s
wai-ops integer operators / wasm32 under Node (push) Successful in 31s
wai-ops integer operators / independent checker (Python) (push) Successful in 19s
wai-ops integer operators / linux-x86_64 (push) Successful in 1m12s
wai-ops integer operators / wasm32-wasip2 (wasmtime) (push) Successful in 1m7s
wai-key-proxy / proxy · linux (push) Successful in 1m34s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Has been cancelled
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Has been cancelled
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Has been cancelled
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Has been cancelled
wai-quantum energy-landscape jobs / the same bits · macos (push) Has been cancelled
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 3m0s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 5m21s
wai cross-architecture byte-equality / linux-aarch64 (push) Successful in 1m18s
wai-ops integer operators / linux-aarch64 (push) Successful in 1m58s
Registers wai.image.int_cond_refine, refinement-only and StandardDefined, with the staged form conditioned residual and the payload WCP1 (staged-delivery §6.2, Appendix B). A layer's next stage is the base prediction (the stage below, or its up2 at the output's size), plus a correction an integer network carried in the payload computes from it and the side planes refines.side names, clamped, plus a WIR1 residual decoded over that prediction. The network is one WHG1 graph lowered by wcp1/1 under acc64, so every sink holding the same planes computes the same bytes. Over rendered content the side planes are G-buffers carried as exact objects of their own, or the frame the sink renders itself from a wai.splat.int_codec object at a pinned pose with wai-splat-render:i1; with no side plane over a lower-resolution base the layer is a dual stream's detail. staged-delivery §3.1 reads refines.side (content hashes, or render entries with a splat-exact §2 pose); §4.1 step 4 refuses a plane the sink does not hold (side-absent) or that is not exact (side-not-exact), two reasons that join §4.2's closed list and the stage claim's. A WAI2 refinement component carries no side (refinement-side); a packer refuses a WAI1 layer that carries one. SPEC §5's Refinement capabilities and Base admission rows, §7.1, integer-operators §11 and jwp-receipts' session rule follow. wai-rs: staged::wcp1 (parse, cost, lowering, graph decode, the loop-by-loop arithmetic the encoder holds the graph to, encoder), staged::side, StageSink add_side, add_render and set_macs_limit, the WCP1 framing check, RoleError::RefinementSide, AppliedForm::Conditioned. staged-conformance/cond/ holds its cases (exact planes, the dual stream, both in one layer, a rendered plane, planes absent and not exact, geometry, admission, side and WCP1 faults, cost limits) and cond/wai2/; wai_staged_vectors (now with splat_exact) writes and replays them, and staged_verify.py replays them with its own WCP1 parser, network loop, sink, PNG decode and splat renderer. The two Rust API breaks are acknowledged in the change's entry. Co-Authored-By: Claude Opus 5.5 <[email protected]>
67 lines
5.5 KiB
Markdown
67 lines
5.5 KiB
Markdown
### A refinement conditioned on side information both ends hold: `wai.image.int_cond_refine`
|
||
|
||
- **One capability registered** (SPEC §5, *Refinement capabilities*): `wai.image.int_cond_refine`,
|
||
refinement-only, `StandardDefined`, with the staged form *conditioned residual* and the
|
||
payload `WCP1`. Its row of *Base admission* is `wai.image.int_refine`'s. A layer's next
|
||
stage is three integer steps over the unit's current output and the **side planes** its
|
||
`refines.side` names: the base prediction (the current output, or its `up2_predict` at the
|
||
output's size), an integer network carried in the payload that reads the base prediction
|
||
and the side planes and adds a correction clamped to `[0, 255]`, and a `WIR1` residual
|
||
decoded over that prediction with the identity predictor. Every sink that holds the same
|
||
side planes computes the same bytes, so the output is as exact as the base and the planes.
|
||
The base, each side object and the layer are objects of their own, each named by its
|
||
content hash and covered by its own receipt; the sink composes them and computes the
|
||
stage, whose stage hash is the digest a signed `stage` claim states and a presenting sink
|
||
checks.
|
||
- **One mechanism, two uses.** Over rendered content the side planes are G-buffers both sides
|
||
hold (depth, normals, albedo), each carried as an exact object of its own, or the frame the
|
||
sink renders itself from a `wai.splat.int_codec` object at a pinned pose with
|
||
`wai-splat-render:i1`, which costs nothing on the wire. With no side plane, over a base at a
|
||
lower resolution, the layer is the detail stream of a dual stream: the up2 of the
|
||
low-resolution reference, and the detail the network reconstructs from it.
|
||
- **Side planes** ([staged-delivery](extensions/staged-delivery.md) §3.1): `refines.side`, read
|
||
for the conditioned form and ignored for any other, is absent, `null`, or 1 to 4 entries,
|
||
each a content hash or `{"object", "renderer": "wai-splat-render:i1", "pose"}` with a pose of
|
||
splat-exact §2; any other value is `refines-malformed`. A plane is exact when its object was
|
||
decoded through its manifest's capability, not a fallback, at `decode-equivalence`. §4.1
|
||
step 4 checks each entry in order after base admission: the sink holds its plane
|
||
(`side-absent`), and the plane is exact (`side-not-exact`). The two reasons join §4.2's
|
||
closed list and the reasons a `stage` claim names (jwp-receipts §2.4.10). A plane is the
|
||
sink's, held beside its chains and no part of a chain's state.
|
||
- **The payload** (staged-delivery §6.3, Appendix B): `WCP1`, a 12-byte header (`predictor`,
|
||
`n_side`, `n_layers`, `act_hi`), the network in the layer form of
|
||
[exact-upscale](extensions/exact-upscale.md) §3.1 (the first layer reads `3·(1 + n_side)`
|
||
channels, the last writes 3), and a `WIR1` residual of the RGB8 unit kind with the identity
|
||
predictor. Its checks run in a stated order with Appendix A.6's codes; `n_side` must be the
|
||
count `side` names. Its declared cost adds the network's working bytes and its
|
||
multiply-accumulates, which a sink may limit (`cost-over-limit`, `multiply-accumulates`).
|
||
- **Through the integer operator set.** The network is one `WHG1` graph, lowered by `wcp1/1`
|
||
([integer-operators](extensions/integer-operators.md) §11, Appendix B.6 of staged-delivery):
|
||
`concat`, `rescale`, `conv`, `clamp` and `add`, loaded under `acc64` with its bounds
|
||
certificate, which every payload that parses meets. The capability's `ops` member names the
|
||
set, `acc64`, `wcp1/1` and E1's modes.
|
||
- **Carriage.** A layer that reads side planes travels as a `WAI1` object: a `WAI2`
|
||
refinement component carries no `side` (SPEC §7.1, `refinement-side`), and a packer refuses
|
||
a `WAI1` layer that carries one. One with no side plane packs and explodes as any layer.
|
||
- **Reference implementation.** `wai-rs`: `staged::wcp1` (the parse, the cost, the lowering,
|
||
the decode through the graph, the arithmetic loop by loop, which the encoder holds the graph
|
||
to, and the encoder), `staged::side` (`SideEntry`, `SidePose`, `read`, `with_side`),
|
||
`staged::{is_conditioned, layer_units}`, `StageSink::{add_side, add_render,
|
||
set_macs_limit}`, `StageChain::set_macs_limit`, `codecs::CAP_IMAGE_INT_COND_REFINE` with
|
||
`AppliedForm::Conditioned`, the `WCP1` framing check, `RoleError::RefinementSide`; the
|
||
session claim reads a conditioned layer's units from its `WCP1` payload.
|
||
- **Conformance.** `staged-conformance/cond/`, written and checked by `wai_staged_vectors`
|
||
(which now builds with `splat_exact`): exact side planes; the dual stream; both together, an
|
||
8 × 8 render with three 16 × 16 G-buffers; a rendered plane; a plane not held, then held;
|
||
planes that are not exact (an unpinned decode, a fallback, the render of an unpinned splat
|
||
set); a plane of another size; a base the row does not admit; `side` broken each way; each
|
||
`WCP1` check broken once; cost limits on working bytes and on multiply-accumulates; and
|
||
`cond/wai2/`. `staged_verify.py` replays every case with its own `WCP1` parser, its own
|
||
network loop and its own sink, decodes each side object's PNG, and renders each plane with
|
||
`live-conformance/splat_exact_verify.py`'s renderer.
|
||
- **Breaking:** `staged::StageRefusal` gains `SideAbsent` and `SideNotExact`, so
|
||
`StageRefusal::ALL` holds 16 reasons where it held 14, and `codecs::AppliedForm` gains
|
||
`Conditioned`: `api:rust:wai::staged::StageRefusal::ALL`,
|
||
`api:rust:wai::codecs::AppliedForm::Conditioned`. A caller that matches `AppliedForm`
|
||
exhaustively adds an arm for the conditioned form; one that reads `StageRefusal::ALL` as an
|
||
array of 14 reads its length.
|