docs(archreview): round-2 COMPLETE capstone — all 12 plans merged @31c98200
v2-ci / build (push) Successful in 3m49s
v2-ci / unit-tests (push) Failing after 8m22s

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.
This commit is contained in:
Joseph Doherty
2026-07-13 12:55:15 -04:00
parent 31c982008b
commit 6aeb53a993
2 changed files with 49 additions and 0 deletions
+6
View File
@@ -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
+43
View File
@@ -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.