0.9.1
Patch release for stable readiness responses during drain, async shutdown cleanup, metadata-derived CLI help, and release tooling
Highlights
- Stable readiness during shutdown — late HTTP/1
GETandHEADprobes for the configured readiness path keep the built-in structured JSON503response at async-worker and shared multi-worker drain boundaries. Other late traffic retains the generic shutdown response. - Cleaner async connection teardown — accepted connection tasks remain owned until their writers detach, including reset, timeout, capacity-rejection, and CPython 3.14 delayed-detach paths.
- One source for CLI metadata — branded help, JSON Schema, and MCP discovery now derive descriptions from Milo metadata hooks and schema-backed command definitions.
- Release and workload proof — GitHub release metadata is parsed structurally, and the benchmark suite adds an artifact-ready Milo MCP workload with routing-header and SSE framing proof.
Upgrade notes
- This is a backward-compatible patch release with no configuration migration.
- Deployments using
health_check_pathcan now rely on matching late HTTP/1 readiness probes returning JSON with"status": "draining"while the listener remains reachable.HEADmatchesGETstatus and headers without a body. - The drain-boundary request inspection is capped at one second and bounded by
header_timeout,shutdown_timeout, andmax_header_size; it never dispatches to the ASGI application. - CLI integrations should continue treating command docstrings and generated schema as the public description source. Pounce now requires Milo 0.4.0 or newer.
Added
- An artifact-ready Milo MCP benchmark workload with rotating fixed-rate request variants and real-worker routing-header/SSE framing proof. (#307)
Changed
- CLI help now uses Milo metadata hooks and schema-derived parameter descriptions across branded help, JSON Schema, and MCP discovery. (#309)
- The stable Railway recipe is pinned to the published 0.9.0 artifact while the separate canary continues to build the current repository checkout. (#299)
Fixed
- Late readiness probes preserve structured draining JSON at async and shared multi-worker live-listener rejection boundaries. (#308)
- Async workers retain accepted connection tasks through writer closure and tolerate delayed transport detachment during SIGTERM. (#302)
make gh-releasereads project name and version from the PEP 621 project table, preventing changelog category names from corrupting release titles. (#303)
Install
Core HTTP/1.1 server:
uv add "bengal-pounce==0.9.1"
All optional protocol dependencies:
uv add "bengal-pounce[full]==0.9.1"