Review remediation: Lane F — Galaxy driver (fable; review fable) #735

Open
opened 2026-10-22 06:05:18 -04:00 by dohertj2 · 0 comments
Owner

From the 2026-10-21 Fable system review. Findings R0x:ID refer to docs/reviews/2026-10-21/0x-*.md (location, evidence, failure scenario, fix recipe). Plan: docs/superpowers/plans/2026-10-22-review-remediation.md.

Lane F — Galaxy driver (fable; review fable)

Owns: src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy*/**, the AdminUI GalaxyDriverForm.razor.
Tests: Driver.Galaxy.Tests, Driver.Galaxy.Browser.Tests

  • F1 Real teardown (R06:G-1, G-2, G-9, G-3):
    • ShutdownAsync stops the pump, alarm feed, deploy watcher, probe watcher and supervisor, disposes the session + clients, and nulls the seams so InitializeAsync rebuilds. DisposeAsync stays the idempotent final teardown.
    • StartDeployWatcherAsync stops the previous watcher.
    • ReconnectSupervisor disposes each cycle's CTS.
    • Tests with fake gRPC clients:
      • After ShutdownAsync, every stream is cancelled and both channels are disposed.
      • Five watchdog cycles leave exactly one DeployWatcher (positive control: rediscovery still fires once per deploy).
  • F2 Probe watcher + liveness:
    • Register probe handles in SubscriptionRegistry under a reserved id, and Rebind them in ResubscribeAllAsync (G-4).
    • GalaxyDiscoverer returns its fetched hierarchy, so discovery fetches once (G-7).
    • A throttled LastSuccessfulRead stamp from OnPumpDataChange (G-11).
    • An EventPump dispatch-loop exit ⇒ NotifyStreamFault (G-10).
    • Test: a ScanState event updates GetHostStatuses and survives a reconnect.
  • F3 Wire knobs + writes:
    • DiscoverPageSize → DiscoverHierarchyAsync. If the mxaccessgw RPC lacks a page parameter, add a cross-repo task in mxaccessgw and page client-side meanwhile.
    • ProbeTimeoutSeconds → probe deadline (G-5, G-6).
    • First-touch write pipeline: concurrent AddItem/Advise across distinct tags, bounded at 8 (G-8; acks stay serial by design).

Lane gate: suites green. Wave 4 userGate: with a reachable mxaccessgw, 20 config deploys keep mxgateway.sessions.open flat, read from the gw metrics endpoint.

From the 2026-10-21 Fable system review. Findings `R0x:ID` refer to `docs/reviews/2026-10-21/0x-*.md` (location, evidence, failure scenario, fix recipe). Plan: `docs/superpowers/plans/2026-10-22-review-remediation.md`. ### Lane F — Galaxy driver (fable; review fable) **Owns:** `src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy*/**`, the AdminUI `GalaxyDriverForm.razor`. **Tests:** `Driver.Galaxy.Tests`, `Driver.Galaxy.Browser.Tests` - **F1 Real teardown** (`R06:G-1`, `G-2`, `G-9`, `G-3`): - `ShutdownAsync` stops the pump, alarm feed, deploy watcher, probe watcher and supervisor, disposes the session + clients, and nulls the seams so `InitializeAsync` rebuilds. `DisposeAsync` stays the idempotent final teardown. - `StartDeployWatcherAsync` stops the previous watcher. - `ReconnectSupervisor` disposes each cycle's CTS. - Tests with fake gRPC clients: - After `ShutdownAsync`, every stream is cancelled and both channels are disposed. - Five watchdog cycles leave exactly one DeployWatcher (positive control: rediscovery still fires once per deploy). - **F2 Probe watcher + liveness:** - Register probe handles in `SubscriptionRegistry` under a reserved id, and `Rebind` them in `ResubscribeAllAsync` (`G-4`). - `GalaxyDiscoverer` returns its fetched hierarchy, so discovery fetches once (`G-7`). - A throttled `LastSuccessfulRead` stamp from `OnPumpDataChange` (`G-11`). - An `EventPump` dispatch-loop exit ⇒ `NotifyStreamFault` (`G-10`). - Test: a `ScanState` event updates `GetHostStatuses` and survives a reconnect. - **F3 Wire knobs + writes:** - `DiscoverPageSize` → `DiscoverHierarchyAsync`. If the mxaccessgw RPC lacks a page parameter, add a cross-repo task in mxaccessgw and page client-side meanwhile. - `ProbeTimeoutSeconds` → probe deadline (`G-5`, `G-6`). - First-touch write pipeline: concurrent AddItem/Advise across distinct tags, bounded at 8 (`G-8`; acks stay serial by design). **Lane gate:** suites green. Wave 4 userGate: with a reachable mxaccessgw, 20 config deploys keep `mxgateway.sessions.open` flat, read from the gw metrics endpoint.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#735