wai: receipts, keys, grants and parameter sets over HTTP; key logs anchored over TLS (W3-3) #200

Merged
dcharlot merged 23 commits from wai/w3-3-http-receipts into main 2026-10-10 17:16:05 -04:00
200 changed files with 7574 additions and 165 deletions

View file

@ -283,13 +283,22 @@ jobs:
# does: objects named by their content hash with their head proofs, a sequence's union
# and floor, the origin's headers, ranges and If-Range on loopback, and a fetch by
# the byte-range procedure whose record states energy as not measured; and `hls`,
# `mpd`, `seal-playlist` and `check-playlist`, whose receipts need video_manifest.
# `mpd`, `seal-playlist` and `check-playlist`, whose receipts need video_manifest;
# and `receipts`, an object's receipt index checked over HTTP with its signers
# confirmed under a key log, which needs key_discovery: the log anchored over TLS
# (cli_tls; the binary's own tests run its TLS client against servers under a test
# CA, tests/fixtures/tls/), never over plaintext, and a plaintext test anchor
# labelled as one. The second run builds without cli_tls: the CLI then refuses to
# anchor and connects to nothing.
# Cargo.toml declares it with required-features = ["http"]. tests/dash_read_bounds.rs
# holds Appendix I's reader to the document's size under a counting allocator, and an
# element's attributes to linear CPU time; a binary of its own, one test.
- name: The wai http commands
working-directory: wai/wai-rs
run: cargo test --no-default-features --features http,video_manifest --test cli_http --test dash_read_bounds
shell: bash
run: |
cargo test --no-default-features --features http,video_manifest,key_discovery,cli_tls --bin wai --test cli_http --test dash_read_bounds
cargo test --no-default-features --features http,video_manifest,key_discovery --test cli_http -- receipts_never_anchors_over_plaintext
# tests/staged_moq.rs runs the MoQ trace of staged-conformance/moq/ (moq-streaming-format
# §4.1) with signed receipts: a chain for each track, a receipt held for its parent and
# admitted when it arrives, the relay's per-hop delivery timeout, dropped objects checked
@ -338,17 +347,19 @@ jobs:
working-directory: wai/wai-rs
run: cargo test --no-default-features --features key_discovery --test wai_keys_cli
# key_log has no I/O, clock or threads, so a browser sink could run it before it
# instantiates a module (§7.9); no browser sink does yet. This step checks that it
# builds for wasm32 on the unix legs (the target is added to the pinned toolchain
# here; the Windows host runner is not set up for it).
- name: key_log builds for wasm32 (unix)
# instantiates a module (§7.9); no browser sink does yet. Nor do the HTTP binding's
# receipts and keys (http-delivery §8.1–§8.5), which a browser client checks what it
# fetched with. This step checks that both build for wasm32 on the unix legs (the
# target is added to the pinned toolchain here; the Windows host runner is not set up
# for it).
- name: key_log and the HTTP receipts build for wasm32 (unix)
if: matrix.os != 'windows'
shell: bash
working-directory: wai/wai-rs
run: |
set -euo pipefail
rustup target add --toolchain 1.98.0 wasm32-unknown-unknown
cargo check --lib --target wasm32-unknown-unknown --no-default-features --features key_discovery
cargo check --lib --target wasm32-unknown-unknown --no-default-features --features key_discovery,http
# The corpus-verify loop is genuinely shell-specific (a helper that groups
# log output and propagates the first non-zero exit), so it ships once per
@ -546,9 +557,13 @@ jobs:
# the head proof (every committed proof rebuilt from the text), response checks, plans,
# selection, the byte-range procedure and its fallback, the codecs union and floor, the
# playlists (read, rendered, held adjacent, the classical master unchanged), playlist
# receipts (Ed25519 from RFC 8032) and the live edge, and the adaptation policies,
# checked first against published BLAKE3 vectors. Standard library only. Its
# mutations and the differential against wai-rs run in wai-http.yml's falsify job.
# receipts (WAI's strict Ed25519, _ed25519.py) and the live edge, and the adaptation policies,
# checked first against published BLAKE3 vectors, with the standard library alone;
# and the receipts, key logs, grants files and parameter sets of §8.1–§8.5, through
# http_receipts.py and the corpora's own verifiers of jwp-receipts, which need the
# `cryptography` package installed above (without it those cases fail, never skip).
# Its mutations and the differential against wai-rs run in wai-http.yml's falsify
# job.
- name: http_verify.py
working-directory: wai
shell: bash
@ -558,7 +573,9 @@ jobs:
# refines, layers declared against their bases, layers over WAI2 components, objects
# past the first request through a tampering origin; playlists, adjacent pairs,
# published masters, renderings, adaptation states, the integer log and changed
# receipt files) with wai-rs's outcomes, and
# receipt files; receipt files, indexes, grants files and key logs of §8.1–§8.5,
# whose cases need the `cryptography` package installed above) with wai-rs's
# outcomes, and
# http_verify.py must give every one, a refusal by the same code. It prints each
# family's count of cases and of refusals. Two fixed seeds, so a run is reproducible.
- name: The HTTP differential outside the corpus (wai-rs against http_verify.py)
@ -566,7 +583,7 @@ jobs:
shell: bash
run: |
set -euo pipefail
(cd wai-rs && cargo build --no-default-features --features http,video_manifest --bin wai_http_vectors)
(cd wai-rs && cargo build --no-default-features --features http,video_manifest,key_discovery --bin wai_http_vectors)
for seed in 11 12; do
wai-rs/target/debug/wai_http_vectors fuzz http-conformance --seed "$seed" --count 400 --out "$RUNNER_TEMP/http-fuzz-$seed.json"
python3 http-conformance/http_verify.py cases "$RUNNER_TEMP/http-fuzz-$seed.json" http-conformance

View file

@ -1,6 +1,7 @@
name: WAI HTTP delivery
# extensions/http-delivery.md: two jobs beside the corpus checks in wai-conformance.yml.
# extensions/http-delivery.md: the falsification, the differential and the cache rules,
# beside the corpus checks in wai-conformance.yml.
#
# falsify — the HTTP corpus tool and its independent verifier must catch defects. Each
# patch in wai/http-conformance/falsify/ breaks one function of wai-rs (the content
@ -12,12 +13,27 @@ name: WAI HTTP delivery
# bytes after a mismatch, an unanswered base, the selection digest test, the component
# conformance that withholds an envelope's refinements; and on the
# playlist side adjacency, rendering, bandwidths, durations, the classical master, the
# playlist receipt and its chain, listed cids, and the adaptation policies); it
# is applied to a fresh worktree, the build must succeed, and `wai_http_vectors verify`
# must fail naming the cases on the patch's first line. Then each `http_verify.py
# --mutate` must fail, and the differential: wai-rs writes random envelopes' covered
# prefixes and head proofs, the Python verifier accepts every one, and refuses exactly
# the ten it changes one chaining-value byte in.
# playlist receipt and its chain, listed cids, and the adaptation policies; and on the
# receipt side the receipt file's name, legacy groups, the parent walk and its bound,
# the caps on files, indexes and their items, fetching each name once within budgets
# of files and bytes, what a client holds of an object, the items a claim attaches
# through, §3.1 step 6 for every class and the declarations it reads by name, the
# ancestor rule, its recovery and the publisher key it uses, a claim's parent,
# anchoring from the origin only and the request that anchors, cached logs, grants
# files and sets held by their pins); it
# is applied to one worktree of the head, built once and rebuilt incrementally per
# patch under the `falsify` profile (overflow checks and debug assertions on, as in the
# tests), and `wai_http_vectors verify` must fail naming the cases on the patch's first
# line; the patch is then reversed and the tree must be clean. Each `http_verify.py
# --mutate` must exit non-zero naming the cases falsify/mutations.txt lists for it; a
# crash, or a non-zero exit that names none, is a failure. Both run in shards (falsify/run.sh --patches I/N, --mutations
# I/N), each printing what it ran and failing unless that is exactly what was assigned
# to it; `shards` checks the shards the matrix declares cover every patch and every
# mutation once, so none is dropped silently.
#
# differential — the corpus verified both ways, and the differential: wai-rs writes
# random envelopes' covered prefixes and head proofs, the Python verifier accepts every
# one, and refuses exactly the ten it changes one chaining-value byte in.
#
# cache-conformance — the cache rules (§9). wai/cache-conformance/run.sh stages the
# corpus's objects behind the reference origin (`wai http origin`) and runs driver.py
@ -45,7 +61,29 @@ on:
- 'wai/wai-rs/src/bin/wai_cli/http.rs'
- 'wai/wai-rs/src/bin/wai_cli/http_vectors.rs'
- 'wai/wai-rs/src/bin/wai_cli/http_vectors_playlists.rs'
- 'wai/wai-rs/src/bin/wai_cli/http_vectors_receipts.rs'
- 'wai/wai-rs/src/bin/wai_cli/http_playlists.rs'
# Receipts, keys, grants and sets over HTTP (§8.1–§8.5) are checked by the receipt,
# claim, key-log and pin code, and on the Python side by their own verifiers.
- 'wai/wai-rs/src/jwp_delivery.rs'
- 'wai/wai-rs/src/claim_receipt.rs'
- 'wai/wai-rs/src/claim_receipt/**'
- 'wai/wai-rs/src/key_log.rs'
- 'wai/wai-rs/src/pin.rs'
# ...and by what those read with: JCS, signer identities, step 6's figures and
# classes, and the OER receipts an energy claim names.
- 'wai/wai-rs/src/jcs.rs'
- 'wai/wai-rs/src/signer_id.rs'
- 'wai/wai-rs/src/energy_class.rs'
- 'wai/wai-rs/src/energy_figure.rs'
- 'wai/wai-rs/src/energy_binding.rs'
- 'wai/wai-rs/src/energy_report.rs'
- 'wai/wai-rs/src/claim_text.rs'
- 'wai/wai-rs/src/oer.rs'
- 'wai/jwp-conformance/jwp_verify.py'
- 'wai/claim-conformance/claim_verify.py'
- 'wai/signer-conformance/signer_verify.py'
- 'wai/oer-conformance/oer2_verify.py'
# The playlists render through hls_render and are sealed by wai_video_manifest.
- 'wai/wai-rs/src/hls_render.rs'
- 'wai/wai-rs/src/wai_video_manifest.rs'
@ -75,7 +113,29 @@ on:
- 'wai/wai-rs/src/bin/wai_cli/http.rs'
- 'wai/wai-rs/src/bin/wai_cli/http_vectors.rs'
- 'wai/wai-rs/src/bin/wai_cli/http_vectors_playlists.rs'
- 'wai/wai-rs/src/bin/wai_cli/http_vectors_receipts.rs'
- 'wai/wai-rs/src/bin/wai_cli/http_playlists.rs'
# Receipts, keys, grants and sets over HTTP (§8.1–§8.5) are checked by the receipt,
# claim, key-log and pin code, and on the Python side by their own verifiers.
- 'wai/wai-rs/src/jwp_delivery.rs'
- 'wai/wai-rs/src/claim_receipt.rs'
- 'wai/wai-rs/src/claim_receipt/**'
- 'wai/wai-rs/src/key_log.rs'
- 'wai/wai-rs/src/pin.rs'
# ...and by what those read with: JCS, signer identities, step 6's figures and
# classes, and the OER receipts an energy claim names.
- 'wai/wai-rs/src/jcs.rs'
- 'wai/wai-rs/src/signer_id.rs'
- 'wai/wai-rs/src/energy_class.rs'
- 'wai/wai-rs/src/energy_figure.rs'
- 'wai/wai-rs/src/energy_binding.rs'
- 'wai/wai-rs/src/energy_report.rs'
- 'wai/wai-rs/src/claim_text.rs'
- 'wai/wai-rs/src/oer.rs'
- 'wai/jwp-conformance/jwp_verify.py'
- 'wai/claim-conformance/claim_verify.py'
- 'wai/signer-conformance/signer_verify.py'
- 'wai/oer-conformance/oer2_verify.py'
# The playlists render through hls_render and are sealed by wai_video_manifest.
- 'wai/wai-rs/src/hls_render.rs'
- 'wai/wai-rs/src/wai_video_manifest.rs'
@ -99,8 +159,94 @@ on:
- cron: '17 4 * * 1'
jobs:
# The path filters above gate the trigger, which on this forge is the push delta: a
# rebase fires them all. This gates the work, from the pull request's own diff, reading
# the path list out of this file (scripts/pr-touches-paths.py); a push to main or the
# schedule has no pull-request context and runs everything.
relevant:
name: WAI HTTP · does this change touch it
runs-on: linux
outputs:
run: ${{ steps.gate.outputs.run }}
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- id: gate
run: |
set -euo pipefail
r=$(python3 scripts/pr-touches-paths.py .github/workflows/wai-http.yml \
"${{ github.event.pull_request.base.sha }}" \
"${{ github.event.pull_request.head.sha }}")
echo "this change touches WAI HTTP: $r"
echo "run=$r" >> "$GITHUB_OUTPUT"
# Every patch and every mutation runs in exactly one shard: the one whose index mod N
# it is, in the sorted list. The shards job reads the list below; keep it on one line.
falsify:
name: HTTP corpus · falsification and differential
name: HTTP corpus · falsify ${{ matrix.shard }}
needs: relevant
if: needs.relevant.outputs.run == 'true'
runs-on: linux
strategy:
fail-fast: false
matrix:
shard: ['patches 0/3', 'patches 1/3', 'patches 2/3', 'mutations 0/3', 'mutations 1/3', 'mutations 2/3']
steps:
- uses: actions/checkout@v5
- name: Install Rust 1.98.0
if: startsWith(matrix.shard, 'patches')
shell: bash
run: |
export PATH="$HOME/.cargo/bin:$PATH"
command -v rustup >/dev/null 2>&1 || \
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0
rustup toolchain install 1.98.0 --profile minimal
rustup default 1.98.0
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
- uses: actions/setup-python@v5
with:
python-version: '3.11'
# http_verify.py checks the receipt and key cases through the corpora's receipt,
# claim and key-discovery verifiers, which check Ed25519's equation with this
# package; its mutations reach those cases.
- name: Install the Ed25519 library
shell: bash
run: python -m pip install cryptography
- name: Every patch or mutation of this shard is caught
shell: bash
env:
CARGO_TARGET_DIR: ${{ runner.temp }}/falsify-target
SHARD: ${{ matrix.shard }}
run: |
git config --global --add safe.directory "$GITHUB_WORKSPACE"
set -- $SHARD
bash wai/http-conformance/falsify/run.sh "$RUNNER_TEMP/falsify" "--$1" "$2"
# The shards the matrix above declares cover every patch and every mutation exactly
# once: a shard dropped from the list, or a total that disagrees, fails here.
shards:
name: HTTP corpus · every patch and mutation in exactly one shard
needs: relevant
if: needs.relevant.outputs.run == 'true'
runs-on: linux
steps:
- uses: actions/checkout@v5
- shell: bash
run: |
set -euo pipefail
line=$(grep -E "^ +shard: \[" .github/workflows/wai-http.yml)
mapfile -t shards < <(printf '%s\n' "$line" | grep -oE "'(patches|mutations) [0-9]+/[0-9]+'" | tr -d "'")
bash wai/http-conformance/falsify/run.sh "$RUNNER_TEMP/falsify" --check-shards "${shards[@]}"
differential:
name: HTTP corpus · verified both ways, and the differential
needs: relevant
if: needs.relevant.outputs.run == 'true'
runs-on: linux
steps:
- uses: actions/checkout@v5
@ -119,17 +265,26 @@ jobs:
with:
python-version: '3.11'
# One target directory for every patched build, so only the wai crate rebuilds.
- name: Every patch is caught; every mutation is caught; the differential holds
- name: Install the Ed25519 library
shell: bash
run: python -m pip install cryptography
- name: The corpus, both ways; the differential
shell: bash
env:
CARGO_TARGET_DIR: ${{ runner.temp }}/falsify-target
run: |
set -euo pipefail
git config --global --add safe.directory "$GITHUB_WORKSPACE"
bash wai/http-conformance/falsify/run.sh "$RUNNER_TEMP/falsify"
(cd wai/wai-rs && cargo build --profile falsify --no-default-features --features http,video_manifest,key_discovery --bin wai_http_vectors)
"$CARGO_TARGET_DIR/falsify/wai_http_vectors" verify wai/http-conformance
(cd wai/http-conformance && python3 http_verify.py .)
bash wai/http-conformance/falsify/run.sh "$RUNNER_TEMP/falsify" --differential
cache-conformance:
name: cache rules · controls and labelled caches
needs: relevant
if: needs.relevant.outputs.run == 'true'
runs-on: linux
steps:
- uses: actions/checkout@v5

View file

@ -275,3 +275,9 @@ jobs:
fi
cargo tree --locked -e normal,build --target all -i cbindgen | grep -q '^cbindgen v' || { echo "::error::cbindgen not found as wai's build dependency"; exit 1; }
echo "cbindgen is a build dependency only"
# The `wai` binary's HTTP commands with their TLS client (the cli_tls feature:
# rustls and the operating system's trust store), under wai-rs's own deny.toml: the
# same allow-list, over the binary's features on the hosts it is built for.
- name: cargo deny check licenses (the wai binary's TLS client)
working-directory: wai/wai-rs
run: cargo deny --locked check licenses

View file

@ -682,6 +682,64 @@ wire format may change and such changes are recorded here.
The corpus gains a case for each, and `http_verify.py` agrees with wai-rs on them and
on a seeded differential outside the corpus, in which a refusal must match by its
code and each family reports how many cases it generated and how many were refused.
- **Receipts, keys, grants and parameter sets** (http-delivery §8.1–§8.5, §10.5):
- a receipt file `rcpt/<h>.json` holds one group receipt (in the labelled payload) or
claim in JCS, at most 1 MiB, read as jwp-receipts reads one and refused unless its
link hash is its name (`receipt_name_mismatch`, `receipt_not_served`,
`receipt_too_large`); a legacy group, whose name does not cover its parent, is
refused (`receipt_legacy_group`);
- an index, at most 4 MiB with at most 256 delivery items and 256 claims
(`receipt_index_too_large`), is read item by item (`receipt_index_malformed`), each
receipt file fetched once per index, at most 1024 in all
(`receipt_fetch_budget_exhausted`) and 64 MiB read in all, each file read no further
than what remains of that (`receipt_fetch_bytes_exhausted`), each cap with its reason
stated: each delivery item's group goes through
jwp-receipts §3 against the client's chains, a missing parent fetched by its link up
to 64 of them, never more, and never skipped (`parent_not_held`, with where the walk
stopped), a joining client anchoring instead; its object receipt through steps 4
and 5 against what the client holds — the hash recomputed over the envelope, the cid
a head proof established (§8.3), or nothing, which is `inclusion-verified` and gives
no property reading (§10.5); each claim by its subject against the items that
passed, its parent fetched by its link, then §3.1 step 6 against what those items
deliver and the receipts it names (`figure_not_held`, `context_not_held` where the
client does not hold them; an energy claim naming an OER receipt, which this revision
does not carry over HTTP, is `context_not_held`), a declaration it names read as
§8.1 reads every file fetched by name before step 6 compares it, a recovery record
checked with the client's matchers whether or not it holds the object, and a soft
binding of another object attesting the ancestor only through §3.2's recovery,
under the held publisher key that signed it;
- a key log anchors only from the origin's own location over HTTPS, answered `200`
with no redirect (`key_log_not_from_origin`), from a retrieval the verifier made
itself, asking with `Cache-Control: no-cache`; a key log is read to 1 MiB and a longer
one refused, anchored or cached (`key_log_too_large`); a log through any cache adds revisions
and never moves the anchor, an older copy reported (`key_log_rolled_back`); a grants
file is a locator (`grants_file_malformed`); a key status is served for a quarter of
the head's `status_max_age_s` at most; a module grant is §7.9's form, and a JCP grant
is carried only by reference in the receipt that names it;
- a parameter set served by its digest is held only by its pin and §7.9
(`pin::verify_bytes_with`, `int_payload::resolve`), never by its name.
- `wai-rs`: `http_binding::receipts` and `http_binding::keys`;
`jwp_hash::EstablishedHash`, built only from bytes or by a fetch session whose head
proof verified (`FetchSession::established`); `ObjectReceipt::accept_hash` and
`verify_against_hash`, `WaiReceiptProperty::check_against_object_hash` and
`ReceiptChains::verify_admitted_object`, which the existing checks call;
`energy_figure::HeldObject`, an object receipt's figure for step 6; `wai http
receipts`, which fetches under a deadline and the caps above, follows no redirect,
and with `--key-origin` retrieves the key log from the origin itself over TLS
(the `cli_tls` feature: a TLS client validating against the operating system's
trust store; SNI and the certificate check name the origin's host, port 443 by
default, each address the host resolves to tried in turn), every step within one
deadline however slowly a peer answers; a build
without it refuses to anchor rather than fetch the log over plaintext, and the
test-only `--test-plaintext-connect` anchors with its own path, `test-plaintext`,
wherever the anchor or a confirmation is reported, as anchoring nothing a verifier
may rely on. A group or
object receipt whose `kind` is not a string is `wrong_kind`
(jwp-receipts §3 step 1), as the independent verifier already read it.
- The corpus serves receipts, indexes, a key log, a status, a grants file and a set;
`http_receipts.py` checks them for `http_verify.py` through the jwp-receipts, claim
and key-discovery verifiers, and the differential adds receipt files, indexes,
grants files and key logs.
- No envelope byte or receipt byte changes for existing material.
### Packaging: objects, the stage index, the floor, catalogs and the package receipt

View file

@ -7,9 +7,10 @@
> live. No envelope byte and no manifest member changes. The reference implementation
> is in `wai-rs`: `http_binding` (feature `http`) for §3–§7, the origin side of §5
> and §9, the playlists of §10.4 and §11 and the adaptation policies of Appendix F;
> `wai_video_manifest` (feature `video_manifest`) for the playlist receipts of §8.6;
> and the `wai http` commands of the `wai` tool. Keywords **MUST**, **MUST NOT**,
> **SHOULD**, **MAY** are RFC 2119 / RFC 8174.
> `http_binding::receipts` (with `receipt_claims`) and `http_binding::keys` (with
> `key_discovery`) for §8.1–§8.5; `wai_video_manifest` (feature `video_manifest`) for
> the playlist receipts of §8.6; and the `wai http` commands of the `wai` tool.
> Keywords **MUST**, **MUST NOT**, **SHOULD**, **MAY** are RFC 2119 / RFC 8174.
## 1. Scope
@ -389,19 +390,48 @@ pin was refused may also fail its digest, which only its bytes would show.
### 8.1 Receipt files
`rcpt/<h>.json`, resolved against the object's URI, holds exactly one receipt: a group
receipt whose link hash ([jwp-receipts](jwp-receipts.md) §3 step 3) is `h`, in its
canonical form, or a claim whose `link_hash` (§2.4.3) is `h`, in its JCS form. It is
immutable and served under §5.3's cache headers with `Content-Type: application/json`.
A client refuses a receipt file whose computed hash is not its name
(`receipt_name_mismatch`). A group receipt's `parent_receipt_hash` is the name of its
parent's file, so a client resolves [jwp-receipts](jwp-receipts.md) §3 step 3 by
fetching `rcpt/<parent_receipt_hash>.json`, and reports `parent_not_held` when it
cannot, never skipping the step.
receipt in the labelled payload whose link hash ([jwp-receipts](jwp-receipts.md) §3 step
3) is `h`, in its JSON form (§2.4.1 there), or a claim whose `link_hash` (§2.4.3) is `h`,
each written in JCS (RFC 8785), in at most 1 MiB (1 048 576 bytes). It is immutable and
served under §5.3's cache headers with `Content-Type: application/json`. A client reads at
most that many bytes of a receipt file and refuses a longer one (`receipt_too_large`); it
reads the file as [jwp-receipts](jwp-receipts.md) §3.1 step 1 reads JSON, then as the
receipt it fetched it for — a group receipt by §3 step 1, a claim by §3.1 steps 1–2, with
their reasons — and refuses it unless its link hash, computed from what it read, is its
name (`receipt_name_mismatch`). A group in the legacy payload is refused
(`receipt_legacy_group`): its link hash does not cover its parent, so a server could
serve other bytes, naming another parent, under the one name. A name at which nothing is
served is `receipt_not_served`. Every file a client fetches by name — a group, a parent,
a claim, or a declaration a claim names (§8.2) — is read so first, and refused with these
reasons before any check of what it holds. A receipt is a few kilobytes; the cap leaves
room for claim bodies that list many objects, and bounds what one name costs.
A group receipt's `parent_receipt_hash` is the name of its parent's file. A client
resolves [jwp-receipts](jwp-receipts.md) §3 step 3's `parent_not_held` by fetching
`rcpt/<parent_receipt_hash>.json`, never by skipping the step: it reads the file as a
group receipt of that name, requires it on the group's key and track (a group of another
chain is never a predecessor), and offers it to its chains before the group; while that
parent is itself `parent_not_held`, it fetches the parent's parent the same way. Once one
is admitted, the parents fetched after it are offered again, nearest it first, then the
group. A client fetches at most 64 parents for one group, whatever bound it is asked to
use, and MAY hold a lower one. A parent that is not served, that does not read or is
refused, that is of another chain, a walk past the bound, and a walk that would pass the
index's fetch budget (§8.2), each leave the group `parent_not_held`, and the client says
which. A client that declares it joins (jwp-receipts §3 step 3, *Joining*) anchors a
chain it holds nothing of at the first group instead, walks nothing, and reports the
chain anchored. A claim's `parent_receipt_hash` names its parent's file the same way:
for §3.1 step 5 the client fetches it, reads it as a claim of that name and verifies it
under §3.1 steps 1–4, and a parent not served, or refused, leaves the claim
`parent_not_held`.
### 8.2 Receipt index
`<cid>.wai.receipts` is the sidecar carriage of the `WAI_RECEIPT` property
([moq-streaming-format](moq-streaming-format.md) §5):
([moq-streaming-format](moq-streaming-format.md) §5), and the place a client finds an
object's receipts by their hashes: each delivery item's group receipt by the property's
`group_receipt`, each claim about the object by its link hash — a `stage` claim about a
stage set's base ([jwp-receipts](jwp-receipts.md) §2.4.10) among them — and each of their
parents by the link its child names (§8.1).
```json
{ "kind": "wai-receipt-index", "object": "<cid>",
@ -410,25 +440,106 @@ cannot, never skipping the step.
```
It is mutable and is served with `Cache-Control: no-cache, no-transform` and an `ETag`
of its own. It is a locator, never evidence. A client checks each item on its own and
ignores, item by item, one that fails:
of its own. It is a locator, never evidence. A client reads at most 4 MiB (4 194 304
bytes) of it and refuses a longer one (`receipt_index_too_large`): room for the most
items and claims it may list. It reads it as
jwp-receipts §3.1 step 1 reads JSON, with exactly the members above, `kind` that string,
`object` 64 lowercase hexadecimal digits and the other two arrays, and refuses it whole
otherwise (`receipt_index_malformed`), when it lists more than 256 delivery items or more
than 256 claims (`receipt_index_too_large`), or when `object` is not the cid
(`receipt_not_about_object`). An index lists the groups an object was delivered under,
one per track and publisher, and each signer's latest claims, which chain to their
parents, so these bound a listing, not a history. Each item it lists is read and checked on its own, and one
that fails is ignored, with its reason, item by item: a delivery item is an object with
exactly `property` and `object_receipt` (`receipt_index_malformed`), whose property reads
as moq-streaming-format §5's (`property_invalid`) and whose object receipt reads as
jwp-receipts §2.4.2's; a claim entry is a link hash (`receipt_index_malformed`).
- a delivery item: the property's `content_hash` and the object receipt's
`content_hash` equal the cid (`receipt_not_about_object`); the group receipt is
fetched as `rcpt/<property.group_receipt>.json` and verified under
[jwp-receipts](jwp-receipts.md) §3 steps 1–5, step 4 as §8.3 states; the property
is checked against the object receipt as moq-streaming-format §5 states;
- a claim: verified under [jwp-receipts](jwp-receipts.md) §3.1; its `subject` is the
cid or the link hash of a group listed in the index. A soft-binding claim
([jwp-receipts](jwp-receipts.md) §2.6.2) is reported under the ancestor rule (§3.2):
as attesting the ancestor, never the object in hand.
To check one index, a client fetches each receipt file name once, keeping what was served
for the rest of the check, and fetches at most 1024 files in all, enough for every item
and claim an index may list, a declaration for each claim and full parent walks for a
few groups; a fetch past that is `receipt_fetch_budget_exhausted`. It reads at most 64 MiB
(67 108 864 bytes) of receipt files in all: it reads each file no further than what
remains of that budget, or than one byte past the file's cap where less remains of
neither; a file that reaches the end of the budget is refused, since whether it ends
there is not read, and once the budget is spent no further file is fetched
(`receipt_fetch_bytes_exhausted`). Without it, 1024 files at their cap would let one
index make a client read and hold a gibibyte. A client MAY hold lower budgets.
A delivery item is checked in this order:
1. the property's `content_hash` and the object receipt's are the cid
(`receipt_not_about_object`);
2. the group receipt is fetched as `rcpt/<property.group_receipt>.json` and read as
§8.1 states;
3. [jwp-receipts](jwp-receipts.md) §3 steps 1–3, against the chains the client holds,
missing parents recovered as §8.1 states;
4. §3 steps 4 and 5 for the object receipt, step 4 against what the client holds of the
object (§8.3): the object is then `delivered-verified`; or, for an object the client
did not receive, step 4 not run: it is `inclusion-verified`, never delivered;
5. the property: for a delivered object, against its object receipt as
moq-streaming-format §5 states (`property_invalid`, `property_disagrees`), which
gives the property's reading; for one not delivered, alone, giving no reading.
A claim is fetched as `rcpt/<link hash>.json` and read as §8.1 states, then checked
against the delivery items that passed the checks above for this cid, in the index's
order. Its `subject` is the cid, or, for a claim about a receipt, the link hash of the
group of one of those items: a group named only by an item that was refused, or by
nothing, attaches nothing, and the claim is `receipt_not_about_object`. Then
[jwp-receipts](jwp-receipts.md) §3.1 steps 1–4; step 5, its parent fetched as §8.1
states; and step 6, against the receipts it names that the client holds here:
- an `energy` claim, against the object receipt of each item delivered (step 4 run over
what the client holds of the object, §8.3), and against the OER receipt it names. This
revision carries no OER receipt over HTTP, so an energy claim that names one is
`context_not_held`;
- a `measurement` or `operating-point` claim, against the receipt that carries its
figure: for the `moq-jwp:object` profile, the object receipt of an item delivered under
the group the claim names;
- a `delivery-gap` claim, against the object receipt of an item at its coordinates,
verified by inclusion at least;
- a lawful-basis decision, and a recovery record, against the declaration it names,
fetched as `rcpt/<link hash>.json` and read as §8.1 states, whose reasons refuse it
first (another claim served under the declaration's name is `receipt_name_mismatch`);
a declaration that reads under its name and does not match is refused with step 6's
reason. A recovery record is also checked against the publisher key of the group of an
item that passed, the one that signed the declaration where there is one, and with
the client's matchers (§2.6.3 step 5), whether or not the client holds the object;
- a `reconstruct-session` claim, against its outputs, the objects it received and the
envelopes it received, none of which the index carries.
A claim is accepted only when step 6 ran against what it needs. A `measurement` claim
whose figure the client does not hold is `figure_not_held`, as §3.1 states; any other
claim whose step 6 needs a receipt the client does not hold is `context_not_held`. Neither
is accepted. A claim of a class step 6 checks against nothing is accepted after step 5.
A soft-binding claim ([jwp-receipts](jwp-receipts.md) §2.6.2) whose subject is another
object attests that object, the ancestor, never the object in hand, and only through
§3.2's recovery: the client holds the object, it holds the publisher key of a delivery
receipt for the ancestor that it verified under §3 over that object's bytes, and §3.2's
steps 2–5 pass with a matcher for the claim's algorithm, the claim then reported as
attesting the ancestor. Of the publisher keys it holds for the ancestor, it uses the one
that signed the claim, whichever delivery it verified first, so a delivery under another
key cannot block a recovery; holding none that did, it uses the first, and the recovery
fails with §3.2's reason. A failed recovery is reported with that reason. Without such a
key or the object, no recovery runs, and the claim is `receipt_not_about_object`.
A client MAY confirm the signer of each item it accepts under
[jwp-receipts](jwp-receipts.md) §7.4, against key logs it holds as §8.4 states, and
reports the confirmation beside the item's verdict, never folded into it.
### 8.3 A range-fetched object
A client that holds only the head and some components cannot recompute the content
hash over the envelope. Under [jwp-receipts](jwp-receipts.md) §3 step 4 it takes the
cid its head proof verified, and the receipt then attests the object the cid names; the
components it holds are attested through the verified head's `sha256` values.
components it holds are attested through the verified head's `sha256` values. The
content hash step 4 compares with comes only from bytes the client hashed, or from a head
proof it verified with every component it uses checked against its entry's digest (§7):
never from a URI, an index, a playlist or a receipt, which only state one. A fetch that
was refused establishes nothing, and an object the client did not receive — a
refinement it abandoned (§10.5), or one it never requested — has its receipts checked
by inclusion alone.
A component's exploded envelope ([SPEC](../SPEC.md) §7.1, *Exploding a component*) is
a function of the verified head and the component's bytes, so a client that holds them
@ -445,20 +556,47 @@ only on a receipt checked over its envelope bytes.
| key status (§7.9 there) | `/.well-known/wai-key-status` | `max-age` at most a quarter of the head's `status_max_age_s`, `no-transform` |
| module grants (§7.9 there) | `/.well-known/wai-grants/<module digest>.json`: `{"kind":"wai-module-grants","module":"<digest>","grants":[…]}` | `max-age=300, no-transform` |
All are `application/json`. A verifier that **anchors** an origin fetches its key log
from the origin over HTTPS without following a redirect, as [jwp-receipts](jwp-receipts.md)
§7.3 states, and with `Cache-Control: no-cache`. Later revisions MAY come through any
cache: each is checked against its parent, and a rolled-back copy is reported
(`key_log_rolled_back`). The grants file is a locator: each grant is checked on its
own.
All are `application/json`. A verifier **anchors** an origin ([jwp-receipts](jwp-receipts.md)
§7.3) only from a key log retrieved from the origin's key-log location — an `https`
origin followed by `/.well-known/wai-keys` — answered `200` by that same URL: it does
not follow a redirect, asks with `Cache-Control: no-cache`, and a log that reached it any
other way anchors nothing (`key_log_not_from_origin`). A retrieval is an `https`
retrieval the verifier made itself: TLS to the origin's host and port (443 when the
origin names none), the server's certificate validated for that host against the trust
anchors the verifier holds, the request and the `200` exchanged on that connection, and
the response's end authenticated by TLS or by its own framing. These are facts of the
request it sent and the response it received, so a log retrieved over plaintext, or one
another party states was so retrieved, anchors nothing. A verifier reads at most 1 MiB
(1 048 576 bytes) of a key log, however it reaches it, and refuses a longer one whole
(`key_log_too_large`): a log is a few revisions of a few keys each, and the cap bounds
what one retrieval costs. Later revisions MAY come through
any cache, a mirror, or the origin: such a log is read as §7.3 reads one, its revisions
are held and each is checked against its parent by §7.4's head walk, and it never moves
the anchor. A copy whose latest revision is a trusted revision older than the anchor is
reported (`key_log_rolled_back`) and adds nothing.
The grants file is read as jwp-receipts §3.1 step 1 reads JSON, with exactly the members
above, `module` the digest it is fetched for, or not at all (`grants_file_malformed`). It
is a locator: each grant in it goes to §7.9's checks on its own, and one that fails them
is passed over.
A module grant is §7.9's form. WAI carries a JCP grant only as a reference by its content
hash inside the receipt that names it, as a playlist receipt carries its publisher's
grant (§8.6); this binding serves no JCP grant, and a client checks such a reference only
as the receipt carrying it binds it.
### 8.5 Parameter sets
A parameter set MAY be served as an immutable resource named by its pin's digest
(`<base>/<sha256>`), under §5.3's cache headers with `application/octet-stream`. A
sink verifies it by its pin ([SPEC](../SPEC.md) §3.1) and decodes against it only if
the checks of [jwp-receipts](jwp-receipts.md) §7.9 pass. A set they refuse is not
held, and dispatch continues as [SPEC](../SPEC.md) §4 and §7.1 state.
A parameter set MAY be served as an immutable resource named by the digest its pin
states (`<base>/<sha256>`), under §5.3's cache headers with `application/octet-stream`;
a set in the form `wai.prior.set` is served as its listing under that digest and each
file the listing names under its own digest. The name locates the bytes and proves
nothing. A sink holds a fetched set only as [SPEC](../SPEC.md) §3.1's checks hold it over
the bytes it received, the digest among them, check 5 being
[jwp-receipts](jwp-receipts.md) §7.9 with the statuses and grants it fetched as §8.4
states. Bytes served under a set's name that are not the set are not held
(`prior_not_held`), a set §7.9 refuses is not held (`prior_revoked`,
`prior_not_authorised`), and dispatch continues as [SPEC](../SPEC.md) §4 and §7.1 state.
### 8.6 Playlist receipts
@ -896,6 +1034,9 @@ is a share of sessions, not of devices or people.
| `component_digest_mismatch` | §7 step 6 ([SPEC](../SPEC.md) §7.1's reason) |
| `object_digest_mismatch` | §7 step 7, or any whole fetch |
| `receipt_name_mismatch`, `receipt_not_about_object` | §8.1, §8.2, §8.6 |
| `receipt_not_served`, `receipt_index_malformed`, `receipt_index_too_large`, `receipt_too_large`, `receipt_legacy_group`, `receipt_fetch_budget_exhausted`, `receipt_fetch_bytes_exhausted` | §8.1, §8.2 |
| `context_not_held` | §8.2 (jwp-receipts §3.1 step 6) |
| `key_log_not_from_origin`, `key_log_too_large`, `grants_file_malformed` | §8.4 |
| `codecs_malformed`, `codecs_not_media`, `codecs_candidate`, `codecs_no_common_capability`, `codecs_undeclared`, `codecs_layer_unbound` | §4 |
| `base_unanswered` | §10.1 |
| `not_a_layer`, `layer_tag_malformed` | §10.4 |
@ -926,7 +1067,20 @@ step 5 states.
skipped or fetched again), a published classical master and a
playable classical presentation for players, and the policies' choices; the
differential adds playlists, adjacent pairs, published masters, renderings, receipt
files, adaptation states and MPD pairs.
files, adaptation states and MPD pairs. For §8.1–§8.5 it holds group receipts and
claims served as receipt files, an index beside each object that has receipts, an
origin's key log, key status and grants file, and a parameter set served by its
digest, with cases for receipt files read under their names, indexes checked against
the whole object, a head proof's cid and nothing, parents walked and not recovered,
walks at and past the bound, legacy groups, files and indexes at and past their caps,
each name fetched once within budgets of files and bytes, claims by subject, parent
and the receipts §3.1 step 6 checks them against for every class (declarations read
by their names first), ancestors by recovery under each publisher key held,
anchoring from the origin only, logs through caches,
grants files and sets held by their pins and §7.9; the differential adds receipt files,
indexes, grants files and key logs each changed one way. `http_verify.py` checks these
cases with the `cryptography` package, through the corpora's own second verifiers of
[jwp-receipts](jwp-receipts.md) §3, §3.1 and §7.
- [`cache-conformance/`](../cache-conformance/) checks §9 against HTTP caches and
reports, per cache label and version, the configuration that meets it. Products are
not named in published reports.
@ -948,7 +1102,13 @@ step 5 states.
of its capabilities, to every cache and the origin. A sink that does not want this
fetches whole objects.
- **Unsigned files.** Receipt indexes, grants files and aliases are locators, never
evidence.
evidence. A receipt file is named by its link hash and a parameter set by its digest,
so a cache or mirror that serves other bytes under the name is refused; a group whose
name does not fix its bytes is not read (§8.1); a key log anchors only from its origin
(§8.4).
- **What a server can make a client do.** Every receipt file, index and item count is
capped, each name is fetched once, and the files and bytes one index costs are bounded
(§8.1, §8.2), so an index cannot make a client fetch or hold without limit.
## Appendix A — CDNI configuration

View file

@ -1585,6 +1585,8 @@ match the algorithm style of WAI SPEC.md §4 (numbered, terminating).
`parent_not_held` is recoverable: the verifier MAY request the missing
receipt and offer it before the group again; it MUST NOT silently accept.
Over HTTP the missing receipt is fetched by the link hash the group names
([http-delivery](http-delivery.md) §8.1).
A verifier that keeps only the head cannot tell a fork from a gap and
reports both `parent_not_held`; one that keeps the link hashes of
earlier groups of the chain tells them apart, and refuses both either

View file

@ -0,0 +1 @@
{"grants":[{"capabilities":["wai.neural.int_mlicpp"],"form":"decoder","kind":"wai-module-grant","module":"7ef44f3b1fc4a2df6c3e3b68460f595cae3d31cb7f9018699e29e738340272a4","not_after":"2026-10-06T12:00:00Z","not_before":"2026-10-05T12:00:00Z","origin":"https://origin.example","sig":"85283724547d6c4b72a44d4cb3b1f65aaf1e24c2ee0b5227fa8248e4ad7d7a38513354fadac9c7adc62b23725fa7156455ccd401d17d5ecc341a76b563b55504","signer_id":"did:web:origin.example#x9","signer_pubkey":"d62f016a1efd1e4fdf793eb42cd84471e1ba9f0cf04d1287b5cc71f616287cb8"},{"capabilities":["wai.neural.int_mlicpp"],"form":"decoder","kind":"wai-module-grant","module":"7ef44f3b1fc4a2df6c3e3b68460f595cae3d31cb7f9018699e29e738340272a4","not_after":"2026-10-06T12:00:00Z","not_before":"2026-10-05T12:00:00Z","origin":"https://origin.example","sig":"91958c6751f8d2a7fd0206a3f66e02e7b33ffca1c00b872a2f6951bb3c25dd4402054a772675b73a10c44b81d760a87932d9d5dbb805b5d4c38ac942f610b90c","signer_id":"did:web:origin.example#g1","signer_pubkey":"a7f6dfaf8f38b89ba8ce649b594f91e4d01fdc57f9c9493df43b5e50a9987367"}],"kind":"wai-module-grants","module":"7ef44f3b1fc4a2df6c3e3b68460f595cae3d31cb7f9018699e29e738340272a4"}

View file

@ -0,0 +1 @@
{"head":"fab4c950188cdacaee2b290bda245bf8c7bbe5ba5f0549451a72a9241cf4da33","issued_at":"2026-10-06T00:00:00Z","kind":"wai-key-status","origin":"https://origin.example","seq":1,"sig":"1c72d7f3c146edbf6f068e03bf444d66defb78dff1065593d17f82a388b1301511a0bbd45fb08b715f7551039dd555cb3baf794e39c4fabe8719b316aaa4a703"}

View file

@ -0,0 +1 @@
{"kind":"wai-key-log","revisions":[{"grant_max_s":86400,"issued_at":"2026-10-01T00:00:00Z","keys":[{"compromised_since":null,"id":"d1","key":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","may_sign":["delivery","energy/Estimator","log-inclusion","soft-binding"],"status":"active","until":null},{"compromised_since":null,"id":"g1","key":"a7f6dfaf8f38b89ba8ce649b594f91e4d01fdc57f9c9493df43b5e50a9987367","may_sign":["module/decoder"],"status":"active","until":null}],"kind":"wai-key-set","next_root":"d481afb3d00a3168a515f522aec12623ae3ee77b919ad5db74353a9f55972d8c","origin":"https://origin.example","prev":null,"revoked_modules":[],"root":"4a72e4035bb435d0aa42d43b8873d9f07cb9bf476fe2ade0aba49983eebd425e","seq":0,"sig":"92de01efa058176b0dc77a5784d401427c6266eec4b5583b4a4ac3eea1f2e52c5cc30809c27fb6b3c1908bd29f6658c85452702677f88c392319249df6a9680f","status_max_age_s":3600},{"grant_max_s":86400,"issued_at":"2026-10-05T00:00:00Z","keys":[{"compromised_since":null,"id":"d1","key":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","may_sign":["delivery","energy/Estimator","log-inclusion","soft-binding"],"status":"active","until":null},{"compromised_since":null,"id":"g1","key":"a7f6dfaf8f38b89ba8ce649b594f91e4d01fdc57f9c9493df43b5e50a9987367","may_sign":["module/decoder"],"status":"active","until":null}],"kind":"wai-key-set","next_root":"d481afb3d00a3168a515f522aec12623ae3ee77b919ad5db74353a9f55972d8c","origin":"https://origin.example","prev":"7f06fd9425a3583d2007074cb32c75514d34b11d064c88304c6e4d4d4cb5ab01","revoked_modules":[],"root":"4a72e4035bb435d0aa42d43b8873d9f07cb9bf476fe2ade0aba49983eebd425e","seq":1,"sig":"abbca51a46e83d57166db431990bb3dc1340fc3effdff4537d3de2f1dbc53f36f73f8190bc59b5c718a00e03294c0bed5133f6806915af3eb1109b0de4dcf409","status_max_age_s":3600}]}

View file

@ -6,16 +6,25 @@ for §4–§7 — the head, the head proof, the response checks, the plans, sele
head and on the whole envelope, the byte-range procedure with its fallback, the
`codecs` grammar, union, floor and support; and for §8.6, §10.4, §11 and Appendix F the
WAI playlists beside their classical ones, their receipts, the live edge, and the
reference adaptation policies. Two implementations check every case and must agree:
reference adaptation policies; and for §8.1–§8.5 and §10.5 the receipts, keys, grants and
parameter sets served beside the objects. Two implementations check every case and must
agree:
- `wai_http_vectors verify .` (also `wai http vectors verify .`), in `wai-rs`, built
with the features `http` and `video_manifest` (the playlist receipts);
with the features `http`, `video_manifest` (the playlist receipts) and
`key_discovery` (the receipts, keys, grants and sets);
- `python3 http_verify.py .`, written from the extension text and SPEC §7.1, sharing no
code with `wai-rs`. It needs only the Python standard library, and reads
`../claim-conformance/_blake3.py` (BLAKE3 from its specification),
`../claim-conformance/_ed25519.py` (WAI's strict Ed25519 rule, SPEC §7 *Signatures*,
written from RFC 8032; it checks the playlist receipts) and
`../registry/capabilities.json` (the published registry export).
code with `wai-rs`. It reads `../claim-conformance/_blake3.py` (BLAKE3 from its
specification), `../claim-conformance/_ed25519.py` (WAI's strict Ed25519 rule, SPEC §7
*Signatures*, written from RFC 8032; it checks the playlist receipts) and
`../registry/capabilities.json` (the published registry export), and needs only the
Python standard library for every case but the receipt and key cases. Those
(`receipt_file`, `receipts`, `key_log`, `grants_file`, `param_set`) are checked by
`http_receipts.py`, which takes what jwp-receipts defines from the corpora's own
second verifiers — `../jwp-conformance/jwp_verify.py`,
`../claim-conformance/claim_verify.py` and `../signer-conformance/signer_verify.py`,
none of which shares code with `wai-rs` — and so needs the `cryptography` package
they use. Without it those cases fail; they are never skipped.
**Provenance.** Generated here by `wai_http_vectors`, from a staged-delivery case and from the frozen sources `src/SOURCES.json` lists, each encoded once by an encoder of its format: pictures of the `int_mlicpp` vector's generated 64×64 pattern, AV1 colour-bar test patterns, and a clip of a square moving over a gradient. The test patterns and the clip are generated content whose generators are not in this tree. None is a recording or a photograph.
@ -34,6 +43,7 @@ reference adaptation policies. Two implementations check every case and must agr
| `blake3_vectors.json` | a subset of the published BLAKE3 test vectors (CC0), which `http_verify.py` checks itself against first |
| `http_verify.py` | the independent verifier |
| `falsify/*.patch` | defects that `wai_http_vectors verify` must catch (below) |
| `falsify/mutations.txt` | the `http_verify.py --mutate` defects, each with the cases it must fail (below) |
| `src/live/`, `src/players/`, `src/playlists/` | frozen sources of the playlist side: the integer video payloads of O12 and O13, the classical playlists the WAI ones sit beside, and the player fixture's classical master as authored |
| `playlists/o9/`, `playlists/o10/`, `playlists/o11/` | WAI media and multivariant playlists (and MPDs) over O9 (and over O9 with its second segment a gap, which `wai-gap.mpd` leaves out), O10 with its layers, and O11, each beside its classical playlist in `src/playlists/`; O9's MPDs are on the timeline of `src/playlists/o9-classical.mpd` (90 kHz, written with `@r`, beside an audio set on its own timescale) |
| `live/` | four revisions of a low-latency WAI playlist over O12 beside `src/live/classical-r*.m3u8`, and its multivariant playlist; the parts are listed under aliases `720/<sequence>.<part>.wai` with their cids (the alias files are not in the corpus: the cases serve the objects under them, and `wai http origin --root . --live-edge live/wai-720.m3u8=live/wai-r0.m3u8,live/wai-r1.m3u8,live/wai-r2.m3u8,live/wai-r3.m3u8` replays the edge over HTTP, blocking reloads and hinted parts included) |
@ -44,6 +54,14 @@ reference adaptation policies. Two implementations check every case and must agr
| `cases/other-key/` | the third live revision's receipt chained to the second by hash and signed by another key (`r2.json`, and in `mr/` under its receipt hash), and the fourth revision's receipt chained to it (`r3.json`) |
| `cases/relist/` | the third live revision listing the alias of part 0 of segment 1201 with part 1's object (`wai-r2.m3u8`), sealed and chained to the second (`r2.json`, and in `mr/`); the fourth revision's receipt chained to it (`r3-after.json`); the fourth revision listing segment 1201's object at sequence 1200 (`wai-r3.m3u8`, `r3.json`); the third revision listing that alias as `./720/1201.0.wai`, with part 1's object and with its own (`wai-r2-dot*.m3u8`, `r2-dot*.json`); and the fourth revision withdrawing segment 1200 as a gap (`wai-r3-gap.m3u8`, `r3-gap.json`) |
| `cases/walk-substituted/`, `cases/walk-invalid/` | parents a walk fetches by their links: the second revision's receipt served under the third's receipt hash; and the third revision changed after it was signed, served under its receipt hash, with the fourth revision's receipt chained to it (`r3.json`) |
| `objects/<cid>.wai.receipts` | the receipt index of each object that has receipts (§8.2): O9a–O9c (one group per segment, chained), O3, O5 and O7 (one group each, figures of a stated class), O10, O10L1 and O10L2 (one group for the stage set) |
| `objects/rcpt/<link hash>.json` | each group receipt and claim (§8.1), in JCS: the five groups; a sink's two `stage` claims about O10, chained, the second listing layer 1 applied and layer 2 dropped (§10.5); the publisher's soft binding of O7, which O3's index lists as its ancestor's; a `log-inclusion` claim about O3's group, chained to it; the publisher's `measurement` of O5's figure, chained to that claim; two `energy` claims about O3, one agreeing with its delivery and one not; and a relay's two `delivery-gap` claims about O10L2, one at its coordinates and one not. The publisher signs as `did:web:origin.example#d1` (seed 32 bytes of `0x61`), the sink as `did:example:http-sink` (`0x64`): published test keys, attesting nothing |
| `.well-known/wai-keys`, `.well-known/wai-key-status`, `.well-known/wai-grants/<digest>.json` | the key log of `https://origin.example` (two revisions, root `0x60`), a status for its head frozen at `2026-10-06T00:00:00Z`, and the grants file for O2's pinned set: a grant by `g1` (`0x63`) and one by a key the log does not list (§8.4) |
| `sets/<sha256>` | O2's pinned parameter set, served by its digest (§8.5) |
| `cases/keys/` | the log's first revision alone (an older copy), and a log whose second revision revokes the set's digest |
| `cases/rcpt/`, `cases/receipts/` | O9a's group with its signature changed, served under the link hash of what it then is, and an index naming it; O1's group in the legacy payload, under its legacy link hash, and an index naming it (§8.1); O9a's index with 256 and 257 delivery items and with 257 claims; O9c's index listing its item fifty times (§8.2) |
| `cases/rcpt/`, `cases/receipts/O3-*`, `O5-*`, `O7-*` | claims of the classes the published indexes carry none of, their bodies claim-conformance's accepted vectors retargeted to the corpus's objects and signed with its keys, and indexes listing them (§8.2 step 6): the publisher's lawful-basis declarations about O3 and O7 and a sink's decisions on a declared purpose, an undeclared one and O7's declaration; soft bindings of O3 by the publisher and by the relay and a sink's recovery records of a value found in O7, matching, not matching, and naming the relay's; operating points over O5's leaf, agreeing and not; and a session claim. And O7 delivered again under a second publisher's key (seed `0x67`), with indexes listing that delivery before the publisher's, after it, and alone (jwp-receipts §3.2's *P*) |
| `cases/rcpt-deep/`, `cases/receipts/deep-*.wai.receipts` | a chain of 66 groups over O1, each the parent of the next, and indexes naming the groups 64 and 65 parents from its root (§8.1's bound) |
| `cases/sig-*.json` | the O9 playlist's receipt re-signed at the edges of Ed25519 (Appendix H): the identity key, canonical and respelled `y` = p + 1, under `(R, S) = (B, 1)`; under the key B (scalar 1), `R` the identity, canonical and respelled, with `S` = k, so the cofactorless equation holds point for point; and under the key B a signature the strict rule accepts (`sig-key-base-point.json`) |
## Objects
@ -116,6 +134,11 @@ outside this repository, and the AV1 streams were checked to decode.
| `playlist_receipt` | a `playlist`, its `receipt` file and the `name` it is fetched as (the file's own by default), each optionally edited | the receipt hash and its parent, or `error` |
| `live` | `revisions` in the order a client fetched them (each a WAI playlist, its receipt, its classical playlist, `edit_wai`), `fetches` (an `alias` and the `object` served under it, optionally patched), the playlist's `url` (against which its lines resolve; `https://origin.example/live/wai-720.m3u8` by default), where parents are fetched from (`parents`, a directory holding `<receipt_hash>.json`; the first revision's `mr/` by default) and the walk's bound (`walk_bound`, 64 by default) | per revision its adjacency, its listing against what accepted revisions bound, its receipt, what it did to the chain (`true`, `unchanged`, `reanchored`, or the reason) and the parents walked; per fetch the accepted revision that first lists the alias, the outcome and what held (`listed`, or `signed` when a receipt in the chain binds the alias's URL to that cid) |
| `uri_resolve` | a `base` and a `reference` | the `url` (RFC 3986 §5.2 and §6.2.2, without the fragment) |
| `receipt_file` | a `file` read as a receipt of `kind` (`group` or `claim`) under its `name` (its own by default), optionally edited | its `link`, or `error` with the jwp-receipts `step` |
| `receipts` | `checks` in order, each an `object` (or `object_file`), what the client holds of it (`held`: `none`; `whole`, its bytes or `held_object`'s; or `{"fetch": {…}}`, a fetch as the `fetch` op runs one), its `index` (beside it by default) optionally edited, or another object's index (`object_cid`), optionally padded (`pad_index`, bytes); one set of chains (`join`), a parent bound (`max_walk`, 64 by default, never more) and a fetch budget (`fetch_budget`, 1024 by default), the receipt files `serve`d (`rcpt` directories searched, `omit`ted hashes, hashes served `as` another file, files `pad`ded past their cap, or every file to `pad_all`), `recovery` (the soft-binding algorithms a matcher is held for; the publishers are those of the items delivered in earlier checks), and `keys` (key-log steps, as `key_log` runs them) | per check the index's verdict and, when it reads, each delivery item's admission, parents `walked`, `evidence`, how the hash was `established` and the property's `reading`, or its `error` (with where a walk stopped); each claim's `class`, what it `attests`, its `subject` and `parent`, or its `error`; the receipt files the check fetched (`files_fetched`); with `keys`, each signer's confirmation; the fetch's verdict |
| `key_log` | `steps`: `anchor` (a log retrieved as `retrieval` states: `requested`, `answered`, `status`), `pin`, or `cached` (a log through a cache), each for an `origin` (the corpus's by default), optionally edited and `pad`ded with spaces to a length | what each step did (`anchored`, `added`) or its `error` |
| `grants_file` | a grants `file` for a `module` (the digest in its name by default), optionally edited | each grant's reading by §7.9's check 1, or `error` |
| `param_set` | a set `served` for a `capability` under a pin of `sha256`, the sink's `keys`, `statuses` and `grants` file, the origins it holds the capability's sets to §7.9 for (`hold_to`; absent, not held to it), and `now` (null: no trusted clock) | `held`, or `error` with §7.9's `check` and `reason`, or the origin a revocation is by |
| `abr` | a `policy` and a `state` (Appendix F) | the `choice` and what the `budget` did, or `error` beyond Appendix F's bounds |
| `abr_order` | an object, what the sink `advertises`, a `policy`, a `state` | the entry `order` |
| `depth` | layer `objects` (or `layers_n`), a `policy`, a `state` | the `depth` and what the `budget` did, or `error` |
@ -157,9 +180,19 @@ to the reason it exists for, and OD to Appendix D's cid, length and proof size.
## Falsification
Each patch in `falsify/` names the function it breaks and, on its first line, the
cases that must fail. The `falsify` job of `.github/workflows/wai-http.yml` applies
each to a fresh worktree, requires the build to succeed, and requires
`wai_http_vectors verify` to exit non-zero naming those cases. `http_verify.py
cases that must fail. `falsify/run.sh` applies each to one worktree of the head, built
once and rebuilt incrementally per patch under the `falsify` profile (overflow checks
and debug assertions on, as in the tests), requires the build to succeed and
`wai_http_vectors verify` to exit non-zero naming those cases, then reverses the patch
and requires the tree to be clean; the unpatched tree must build and pass first. The
`falsify` job of `.github/workflows/wai-http.yml` runs the patches and the mutations in
shards (`run.sh --patches I/N`, `--mutations I/N`, each taking the ones whose index mod
N is I), each printing what it ran and failing unless that is exactly what was assigned
to it, and its `shards` job checks the shards the matrix declares cover every patch and
every mutation once (`run.sh --check-shards`). Each mutation in `falsify/mutations.txt`
lists the cases it must fail, as each patch does: it passes only when `http_verify.py
--mutate NAME` exits non-zero and names every one in a `FAIL` line, and a crash, or a
non-zero exit that names no case, is a failure of the harness. `http_verify.py
--mutate NAME` does the same on the Python side (`left-half`, `no-root`,
`counter-zero` fail the proof cases; `floor-as-codecs` fails `union_O9`; `blake3-iv`
fails the self-test; `base-at-done`, `tick-noop` and `refinement-unclipped` fail the
@ -167,8 +200,17 @@ fails the self-test; `base-at-done`, `tick-noop` and `refinement-unclipped` fail
`render-digest-off`, `name-unchecked`, `chain-unchecked`, `ilog2-no-interp`,
`bola-waits`, `unlabelled-as-zero` and `round-half-down` fail the playlist, receipt and
adaptation cases they reach; `nonconforming-offered`, `conforming-withheld` and
`refines-read-whole` fail the ORN, ONC, OCF, ONM and OR fetches; `falsify/run.sh` runs
every one), and the job checks a differential: `wai_http_vectors diff`
`refines-read-whole` fail the ORN, ONC, OCF, ONM and OR fetches; `rcpt-name-unchecked`,
`legacy-admitted`, `walk-skipped`, `walk-unclamped`, `memo-off`, `budget-unchecked`,
`bytes-unchecked`, `caps-unchecked`, `nothing-as-delivered`, `groups-from-listed`,
`step6-skipped`, `decision-unchecked`, `recovery-record-unchecked`,
`declaration-unnamed`, `first-publisher`, `matchers-need-object`,
`operating-point-unchecked`, `session-accepted`, `bytes-read-whole`,
`key-log-uncapped`, `ancestor-any`,
`anchor-follows-redirect`, `cached-rollback-unchecked`, `grants-module-unchecked`,
`set-grants-ignored` and `set-by-name` fail the receipt, key, grant and set cases of
§8.1–§8.5; `falsify/run.sh` runs every one), and the job checks a differential:
`wai_http_vectors diff`
writes random envelopes' covered prefixes and proofs, `http_verify.py diff` verifies
every one, and, with one chaining-value byte changed in ten of them, refuses exactly
those ten.
@ -210,7 +252,13 @@ inputs where two readers most easily part, in families:
receipt file with one member changed;
- `fuzz_abr`: states and parameters of the four policies, sizes out of order, samples
of 0 ms, empty options and budgets; `fuzz_ilog2`: the integer log at random points
and the ends of `u64`.
and the ends of `u64`;
- `fuzz_receipt_file`: a committed group receipt or claim file with one member changed,
read as its kind or the other; `fuzz_receipt_index`: an index with one member changed,
checked with its object held whole or not at all; `fuzz_grants_file`: the grants file
with one member changed; `fuzz_key_log`: the key log anchored from a retrieval whose
URLs, status or origin may be off, the log sometimes changed one way. A refusal inside
an outcome of steps or checks counts as one.
A refusal is an outcome like any other: `http_verify.py cases` must give the same
code. A case wai-rs gives no outcome for stops the run, and `fuzz` prints, per family,

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"kind":"wai-key-log","revisions":[{"grant_max_s":86400,"issued_at":"2026-10-01T00:00:00Z","keys":[{"compromised_since":null,"id":"d1","key":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","may_sign":["delivery","energy/Estimator","log-inclusion","soft-binding"],"status":"active","until":null},{"compromised_since":null,"id":"g1","key":"a7f6dfaf8f38b89ba8ce649b594f91e4d01fdc57f9c9493df43b5e50a9987367","may_sign":["module/decoder"],"status":"active","until":null}],"kind":"wai-key-set","next_root":"d481afb3d00a3168a515f522aec12623ae3ee77b919ad5db74353a9f55972d8c","origin":"https://origin.example","prev":null,"revoked_modules":[],"root":"4a72e4035bb435d0aa42d43b8873d9f07cb9bf476fe2ade0aba49983eebd425e","seq":0,"sig":"92de01efa058176b0dc77a5784d401427c6266eec4b5583b4a4ac3eea1f2e52c5cc30809c27fb6b3c1908bd29f6658c85452702677f88c392319249df6a9680f","status_max_age_s":3600}]}

View file

@ -0,0 +1 @@
{"kind":"wai-key-log","revisions":[{"grant_max_s":86400,"issued_at":"2026-10-01T00:00:00Z","keys":[{"compromised_since":null,"id":"d1","key":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","may_sign":["delivery","energy/Estimator","log-inclusion","soft-binding"],"status":"active","until":null},{"compromised_since":null,"id":"g1","key":"a7f6dfaf8f38b89ba8ce649b594f91e4d01fdc57f9c9493df43b5e50a9987367","may_sign":["module/decoder"],"status":"active","until":null}],"kind":"wai-key-set","next_root":"d481afb3d00a3168a515f522aec12623ae3ee77b919ad5db74353a9f55972d8c","origin":"https://origin.example","prev":null,"revoked_modules":[],"root":"4a72e4035bb435d0aa42d43b8873d9f07cb9bf476fe2ade0aba49983eebd425e","seq":0,"sig":"92de01efa058176b0dc77a5784d401427c6266eec4b5583b4a4ac3eea1f2e52c5cc30809c27fb6b3c1908bd29f6658c85452702677f88c392319249df6a9680f","status_max_age_s":3600},{"grant_max_s":86400,"issued_at":"2026-10-05T00:00:00Z","keys":[{"compromised_since":null,"id":"d1","key":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","may_sign":["delivery","energy/Estimator","log-inclusion","soft-binding"],"status":"active","until":null},{"compromised_since":null,"id":"g1","key":"a7f6dfaf8f38b89ba8ce649b594f91e4d01fdc57f9c9493df43b5e50a9987367","may_sign":["module/decoder"],"status":"active","until":null}],"kind":"wai-key-set","next_root":"d481afb3d00a3168a515f522aec12623ae3ee77b919ad5db74353a9f55972d8c","origin":"https://origin.example","prev":"7f06fd9425a3583d2007074cb32c75514d34b11d064c88304c6e4d4d4cb5ab01","revoked_modules":["7ef44f3b1fc4a2df6c3e3b68460f595cae3d31cb7f9018699e29e738340272a4"],"root":"4a72e4035bb435d0aa42d43b8873d9f07cb9bf476fe2ade0aba49983eebd425e","seq":1,"sig":"6d9dd2f33367dba777cca49da470d294e206d7a28a22a09348759e6bd974b93a8118c2f8573e536f9c36790e2ca808ed408322a267041bb7c0daf2dcc3b94905","status_max_age_s":3600}]}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":25,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"82a9fe0631aaaa7a86edc18e09dad8f9080ae1faa6089a2632a9ce028562740a","root_hash":"1211874e6b3ecacd036dc0b1af531f5720cc5cf390bff94efba962c3bbf298aa","sig":"4ec5139386e521d1bde6cefb11ee020d0698331ca24379b7a8ba4c933b4c5bc0a5457d181a709d8ded89a0ff593bfd9887c6f3a69f3c38684b46de66af36810f","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":43,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"ae03f97d23795d99c4db5ddf04668bac928bd9e90969a20221cd7326e6a0cd1e","root_hash":"eadf6410e5cfb8a63d64905d19009d4c618d1a86a420d53881d0f6763b2b57ea","sig":"d684427786c93ae9e782871c25ee11bfda7c53cc9949a7d2c98c616f78abac68bc26cb207e92a656aff836dc540ca942667d8c4c0349e0675e7627f10d5da007","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":32,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"296b25a0475ca8ba860b3db33ec1c42f9c67a3dcda5fee8b7ab924c14d05d02c","root_hash":"a7a29aa447946ff2ca37266cbbf4cd58c3d3f1b12f21931eee1adff1ad8aceb9","sig":"8d35a40f4e6751b32ae5453b87d4c388c3b032345fc936fe6c035778e1dfa7d13db666ef5f3a7d344fcbcf2de92d5bbcb0adedc7c6730f4b62e0fd6d8459f80a","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":39,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"c018e85a69702e3966349a8b1a5a6cb91925f53377612947760bcabee6325e46","root_hash":"e43da1d3bca87b9a4be2d64da5bcedd1880c31a2a0c88551fd6dadfd9844858c","sig":"deb4d975d400f50fca515599a5d4fea0e8942e37d6172429b0313f74da8002cedc80b5d4e971af494976578f23b88799a11dabdca50bc2fc97343caa56f6ba05","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":1,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"1a0a5b813a9829960fc55d40e8db40c94f9e8fc49c65d76e8fddd9dc4e879f4e","root_hash":"509c5b9572d70f7baea01627f6c0dc0ab69214872f6c99279e3302742c1dfcbb","sig":"5764f7cc86de56d32d0cf4dabd15ae61450c7686deaaf144035d60cbf7b7c129155c639967ad4e941c6eb65ba9fc68647db0e973de1fc06bf418842e3dc28601","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":0,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":null,"root_hash":"da5a5c13d1a01cb3c5f05e29993e9808516d27d7b3e2608c7ec3ca13577a7337","sig":"8674712a2f4598ad9b981b4df6864300b8df77315ba4e10c8b2430314cf43e92ec73b4e01cd15f35857a3201f24f4e7945f070fed1507a9ccc0706079f45a20b","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":33,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"01a07d8b4af7e85c22c5ecbba976073b5e043ce831e96f8c411121fde6bdfa24","root_hash":"d09a3b36b4ba20ba294c4c50b89832742d99989e8685ac6abc2aa47b5f96796c","sig":"87128fda6bb5637d562380237d9c56de409a8bf61c1d4d84255e346fa28d2157564eaed727194bb390fa6112e41516d81c6c1ecadd53140f7d31d79bc768d80d","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":28,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"6fe102acdfb722a4ac1e9708bd2524df96612c2b8572fb36187b36aaef695d19","root_hash":"aec3dcc41f2d3c2109d555ef3870523e174a11170ef4616fb3ff742627f07325","sig":"4d17b95bc95a55eedb3850f00ee49addcaaaea1cff30fc2201bf101658b6162f19cdcda205fe223b376684471491b70b519a07604de46a3ab44f19bc44209408","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":55,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"7209b5f3d838d80969f2bedb44b36c62b9cb980de376565d29be1a36290673db","root_hash":"14feae56e11597a25b41680f39a198e9e230ef9876bcaf76b822b55e0f5647ff","sig":"6203742512be52ba7593f542a98e536ba07c641838dee5c62cb0711006544fa94708df3dbf2bddc5fcc24bd17a09b9d0d1a78365e035195d92ce9c9eb0357a01","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":31,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"64100b9ff95fe8517af6d53ffae89420bcc4855b7a9fbfa9c0c2fcfd4c8f6e02","root_hash":"11af67f8b4a51b1cfc3fd45d6a45d139143aad28d77ca24f830db80fa49af063","sig":"f23dfefaf26e6eb1bb59dd186489da7e06c05c38611b1ac7a7467d40e45a24921038d51f9269978c01690f98de13ac58d4defa4382376a3fa9b883acc18f4c04","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":13,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"89f6acee1ffd1ab9abcee3f448f2a7d1265f5de70c40ecdbd514fc2412a9581d","root_hash":"a35f7025866f344f636c09c22631c7f4c1a7e694834739af9e18e0703c35eb90","sig":"0646d08d5c8cdc8f0bcd604fb7ea0cd8c9363e08adada9a0668ed3c9b669ef77f93543950bc9f67d89a14d6256eee1886fa25d5919c430e8f78263ddde5ddb0f","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":40,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"17ef1654e9710960f846a1453e40c927d3d526151006f5d01dcd0a50d8fe5cc0","root_hash":"7dbbdd8640eba8cfccbff0a54849a101f0be8399a9b299e9b300018a7bb007cd","sig":"0506f65ac8538cdcc58a5a8fde8e9e81140966149d1cd32702beb0608330db9896a5a488577a8ba0bd9df61b82caad940b0ab252d118a0fb0de07c4fb9d08707","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":46,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"3d8bcf2693699485bf4560e6db247cfba2ed713171f434a76a8f90c55facae9a","root_hash":"883c6c212087e54d9956d6274d23d065bb85dd7dec7ac19a4a067b84d5bc3b72","sig":"22c7c0f913a779057176eb965937637a58e58a99eaa0d19d5bd10196708e6d27968d869353206c676138e5e19040393ac0df3bfbd3cfc03c7447075cfc00bd0a","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":8,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"dde8580c86bd5c8b984f26ecf19b9f93f2dfef67c08fa99138c2bbcbfc5fb387","root_hash":"c23f6de9c2788364cf6fa7623dbd2dee3914c113adf5d38ed19c3ce4b339f7af","sig":"1eb2d4017bb2cc724997b2d288f4a16776a27a23ac159c4ca917cc3e6d18a40d2ef79830bb903c9d833dd878c3ce73afe5fc7cdb2ec8d4a007d008c7c14d960b","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":52,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"9add9e068b526da6bd0d7dd6bac6f0bd53630f0cff4e303b0e2b5fa7032ab7b8","root_hash":"9ecd4d472e6335329ea651a6198528363b3d5117f12d2987b2b29b31ad45d3fd","sig":"b88194e4fecc524c457cb14c895e2f6b85b2b0a240de04c328bdc33799a36cf357f1c076f614104d5138c0987bd872b8a3a3f6a5aa9dc0e91e6ff77a10737804","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":56,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"258947cefedab4a8c44cf3d02bc66e33c4c94b20baefdee5924100ac13ad2631","root_hash":"600aca31e4294ce457830489261698ed98559673f1dac64b2a2cda891a30fba9","sig":"505d1f31276fe9f6fcba73a0789d5560809752f7dd1706c3134b7bdb955ee593379779498625ac002f5bc95de8c94a702d199785d8baa92a52165cad21e7e30d","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":45,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"cb54de1a2fb520d4b1b98a38732eeb0ae9260679c0ef38ee0c2db625d4690f08","root_hash":"b11ff8e897523699345a87ae17abe8f6de5d0ce1263e67acbd4514949e250c35","sig":"d9e95b6ec5b60023e3c1ae73dc1174e9f05c8ddbbb443df11a0ce422cacf89fa0283ff3dc4727180cb205e75b41340ce89e278f94c545a8f77b1d64a3e55eb07","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":11,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"ce8cdb9ba42eae1916d6543cc0df37a0e9e3cf6eb9f23dace8cadbcc68a1ce6e","root_hash":"c7698fb31901c6d88bece812a242874c83afa5cc6f1cd3b1a6fc9b18b07b01db","sig":"2429af876ef9db23ee01d0b2d02532e1cb96ac35bd34e766195ed59c560d51d2b1af42ffda916676787d2b23f1493b4ff07dffed5aae3a7ceb5e4c554bc9f40c","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":49,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"9437c7584edf8061151cc407cdc2cf5875138daa33def243f8e7958095159d43","root_hash":"2c40459481075ebd4a519f164bc9e314bc1dc4883b7a31e1d005bd801c7cf3a6","sig":"4e4cf7d43629fc7b207ae6e5590c8bf08d0a6bf390d4c7e9e4fe5909f2e763068450ec5032d10d2f557eaccd562abcb31df7a76727c7f4165f97f5d33447de0c","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":65,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"63379f1324fcb7c7d65bec7ea0d81f585fad641c0881076dae2384c0dab77350","root_hash":"e95d9348d502540b2ec55b9ffbfcca3f28ddf098b621f2b3c7e8af71b312d066","sig":"acb1b2461b193ecb38f1e4f7d7621134140fba0c5f91bb40b74c9bc5d3652f34fa8b3f782fbb6e2b9eddd99b3d4c58991a08a16cd278817f89981a5fe1e1e701","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":6,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"628e127eff3ff5f3fc41008cd2aba447b2e6a5c6b6f7a7c355aeee5131614845","root_hash":"febbe500a3ec7f780b74ed90e380bc6787f2aa58de33e1da2aa48cd020ff6d39","sig":"7cbe7c6fb1d8c8255f54aefd054f33ab447a93d8426eb0558ed2fbf1d5b08a24702830ccdb4cf8d3302eb3eb1a86ea080dfa1ad8dfdb62b385ba9e15f7b8d908","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":5,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"8642ba98b3ef5233e6fe4c2b2f8bf0511b48b25ad11139781874ca585dad39db","root_hash":"78bcdb3b5b191cc6a2b18db12339bd6563b560115cdddd48b2c9d4ddc2db9c15","sig":"dd2e0d84a9f6f923d914f91e574050bca6c6eca0802f3004892694f88ddedd6f72a58f4f82332ccc3d8b504af5d4f4b51243f56cdf75bdbfa7d34387df4f4c0a","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":64,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"dddbdf295d8efc9890ea00b8cd09355b8bc12aa8c1b8a0abfa2736dc8e52beca","root_hash":"b3616793d8b3218474f284c7e2785c7fe6776638f1aa57adc24fe8c55a376d54","sig":"38a1a257897e535520b610f77202f0ec8ab56223277b5b8dd227cfc7a70e31a49662687efdb95ac88354258dd47fce5ee39af7b0a99b2abe5afb40b708a69606","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":30,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"8499e3ae0889231bb4cf44be763227155c737d80c3119d6ef49ee37ac384f0f4","root_hash":"6f2a0d99a41838ea16e8036d802a883aacbe3032b534be0f58ad3fd13089d0ff","sig":"e1bb86183a28a3e66a840dc2791c504b50a3ba68c7ca9dbb65a41131d9108d3bf39c58946fc8f14c2eb95bfb68d84cd2833a5fb502a5286c53f47ffaa0048c09","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":27,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"9f4e6f8de572ae37b854c3f356c117a451713ae32d05176e8aae7d3cb928da3c","root_hash":"4cc83a55bfc90d849b0634547ff5c539cbcb35ef73b638bf3a13c3e1d698e8d0","sig":"97719491e9c5079101f6196518b7479b436f3afa5251fe9c1cb5c4068c4a83411e8d7c4e8eedcc7b80c7af44aa1b8f04586eb38219a5408e17d1b4e9f48bb203","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":9,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"36f03021b405cf486db202f776174b6c81098add4784395a59327037c411aa05","root_hash":"2bf3fcf47f10adda38d9e84e6daa104b7ad428c8a7569f2f1baebd0c86116c0c","sig":"a998bb7ee846b7842ce19937c1934b7e1cd3c0dff3032abb8de8b1dd240bc1a89075ca8f91ca1348cf916c1032cb68b28244541b483d083bda4a367f90e2fa08","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":54,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"f424f181500d06d27e5344e5ef28ff6a68eed7386ead966dd4c5f11baf14d41b","root_hash":"3f0ce8fdce0974ea8a459ef05a50f49892ff45763b93d77091dd366437386b34","sig":"98186af124ee0d0870b0298ade1ec95b11319e7f0ba0c7855f345607e2bd05d9286e9c6a02496dd85a3f6c466f2626317ab896a3e4b801e25afde366ba6a6b05","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":16,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"a14dd2629372b10738a35dcb3e71db5b60c2e6aac29776766f60df21debaa7a6","root_hash":"1b0bc2320fc07c2dfb31afd5442e8960e7e057666dbf0e29ba010a090460696d","sig":"c0093f3d85b441b68875aeb16dc44a05faaeab9530ca88dc6ac734494af20acbc0e5e2eb9b038c8b26bf941990896ec19a5964d05f1c811e027b953f9a2b8b08","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":57,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"3c8ead78e4ccaaa1b49790f87ea593a38e586e45cf8d2d7c1c575e64d3322893","root_hash":"fd1fa378fc47672fac5acfbf23211009991aeeec45f905812b514cd1f4bf80c1","sig":"9cd1d0aa49c8a2eb7600853365fdfad741880273de4f35b008b500aacdb28a3ddf0a7b36f130e78d018a641a9692d39c63621864a7f4ea30ce67f2f72fb2fb02","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":24,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"9db4594f2e453f9cff014f3028d4c02dd5862b28855783f836891ec26e911616","root_hash":"c239061f02af70e8a96990905ecf2a23e8fcedf71fa2b92c3dd16b42f5a8d0d1","sig":"fb2d679c452a49ae81e95487d8c3b30225bab6446162cd679c9de333b33d84995dd46c9e36385692605b0052a776dd51f705f8cf97fdbbc373a5ad3d26f35d01","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":29,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"25632b6926e484b967f63df5a868d252c15d8fbba68d6bd6beb7c5db2bb8b284","root_hash":"3f131d500a428e452804bf5fcd2671f9ce41c80164860772587eca6a9783b087","sig":"ed1f5dedc6610c846c4a3d8b66b6ed46db626b1aefe1fd637a19d723ae54f9917837acde9fa5cef0df93b9fbadc31eea66c6d0ad43b60af35ece73dae39a5d00","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":4,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"9bc7eb5b3a07d2c3bfa344a7f32612128c54efa856c8d8feab4c2d768559a153","root_hash":"f367d35de324aa1583e8b7979bb5362be2ccaacd417a47dfd225402d9ef8fbdd","sig":"6a2d7f5928d55ea90a3c125781d5ee6f149c751d969576a52c88fe71ae10d9ca0005aaec0d1df2412554c155959f2ee54df146d2fbbc934ad75de4529440e301","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":12,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"45f8fa1e36cb9988a8ffecc639e92feb3c2cce92e70eeaebea7ce2bd75c5e581","root_hash":"ceb79bda8cc7d0af2e400d611198cbda13698f5ea38a99b14012c74ac7d13d66","sig":"79a9ba6333dfb5c79a7f75337b36fb01e6cb3be6ea86931f6beae44847a5103698562f92f352c9eb239f1ff21a764f14a8c28ba05c817cebeb1225906739910b","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":20,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"d5c54a0582e4aae21a61b315843a4a3bc50af0b97a75f9fc6fa213f438839b59","root_hash":"3293bd5b8d34c63bc98d733b5a46009650fe642a668ad1daa659b577b2a90fbf","sig":"2cf0713a80b268e8747273c8dd2b96e28ab1bc5302f12f44edd7468468489b99c99648c60c80f8eb0cb35ad9495d7548585c5fd74384c3517d219a3bab448608","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":48,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"c40b1d684d5696efc5f2cc1f39cee4d99b4dc4fe5aa6d43992a8c8d5be5bcbe9","root_hash":"2d38a57b8206d3359111802e9878315d9ad5b40ed728cc05f7ccfe739bd541eb","sig":"ba9bffe0bc4a80837120bbce5317ec44ce11adec2c8c0eb0e5e4d4e77538bd2ed29176ef508409789af8eb6e85cb0f35cb712dc78fc3fdb697aa8d748ae8c204","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":51,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"9be1a59aa2577c7431548c5d117413044a37fdc1a05cb72c58d0ec16770bcfdf","root_hash":"58352e524be52f2772d3cad18651fd35ca9784258515a9b0c252deb56e2aa76e","sig":"0c579d3b232dd622ffc5eb886acbfb6d614f20d0768a1ad33ee59fb0327f87199fdb06a03a4cc8a716f4756d9bcd3129f9d11ffec2df984362471f436c68e60c","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":3,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"dce4681c9a487a24a4b20f216f79d8319dfb7048ca2d965f1d34e5724e33d802","root_hash":"608ab68252a3cba5e1af70044e718d4c195e38e1b302505bd13011eb96f98b7a","sig":"7b368cb784f34dcb41fac59d9050d465e2133bfe811d5a3929aac7e2401825e3b6733c9ac5e7b0cfc856bf3719aea19150eb71a43fa285bcee9f840ff86c2301","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":50,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"4a929990963ba614aaac8bb2896cf2f0b9f1bb4724dec179d2457576e6de493b","root_hash":"422d01d518378dd434dcabd52a104902f82008fbec8481f829c4461ad8662e1c","sig":"e0f1375e470ce6804c8e46c050c7bc9d8b8b2b5db1c1c4f70842e113e48e64922ae5a6bbe8bca2f95b08a4148b179988a28ff002625322b83a84b32f526a4008","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":23,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"e13cff8676af896dc1c0a7b82178a8dea0f39e2c1ffe5fe5fd18cbfbd38fcf13","root_hash":"10fc6a3be74e8ade3e56dfc46a1ffd4626f1aa907b6ef691f50abfc9c946d00a","sig":"4c2a1559b57b581cfe3d8a7a9e8fae9da97681a9f094cf31b4704ea6bdafaa6f5d11f361f592762df4143920c13399731241ffb33136f01b266719801a8b3602","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":26,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"003ce009852d8c0c3e808699db87f862368967295eaad10087ee86cd356a65dc","root_hash":"c6ed74cf5f60fdc95368574db8113aaf0113a56bd6e7d8a159e08047b5a84b93","sig":"6075493ab96746b061cb99dbdd3f583898abdf4b504f6345e11b3a0aad37a351af1e5fd756f905b6c9cba48729c23f55355479d567255c07f562b3fe5fdc6303","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":15,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"fcdf29a5c1f6567155dd0df394306fd179f9fdd04b252535d937c6537004735c","root_hash":"442c93c524f9de9be026d1b9a7bea2c1a94602ab1950e19d12494bb2e1ec7d68","sig":"5682bb506edee5371405e0eed42e4a1310115d70cbd3077fc3fe811eb3d290f81ebc0910053e32cf46ca4952326cc786ad80353575a78e38d214a0343c948d06","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":58,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"73c6117b02857292a6b459ed1f433b42d7455a91a2941aab05c31a54a0ddf30a","root_hash":"d38f2afa7a1fbea16f5176bb0ea463588572e7a2204db26818e97a0c276a4328","sig":"189319842f856bb56cd3fcb95e826f64b8a118ecbf37453d862bb385691830a13c9a15ab4a7439e2406d519ba8595809add1060ccf7bc111f58e97447a268a0f","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":42,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"c5c6797e71d82c249afdfd5fa3e45c607168f5f46caab52de55ade65a7dca6db","root_hash":"1de3128d0455a29c3eea4460d02878a4335e9b467ffc2c115cb7e690081786cd","sig":"eb0d5bb76ff3e014f33b1eeae1847190f538bc6c2cbafa69c0d27741de80c6c9341e5f163955945029aa2f22b7ac48227d526747b77d59e33f9ae6f3b2880505","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":61,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"fbe11c778ba08a3178591ad782e1f2392419aad7d8b53be5e4e8432d7100c7fe","root_hash":"5d33516bd5bfa72f37aaf04c6a4848df4eed06bd04b84dac8e4f5b28e406f6d1","sig":"8dd7b67f160bf89f5596ca913ba1bb8d9cbe908d3fdfdd75f1741ea2f7f4dff8b9e97b9c68fd3aad9c8e5b568b068a39b95fc982eb0e6b8ecfa1706c9f46810b","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":34,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"21dcc9e852e59acff6ae0749f4a6afb81621f6a9226825ef597c860f306ff755","root_hash":"3a89c7e674b975bdd0a4e191ee3d2cecf468e9ff9b7c362a212229caf3488be0","sig":"fcf5e28a000a1cf6800cf4221fe18630eee0c9917e8ced467b6c4be2cdf0980fc0575930a54a64176ac835557de187ee3d829e40296a88a094b74ac67b6bd10e","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":38,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"c24a80173b436fddaec2e9efe8a243eb58334442ebbc0f5170d219fc833c1b56","root_hash":"10afe37e8a34ea9ef5f03c97bc61435ca36a16a3956885ffa6a1567b342b7337","sig":"9dfa4a3270750f942197fc8e52658cb4eeae00af4f7b483c83cc335df0834cc00d04e35c95b1ade49bc104ea853d85c2f9d12e98a8cf55cd4e6c5b4aced0970e","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":37,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"ff696c1fecfcfdf1b1fe0d3a3bc7124039209dc2b8dfbb2efd9ee7dcbafc955a","root_hash":"eb80ab8c660d2217484ea3dbcbb05d103de5d1b78dfbbfc97792b73285a8182f","sig":"a73fa90c1e7fc446ecad0ccc6eb5536c76e33e92f0215996fbbbae15ce7c4d6a13655c4eea4f0225becb2c48b834e67458e07e970c0ccb89ab3b5e473136260e","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":47,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"319e3bd23ecc66f714d2226d160457fdface7e18022d071f2332adf1dc42f60a","root_hash":"a308d60a2fa2a48a80462991469a36c2d7be9ac69ed56ed4323d8e11357d39ce","sig":"e65c1a6f25cedb3675f846e44c388e314b2d3630c896b4dc753a430d5bc83fa203d5e566af69463558faecc4e3070567da8798294b380e8489bb4fb37f71eb00","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":41,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"316ef8d8a425cee1a88181a83f46698d36124879649ebdef8104c66398a37580","root_hash":"199ec3d5e8002144a82aaf27b9be13c608de8a67795ce89d46ccf62f788a37c0","sig":"890c40427a1911a011d59dd35719931819e84803a9b327fc99d053540df9919a171e28f7ea314f6d18ffa7cd6e710422d45accde765845ee9379b8ee130d570c","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":44,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"009454fd76395b07a8db1c205e1eceb2fc39b70d6f19ce28f029f0aa25489eac","root_hash":"3e8cbc691a02138642542f384c7afe3c10c9c3433021a1c8390fef1f5bee3b91","sig":"97f6d9efc72c57715853a296748a13e6fde0193dbcb4bac184fb28d50a30f7f7da0d0268cc0fd735f18da5c1364ee0bf2508e3ea77c3808a7e45be4b43733603","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":10,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"702d3f032ec6e859379cc73da1b5e2af6d8522ec13b20b3cb80579065cf3cb8f","root_hash":"5ef7f6d313365e53428317272b802b3deadb8a8f9e9e89625f0b27e4f9b40a38","sig":"24b032ca9c18e09ebbf5a302ba180bea90b25052e150d7b013a0ff6cdc094f138be69bfa8597ea4148455112bbea23afb1fa1c85031622dd62bdf023ccaf6d0e","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":19,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"e2dfcd5e2cf232b3a0077e4a2c93598bd49a5408497bea9048e2dc1519655d19","root_hash":"5ee8619e187bbdecab6c6ee7cddfeff22f1bb8b8efd07a0e19671e0e858635fb","sig":"5320ce3f025426c22f9ff13c272746a33d9d5a6dddfe3f5c2ee1171213559c62fce2fa6470fefb5edeb39d06c20be30519deebc63e73490d424d432c22d9510c","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":2,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"186babdb6cd3cfbc6d5ea3420bd0b9583d3a3328544f90d1f6ec337e833da309","root_hash":"76bc8ac36e4074bf211ba9c943ac7802c06c2feaab17d2adab88305e65149726","sig":"6ed03c784041ec9af4b1ec277881b1e8ff727cad2d6d0229335263bcf43e6b084ea2dc8e7386488f2112c980b755017ca2c5fca7e9b7fc83cfebcc6d0731030e","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":63,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"eff8231145c90bca502126ff8268464a9c30a11436d3efd3a8aff1e9cc065d3f","root_hash":"19d01e1ed00ed77f58f2c3e6cd3c5f8499636f23642f18daf1ed2ab30cf19c26","sig":"3cfc67a581a88b227f85f20a360e36ffd353864b0964bc3ea2fabbc9a3dc6835b6151a5561514209cab83a17cc0a797ca8650c7fce1272a84304720d08d6c107","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":7,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"5cf23a6733332727a616961d36300beb3ab39a637d985efa02f51f9ad9a788b1","root_hash":"820ca9b68f7cdee5aececf2c88e88eb93a26c75f68b6477434b49b1df4b1f8fe","sig":"7bacfbeedd9e6ace35b673b71ddf58045a68463b7bcc9d128d39f806832e34eadd1ca2aba7c69382c88def7611c2a1334f418601c255c03f474cc465e0fbb204","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":22,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"f8d4ee129c6d180112f714e02ac68eed633ebf2a1bfcee7f1fe8bc91d57b4b62","root_hash":"8b16dd1913dc61fdc34e54095e2823ea6b9af830a59d65798463cefaa6271af2","sig":"c252f417457c7b39dde25c68c33edc56ddb2543153dbdf95a5a560596a060b474b9e60645d05daf75d6fddfaf5eac18be979db128e8d6d2820c667e36c7f540c","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":18,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"ecd54bf262ce60576be4a2fb0aa1c9f5885e366c534ec7cda62e6bbca91c1e6c","root_hash":"163b98a19991ffecd5abdc61168270c9417bd291af4e0713499225ab24fa30de","sig":"34538f032f22a9a0977a209dfad825ccf2f7d165aab1d58a5e6d770bb8f2671c74a579ccde74af2d4c447406fe80295df1afb0466d09d787103ccc29b5543d08","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":17,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"727ec6e7702c42e445c28f7db5ca526c4cfcf72207a793b8a75b457b0004cbb7","root_hash":"e881b379ccc2bdd32f7e60cf192ced65e61f1f819db76637ce9d3c5e271ab553","sig":"6f00e7c85aa2b45cecb93bbf6b0c5877010d198217d84038f30d5a33da71a597e006966b851f7f0629f5dbe77d76bba63ba08fe4a0649ab1647d8e895cffe801","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":62,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"ba386a976d3bb07999fa2b48a0505aad51f5bcf1ad926f30e17475143abdaef7","root_hash":"dc77c06bdb81ba441d0b64be464a4ee9aed5afe41f526b08179a950510f4a3eb","sig":"ffa6b894fa42c107454b811fc64f0d507f3c0a3bc9135469f6e0fe0dfca2b36c2b90ac63f3996c6c0c2c8b1cfc9b3ba71400eb7f1b002cd9c293bd866117200f","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":59,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"a577ff30a365f5af48f5ea6f2b874ea9520ec024639f33f9fcc8545d0535ea64","root_hash":"c682354abc6bc3647d119e22ab284e863f451d1c42e3d60a3a2f3c5cca9c442a","sig":"75630b78b4d6ba8a12eb8949d371831fd2859c4ce0dfc0517ffbba54531e20e556be0e2a494abf89b7a9f5101eb0506240c9f2117eb2e778768160a1d4a68406","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":35,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"bc54f7a82afbf23e1a81249785409dbf27d11f1c7871850d11f37afd637b0d8a","root_hash":"82d65bab931e358299e96004ecf3751116988069c6aad5036de8334ca38af376","sig":"5433e450ffa6dc21a5efe41e9a6a348e5fb54bc1a2fb39bac198732b82196a5a85fb02008d631fd62d508b966861a78fb05b77dd85f7a0ffa44de3eed8bee608","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":53,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"3aa91d8e5f296a997f8473822a5558478a3302b02c06c3192986bbcb2d5d27b1","root_hash":"123c39a71f5af2019b8b6cc43e1368a1584df015d3c4a67c4ed879b40c18b820","sig":"20754edbbc0143a5d390b0705bdb9cf3ba79cbc89d15900a5b33a0a0e0ecea3e98ccadf39359f357ffb9c981cba2c81df06824ceaf3fe769e8a60ee1852b4b0c","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":21,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"8ce05b04d49062f191ae072bf970ba23863c7cc88b654d178acf61361fc81efa","root_hash":"b824ab92e657202ce8e9f4b978899246192028d4467fc6cc2f8f438c4f056e31","sig":"dd2945bb23417dbbf2c654c251c2e6b70c30f03ed17d3c1ea4429cb6a8bd5e0d3ca6c23f1808230bea909f02ec71bd17aaee0dd21f95271b8a2360953010af0a","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":60,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"f1d86cc4dc42d0dde7a760f09076dde6454c304a2b95c1150d244ab8d9868480","root_hash":"6458b7019b5695981f86d818372e4a8c2dcb3977d5a566fa29c38e461d13386a","sig":"869a6f1107e0780deeafacb92e6db68b5de4d513627c28dc796b1a774f939b098b7b1e55681469910e4ec56c3c325e9213605ff21a6956ade3f33ef96a30a301","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":14,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"2d31d0bd821ee2578210482b192d2cb47d1d9a9846fc9f032311c4b156b3170a","root_hash":"ced251a071645d86ee1c9230908d643ca77f95f31116470bc260652a3a7adfd0","sig":"26c6118f157aee8eabea938c20668b9de3299dc27b8eb87f08f411dd26ae3812e64a6bc830cbd13058cdf6898e535e4e0bf1feb0bc03259d246031e805e01906","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":36,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"f2fed1d8ecfa414530d8bbc5114c80946a313a0c46a0d624c5083cfc4f9ab61b","root_hash":"dee97708247df3b4f351eb02434662b265f6e0b6ecf4b031cb9ce9ea528e34bc","sig":"93237e15424ba686f8ce91fd859d64b75a106f51ffbb05bcc8854f562f7801a0c95c4ba317184e1b8d8e67b011744773bd9bdc96972a332173b26b56697f750f","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":5}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":0,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":null,"root_hash":"43c3a4e8ff2e9cb84fa4529dd16c18008f7ac1b324117853c0f45871e46f85c7","sig":"7f0a32e960222763ba31d025cb4fefc0f9b210310c66b319baaeefe6f5845864e5338dc1ddd89a49a694e4e0342b23fb5bf4813dd546e9518b8f79d93b1c3c04","sign_version":2,"signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":1}

View file

@ -0,0 +1 @@
{"body":{"declaration":"13e1857af31da433ed26408d5cfdb8a486dfdef79026836dda43b4b7a790ac1e","outcome":"dpv:ConsentGiven","purpose":"dpv:PersonalisedAdvertising","record":"decision","vocabulary":"https://w3id.org/dpv"},"class":"lawful-basis","issued_at":"2026-10-06T00:03:31Z","kind":"claim","parent_receipt_hash":null,"seq":0,"sig":"3092b7395f839e770892be7f8a054fb9003829d91961dea0e3e92f5befc01831c22df5b984aea10dd38e0394954f1a2e9c6c30c9eb901f9ac8bea02cc009af07","signer_id":"did:example:http-sink","signer_pubkey":"2bc2800b3316e009209ffd757dab19ccf0ae84bc7ae90654e1e81712d270f653","subject":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","subject_type":"object"}

View file

@ -0,0 +1 @@
{"body":{"alg":"org.example.watermark.1","attests":"ancestor","binding_type":"watermark","declaration":"f95a4c6858d22e963130429b04b26653117ea3615b889975f0693168fe5b217c","observed":"922db9b513790966272927c4f542fb01cb25ff9c7b189fb6699bf92894c29a6f","resolution_endpoint":"https://resolver.example.org/matches","value":"636c61696d2d636f6e666f726d616e63652077617465726d61726b207061796c6f6164"},"class":"binding-recovery","issued_at":"2026-10-06T00:03:52Z","kind":"claim","parent_receipt_hash":null,"seq":0,"sig":"cbf00b096d3ffa22a49c3344101f7036ae786fbbc567af4c7b3031cb8b7850cc9e32f65fbd5be4c761f049401ada8cf65d5e1f8ea65e895b37226bd9225bdb06","signer_id":"did:example:http-sink","signer_pubkey":"2bc2800b3316e009209ffd757dab19ccf0ae84bc7ae90654e1e81712d270f653","subject":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","subject_type":"object"}

View file

@ -0,0 +1 @@
{"body":{"fragment":"9109aa1bee9f220a0cfb9bf4c5794f4c11027b8f20f6a804462b8b0b86463376","purposes":[{"basis":"dpv:Contract","data":[],"purpose":"dpv:ServiceProvision"},{"basis":"dpv:Consent","data":["pd:Location"],"purpose":"dpv:ServiceOptimisation"}],"record":"declaration","vocabulary":"https://w3id.org/dpv"},"class":"lawful-basis","issued_at":"2026-10-06T00:03:20Z","kind":"claim","parent_receipt_hash":null,"seq":0,"sig":"74aa5c2f020964aa6a3c784fac8e7c1166768c70fe16fba000887506c545e9f4b7b51e1a274df8ca3483442e7e4d2943d0c0b6b67c960de1ea991e4c91b8600d","signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","subject":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","subject_type":"object"}

View file

@ -0,0 +1 @@
{"body":{"declaration":"13e1857af31da433ed26408d5cfdb8a486dfdef79026836dda43b4b7a790ac1e","outcome":"dpv:ConsentGiven","purpose":"dpv:ServiceOptimisation","record":"decision","vocabulary":"https://w3id.org/dpv"},"class":"lawful-basis","issued_at":"2026-10-06T00:03:30Z","kind":"claim","parent_receipt_hash":null,"seq":0,"sig":"840c67fce73952a3191772125e54ec2a92deb7bbcb872e1a4eba5f4e54dbac103121613196473c65aa120a02c155bc889426135a4cb2b3a82a2a84b62bd2e607","signer_id":"did:example:http-sink","signer_pubkey":"2bc2800b3316e009209ffd757dab19ccf0ae84bc7ae90654e1e81712d270f653","subject":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","subject_type":"object"}

View file

@ -0,0 +1 @@
{"body":{"alg":"org.example.watermark.1","attests":"ancestor","binding_type":"watermark","declaration":"3f4c9dcae5e9654eec359360cf03a0881b61a53ff1b8e4ecaf1cef696a917650","observed":"922db9b513790966272927c4f542fb01cb25ff9c7b189fb6699bf92894c29a6f","resolution_endpoint":"https://resolver.example.org/matches","value":"636c61696d2d636f6e666f726d616e63652077617465726d61726b207061796c6f6164"},"class":"binding-recovery","issued_at":"2026-10-06T00:03:50Z","kind":"claim","parent_receipt_hash":null,"seq":0,"sig":"3ad58aef5854137d6c88d3108a0a1db204432b85c983e5392097b494a88cc2fbedc48d13b437e4e00d8e9ff3ff87c5c6ce94cc91d68ef14a7e5bf3e5a2f22800","signer_id":"did:example:http-sink","signer_pubkey":"2bc2800b3316e009209ffd757dab19ccf0ae84bc7ae90654e1e81712d270f653","subject":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","subject_type":"object"}

View file

@ -0,0 +1 @@
{"body":{"alg":"org.example.watermark.1","binding_type":"watermark","registry":"https://registry.example.org/soft-binding-algorithms","resolution_endpoint":"https://resolver.example.org/matches","value":"636c61696d2d636f6e666f726d616e63652077617465726d61726b207061796c6f6164"},"class":"soft-binding","issued_at":"2026-10-06T00:03:40Z","kind":"claim","parent_receipt_hash":null,"seq":0,"sig":"53af8446142c32089cee5030e9ce1278fb119f90869857671f45a9dfdaf01e81904a755f2b4b72ddfd68503f6a1aa30ede051b003d1af18222222353c7a00905","signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","subject":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","subject_type":"object"}

View file

@ -0,0 +1 @@
{"body":{"energy_calibration_ref":null,"energy_counter_filtering":"Unknown","energy_provenance":"OnChipCounter","energy_uncertainty":{"relative_ppm":44669,"window_us":3000000},"figure_index":0,"figure_profile":"moq-jwp:object","group":"95477f223c6bee89a57c7171c831352fd43f4a348f9d56f90e32e922c2c2b16f","joules_micro":461538,"op_committed":{"frame_rate_milli":30000,"height":1080},"op_delivered":{"frame_rate_milli":30000,"height":1080},"op_requested":{"frame_rate_milli":30000,"height":1080},"prediction":{"descriptor_hash":"1122437cacd17ba56225e487fcb4f5350858024b1fa7051cdd09dd526cba2f32","predicted_joules_micro":450000,"predictor":"https://models.example.org/complexity-to-energy"},"vocabulary":"https://vocabulary.example.org/operating-points"},"class":"operating-point","issued_at":"2026-10-06T00:04:00Z","kind":"claim","parent_receipt_hash":null,"seq":0,"sig":"afba2a669086a83c6e7bbd3133ae6f419c524667ff8e5d1ccc28b742c13ef10541e2450a976ecaf4b08f1fb3460eb26f3ca3f5ba31ff3a67bdf58e72a0828b06","signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","subject":"e43e038c10c0494d9647444fd4daf54b19fc3a946a3c7980431bc6e0a236093b","subject_type":"object"}

View file

@ -0,0 +1 @@
{"body":{"alg":"org.example.watermark.1","attests":"ancestor","binding_type":"watermark","declaration":"3f4c9dcae5e9654eec359360cf03a0881b61a53ff1b8e4ecaf1cef696a917650","observed":"922db9b513790966272927c4f542fb01cb25ff9c7b189fb6699bf92894c29a6f","resolution_endpoint":"https://resolver.example.org/matches","value":"616e6f74686572207061796c6f6164"},"class":"binding-recovery","issued_at":"2026-10-06T00:03:51Z","kind":"claim","parent_receipt_hash":null,"seq":0,"sig":"6f30b641a7fdb2480d462dd418dc1ead09b749beb442f6ffcdc3ebfdbfa48d28234b9d53198aa8d530a4737f0eedb578853747148eabe49dc6c152face821307","signer_id":"did:example:http-sink","signer_pubkey":"2bc2800b3316e009209ffd757dab19ccf0ae84bc7ae90654e1e81712d270f653","subject":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","subject_type":"object"}

View file

@ -0,0 +1 @@
{"group_end":"2026-10-06T00:00:04Z","group_id":1,"group_start":"2026-10-06T00:00:00Z","joules_total":0,"kind":"group","leaf_count":1,"parent_receipt_hash":"3fba8315347da348bbb2f7a4b3f5488ff18a2be9bfb95efc7921142969ec3807","root_hash":"a5d07c9c94c353d57371a2f316d0cf3acb17baa6980ad6ba8b82b0bda83dda9a","sig":"681691b46bd8de7541ec316d8bb144a9bd5e77a077f168e022ee262aefcecb1eba237f8a0226450188eb7ad072981886102f4fcaa64dadad4fbbf3066d5dab08","signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","track_alias":6}

View file

@ -0,0 +1 @@
{"body":{"declaration":"aedd5190e7eb2e5e61854f1009402caf242d51df0d76506a60481fd79a7ca2ca","outcome":"dpv:ConsentGiven","purpose":"dpv:ServiceOptimisation","record":"decision","vocabulary":"https://w3id.org/dpv"},"class":"lawful-basis","issued_at":"2026-10-06T00:03:32Z","kind":"claim","parent_receipt_hash":null,"seq":0,"sig":"febeeeb47fe8f0b4ce01185a1e422a708171b2819e17ed6f1984091e13ff2229b8e3b431807137757aed2d9a02d3bead9cec7fb5f216d1badb673aeaa43e8c09","signer_id":"did:example:http-sink","signer_pubkey":"2bc2800b3316e009209ffd757dab19ccf0ae84bc7ae90654e1e81712d270f653","subject":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","subject_type":"object"}

View file

@ -0,0 +1 @@
{"body":{"classical_declared":700,"classical_source":"wai2-table","counted_discarded":1904,"counted_fallback":0,"counted_primary":5935,"deadline_us":40000,"decoders":[{"capability":"wai.video.int_hyper","decoder":"builtin:[email protected]","first_unit":0,"leaves":4,"module_status":null,"object":"d09526cec3961c21e36cc08f0b393323eb82dcc4203cb08df57fee36784b1113","path":"primary","pin":"7b4371854df0aa1645ac6525b373387c0617b873d5a57748932ee0f386ea164b","rendition":null,"tier":"decode-equivalence","variant":null},{"capability":"wai.video.int_hyper","decoder":"builtin:[email protected]","first_unit":4,"leaves":1,"module_status":null,"object":"f18f33c4eebadf2caf00fb22a38cf394e19d31a62ebe68f3043c31c84ecbcf44","path":"primary","pin":"7b4371854df0aa1645ac6525b373387c0617b873d5a57748932ee0f386ea164b","rendition":0,"tier":"decode-equivalence","variant":null},{"capability":"wai.video.av1","decoder":"builtin:[email protected]","first_unit":5,"leaves":1,"module_status":null,"object":"13b04249eca2b1a9061dba8ca2846169d3f5fa3548d9e138a0cf2cb553798cf4","path":"fallback","pin":null,"rendition":null,"tier":null,"variant":null},{"capability":"wai.video.int_refine","decoder":"builtin:[email protected]","first_unit":0,"leaves":1,"module_status":null,"object":"47a2c23727d2eb9d2beef0931c3e9b2675408d372660420cce427dc27fd21fe1","path":"primary","pin":null,"rendition":null,"tier":null,"variant":null},{"capability":"wai.video.int_refine","decoder":"builtin:[email protected]","first_unit":0,"leaves":1,"module_status":null,"object":"6b74be11e64461c7d972fc5cb6ba15e98427e9d6e60622b0a753222138de28cf","path":"primary","pin":null,"rendition":null,"tier":null,"variant":null},{"capability":"wai.video.int_refine","decoder":"builtin:[email protected]","first_unit":0,"leaves":1,"module_status":null,"object":"5e7a38ca5c04442cbe00b040d58e4494f5aa36fb81e8bbe0d304fd2d1ce722b2","path":"primary","pin":null,"rendition":null,"tier":null,"variant":null},{"capability":"wai.video.int_refine","decoder":"builtin:[email protected]","first_unit":0,"leaves":1,"module_status":null,"object":"be5055af8e32359265852c512667b10ab6a07455e5ab06603e278763f6633a85","path":"primary","pin":null,"rendition":null,"tier":null,"variant":null}],"energy":null,"fallback_units":1,"framing":"registered","host":{"build":{"profile":"release","target":"aarch64-unknown-linux-gnu","toolchain":"rustc 1.95.0"},"profile":"native-ffi","target":"aarch64-unknown-linux-gnu","threads":4},"leaf_count":10,"media":"video","missed":1,"missed_units":[{"late_us":1200,"layers":1,"unit":5}],"output_root":"b62a8425b7fe3a085a14f2f2156ea22ae3b4349884d799b5afe66dccc7d4dd7f","primary_units":5,"receipt_bytes":640,"session_nonce":"57c5462dfdabd1b7bdd204d34ba33649c057eb535349f29f45eb8f8c7d4a7e7f","stage_sets":[{"claim":"7ff63c64ae3826c013fd8c2387f51307c4bf715842b0a803528349e200d95551","first_unit":0}],"switches":[{"from":"primary","reason":"set-incomplete","to":"fallback","unit":5}],"switches_total":1,"transferred":9995,"uncounted":2,"units":6},"class":"reconstruct-session","issued_at":"2026-10-06T00:04:10Z","kind":"claim","parent_receipt_hash":null,"seq":0,"sig":"2456c62add11b3c56cd8a161274b57f8de1eac6ef579484d619cfbb33b90f8c348b4ce48b17f7be57cc48951192b386f8f642831f362242235d4813996584d06","signer_id":"did:example:http-sink","signer_pubkey":"2bc2800b3316e009209ffd757dab19ccf0ae84bc7ae90654e1e81712d270f653","subject":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","subject_type":"object"}

View file

@ -0,0 +1 @@
{"body":{"energy_calibration_ref":null,"energy_counter_filtering":"Unknown","energy_provenance":"OnChipCounter","energy_uncertainty":{"relative_ppm":44669,"window_us":3000000},"figure_index":0,"figure_profile":"moq-jwp:object","group":"95477f223c6bee89a57c7171c831352fd43f4a348f9d56f90e32e922c2c2b16f","joules_micro":461539,"op_committed":{"frame_rate_milli":30000,"height":1080},"op_delivered":{"frame_rate_milli":30000,"height":1080},"op_requested":{"frame_rate_milli":30000,"height":1080},"prediction":{"descriptor_hash":"1122437cacd17ba56225e487fcb4f5350858024b1fa7051cdd09dd526cba2f32","predicted_joules_micro":450000,"predictor":"https://models.example.org/complexity-to-energy"},"vocabulary":"https://vocabulary.example.org/operating-points"},"class":"operating-point","issued_at":"2026-10-06T00:04:01Z","kind":"claim","parent_receipt_hash":null,"seq":0,"sig":"661a0293f236e45d55742c1d2cb8736e052cf885abb3416e42f583e1c79ad008d6bb761f0db2bee07da182657d4805360378f7df8b53217739ad995be6ffcf01","signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","subject":"e43e038c10c0494d9647444fd4daf54b19fc3a946a3c7980431bc6e0a236093b","subject_type":"object"}

View file

@ -0,0 +1 @@
{"body":{"fragment":"9109aa1bee9f220a0cfb9bf4c5794f4c11027b8f20f6a804462b8b0b86463376","purposes":[{"basis":"dpv:Contract","data":[],"purpose":"dpv:ServiceProvision"},{"basis":"dpv:Consent","data":["pd:Location"],"purpose":"dpv:ServiceOptimisation"}],"record":"declaration","vocabulary":"https://w3id.org/dpv"},"class":"lawful-basis","issued_at":"2026-10-06T00:03:21Z","kind":"claim","parent_receipt_hash":null,"seq":0,"sig":"4cdfff3a6a343148099eccb79ef2fcbe1439e847985027a409319c1e469b15513bf4efa298372fb233474a0c53370bb5a4731b0fc8dad787c6d48c6523e60407","signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","subject":"922db9b513790966272927c4f542fb01cb25ff9c7b189fb6699bf92894c29a6f","subject_type":"object"}

View file

@ -0,0 +1 @@
{"energy_coverage":"Whole","energy_provenance":"Estimator","group_end":"2026-10-06T00:00:04Z","group_id":0,"group_start":"2026-10-06T00:00:00Z","joules_total":300,"kind":"group","leaf_count":1,"parent_receipt_hash":null,"root_hash":"368b22537cfa0d3d0bfcfe1f6256302af54c54711dfa411c193beda171c97edb","sig":"2042a90c80338d11fa12ce385bafb946f836ef8f1a2f3bbe55168ee53b79885e3bf7fac8b895015d75e98102ea0d22427c6c477dd17a6bd8dd78e8c6e028550f","sign_version":2,"signer_id":"did:example:other-publisher","signer_pubkey":"12a41592c8b7c17d4059e7b29b61e8ff96c7415f2f803348f2f017e05b9ea1da","track_alias":7}

View file

@ -0,0 +1 @@
{"body":{"alg":"org.example.watermark.1","binding_type":"watermark","registry":"https://registry.example.org/soft-binding-algorithms","resolution_endpoint":"https://resolver.example.org/matches","value":"636c61696d2d636f6e666f726d616e63652077617465726d61726b207061796c6f6164"},"class":"soft-binding","issued_at":"2026-10-06T00:03:41Z","kind":"claim","parent_receipt_hash":null,"seq":0,"sig":"86d7f3d6263653d55cba2135507780fddef561f5692000362c57be7c1204d9302109263d6e5ec0e9ff7aeca0a2dfc47119bfbb226d655902cb219b28b699c502","signer_id":"did:example:http-relay","signer_pubkey":"34b4d9043156cb6dcf0beb0a2949b7559c940d2bcb6dbe8c53a9b30278e3a746","subject":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","subject_type":"object"}

View file

@ -0,0 +1 @@
{"claims":[],"delivery":[{"object_receipt":{"content_hash":"df5337ea38c4d61fd15f006c08df937f480788fd669e7337b0f8105a5816a9d2","group_id":1,"joules_micro":0,"kind":"object","merkle_proof":{"direction_bits":0,"leaf_index":0,"siblings":[]},"object_id":0,"origin":"origin","track_alias":6},"property":{"acquisition":"","acquisition_evidence":"","content_hash":"df5337ea38c4d61fd15f006c08df937f480788fd669e7337b0f8105a5816a9d2","group_receipt":"6a29eb0066513cad092217b4f905f3decfc703c081c832fb35e3e42f3d1c7043","joules_micro":0}}],"kind":"wai-receipt-index","object":"df5337ea38c4d61fd15f006c08df937f480788fd669e7337b0f8105a5816a9d2"}

View file

@ -0,0 +1 @@
{"claims":["23e93ea54cbdbe5a203dc6d346752c77c396e1758466b8eb785b46d31f54760f","67b2612eb6b1e6ff7eeae5a6004682cd67fba92f8474c1a4d604fbf5934f7045","133ffb1355f912e7ea23db3373cf3dd497a1e9f309741d3fa071b4fd71cac9a0"],"delivery":[{"object_receipt":{"content_hash":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","energy_provenance":"Estimator","group_id":0,"joules_micro":1500,"kind":"object","leaf_version":2,"merkle_proof":{"direction_bits":0,"leaf_index":0,"siblings":["368b22537cfa0d3d0bfcfe1f6256302af54c54711dfa411c193beda171c97edb"]},"object_id":0,"origin":"origin","track_alias":2},"property":{"acquisition":"Estimator","acquisition_evidence":"","content_hash":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","group_receipt":"ed784e0aa394c85918460cb0e818ef939b8674098bc2e38910bba7b2244df018","joules_micro":1500}}],"kind":"wai-receipt-index","object":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9"}

View file

@ -0,0 +1 @@
{"claims":["21bc2df99c8f61e4b736e9df0ef64cd9a3c76f6a4f91d1f806895b7425280b28","11c2d4a654057161f6450907c69bb1136f5228fdfcf05e599fb92ab318eba935","8bc21df138b97b63f5f4730ca6dd4ad911ce2194843a671678afe1a97a4a92f8"],"delivery":[{"object_receipt":{"content_hash":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","energy_provenance":"Estimator","group_id":0,"joules_micro":1500,"kind":"object","leaf_version":2,"merkle_proof":{"direction_bits":0,"leaf_index":0,"siblings":["368b22537cfa0d3d0bfcfe1f6256302af54c54711dfa411c193beda171c97edb"]},"object_id":0,"origin":"origin","track_alias":2},"property":{"acquisition":"Estimator","acquisition_evidence":"","content_hash":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","group_receipt":"ed784e0aa394c85918460cb0e818ef939b8674098bc2e38910bba7b2244df018","joules_micro":1500}}],"kind":"wai-receipt-index","object":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9"}

View file

@ -0,0 +1 @@
{"claims":["9f8d38818a696727645324c3b7da8b1e1c4989f472138bf3dbb50e22227ae93e"],"delivery":[{"object_receipt":{"content_hash":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","energy_provenance":"Estimator","group_id":0,"joules_micro":1500,"kind":"object","leaf_version":2,"merkle_proof":{"direction_bits":0,"leaf_index":0,"siblings":["368b22537cfa0d3d0bfcfe1f6256302af54c54711dfa411c193beda171c97edb"]},"object_id":0,"origin":"origin","track_alias":2},"property":{"acquisition":"Estimator","acquisition_evidence":"","content_hash":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9","group_receipt":"ed784e0aa394c85918460cb0e818ef939b8674098bc2e38910bba7b2244df018","joules_micro":1500}}],"kind":"wai-receipt-index","object":"6e485f112e849422fb9cfd279cb16b88c8d5ee1e72bafe4892992fc6bef88be9"}

View file

@ -0,0 +1 @@
{"claims":["3fa148d4b79df7eb77f3d813122ab6463c339212111830f251e7c61b0e3fe784","a0410e703b803a08ec1b8ec0618f17b68c9d307f82e22fa301083aa90c8def29"],"delivery":[{"object_receipt":{"content_hash":"e43e038c10c0494d9647444fd4daf54b19fc3a946a3c7980431bc6e0a236093b","energy_counter_filtering":"Unknown","energy_provenance":"OnChipCounter","energy_uncertainty":{"relative_ppm":44669,"window_us":3000000},"group_id":0,"joules_micro":461538,"kind":"object","leaf_version":2,"merkle_proof":{"direction_bits":0,"leaf_index":0,"siblings":[]},"object_id":0,"origin":"origin","track_alias":4},"property":{"acquisition":"OnChipCounter","acquisition_evidence":"0000ae7d00000000002dc6c000","content_hash":"e43e038c10c0494d9647444fd4daf54b19fc3a946a3c7980431bc6e0a236093b","group_receipt":"95477f223c6bee89a57c7171c831352fd43f4a348f9d56f90e32e922c2c2b16f","joules_micro":461538}}],"kind":"wai-receipt-index","object":"e43e038c10c0494d9647444fd4daf54b19fc3a946a3c7980431bc6e0a236093b"}

Some files were not shown because too many files have changed in this diff Show more