open-standards/wai/live-conformance/ledger
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 11267b7b4b
Some checks failed
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 8s
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 9s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (pull_request) Successful in 10s
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 13s
wai-audit collector and player integration / does this change touch it (pull_request) Successful in 12s
wai-app and Create / wai-app · does this change touch it (pull_request) Successful in 12s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 12s
WAI operation catalogue / does this change touch it (pull_request) Successful in 11s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (pull_request) Successful in 14s
WAI conformance / does this change touch it (pull_request) Successful in 23s
WAI energy receipts / does this change touch it (pull_request) Successful in 21s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (pull_request) Successful in 39s
WAI examples / WAI examples · does this change touch them (pull_request) Successful in 9s
wai-fleet service / does this change touch it (pull_request) Successful in 8s
wai-ledger service / does this change touch it (pull_request) Successful in 10s
wai-pack / wai-pack · does this change touch it (pull_request) Successful in 14s
wai-quantum docs, course and locales / does this change touch it (pull_request) Successful in 13s
wai-quantum for JavaScript / does this change touch it (pull_request) Successful in 14s
wai-audit collector and player integration / collector · linux (pull_request) Successful in 1m26s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (pull_request) Failing after 1m29s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 39s
wai-sink-android native sink library / does this change touch it (pull_request) Successful in 34s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Successful in 2m1s
wai-sink-swift native sink package / does this change touch it (pull_request) Successful in 13s
WAI Studio / does this change touch it (pull_request) Successful in 16s
wai-web wasm32 / does this change touch it (pull_request) Successful in 17s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (pull_request) Successful in 2m26s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m38s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 58s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (pull_request) Successful in 2m56s
WAI conformance / fast integer kernels, every x86_64 kernel set (AVX-512 silicon) (pull_request) Successful in 3m7s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 29s
WAI conformance / faces from keypoints under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m46s
WAI operation catalogue / the catalogue and every door · linux (pull_request) Successful in 4m26s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 5m15s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (pull_request) Successful in 5m37s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 5m41s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 3m59s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 6m23s
wai-fleet service / service · linux (pull_request) Successful in 1m55s
wai-ledger service / service · linux (pull_request) Successful in 1m33s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 4m32s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 3m35s
wai-pack / wai-pack · linux (pull_request) Successful in 2m14s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (pull_request) Successful in 11s
wai-fleet service / service · macos (pull_request) Successful in 1m43s
wai-quantum docs, course and locales / the course and the command line's languages · linux (pull_request) Successful in 2m26s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 7m58s
wai-ledger service / service · macos (pull_request) Successful in 1m46s
wai-quantum for JavaScript / javascript · linux (pull_request) Successful in 3m9s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 1m30s
wai-quantum studio and desktop / desktop app · windows (pull_request) Successful in 10m14s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 7m13s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 4m16s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Successful in 1m2s
WAI examples / WAI examples · portable · linux (pull_request) Successful in 10m29s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Has been cancelled
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (pull_request) Has been cancelled
wai-pack / wai-pack · linux-arm64 (pull_request) Has been cancelled
wai-pack / wai-pack · independent verifier (Python) (pull_request) Has been cancelled
wai-pack / wai-pack · the floor through a media prober (pull_request) Has been cancelled
wai-pack / wai-pack · dependency licences (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux (pull_request) Has been cancelled
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Has been cancelled
WAI Studio / Studio in WebKit · linux (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · linux (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
route-record: version 3 states what a hop delivered by its count and root
A record of version 2 lists the served attempt's outputs, at most 1024, and a
package of a long title holds an object per piece and rung, thousands of them:
its record could not be stated, and seal_delivered sealed one WAI's verifier
refuses.

Version 3, on a price book of version 2, states `delivered`: the count of the
objects and their commitment, the root the hop's receipt already names. The
record is the same size whatever was delivered, and the receipt is held to the
root. An object is shown to be one of them by its inclusion proof (§6.1),
held as jwp-receipts holds an object's: the index below the count, exactly
ceil(log2 count) siblings, the walk from its leaf ending at the root.

The receipt ledger reads a job source under a record of version 3: each output
gives `proof`, and is one its hop delivered when the proof holds; a decode of
version 5 is held to its places and its count. Versions 1 and 2 of the record
read and verify as before. Routes 109 to 126 vectors, ledger 108 to 120; both
second implementations read version 3, the ledger's checking every proof with
the route verifier's inclusion_proof.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 09:03:18 -05:00
..
README.md route-record: version 3 states what a hop delivered by its count and root 2026-11-01 09:03:18 -05:00
vectors.json route-record: version 3 states what a hop delivered by its count and root 2026-11-01 09:03:18 -05:00

live-conformance/ledger — the receipt ledger

The corpus of extensions/receipt-ledger.md §11, in one file, vectors.json:

  • sources: the sources the vectors bill from, by name, each a source document of §5.1;
  • vectors: verification documents (§7.1), each a tariff, an invoice, the previous invoice or null, and the names of its sources in order, with the outcome §7.3 gives it;
  • keys: the seller's, the buyers' and the two delivering parties' public keys.

Ledger equivalence. For each vector, a conforming verifier given its tariff, its invoice, its previous invoice and its sources, resolved by name, reaches the outcome the vector states:

  • refuse: the reason and where, at: ["tariff"], ["tariff", "seller"] or ["tariff", "buyer"], ["invoice"], ["previous"], ["source", k] for source k, or ["source", k, …] followed by the place the source's own extension gives (live-metering §5.1, settlement §8.2, packaging §9, live-ads §9.2);
  • accept: the invoice's digest, its tariff, currency, start and end, the number of records, each line (its source kind, source, unit, quantity, price, amount and the records it cites, each [kind, identity]), each energy row (scope, class, figures, joules and max_ppm), the unmetered figures and coverage of each scope, the amount, and the reports of §8: ads, one per ads source, and delivery, the parties and their overlaps.

The accepted vectors:

  • a_day: one day's invoice over a lesson room, two delivering parties (one viewer acknowledges part of one object from both, in windows that overlap; one party serves a fetch free; the other declares delivery to viewers with no key), a viewer that forwarded sealed objects and states no tariff of its own, a package, ads under a policy that requires presentation claims and under one that does not;
  • the_next_invoice: the next invoice of the chain, over a relay's session whose hop is unmetered (its room energy is partial) and a second package;
  • room_hops_of_three_classes: a room whose hops are a model, a counter and an estimate, under a tariff of its own: one row each;
  • streams_stitched_by_others: presentations of ads another party stitched, from three vectors of stitched/ (hls_stitched; form1_prefetch, whose form-1 receipt states its own quartiles and spend beside the presented ones; and squeezeback, a shared break whose sessions' own claims are not all presented), under a tariff whose ad scope is the stitchers that corpus accepts; its report is stitched-presentation §7.5's statement, unchanged;
  • jobs_routed_and_served (version 2, §4.5): a month of media jobs routed by the route corpus's router, beside a package, under a tariff of version 2 that prices wai.video.int_motion per job and per subpixel and wai.video.av1 per job: the served int_motion jobs are billed from their billed hop and their output's decode receipt (work_pixel_ops); the failover is billed at the fallback's price; the job served past its deadline and the one every allowed hop failed bill nothing; the jobs' energy is the serving hops' figures, a counter row and a model row, and the job whose serving hop was unmetered is counted unmetered (coverage partial);
  • jobs_priced_per_operation (version 3, §4.6): the same jobs under a tariff of version 3, which prices each job by its serving capability and its operation, with a decode of wai.video.int_motion beside the encodes: the encodes and the decode are billed per job and per subpixel at their own prices, and the failover at the fallback's encode price;
  • a_rerun_billed (version 3, §6.9): the next invoice of that chain bills job-0001 run again two days later, a new route record and a new hop receipt, its output the decode receipt the first invoice already lists: the work is billed once, and the output is the evidence, cited again;
  • one_output_under_two_hops (version 3): job-0001 and its re-run in one invoice: both billed, the output receipt they share cited once and its subpixels billed for each hop;
  • an_operation_the_tariff_does_not_price (version 3): a tariff that prices int_motion's encode and not its decode: the decode bills nothing, and its hop's energy is stated;
  • version_2_routes_under_version_3 (version 3, §5.1): jobs routed under the route record's version 2, its price book pricing each operation apart with measured failures and each served hop stating its outputs: an encode, a failover whose failed hop was metered, billed at the endpoint that served, a decode, a hop past the deadline and three that failed, which bill nothing, and a failover whose failed hop's figure states no class, which version 3 does not read; each output receipt is of the clip its hop states it delivered;
  • version_4_by_the_byte_and_the_work (version 4, §4.7): the lesson room's receipt of version 2 (metering/'s bytes_out_priced) billed by its bytes out beside its time, a package listed, no storage yet, and the run of package.build that made it (package_run) billed per run and per work unit of the package, its receipt cited, and those jobs at their own prices, with every hop's energy: the billed hops' in jobs, the failed and late hops' in unbilled_hops, one of them unmetered;
  • version_4_storage_held_through_a_period (version 4): the next invoice of that chain bills the package the first holds for the byte-days of its own period, and the same package made again by a new run (package_run_again), its work billed again and its receipt cited again, beside a second package listed;
  • version_5_a_decode_held_to_its_frames (version 5, §4.8): an int_motion decode (job_v5_decode) whose served hop states it delivered one animated PNG of the clip's frames, its receipt re-derived from the codestream it read and each frame's samples hashing to the receipt's frame, billed at the decode's prices beside an encode held to its codestream as in version 4. The animation is written here by png_still::encode_animation from the clip the decode reads, and each refused animation is that one with one rule broken, its chunks rewritten with good CRCs.
  • route_record_3_outputs_proved_among_what_was_delivered (route-record §3.4, §6.1; §5.1 here): jobs routed here under the route record's version 3, whose served hops state what they delivered by its count and root, each output giving its inclusion proof: an encode (job_v3r_encode) whose clip is the second of two objects, a decode of version 5 (job_v3r_decode) whose animation is its one object, and a package's run (package_run_v3r) whose receipt is the first of 1,501 objects, the rest standing for the package's own; billed under the tariff of version 5.

Every other vector is refused, a control of one defect: each reason of §10, the reused codes, and a refusal of each source kind by its own extension.

Provenance. Generated here: wai_receipt_ledger_vectors gen writes vectors.json from fixed seeds (the seller, the buyers, the two delivering parties, their viewers and objects) and from sources taken unchanged from the corpora of the extensions the ledger reads: rooms and their receipts from metering/ (lesson, mixed_classes, receipt_bad_signature, relay_recorded, bytes_out_priced), the forwarding viewer's statement and the room its hop records name from settlement/, ad rooms from ads/ (live_break, gap) and presentation/ (video_rule, ceiling_exceeded_by_presented), streams stitched by others from stitched/ (hls_stitched, form1_prefetch, squeezeback, with the manifests, responses and receipts they name, by their bytes), media jobs from routes/ (served_first_try, failover_after_a_server_error, served_after_the_deadline, served_by_an_unmetered_hop, every_allowed_survivor_failed, served_by_a_hop_whose_figure_states_no_class, a_failed_hop_billed, an_unknown_energy_ranks_last), each int_motion job's output a decode receipt sealed here over wai-rs/tests/vectors/int_video/int_video_bitstream.wiv1; the version-3 jobs (job_decode, job_rerun, job_rerun_replays_its_hop, job_claims_another_hop) routed here by that corpus's router under its price book and policy, their hop receipts sealed under its hop key, the replayed and the claimed one being served_first_try's own; the jobs of version 2 (job_v2_*) routed here by that router under the route corpus's price book of version 2, and the runs of package.build (package_run*) under a price book of version 2 of its own; and the packages video-base-01 and video-staged-01 of pack-conformance/packs/. When one of those corpora is regenerated, so is this one. Nothing here was fetched from outside the repository.

Regenerate and check:

cd wai/wai-rs
cargo run -q --no-default-features --features receipt_ledger --bin wai_receipt_ledger_vectors -- gen ../live-conformance/ledger
cargo run -q --no-default-features --features receipt_ledger --bin wai_receipt_ledger_vectors -- verify ../live-conformance/ledger
cargo test -q --no-default-features --features receipt_ledger --test receipt_ledger
python3 -I ../live-conformance/receipt_ledger_verify.py ../live-conformance/ledger

The second implementation, receipt_ledger_verify.py, shares no code with wai-rs. It verifies each source with the second implementation of that source's own corpus, recomputes every line, citation, row and report, requires every mutated copy of the corpus to fail, and requires the corpus to catch it with each of its own checks dropped.