Items raised in reviews that are real but not actionable now.
As of 0.7.0, all planned epics (3, 4, 5, 6) are closed — see the change Index. The Open section below is the long-tail register: items that remain technically real but depend on speculative future work, so they're parked here pending a concrete trigger.
-
CircuitBreaker — manual control (
src/httpware/middleware/resilience/circuit_breaker.py) — the trip-mode work is done (0.13.0 shipped the opt-in time-based failure-rate mode) and 0.14.0 shipped the read-onlystateproperty + publicCircuitStateenum. The one remaining piece isforce_open/force_closed(Polly'sManualControl) — the genuinely YAGNI half for an HTTP client (you'd usually just stop sending requests), keyed off the 0.10.0 audit's events-only control-surface decision (decision 4). Demand-gated.Don't regress: httpware's HTTP-native failure classification (429/4xx = success out of the box) is already ahead of the generic-predicate breakers — preserve it in any future work here.
Decided against (don't re-propose):
- Count-based window variant (
window_type="count") — time-based +minimum_callsalready covers the fixed-sample-size rationale, and count-based adds a real staleness downside for HTTP health detection (a low-traffic "last N calls" window can reflect outcomes from minutes ago). Polly v8 removed count-based; Hystrix and Envoy are time-based. For a spiky low-volume backend, a longerwindow_seconds+minimum_callsis the better tool. Revisit only on concrete Resilience4j-parity demand. - Slow-call-rate dimension — Resilience4j-only, and redundant with
AsyncTimeout.
- Count-based window variant (
- Non-streaming hard response-body cap (2026-06-14 deep audit, Medium) — for a non-streaming
send(), httpx2 buffers the whole body before httpware reaches the decode seam, so a true cap needs a streaming-with-capped-accumulator rework of the Seam-A terminal. The currentmax_error_body_bytesguard only applies atstream()entry and only whenContent-Lengthis declared. Revisit trigger: the Seam-A terminal is next reworked, or a concrete large-response abuse is reported. (src/httpware/client.py)