# 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.
