open-standards/wai/http-conformance/cases/rcpt/133ffb1355f912e7ea23db3373cf3dd497a1e9f309741d3fa071b4fd71cac9a0.json
Transaction Science 750047604e http receipts round 3: publisher key, matchers, every step-6 class, declarations by name, a bytes budget
Findings 2-6 of the review of 30cefd1b, in the text, wai-rs, http_receipts.py and
the corpus together.

2. A soft binding's recovery uses, of the publisher keys held for the ancestor,
   the one that signed the declaration, whichever delivery came first; the first
   key only when none did, for the reason (recovery_signer_mismatch).
3. Recovery through a soft binding is gated on the object being held inside
   check_claim (it now takes `held`); a recovery record's matchers are passed
   whether or not the object is held (§2.6.3 step 5 needs a matcher, not the
   object).
4. Corpus cases for lawful-basis decisions, binding-recovery records, operating
   points and a session claim, accepted and refused, their bodies
   claim-conformance's accepted vectors retargeted to the corpus's objects and
   signed with its keys; O7 delivered under a second publisher's key, listed
   before, after and alone.
5. A declaration fetched by link is read as §8.1 reads every file fetched by name
   (receipt_name_mismatch and steps 1-2 first); step 6's reasons only for one that
   names correctly and does not match. §8.2 states that this revision carries no
   OER receipt over HTTP, so an energy claim naming one is context_not_held. Each
   cap has its rationale; a 64 MiB read budget per index
   (receipt_fetch_bytes_exhausted), counting at most a byte past each file's cap.
6. param_set with an uppercase digest is pin_malformed in wai-rs too (the corpus
   tool no longer reads a grants file under a digest that does not read).

Python mutations bytes-unchecked, decision-unchecked, recovery-record-unchecked,
declaration-unnamed, first-publisher, matchers-need-object,
operating-point-unchecked and session-accepted; corpus 1030 cases, Rust and
Python agree.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-08 03:59:09 -04:00

1 line
No EOL
860 B
JSON

{"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"}