open-standards/wai/http-conformance/falsify/response-no-clock.patch
Transaction Science 9786590154 wai: HTTP corpus round 4 — fetch_timed runs the session on a clock: the base ready before its refinement, the deadline from the verifying response, a refinement's whole-object 200 that never reaches the base
- wai_http_vectors: op fetch_timed (a script of base / base_once / refinement / tick
  steps, each at a time on the caller's clock) and ten timed_OS_* cases, held at
  generation to their outcomes: the base ready at the first step; deadlines that pass
  exactly at verification plus the deadline whether the clock was never told, told 0,
  stepped back before or after, or near the end of u64; a refinement 200 carrying the
  whole object with a base or enhancement byte changed, after the base is ready and
  before.
- http_verify.py: the session keeps the caller's clock (on_response carries it), the
  base and its time, frozen verified parts and a tick; a refinement's response keeps
  only its range; fetch_timed. Mutations base-at-done, tick-noop and
  refinement-unclipped each fail the timed cases; falsify/run.sh runs them.
- Falsify patches: base-ready-at-done, tick-noop, refinement-200-whole,
  response-no-clock, deadline-wraps; reuse-stale regenerated for the moved context.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 02:46:20 -04:00

15 lines
862 B
Diff

# must fail: timed_OS_clock_never_ticked timed_OS_clock_ticked_0 timed_OS_clock_stepped_back
# a response does not carry the clock, so the base is stamped with the last tick (session::FetchSession::on_response)
diff --git a/wai/wai-rs/src/http_binding/session.rs b/wai/wai-rs/src/http_binding/session.rs
index ec31518e..8b35b343 100644
--- a/wai/wai-rs/src/http_binding/session.rs
+++ b/wai/wai-rs/src/http_binding/session.rs
@@ -463,7 +463,7 @@ impl FetchSession {
/// range requested are kept, whatever else a `200` carries: no refinement's response
/// touches its base's bytes.
pub fn on_response(&mut self, id: u32, meta: &ResponseMeta, body: &[u8], now_ms: u64) -> Result<(), RangeRefusal> {
- self.now_ms = now_ms;
+ let _ = now_ms;
if let Some(Err(e)) = &self.result {
return Err(e.clone());
}