From 6aeb53a9931e9e3a4f80b70eb45d6ada9c66c02a Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Mon, 13 Jul 2026 12:55:15 -0400 Subject: [PATCH] =?UTF-8?q?docs(archreview):=20round-2=20COMPLETE=20capsto?= =?UTF-8?q?ne=20=E2=80=94=20all=2012=20plans=20merged=20@31c98200?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All 12 R2 plans executed + merged (PRs #426-#437) in 3 waves. Consolidated unit sweep green on merged master; 3 failures confirmed pre-existing/environmental (not R2). Records the PR/wave map, unit-sweep tallies, and the deferred integration / docker-dev / 2-node-rig / VPN heavy-pass checklist. --- archreview/plans/00-INDEX.md | 6 +++++ archreview/plans/STATUS.md | 43 ++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/archreview/plans/00-INDEX.md b/archreview/plans/00-INDEX.md index d3605145..71b53886 100644 --- a/archreview/plans/00-INDEX.md +++ b/archreview/plans/00-INDEX.md @@ -5,6 +5,12 @@ > 2026-07-12 **re-review at `f6eaa267`** produced an updated 12-item action list > ([`../00-OVERALL.md`](../00-OVERALL.md)) — see **Round 2 plans** below. +> **✅ 2026-07-13 — ALL 12 ROUND-2 PLANS EXECUTED + MERGED** to `master` (`31c98200`), each as a Gitea PR +> (#426–#437) in 3 dependency-ordered waves. Consolidated unit sweep green (integration + live-`/run` gates +> deferred to a serialized heavy pass). See the "Round-2 COMPLETE" capstone at the bottom of +> [`STATUS.md`](STATUS.md) for the PR/wave map, unit-sweep tallies, the 3 confirmed-pre-existing failures, and +> the deferred heavy/live-pass checklist. + ## Round 2 plans (2026-07-12, verified at `f6eaa267`) One plan per action item in the updated `00-OVERALL.md` prioritized list. Each verifies its findings diff --git a/archreview/plans/STATUS.md b/archreview/plans/STATUS.md index 89a6b68b..0c875b87 100644 --- a/archreview/plans/STATUS.md +++ b/archreview/plans/STATUS.md @@ -186,3 +186,46 @@ what the unit leg cannot; (c) migrate the 3 xunit v2 holdouts once Akka ships an `: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`. + +## ✅ Round-2 COMPLETE — all 12 plans merged (2026-07-13) + +All 12 round-2 plans were executed (isolated worktree per plan, per-task TDD, pathspec-scoped commits) and +**merged to `master` + pushed to `origin/master`** in 3 dependency-ordered waves, each plan landing as its own +Gitea PR (closed-as-merged) behind a `dotnet build` barrier. **Final state: master `31c98200`.** + +| Wave | Plans (PR#) | +|---|---| +| A (no cross-plan deps) | R2-12 #426 · R2-06 #427 · R2-05 #428 · R2-01 #429 · R2-03 #430 · R2-02 #431 | +| B (parse-site barrier) | R2-10 #432 · R2-04 #433 · R2-11 #434 | +| C (largest, depend on earlier) | R2-08 #435 · R2-07 #436 · R2-09 #437 | + +Cross-plan mutexes honored: R2-01 landed before R2-09 (PollGroupEngine v2 / S7 fork retirement); R2-11's +`TagConfigIntent.Parse` consolidation landed before R2-09's driver parse edits; the three plans that all edit +`AddressSpaceApplier.cs` + `DriverHostActor.cs` + `OtOpcUaNodeManager.cs` (R2-04/R2-07/R2-08/R2-10/R2-11) were +merged sequentially with the shared-file auto-merges verified by targeted unit runs each time. + +### Consolidated unit sweep on merged `master` `31c98200` (integration suites excluded — ~16 GB/run leak) +Solution `dotnet build` clean (0 errors). All R2-relevant unit suites GREEN, incl.: OpcUaServer 341, Runtime +398, Commons(+forwarding guard) 122, Core 276, Core.Abstractions 128, Core.Scripting 137, Core.VirtualTags 59, +Cluster 29, Security 84, ControlPlane 78, Analyzers 32, AdminUI 537, Client.CLI 104, Client.Shared 182, +Client.UI 126, Core.AlarmHistorian 29, Core.ScriptedAlarms 71, and all drivers (S7 254, Modbus 312+161, AbCip +336, AbLegacy 209, TwinCAT 189, FOCAS 265, Galaxy 304, Galaxy.Browser 21, Historian.Gateway 102, OpcUaClient 131). + +**3 failures, all confirmed PRE-EXISTING / environmental (git diff `1676c8f4..HEAD` empty on their paths — R2 never touched them):** +1. `Core.Abstractions.Tests.InterfaceIndependenceTests.AllPublicTypes_LiveInRootNamespace` — flags the pre-R2 + `Core.Abstractions.Historian.*` continuous-historization types living in a sub-namespace. **Pre-existing convention debt — needs-owner-decision** (move the types to root, or relax the test to allow the intentional Historian grouping). +2. `Driver.S7.Cli.Tests.SubscribeCommandConsoleHandlerCommentTests...` — pre-existing docs-scan test looking for a `"CliFx console"` phrase removed by `9cad9ed0`. **Follow-up: repoint or delete the phrase-scan.** +3. `Driver.OpcUaClient.Browser.Tests` (3) — `Connection refused`; need the live opc-plc endpoint (`10.100.0.35:50000`), unreachable offline. **Environmental — pass with the fixture up.** + +### Deferred heavy / live-`/run` pass (serialized — single-tenant rig; controller-owned) +Every plan's integration-suite and live-`/run` gates were deferred (not skipped) so nothing OOMs the box and the +shared docker-dev rig / VPN infra isn't contended. To run one-at-a-time: + +- **Full integration-suite sweep** (10 `*.IntegrationTests` projects, one at a time): discharges R2-02 T18, R2-03 T11, R2-07 T5/T6, R2-08 T14, R2-11 T24. +- **docker-dev `:9200` live-`/run`** (rebuild BOTH centrals): R2-02 T15 (ResilienceConfig warning banner / input lockout / unknown-key survival), R2-03 T12 (VT fail→Bad→recover + P7 no-recompile), R2-10 T10 (breaker-open on both centrals + recovery + FOLLOWUP-10 log line), R2-11 T22 (typed-editor Writable checkbox), **R2-07 T12 (surgical add/remove/mixed — F10b inertness risk, MUST run)**, R2-05 T15 (over-gating regression only — deny unobservable under `DisableLogin`). +- **2-node redundancy rig:** **R2-04 T13/T15 — behavior-affecting S4 primary-gate default-deny; MUST run before trusting the failover-role change.** +- **Genuinely external / needs-user:** R2-06 T12 (VPN to a 0.2.0 HistorianGateway for the live EnsureTags retype probe), R2-08 live legs (real GLAuth outage/recovery cycle; `Category=LiveIntegration` gateway soak), R2-01 T11 (S7 SYN-blackhole outage on the `10.100.0.35` s7_1500 fixture). + +### Deferred behavior-change follow-up (deliberately not shipped) +**R2-11 Phase C** — flip the runtime driver parsers to strict (typo'd enum ⇒ `BadNodeIdUnknown` instead of a +wrong-width `Good`). Land only after fleets have run `Deployment:TagConfigValidationMode=Error` clean.