| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
joule-moq-remote host agent / joule-moq-remote · does this change touch it (pull_request) Successful in 7s
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 6s
wai-app and Create / wai-app · does this change touch it (pull_request) Successful in 5s
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 7s
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 6s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 13s
wai-audit collector and player integration / does this change touch it (pull_request) Successful in 8s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (pull_request) Successful in 7s
WAI operation catalogue / does this change touch it (pull_request) Successful in 8s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 2m47s
WAI energy receipts / does this change touch it (pull_request) Successful in 12s
WAI conformance / does this change touch it (pull_request) Successful in 13s
wai-fleet service / does this change touch it (pull_request) Successful in 13s
WAI examples / WAI examples · does this change touch them (pull_request) Successful in 14s
wai-key-proxy / does this change touch it (pull_request) Successful in 7s
wai-ledger service / does this change touch it (pull_request) Successful in 7s
wai-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Successful in 10s
wai-pack / wai-pack · does this change touch it (pull_request) Successful in 11s
wai-quantum docs, course and locales / does this change touch it (pull_request) Successful in 7s
wai-quantum for JavaScript / does this change touch it (pull_request) Successful in 7s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (pull_request) Successful in 30s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 10s
wai-sink-android native sink library / does this change touch it (pull_request) Successful in 10s
wai-sink-swift native sink package / does this change touch it (pull_request) Successful in 11s
WAI Studio / does this change touch it (pull_request) Successful in 10s
wai-web wasm32 / does this change touch it (pull_request) Successful in 9s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m39s
WAI conformance / fast integer kernels, every x86_64 kernel set (AVX-512 silicon) (pull_request) Successful in 3m12s
wai-audit collector and player integration / collector · linux (pull_request) Successful in 1m1s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (pull_request) Successful in 1m37s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 5m30s
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 2m22s
WAI operation catalogue / the catalogue and every door · linux (pull_request) Successful in 5m5s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 29s
wai-quantum studio and desktop / desktop app · windows (pull_request) Successful in 10m32s
WAI conformance / faces from keypoints under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m37s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 3m21s
wai-fleet service / service · linux (pull_request) Successful in 2m6s
wai-key-proxy / proxy · linux (pull_request) Successful in 1m18s
wai-ledger service / service · linux (pull_request) Successful in 2m5s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 1m42s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 13m58s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 3m25s
wai-pack / wai-pack · linux (pull_request) Successful in 2m1s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (pull_request) Successful in 9s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m24s
wai-quantum docs, course and locales / the course and the command line's languages · linux (pull_request) Successful in 2m29s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 16m36s
WAI examples / WAI examples · portable · linux (pull_request) Successful in 10m18s
wai-quantum for JavaScript / javascript · linux (pull_request) Successful in 3m16s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Successful in 1m1s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 4m24s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Successful in 1m9s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 8m50s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 33s
wai-quantum studio and desktop / desktop app · linux (pull_request) Successful in 5m57s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 6m30s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 11m16s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (pull_request) Successful in 7m59s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (pull_request) Successful in 1m34s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 12m30s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 22m48s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 18m55s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 21s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 55s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 11m30s
wai-fleet service / service · macos (pull_request) Successful in 35s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 24m43s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 36m14s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 10m27s
wai-ledger service / service · macos (pull_request) Successful in 51s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 5m47s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 1m59s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 8m14s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 27m33s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 3m7s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 3m41s
wai-pack / wai-pack · macos (pull_request) Successful in 9m35s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 4m17s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 5m23s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 2m4s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 50m58s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 2m38s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 10m2s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 10m15s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 12m0s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 7m44s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 40m4s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h45m21s
Two providers of one capability have different list prices, and one price per capability overprices one or underprices the other. A job price now names an endpoint, or none for every endpoint. A price of any endpoint beside a price of one is refused: it would bill one job at both. A third party's hop is billed by what its record states the provider bills (route-record §6.2), in a new unit, `usage`, at the price of its endpoint and its unit. Only the billed hop's record reaches a line: what a provider billed for a failed hop is what the router's operator owes, and no line reads it. A record's `charge` reaches no line either, since a line adds jobs and a provider's figure is in its own terms; the line cites the record, which states it signed. The proposal to put it on the line is dropped. An upscale and a tone mapping get their own output forms. Each record is proved by its own extension's verifier from what it read, and what the hop delivered is held to what that proves, so the subpixels billed are what the derivation gives. Their records are evidence, as an output receipt is, and a new hop's run may cite them again. These three moves share one version, so a buyer signs one new tariff and not two. The tariff of versions 1 to 5 reads and bills as before. The corpus's `invoice_version` control used version 6 as unknown, and now uses 7. The fixtures are small enough that the corpus's debug test takes as long as it did without them, about 11.5 minutes on the Framework, and the README's commands use a release build, which regenerates it in about a minute. Co-Authored-By: Claude Opus 5.5 <[email protected]> |
||
| .. | ||
| README.md | ||
| vectors.json | ||
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 atariff, aninvoice, thepreviousinvoice ornull, and the names of itssourcesin order, with theoutcome§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: thereasonand where,at:["tariff"],["tariff", "seller"]or["tariff", "buyer"],["invoice"],["previous"],["source", k]for sourcek, 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'sdigest, itstariff,currency,startandend, the number ofrecords, each line (its source kind, source, unit, quantity, price, amount and the records itcites, each[kind, identity]), each energy row (scope, class, figures, joules andmax_ppm), theunmeteredfigures andcoverageof each scope, theamount, and thereportsof §8:ads, one per ads source, anddelivery, 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 ofstitched/(hls_stitched;form1_prefetch, whose form-1 receipt states its own quartiles and spend beside the presented ones; andsqueezeback, 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 priceswai.video.int_motionper job and per subpixel andwai.video.av1per job: the servedint_motionjobs 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 ofwai.video.int_motionbeside 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 billsjob-0001run 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-0001and 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 pricesint_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/'sbytes_out_priced) billed by its bytes out beside its time, a package listed, no storage yet, and the run ofpackage.buildthat 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' injobs, the failed and late hops' inunbilled_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): anint_motiondecode (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 bypng_still::encode_animationfrom 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.version_6_a_third_partys_usage_per_endpoint(version 6, §4.9): a third party's jobs, eachthird_partyrecord naming what the provider bills, billed per job and by that usage at its endpoint's price: gen.alpha (job_tp_alpha), gen.beta (job_tp_beta), a failover whose failed hop's billed usage reaches no line (job_tp_failover), a job given no record, billed by the job alone (job_tp_unrecorded), one in another unit at that unit's price (job_tp_images), and one in a unit no price names (job_tp_a_unit_no_price_names).version_6_holds_what_version_5_holds: the encode, decode and package run of version 5's route records of version 3, at prices of any endpoint.version_6_an_upscale_and_a_tone_mapping: an upscale of two pictures (job_upscale) and two tone mappings, one of whose records states two pictures of one rendering (job_tonemap_two_pictures_of_one_rendering), each re-derived from what it read; andversion_6_an_upscale_run_again, the next invoice, billing the upscale's new hop and citing its records again.version_6_re_derived_jobs_under_a_list: an upscale and a tone mapping whose route records are of version 2, so that no output gives a proof.
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; the third party's
jobs (job_tp_*), the upscales (job_upscale*) and the tone mappings (job_tonemap*) routed here by
that router, the upscales derived under the prior generic.wsr of
live-conformance/upscale/priors/ and the tone mappings' envelopes written
by exact-tonemap's corpus encoder; 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 --release --no-default-features --features receipt_ledger --bin wai_receipt_ledger_vectors -- gen ../live-conformance/ledger
cargo run -q --release --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.