# Loose ends State as of 2026-05-18, after the #9–#29 task-list run. Everything on the formal task list is shipped except #20; the items below are what genuinely remains, plus follow-ups surfaced during the run. ## Open task - **#20 — D.1 dev-rig rollout smoke.** A full 3-service deployment (gateway + worker + server + Wonderware historian sidecar): deploy the refreshed binaries, run `scripts/install/Refresh-Services.ps1`, exercise alarms end-to-end, and capture the rollout artifact. The code blockers were cleared by #18; the act itself needs the physical AVEVA dev rig and cannot be produced from a dev box. Runbook context in `docs/plans/alarms-worker-wiring-plan.md`. ## Follow-ups surfaced during the run - **~~C.1 live SDK binding.~~** DONE (code). `SdkAlarmHistorianWriteBackend` (`src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Historian.Wonderware/Backend/`) now writes via the real entry point `HistorianAccess.AddStreamedValue(HistorianEvent, out error)` in `aahClientManaged`. Two plan corrections found while pinning it: (a) `ArchestrAAlarmsAndEvents.SDK` has no writer — it's a WCF query proxy; (b) writes need their own `ReadOnly=false` connection, not the shared read pool. Remaining: the live-rig write smoke (the `Live_*` tests are still `Skip`-gated) — folds into #20 / D.1. - **~~#24 Shelve-method routing.~~** DONE. Acknowledge / Confirm already routed; OneShotShelve / TimedShelve / Unshelve now route via the native `AlarmConditionState.OnShelve` / `OnTimedUnshelve` hooks wired in `DriverNodeManager.MarkAsAlarmCondition` (scripted alarms get a shelvable `ShelvedStateMachine` subtree created before `alarm.Create`). The three per-instance shelve method NodeIds are indexed so the Call gate resolves them to `OpcUaOperation.AlarmShelve`. `AddComment` also now routes to the engine (gated at the `AlarmAcknowledge` tier) — `phase-7-status.md` Gap 1 is fully closed. Remaining: address-space materialisation of the shelve method nodes is best confirmed by a live OPC UA browse (pairs with the G6 / D.1 rig steps). - **mxaccessgw alarm epic branch.** The alarm subsystem work (A.2/A.3/A.4 + the two production-gap fixes from #18) lives on the mxaccessgw branch `docs/alarm-client-wm-app-finding`. It is NOT merged to mxaccessgw's main. Whether/when to merge the alarm epic to main is an open release decision. - **#15 operator/lab GA gates.** Two v2 GA gates are manual lab steps, not automatable here: the OPC UA CTT (Compliance Test Tool) pass and the deployment-checklist signoff. Documented in `docs/plans/v2-ga-lab-gates-plan.md`. ## Done — for reference The 5 Phase 7 gaps discovered mid-run (#24–#28) were all completed and merged; no Phase 7 gaps remain open. Add any new follow-ups above as they are spun out.