Doc refresh � multi-driver OtOpcUa (#202�#206) #149
Reference in New Issue
Block a user
Delete Branch "docs-refresh-client-index"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Rewrites docs/.md + docs/reqs/.md + adds docs/drivers/* index to match the shipped OtOpcUa platform instead of the v1 LmxOpcUa single-driver story. Five commits spanning five task slices (5 parallel agents on worktrees). Core architecture docs, driver docs (Galaxy split + drivers index), operational docs (Config DB, Phase 6.3 Redundancy, Phase 6.2 security, three-process hosting, StatusDashboard retired), requirements (7 files updated/retired), Client.CLI+UI brand flip + new docs/README.md tier-index. Verified class references against v2 source; notes in commit bodies flag two real gaps � Aveva Historian IPC wire-up needs final Host-side aggregate-column mapping, LdapAuthenticationProvider per the brief is actually LdapUserAuthenticator � plus CLAUDE.md TopShelf reference is stale (replaced by BackgroundService + NSSM).
lmxopcua-cliexecutable name + the{LocalAppData}/LmxOpcUaClient/pki/PKI folder name AS-IS because those are real filesystem-level residuals the code still uses (Program.cs SetExecutableName + OpcUaClientService.cs:428) — flipping them requires migration shims so existing dev boxes don't lose their trusted-cert store; added explicit doc text explaining the residual + why it persists so future readers aren't confused. Fixed the sample connect-output "Server: LmxOpcUa" to "Server: OtOpcUa Server" matching the live ApplicationName in OpcUaServerOptions.cs:39. Client.UI.md: replaced the 4 LmxOpcUa references — overview one-liner, status-bar mock (now reads "OtOpcUa Server" matching the server's reported ApplicationName), endpoint-url example, settings persistence path. Same residual-explanation note added under the LmxOpcUaClient/settings.json path pointing at the Client.Shared session-factory literal at OpcUaClientService.cs:428. docs/README.md is new — a top-level index distinguishing the two documentation tiers (current reference at docs/*.md vs implementation history + design notes at docs/v2/*.md). Every current-reference doc gets a one-line role description in a section table (Architecture + data-path / Drivers / Operational / Client tooling / Requirements) so a new reader picking up the repo finds their way in without having to grep file names. Cross-link calls out that load-bearing references from top-level docs (plan.md decisions, admin-ui.md, acl-design.md, config-db-schema.md, driver-specs.md, dev-environment.md, test-data-sources.md) live under v2/. Notes up front that the project was renamed LmxOpcUa → OtOpcUa and that any remaining LmxOpcUa-string in paths is a deliberate residual with a migration follow-up, so readers don't chase phantom bugs. Four parallel doc-refresh agents currently working on the rest of docs/*.md (task #202 core architecture, #203 driver docs split, #204 operational, #205 requirements) — those commits will land on separate worktree branches + get folded in together once complete; this index already lists the docs they'll produce (drivers/README.md, drivers/Galaxy.md, drivers/Galaxy-Repository.md) so the final merge just has the content showing up where the index already points. f217636467Restructure the driver-facing docs to match the OtOpcUa v2 multi-driver reality (Galaxy, Modbus, S7, AB CIP, AB Legacy, TwinCAT, FOCAS, OPC UA Client — 8 drivers total; Galaxy ships as three projects) and the capability-interface architecture where every driver opts into IDriver + whichever of IReadable / IWritable / ITagDiscovery / ISubscribable / IHostConnectivityProbe / IPerCallHostResolver / IAlarmSource / IHistoryProvider / IRediscoverable it supports. Doc scope follows the code: one-driver-specific docs scoped to that driver, cross-driver concerns live once at the top level, per-driver specs cross-link to docs/v2/driver-specs.md rather than duplicate. What changed per file: - docs/MxAccessBridge.md -> docs/drivers/Galaxy.md (git mv + rewrite): retitled "Galaxy Driver", reframed as one of seven drivers. Added Project Split table (Shared .NET Standard 2.0 / Host .NET 4.8 x86 / Proxy .NET 10) and Why Out-of-Process section citing both the MXAccess bitness constraint and Tier C stability isolation per docs/v2/plan.md section 4. Added IPC Transport section covering pipe naming, MessagePack framing, DACL that denies Admins, shared-secret handshake, heartbeat, and CallAsync<TReq,TResp> dispatch. Moved file paths from src/ZB.MOM.WW.LmxOpcUa.Host/MxAccess/* to src/ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Host/Backend/MxAccess/* and added the Shared + Proxy key-file tables. Added CapabilityInvoker + OTOPCUA0001 analyzer callout. Cross-linked to drivers/README.md, Galaxy-Repository.md, HistoricalDataAccess.md. - docs/GalaxyRepository.md -> docs/drivers/Galaxy-Repository.md (git mv + rewrite): retitled "Galaxy Repository — Tag Discovery for the Galaxy Driver", opened with a comparison table showing how every driver's ITagDiscovery source is different (AB CIP @tags walker, TwinCAT SymbolLoaderFactory, FOCAS CNC queries, OPC UA Client Session.Browse, etc). Repositioned GalaxyRepositoryService as the Galaxy driver's ITagDiscovery.DiscoverAsync implementation. Updated paths to Driver.Galaxy.Host/Backend/GalaxyRepository/*. Added IRediscoverable section covering the on-change-redeploy IPC path. - docs/drivers/README.md (new): index with ground-truth driver table — project path, stability tier, wire library, capability-interface list, and one notable quirk per driver. Verified against the driver csproj files and class declarations on focas-pr3-remaining-capabilities (the most recent branch containing every driver). Galaxy gets its own dedicated docs; the other seven drivers cross-link to docs/v2/driver-specs.md. Lists the full Core.Abstractions capability surface, DriverTypeRegistry, CapabilityInvoker, and OTOPCUA0001 analyzer. - docs/HistoricalDataAccess.md (rewrite): reframed around IHistoryProvider as a per-driver optional capability interface. Replaced v1 HistorianPluginLoader / AvevaHistorianPluginEntry plugin architecture with the v2 story — Historian.Aveva was merged into Driver.Galaxy.Host/Backend/Historian/ and IPC-forwarded through GalaxyProxyDriver. Documented all four IHistoryProvider methods (ReadRawAsync / ReadProcessedAsync / ReadAtTimeAsync / ReadEventsAsync), CapabilityInvoker wrapping with DriverCapability.HistoryRead, and the per-driver coverage matrix (Galaxy + OPC UA Client implement; the six protocol drivers don't and return BadHistoryOperationUnsupported). Kept the cluster-failover + health-counter + quality-mapping detail for the Galaxy Historian implementation. Flagged one gap: Proxy forwards all four history message kinds but the Host-side HistoryAggregateType -> AnalogSummary column mapping may surface GalaxyIpcException{Code="not-implemented"} on a given branch until the Phase 2 Galaxy out-of-process gate lands. Driver list built against ground truth (src on focas-pr3-remaining-capabilities): Driver.Galaxy.{Shared,Host,Proxy}, Driver.Modbus, Driver.S7, Driver.AbCip, Driver.AbLegacy, Driver.TwinCAT, Driver.FOCAS, Driver.OpcUaClient. Capability interface lists verified against each *Driver.cs class declaration. Aveva Historian ported to Driver.Galaxy.Host/Backend/Historian/; no separate Historian.Aveva assembly on v2 branches. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>