R2-02 ResilienceConfig hardening (arch-review round 2) #431

Closed
dohertj2 wants to merge 0 commits from r2/02-resilience-config-hardening into master
Owner

Round-2 arch-review plan R2-02 (findings 01/S-6 High, 01/U-6, 01/S-8=03/S12, 04/C-7, 01/S-7=03/S13).

  • S-6 (High): parser clamps timeout/retry/breaker overrides (timeout≤0→tier default, breaker==1→2, caps) with diagnostics + belt-and-braces Build clamp so pipeline construction can never throw Polly ValidationException — kills the operator-authorable driver-brick. New ResiliencePolicyRanges (Core.Abstractions) + AdminUI Validate() range warnings.
  • S-8=S12: parser forces Write/AlarmAck retry→0 (spec invariant); dispatch flips to isIdempotent:false so #13-enabled write retries never retry command writes; WriteIdempotentAttribute false 'reads via reflection' claim corrected; retry cells disabled.
  • U-6: dead bulkhead knob deleted end-to-end (migration-free; stored keys ignored) + inertness guard.
  • C-7: ResilienceFormModel JsonObject-bag round-trip preserves unknown keys; malformed JSON → ParseFailed lock + verbatim ToJson + discard button.
  • S-7=S13: per-Create Interlocked options-generation in the pipeline-cache key kills the respawn stale-pipeline race.

17/19 tasks; T15 (docker-dev live /run) + T18 (full sweep) deferred to serial heavy pass. Build clean, 0 OTOPCUA0001 (pre-existing AbLegacy baseline aside); Core resilience 121/121, AdminUI form 10/10, Analyzers 32/32, Runtime 364/364. Plan: archreview/plans/R2-02-resilience-config-hardening-plan.md.

Round-2 arch-review plan **R2-02** (findings 01/S-6 High, 01/U-6, 01/S-8=03/S12, 04/C-7, 01/S-7=03/S13). - **S-6 (High)**: parser clamps timeout/retry/breaker overrides (timeout≤0→tier default, breaker==1→2, caps) with diagnostics + belt-and-braces Build clamp so pipeline construction can never throw Polly ValidationException — kills the operator-authorable driver-brick. New `ResiliencePolicyRanges` (Core.Abstractions) + AdminUI Validate() range warnings. - **S-8=S12**: parser forces Write/AlarmAck retry→0 (spec invariant); dispatch flips to `isIdempotent:false` so #13-enabled write retries never retry command writes; `WriteIdempotentAttribute` false 'reads via reflection' claim corrected; retry cells disabled. - **U-6**: dead bulkhead knob deleted end-to-end (migration-free; stored keys ignored) + inertness guard. - **C-7**: `ResilienceFormModel` JsonObject-bag round-trip preserves unknown keys; malformed JSON → ParseFailed lock + verbatim ToJson + discard button. - **S-7=S13**: per-Create Interlocked options-generation in the pipeline-cache key kills the respawn stale-pipeline race. 17/19 tasks; **T15 (docker-dev live /run) + T18 (full sweep) deferred** to serial heavy pass. Build clean, 0 OTOPCUA0001 (pre-existing AbLegacy baseline aside); Core resilience 121/121, AdminUI form 10/10, Analyzers 32/32, Runtime 364/364. Plan: `archreview/plans/R2-02-resilience-config-hardening-plan.md`.
dohertj2 added 17 commits 2026-07-13 10:28:10 -04:00
docs(r2-02): record R2-02 resilience hardening pass in STATUS.md + execution deviations
v2-ci / build (pull_request) Successful in 4m17s
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (pull_request) Failing after 4m2s
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (pull_request) Failing after 1m47s
v2-ci / unit-tests (pull_request) Failing after 6m35s
dd82e74011
Author
Owner

Landed on master via merge commit 46fedda3 (local --no-ff merge, STATUS.md resolved additively, clean build barrier). Closing as merged.

Landed on `master` via merge commit `46fedda3` (local --no-ff merge, STATUS.md resolved additively, clean build barrier). Closing as merged.
dohertj2 closed this pull request 2026-07-13 10:29:46 -04:00
Some checks are pending
v2-ci / build (pull_request) Successful in 4m17s
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (pull_request) Failing after 4m2s
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (pull_request) Failing after 1m47s
v2-ci / unit-tests (pull_request) Failing after 6m35s

Pull request closed

Sign in to join this conversation.