Round-2 fixes to http-delivery §8.1-§8.4, in the text, wai-rs, http_receipts.py and the corpus together. 1. Claims run jwp-receipts §3.1 step 6 against what the passed delivery items deliver: energy against their object receipts (a named OER receipt is context_not_held); measurement/operating-point against the moq-jwp:object figure of an item delivered under the claimed group (energy_figure::HeldObject), else figure_not_held / context_not_held; delivery-gap against an item at its coordinates; decisions and recovery records against the declaration fetched by link; reconstruct-session context_not_held. Never acceptance without context. 2. A claim about a receipt attaches only through the group of an item whose delivery check passed. 3. A soft binding of another object is reported as attesting the ancestor only after §3.2 steps 2-5 pass (held object, a publisher key from a verified delivery, a matcher); otherwise receipt_not_about_object. 4. Bounds: receipt files 1 MiB (receipt_too_large), indexes 4 MiB with 256 items and 256 claims (receipt_index_too_large), each name fetched once per index (memo), 1024 fetches per index (receipt_fetch_budget_exhausted); the CLI fetches under a deadline (--deadline-ms) and these caps, never following a redirect. 5. A legacy (unlabelled) group file is refused (receipt_legacy_group): its name does not fix its parent. 6. The parent walk is clamped to 64 whatever bound is asked. 7. wai http receipts --key-origin retrieves the key log itself from --connect, sending anchoring_request_headers, following no redirect, and builds the Retrieval from the response. Corpus: measurement/energy/gap claims and O5's index, legacy group, a 66-deep chain, padded files and indexes, 256/257 items and claims, a fifty-fold item list; 1015 cases, Rust and Python agree. Co-Authored-By: Claude Opus 5.5 <[email protected]>
1 line
No EOL
1.2 KiB
JSON
1 line
No EOL
1.2 KiB
JSON
{"body":{"bracket":{"busy":{"live_intervals":14,"longest_live_run":14,"mean_uw":30000000,"n":14,"sd_uw":115471},"completions":60,"idle":{"live_intervals":10,"longest_live_run":10,"mean_uw":20000000,"n":10,"sd_uw":115471},"in_flight":10,"opening":"from-rest","window_us":3000000},"build":{"profile":"release","target":"x86_64-unknown-linux-gnu","toolchain":"rustc 1.98.0 (example)"},"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,"power_reader":"reader:example"},"class":"measurement","issued_at":"2026-10-06T00:01:40Z","kind":"claim","parent_receipt_hash":"dae83c921710311cbd34d8d4a2bedab53cf56a9be5afea2dc3d264ee978a03c5","seq":2,"sig":"76511b02d5ab8b096df498cc4fa5b2ad29056c383e94c8c312606fec81ca2771875704c53399096bbdbe0eecd0548274cedaad7b37aa13dd14f422db7b9a1100","signer_id":"did:web:origin.example#d1","signer_pubkey":"af06a3e3291714e4f356c19c9b15cd1951ec6e6662aa77be07547f289383341d","subject":"e43e038c10c0494d9647444fd4daf54b19fc3a946a3c7980431bc6e0a236093b","subject_type":"object"} |