open-standards/wai/live-conformance/routes/README.md
Transaction Science ca4fd375ef A delivery's decision states its offer, and its route's receipt is held to it
A price book of version 3 states each entry's declared uncertainty. A delivery-decision record of
version 2 rests on one and states offer: the route's entry by its place in the book, what the
delivery carries, its estimates and its energy figure's class, uncertainty and grade, which a
verifier recomputes. A delivery in a verification document may carry its route's OER/2 receipt,
signed under the route's name, naming the decision and the delivered objects' root.

The receipt's grade is no higher than the offer's. A figure more than one declared uncertainty
above the offer's states price_exceeded as its work.outcome, an open member of the receipt the hop
signs, and no other does. So no document kind is added and no earlier record reads differently.
route_record_verify.py recomputes the offer and holds each receipt to it. The controls of an unknown
version move on to a price book of version 4 and a decision of version 3; every other vector is
unchanged.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-07 03:01:50 -05:00

43 lines
3 KiB
Markdown

# Route record corpus
The conformance corpus of [`wai.route.record`](../../extensions/route-record.md): one file,
`vectors.json`, written by `wai_route_record_vectors gen` from fixed seeds (extension §10).
Each vector is a verification document (§7.1) — the request, the price book, the policy and
the record, each as its text, the hops' OER/2 receipts of minor version 1 as their texts and
the key they are published under — with the outcome §7.3 gives it. The accepted vectors are
routed and sealed by the reference; each refused one is a control of one defect, its record
signed again over the defect where the defect is not in the signature, and the generator
refuses to write a corpus whose control is refused for any reason or at any place but its
own.
The vectors of version 1 come first, then those of version 2 (extension §3.4), whose names
begin `v2_` but for the controls that pair a record with a price book of the other version:
a price book that prices each operation of an endpoint and states its measured failures, the
ranking by the expected cost and time to first byte per successful job, and the served hop's
outputs, to which its receipt is held. The outputs are the content hashes of fixed byte
strings standing for the envelopes a hop delivered; the verifier reads only their content
hashes. Then those of version 3 (§3.4), on version 2's price book, whose names begin `v3_` but
for the control that pairs one with a price book of version 1: the served hop's outputs stated
by their count and root, to which its receipt is held, 5,000 of them in one record the size of
the others. Then those of the third-party hop record (§6.2), whose names begin `third_party_`:
each document carries the records beside the receipts, under route records of versions 2 and
3, with each rule of §6.2 broken once. Then those of the delivery-decision record (§6.3), whose
names begin `delivery_`: each document carries, in `deliveries`, a job's decisions with each
delivery's own request, price book of version 2 and policy, under route records of versions 2
and 3. The routes are priced per gigabyte for the operation `http.export`, and each rule of §6.3
is broken once. Last come those of a delivery's offer (§6.4), whose names begin `offer_` but for the
control that pairs a route record with a price book of version 3: each carries a decision of
version 2 on a price book of version 3, and, in `deliveries`, the receipt of its route, published
under the route's name, with each rule of §6.4 broken once.
```sh
# wai-rs: regenerates byte for byte, and every vector gets its outcome
cargo run --no-default-features --features route_record --bin wai_route_record_vectors -- verify ../live-conformance/routes
# the second implementation, written from the extension's text (needs `cryptography`, which the
# OER/2 reference verifier uses for the hop receipts)
python3 -I ../route_record_verify.py live-conformance/routes
```
`keys` names the router's key and the hops' key; both come from fixed seeds and attest nothing.