Repository navigation
v0.2.51
Patch release for the v0.2.50 full audit.
Fixes from the OpenCode Review audit and a second review of the fix diff:
- limits: a refusal no longer pins the adaptive bracket at the floor; the wedge path keeps the declaration at or above the served floor; the sweep only reads 400/413 as size refusals, retries only transient failures, never counts an unconfirmed refusal, and charges its budget in requests; limits-watch rejects unknown walls, dates empty attempts, exits 2 for reached-but-empty, and bounds the numbers an unattended merge may publish.
- request path: null host histories no longer throw; signal and opening session keys are separate domains; reply-size limits are UTF-8 bytes; terminal responses no longer overwrite streamed text; Responses/Messages call ids are claimed once per reply and kept stable across frames.
- tools: limits-audit survives null catalogue rows and rows that cannot be built; capture only writes the provider-utils it observed and names CAPTURE_PORT on a taken port; tools-smoke and limits-audit share one base-URL rule; assert-bun-version checks the child process it runs.
- CI: credential scanning runs before repository code, reads HEAD, and scans contents; the gate report is quoted, not interpreted; the Zen probe is push-only; a Node host-smoke job covers 18.17.0 and the current LTS; walls uses one rolling branch/PR, reads the survey exit code, and reports merged only after GitHub says MERGED.
- docs: the numbers, commands, exit codes, and env variables the fixes moved.
Verification: 657 unit tests pass; Node 18.17.0 and 24.x smoke pass; CI green on the release commit.