This directory is the living per-capability truth about what httpware
does now — one file per capability, living prose, dated by git (no
frontmatter). It is the promotion target on every ship: the why and how it
got here live in planning/, the what it is today lives
here.
- overview.md — what
httpwareis (a thinhttpx2wrapper) and the cross-cutting architectural invariants. - client.md — the sync
Client/ asyncAsyncClientpair and their parity contract (typed decoding, middleware chain, resilience,stream()). - middleware.md — Seam A: the middleware protocol,
Nexttype, and chain composition at client construction. - decoders.md — Seam B: the
ResponseDecoderprotocol and the pydantic / msgspec decoder resolution. - errors.md — the status-keyed exception tree raised on 4xx/5xx
and the
StatusErrorconstruction invariant. - resilience.md — the stdlib resilience suite (retry, retry budget, bulkhead, circuit breaker, timeout) composed via the middleware chain.
- extras.md — Seam C: optional dependencies imported only inside their dedicated modules.
- conventions.md — house code conventions: naming, imports, docstrings, exception construction.
- testing.md — the testing conventions (
pytest-asyncioauto mode, mock transports, property-based tests).
When a change alters a capability's behavior, hand-edit the matching
architecture/<capability>.md in the same PR — the edit rides in the same
diff and is reviewed with the code, never applied as a separate post-merge step.
That promotion is what keeps this directory true; code that changes without it
silently rots the truth home.