R2-10 Resilience observability (arch-review round 2) #432

Closed
dohertj2 wants to merge 0 commits from r2/10-resilience-observability into master
Owner

Round-2 arch-review plan R2-10 (finding 03/U10 = 04/U-5 — the resilience-status tracker had no reader; operators were blind to retry/breaker state).

Mirrors the driver-health flow end-to-end so retry/breaker/staleness is visible on AdminUI /hosts:

  • Core truthfulness fixes: RecordBreakerClose + derived IsBreakerOpen; OnClosed records the close; RecordSuccess wired onto every CapabilityInvoker success path (ConsecutiveFailures is now a true consecutive counter, not stuck-forever after a blip).
  • Contract: DriverResilienceStatusChanged (topic driver-resilience-status).
  • Transport: DriverResilienceStatusPublisherService (5s full-snapshot DPS publisher) + wiring guard (built-but-never-wired guard).
  • Admin: IDriverResilienceStatusStore + in-memory impl + DriverResilienceStatusBridge (in-process DPS subscriber, no self-dialed hub) + resilience chip section on DriverStatusPanel.razor.

10/11 tasks; T10 (docker-dev live /run breaker-open/recovery + FOLLOWUP-10 log-line gate) deferred to serial heavy pass. Build clean; Core.Tests resilience 128/128, Host.IntegrationTests publisher/guards 6/6, AdminUI.Tests store 8/8. Plan: archreview/plans/R2-10-resilience-observability-plan.md.

Round-2 arch-review plan **R2-10** (finding 03/U10 = 04/U-5 — the resilience-status tracker had no reader; operators were blind to retry/breaker state). Mirrors the driver-health flow end-to-end so retry/breaker/staleness is visible on AdminUI `/hosts`: - **Core truthfulness fixes:** `RecordBreakerClose` + derived `IsBreakerOpen`; `OnClosed` records the close; `RecordSuccess` wired onto every CapabilityInvoker success path (ConsecutiveFailures is now a true consecutive counter, not stuck-forever after a blip). - **Contract:** `DriverResilienceStatusChanged` (topic `driver-resilience-status`). - **Transport:** `DriverResilienceStatusPublisherService` (5s full-snapshot DPS publisher) + wiring guard (built-but-never-wired guard). - **Admin:** `IDriverResilienceStatusStore` + in-memory impl + `DriverResilienceStatusBridge` (in-process DPS subscriber, no self-dialed hub) + resilience chip section on `DriverStatusPanel.razor`. 10/11 tasks; **T10 (docker-dev live /run breaker-open/recovery + FOLLOWUP-10 log-line gate) deferred** to serial heavy pass. Build clean; Core.Tests resilience 128/128, Host.IntegrationTests publisher/guards 6/6, AdminUI.Tests store 8/8. Plan: `archreview/plans/R2-10-resilience-observability-plan.md`.
dohertj2 added 10 commits 2026-07-13 10:51:47 -04:00
Author
Owner

Landed on master via merge commit 19c14301 (local --no-ff merge, clean build barrier). Closing as merged.

Landed on `master` via merge commit `19c14301` (local --no-ff merge, clean build barrier). Closing as merged.
dohertj2 closed this pull request 2026-07-13 10:52:29 -04:00
Some checks are pending
v2-ci / build (pull_request) Successful in 3m47s
v2-ci / unit-tests (pull_request) Failing after 8m12s

Pull request closed

Sign in to join this conversation.