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
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
This commit is contained in:
@@ -150,3 +150,15 @@ surface), 03/S2/S3 block-bridging, 03/P1 surgical adds (guard prerequisite in pl
|
||||
per-plan task counts, effort, and suggested execution order: [`00-INDEX.md`](00-INDEX.md) §"Round 2
|
||||
plans". 193 bite-sized TDD tasks total, ~18–24 dev-days end-to-end; R2-01/02/03 (the re-review's
|
||||
new-and-sharp items) are ~2 days combined.
|
||||
|
||||
## Round-2 execution — completed plans
|
||||
|
||||
| Plan | Findings closed | Branch @ commit | Verification |
|
||||
|---|---|---|---|
|
||||
| **R2-02 — ResilienceConfig hardening** | 01/S-6 (High), 01/U-6, 01/S-8=03/S12, 04/C-7, 01/S-7=03/S13 | `r2/02-resilience-config-hardening` (18 commits `4be13429`…`d8c6357b`) | **01/S-6:** parser clamps timeout/retry/breaker overrides (timeout≤0→tier default, breaker==1→2, retry/breaker caps) with appending diagnostics + belt-and-braces `Build` clamp so a pipeline build can never throw Polly `ValidationException` (`ResiliencePolicyRanges` single-source-of-truth in Core.Abstractions); brick-repro guard + `Build_NeverThrows_ForHostileDirectOptions` + factory-seam wiring proof; AdminUI `ResilienceFormModel.Validate()` warning block. **01/S-8:** parser forces Write/AlarmAcknowledge retry overrides to 0 (spec invariant) **and** dispatch flips to `isIdempotent:false` (RED-first on `DriverInstanceActorResilienceWiringTests`); non-idempotent arm now caches the no-retry snapshot once per invoker (01/P-4) + records tracker in-flight accounting; `WriteIdempotentAttribute`'s false "reads via reflection" claim corrected; Write/Ack retry cells disabled in the form. **01/U-6:** bulkhead knob deleted end-to-end (options + parser + form + razor); stored keys become ignored unknowns (migration-free); tree-wide doc sweep; `Options_properties_are_exactly_the_pipeline_wired_set` inertness guard. **04/C-7:** `ResilienceFormModel` reworked to a `JsonObject`-bag round-trip preserving unknown top-level/capability/per-policy keys; malformed stored JSON sets `ParseFailed` → section locks + `ToJson` returns the original text verbatim + explicit discard button; raw pane shows the bound stored value. **01/S-7:** options-generation stamped per-`Create` (`Interlocked`) and threaded into the pipeline-cache key so a lingering old child's post-invalidate re-cache is unreachable by the new generation; `Invalidate` demoted to cleanup. Core resilience 121/121, AdminUI form 10/10, Analyzers 32/32, Runtime wiring 2/2 (+full Runtime 364/364 at task 7); solution builds clean, 0 production OTOPCUA0001. **Deferred to serial live pass:** task 15 (docker-dev `:9200` `/run` — warning banner, input lockout, unknown-key survival) + the whole-solution `dotnet test` sweep (integration suites excluded per the shared-rig memory-leak constraint). |
|
||||
|
||||
**Report anchor drifts to fold into the next report refresh** (from the R2-02 verification pass): (1)
|
||||
`01-core-composition.md` U-6 anchor `DriverResilienceOptions.cs:23-25` → the two bulkhead properties sat at
|
||||
`:23` and `:29` (now deleted); (2) `01-core-composition.md` U-6 anchor
|
||||
`DriverResiliencePipelineBuilder.cs:99-177` → `Build` was `:99-176`. All other cited lines were exact at
|
||||
`f6eaa267`.
|
||||
|
||||
Reference in New Issue
Block a user