New diagnostic event `http.attempt_completed` carries `attempt`,
`durationMs` (wall-clock from request start to response settle), `ok`,
`status?` and `error?`. Lets dashboards compute p50/p95 latency without
inferring it from the request + retrying events.
`http.retrying` is now emitted AFTER the wait so it can include
`actualDelayMs` — the observed time between attempts may differ from
the computed `retryDelay` when an abort cuts the wait short or a
`beforeRetry` hook takes noticeable time. `HttpDiagnosticMeta` gains
`durationMs`, `ok`, `actualDelayMs` and `abortReason` slots.
The pre-existing test that asserted exactly 1 DEBUG log per request
now asserts 2 (REQUEST + ATTEMPT_COMPLETED) — that is the change in
shape this block introduces.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>