Chirp 0.10.0

Milo-backed typed CLI and read-only agent inspections, stronger release evidence, Pelt production hardening, and cacheable anonymous sessions.

Focus: make Chirp's developer surface typed and agent-readable while strengthening the evidence used to ship the framework and its in-tree PostgreSQL driver.

This minor release moves the packagedchirpcommand tree onto Milo's lazy typed command runtime without changing established command syntax, output channels, or exit behavior. It also exposes the reviewed read-onlycheck, diff, and routes operations through MCP and llms.txt, improves Pelt's real-wire and streaming behavior, and restores shared-cache eligibility for anonymous responses that do not create session state.


Highlights

One typed command surface for people and agents

Thechirp CLI now uses milo-cli>=0.4.1,<0.5for lazy typed command registration. Chirp retains its existing handlers and compatibility contract, including help, flags, aliases, output streams, exit codes, and import-laziness expectations.

The read-onlycheck, diff, and routesinspections return stable structured results for programmatic and agent calls. Those operations are explicitly allowlisted for MCP andllms.txt; lifecycle and write-capable commands remain CLI-only.

Release evidence that fails when it should

CI now enforces the configured coverage floor and rejects new exception-hygiene regressions. A machine-checked public-claims ledger ties performance, free-threading, and rolling-reload language to committed evidence.

The synthetic benchmark tooling can emit versioned comparison artifacts, includes FastHTML in the optional framework matrix, and runs paired same-runner regression checks with a 20 percent median-latency budget. These workloads are internal regression evidence, not production performance claims.

Pelt real-wire and streaming hardening

Pelt's PostgreSQL conformance lane now covers PostgreSQL 13 through 18. A versioned live-PostgreSQL benchmark separates aggregate query scaling from single-cursor and sequential bulk-loop boundaries.

Server cursors release decoded batches as iteration advances, resumed portals retain row metadata, and database errors preserve exact SQLSTATE values while linking to the shipped troubleshooting catalog.

Cacheable anonymous responses

SessionMiddleware no longer emits Set-Cookieor writes to a custom session store when a request has no incoming session cookie and creates no session state. Public anonymous responses can therefore remain eligible for shared and CDN caching.

Existing cookies still receive sliding refreshes. Timeout metadata, CSRF token creation, nested session mutation, login/logout, tampered-cookie recovery, and explicit session regeneration retain their previous persistence behavior.

Production request limits

Chirp now forwardsAppConfig.max_request_body_sizeto Pounce. Requests within the application's configured limit are no longer rejected by Pounce's former 1 MiB default, while oversized requests still receive a wire-boundary 413.


Migration notes

  • CLI dependency:milo-cli>=0.4.1,<0.5is now a required dependency. Existing Chirp commands retain their tested terminal contract.
  • Anonymous sessions: code that intentionally depended on receiving an empty session cookie on the first untouched request must now create session state or callregenerate_session()explicitly.
  • Pelt: cursor batching and portal-resume fixes do not change the public query API; they correct memory and protocol behavior.
  • Htmx: htmx 2.0.10 remains the default. The htmx 4 preview is unchanged by this release.

Dependencies

  • kida-templates>=0.11.0
  • bengal-pounce>=0.8.2
  • milo-cli>=0.4.1,<0.5

Upgrading

pip install --upgrade "bengal-chirp==0.10.0"

See the full changelog for every included fix and release-evidence change.