open-standards/wai/http-conformance/falsify/gap-coordinates-unchecked.patch
Transaction Science 71cb8cbed9 http receipts: falsify the round-2 fixes
Patches (falsify/run.sh) for each fix, each failing the corpus cases it names:
legacy-group-read, walk-unclamped, fetch-unmemoised, fetch-budget-unchecked,
file-cap-unchecked, index-size-unchecked, index-items-uncapped,
index-claims-uncapped, claim-through-any-receipt, ancestor-unrecovered,
step6-skipped, figure-not-held-accepted, energy-context-assumed,
gap-coordinates-unchecked; ancestor-as-object, claim-parent-unfetched,
rcpt-name-unchecked, walk-skipped and walk-unbounded regenerated against the new
receipts.rs. Python mutations groups-from-listed, budget-unchecked and
caps-unchecked added, and the round's legacy-admitted, memo-off, walk-unclamped,
step6-skipped and ancestor-any listed in run.sh in place of ancestor-as-object.

The CLI's stream server now outlasts the deadline, so a client without the index
cap reports the deadline instead; the wall-clock assertion is dropped (the
deadline's own report is what the test reads).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 22:30:00 -04:00

15 lines
860 B
Diff

# must fail: receipts_delivery_gap
# a delivery-gap claim checked against an item at other coordinates (receipts::step6)
diff --git a/wai/wai-rs/src/http_binding/receipts.rs b/wai/wai-rs/src/http_binding/receipts.rs
index f2bdba57..d7049807 100644
--- a/wai/wai-rs/src/http_binding/receipts.rs
+++ b/wai/wai-rs/src/http_binding/receipts.rs
@@ -597,7 +597,7 @@ fn step6(
// §2.4.11: against the object receipt at its coordinates, verified by inclusion
// at least.
ClaimBody::DeliveryGap(g) => {
- let at = passed.iter().find(|v| {
+ let at = passed.iter().rev().find(|v| v.object.object_id < u64::MAX || {
(v.object.track_alias, v.object.group_id, v.object.object_id) == (g.track_alias, g.group_id, g.object_id)
});
let v = at.ok_or(ReceiptRefusal::ContextNotHeld)?;