Chaos observability contracts: cross-process capture + retry/JWKS/outbox
## Summary Chaos tests in `crates/canopy-test-lib/tests/evil_proxy_test.rs` assert that production code emits structured `tracing::Event` targets (`retry`, `jwks`, `outbox`) under EvilProxy-induced fault conditions. Three of the four current chaos tests are architecturally blind: `SpanCapture::install_scoped` uses `tracing::subscriber::set_default`, which is thread-local in the test process, so events emitted inside devstack containers (canopy-auth JWKS refresh, canopy-mq outbox drainer) cannot be observed. This epic delivers a cross-process observability harness, restores the three blind contracts, and lands a bounded retry middleware that closes the in-process chaos contract. ## Plan link [canopy-api retry middleware plan](https://gitlab.com/gadhs/application/eligibility/canopy/-/blob/feature/canopy-api-retry-middleware/docs/modules/ROOT/pages/plans/canopy-api-retry-middleware.adoc) — canonical implementation plan for the retry observability contract (issue #462). Child plans for #480/#481/#482/#483 will be landed under `docs/modules/ROOT/pages/plans/` as each child issue starts. ## Task list - [ ] #462 Retry observability contract (weight: 3) - [ ] #480 Cross-process chaos observability harness (weight: 5) - [ ] #481 JWKS chaos observability contract (weight: 3) - [ ] #482 Outbox chaos observability contract (weight: 3) - [ ] #483 Durable chaos-observability docs + runbook (weight: 2)
epic