Pulse/internal/metrics
rcourtman 29ad80870d
Some checks are pending
Build and Test / Secret Scan (push) Waiting to run
Build and Test / Detect changed areas (push) Waiting to run
Build and Test / Frontend (push) Blocked by required conditions
Build and Test / Backend tests (api) (push) Blocked by required conditions
Build and Test / Backend tests (rest-0) (push) Blocked by required conditions
Build and Test / Backend tests (rest-1) (push) Blocked by required conditions
Build and Test / Script smoke tests & backend build (push) Blocked by required conditions
Build and Test / Benchmarks (push) Blocked by required conditions
Canonical Governance / governance (push) Waiting to run
Core E2E Tests / Validate E2E tier selection (push) Waiting to run
Core E2E Tests / Playwright Core E2E (shard 1/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 2/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 3/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 4/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 5/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 6/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 7/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 8/8) (push) Blocked by required conditions
Core E2E Tests / Agent registration lifecycle (push) Waiting to run
Core E2E Tests / E2E verdict (push) Blocked by required conditions
Preserve per-provider semantics on batch metric misses
A second adversarial review round surfaced two robustness gaps. The
incident recorder treated any ID absent from a metrics batch as an
empty successful sample, which silently rewrites the semantics of a
provider whose per-ID method errors or synthesizes for unknown IDs;
batch misses now fall through to the per-ID call, keeping the batch
for the hot path only. And one bySource mutation site, the PBS host
disk association helper, predated the source-target cache invalidation
invariant; it now invalidates like every other mutation path. The gap
was unobservable today because the adjacent ingest already invalidated,
but the invariant is only useful if it is total.

Contract-Neutral: robustness fixes inside existing cache and sampling semantics, no resolved values change
2026-08-16 23:03:12 +01:00
..
incident_recorder.go Preserve per-provider semantics on batch metric misses 2026-08-16 23:03:12 +01:00
incident_recorder_additional_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
incident_recorder_batch_test.go Preserve per-provider semantics on batch metric misses 2026-08-16 23:03:12 +01:00
incident_recorder_concurrency_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
incident_recorder_coverage_test.go Coordinate incident recorder async persistence 2026-07-04 13:13:41 +01:00
incident_recorder_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00