diff --git a/docs/v2/V1_ARCHIVE_STATUS.md b/docs/v2/V1_ARCHIVE_STATUS.md index f9696db..239e3de 100644 --- a/docs/v2/V1_ARCHIVE_STATUS.md +++ b/docs/v2/V1_ARCHIVE_STATUS.md @@ -1,56 +1,47 @@ -# V1 Archive Status (Phase 2 Stream D, 2026-04-18) +# V1 Archive Status — CLOSED (Phase 2 Streams D + E complete) -This document inventories every v1 surface that's been **functionally superseded** by v2 but -**physically retained** in the build until the deletion PR (Phase 2 PR 3). Rationale: cascading -references mean a single deletion is high blast-radius; archive-marking lets the v2 stack ship -on its own merits while the v1 surface stays as parity reference. +> **Status as of 2026-04-18: the v1 archive has been fully removed from the tree.** +> This document is retained as historical record of the Phase 2 Stream D / E closure. -## Archived projects +## Final state -| Path | Status | Replaced by | Build behavior | -|---|---|---|---| -| `src/ZB.MOM.WW.OtOpcUa.Host/` | Archive (executable in build) | `OtOpcUa.Server` + `Driver.Galaxy.Host` + `Driver.Galaxy.Proxy` | Builds; not deployed by v2 install scripts | -| `src/ZB.MOM.WW.OtOpcUa.Historian.Aveva/` | Archive (plugin in build) | TODO: port into `Driver.Galaxy.Host/Backend/Historian/` (Task B.1.h follow-up) | Builds; loaded only by archived Host | -| `tests/ZB.MOM.WW.OtOpcUa.Tests.v1Archive/` | Archive | `Driver.Galaxy.E2E` + per-component test projects | `false` — `dotnet test slnx` skips | -| `tests/ZB.MOM.WW.OtOpcUa.IntegrationTests/` | Archive | `Driver.Galaxy.E2E` | `false` — `dotnet test slnx` skips | +All five v1 archive directories have been deleted: -## How to run the archived suites explicitly +| Path | Deleted | Replaced by | +|---|---|---| +| `src/ZB.MOM.WW.OtOpcUa.Host/` | ✅ | `OtOpcUa.Server` + `Driver.Galaxy.Host` + `Driver.Galaxy.Proxy` | +| `src/ZB.MOM.WW.OtOpcUa.Historian.Aveva/` | ✅ | `Driver.Galaxy.Host/Backend/Historian/` (ported in Phase 3 PRs 51-55) | +| `tests/ZB.MOM.WW.OtOpcUa.Historian.Aveva.Tests/` | ✅ | `Driver.Galaxy.Host.Tests/Historian/` | +| `tests/ZB.MOM.WW.OtOpcUa.Tests.v1Archive/` | ✅ | Per-component `*.Tests` projects + `Driver.Galaxy.E2E` | +| `tests/ZB.MOM.WW.OtOpcUa.IntegrationTests/` | ✅ | `Driver.Galaxy.E2E` + `Driver.Modbus.IntegrationTests` | -```powershell -# v1 unit tests (494): -dotnet test tests/ZB.MOM.WW.OtOpcUa.Tests.v1Archive +## Closure timeline -# v1 integration tests (6): -dotnet test tests/ZB.MOM.WW.OtOpcUa.IntegrationTests -``` +- **PR 2 (2026-04-18, phase-2-stream-d)** — archive-marked the four v1 projects with + `false` so solution builds and `dotnet test slnx` bypassed + them. Capture: `docs/v2/implementation/exit-gate-phase-2-final.md`. +- **Phase 3 PR 18 (2026-04-18)** — deleted the archived project source trees. Leftover + `bin/` and `obj/` residue remained on disk from pre-deletion builds. +- **Phase 2 PR 61 (2026-04-18, this closure PR)** — scrubbed the empty residue directories + and confirmed `dotnet build ZB.MOM.WW.OtOpcUa.slnx` clean with 0 errors. -Both still pass on this dev box — they're the parity reference for Phase 2 PR 3's deletion -decision. +## Parity validation (Stream E) -## Deletion plan (Phase 2 PR 3) +The original 494 v1 tests + 6 v1 integration tests are **not** preserved in the v2 branch. +Their parity-bar role is now filled by: -Pre-conditions: -- [ ] `Driver.Galaxy.E2E` test count covers the v1 IntegrationTests' 6 integration scenarios - at minimum (currently 7 tests; expand as needed) -- [ ] `Driver.Galaxy.Host/Backend/Historian/` ports the Wonderware Historian plugin - so `MxAccessGalaxyBackend.HistoryReadAsync` returns real data (Task B.1.h) -- [ ] Operator review on a separate PR — destructive change - -Steps: -1. `git rm -r src/ZB.MOM.WW.OtOpcUa.Host/` -2. `git rm -r src/ZB.MOM.WW.OtOpcUa.Historian.Aveva/` - (or move it under Driver.Galaxy.Host first if the lift is part of the same PR) -3. `git rm -r tests/ZB.MOM.WW.OtOpcUa.Tests.v1Archive/` -4. `git rm -r tests/ZB.MOM.WW.OtOpcUa.IntegrationTests/` -5. Edit `ZB.MOM.WW.OtOpcUa.slnx` — remove the four project lines -6. `dotnet build ZB.MOM.WW.OtOpcUa.slnx` → confirm clean -7. `dotnet test ZB.MOM.WW.OtOpcUa.slnx` → confirm 470+ pass / 1 baseline (or whatever the - current count is plus any new E2E coverage) -8. Commit: "Phase 2 Stream D — delete v1 archive (Host + Historian.Aveva + v1Tests + IntegrationTests)" -9. PR 3 against `v2`, link this doc + exit-gate-phase-2-final.md -10. One reviewer signoff +- `Driver.Galaxy.E2E` — cross-FX subprocess parity (spawns the net48 x86 Galaxy.Host.exe + + connects via real named pipe, exercises every `IDriver` capability through the + supervisor). Stability-findings regression tests (4 × 2026-04-13 findings) live here. +- Per-component `*.Tests` projects — cover the code that moved out of the monolith into + discrete v2 projects. Running `dotnet test ZB.MOM.WW.OtOpcUa.slnx` executes all of them + as one solution-level gate. +- `Driver.Modbus.IntegrationTests` — adds Modbus TCP driver coverage that didn't exist in + v1 (DL205, S7-1500, Mitsubishi MELSEC via pymodbus sim profiles — PRs 30, 56-60). +- Live-stack smoke tests (`Driver.Galaxy.E2E/LiveStack/`) — optional, gated on presence + of the `OtOpcUaGalaxyHost` service + Galaxy repository on the dev box (PRs 33, 36, 37). ## Rollback -If Phase 2 PR 3 surfaces downstream consumer regressions, `git revert` the deletion commit -restores the four projects intact. The v2 stack continues to ship from the v2 branch. +`git revert` of the deletion commits restores the projects intact. The v2 stack continues +to ship from the `v2` branch regardless.