-
Aleksei authored
AUDIT-codex-2026-08-11.md gains a closure table: every finding mapped to fixed / rejected / accepted-as-risk with the commit that did it, plus the two findings discovered while writing the regression tests and a note on the two test attempts that mutation checking proved were vacuous. README and config.example.yaml document the new settings (server.read_timeout, cache.max_bytes, queue_size: 0 meaning no waiting room) and the new metric (mcp_gateway_cache_bytes) and label folding. The design-decisions section now explains three-valued breaker outcomes and why the breaker is acquired after admission rather than before, and what 'degraded' means now that a skipped backend counts. Five items are recorded in Limitations rather than fixed, each with its reason: calls carrying _meta are never cached; plaintext tokens remain in the retained config; timeouts apply on the Run path only, not to an embedder serving Handler() from its own http.Server; and a wedged stdio write is bounded for callers but its writer goroutine can still park where the platform gives pipes no write deadline. Benchmarks re-run after all fixes; changes are within noise and the numbers in the README are updated to the fresh run.
1c0fa41b