dohertj2 dohertj2
  • Joined on 2026-02-20
dohertj2 created pull request dohertj2/lmxopcua#41 2026-04-18 20:12:38 -04:00
Phase 3 PR 42 — ModbusPal simulator profiles for Standard + DL205/DL260
dohertj2 created branch phase-3-pr42-modbuspal-profiles in dohertj2/lmxopcua 2026-04-18 20:07:01 -04:00
dohertj2 pushed to phase-3-pr42-modbuspal-profiles at dohertj2/lmxopcua 2026-04-18 20:07:01 -04:00
02a0e8efd1 Phase 3 PR 42 — ModbusPal simulator profiles for Standard Modbus + DL205/DL260 quirks. Two hand-authored .xmpp profiles in tests/ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests/ModbusPal/ that integration tests load via the GUI to drive the suite without a real PLC. Both well-formed XML (verified via PowerShell [xml] cast); both copied to test-output as PreserveNewest content per the existing csproj rule.
dohertj2 pushed to v2 at dohertj2/lmxopcua 2026-04-18 19:52:23 -04:00
7009483d16 Merge pull request 'Phase 3 PR 41 — Document AutomationDirect DL205 / DL260 Modbus quirks' (#40) from phase-3-pr41-dl205-quirks-doc into v2
9de96554dc Phase 3 PR 41 — Document AutomationDirect DL205 / DL260 Modbus quirks. Adds docs/v2/dl205.md (~300 lines, 8 H2 sections, primary-source citations) covering every place the DL205/DL260 family diverges from textbook Modbus or has non-obvious behavior a generic client gets wrong. Replaces the placeholder _pending_ list in modbus-test-plan.md with a confirmed-behaviors table that doubles as the integration-test roadmap.
Compare 2 commits »
dohertj2 merged pull request dohertj2/lmxopcua#40 2026-04-18 19:52:21 -04:00
Phase 3 PR 41 — Document AutomationDirect DL205 / DL260 Modbus quirks
dohertj2 created pull request dohertj2/lmxopcua#40 2026-04-18 19:52:19 -04:00
Phase 3 PR 41 — Document AutomationDirect DL205 / DL260 Modbus quirks
dohertj2 created branch phase-3-pr41-dl205-quirks-doc in dohertj2/lmxopcua 2026-04-18 19:51:14 -04:00
dohertj2 pushed to phase-3-pr41-dl205-quirks-doc at dohertj2/lmxopcua 2026-04-18 19:51:14 -04:00
9de96554dc Phase 3 PR 41 — Document AutomationDirect DL205 / DL260 Modbus quirks. Adds docs/v2/dl205.md (~300 lines, 8 H2 sections, primary-source citations) covering every place the DL205/DL260 family diverges from textbook Modbus or has non-obvious behavior a generic client gets wrong. Replaces the placeholder _pending_ list in modbus-test-plan.md with a confirmed-behaviors table that doubles as the integration-test roadmap.
dohertj2 pushed to v2 at dohertj2/lmxopcua 2026-04-18 19:41:57 -04:00
af35fac0ef Merge pull request 'Phase 3 PR 40 — LiveStack write + subscribe tests against TestMachine_001' (#39) from phase-3-pr40-livestack-write-subscribe into v2
aa8834a231 Phase 3 PR 40 — LiveStackSmokeTests: write-roundtrip + subscribe-receives-OnDataChange against the live Galaxy. Finishes LMX #5 by exercising the IWritable + ISubscribable capability paths end-to-end through the Proxy → OtOpcUaGalaxyHost service → MXAccess → real Galaxy.
Compare 2 commits »
dohertj2 merged pull request dohertj2/lmxopcua#39 2026-04-18 19:41:56 -04:00
Phase 3 PR 40 — LiveStack write + subscribe tests against TestMachine_001
dohertj2 created pull request dohertj2/lmxopcua#39 2026-04-18 19:41:54 -04:00
Phase 3 PR 40 — LiveStack write + subscribe tests against TestMachine_001
dohertj2 created branch phase-3-pr40-livestack-write-subscribe in dohertj2/lmxopcua 2026-04-18 19:40:12 -04:00
dohertj2 pushed to phase-3-pr40-livestack-write-subscribe at dohertj2/lmxopcua 2026-04-18 19:40:12 -04:00
aa8834a231 Phase 3 PR 40 — LiveStackSmokeTests: write-roundtrip + subscribe-receives-OnDataChange against the live Galaxy. Finishes LMX #5 by exercising the IWritable + ISubscribable capability paths end-to-end through the Proxy → OtOpcUaGalaxyHost service → MXAccess → real Galaxy.
dohertj2 pushed to v2 at dohertj2/lmxopcua 2026-04-18 19:31:32 -04:00
976e73e051 Merge pull request 'Phase 3 PR 39 — LiveStackFixture skip-with-reason for elevated shells' (#38) from phase-3-pr39-elevated-shell-skip into v2
8fb3dbe53b Phase 3 PR 39 — LiveStackFixture pre-flight detect for elevated shell. The OtOpcUaGalaxyHost named-pipe ACL allows the configured SID but explicitly DENIES Administrators per decision #76 / PipeAcl.cs (production-hardening — keeps an admin shell on a deployed box from connecting to the IPC channel without going through the configured service principal). A test process running with a high-integrity elevated token carries the Administrators group in its security context regardless of whose user it 'is', so the deny rule trumps the user's allow and the pipe connect returns UnauthorizedAccessException at the prerequisite-probe stage. Functionally correct but operationally confusing — when this hit during the PR 38 install workflow it took five steps to diagnose ('the user IS in the allow list, why is the pipe denying access?'). The pre-existing ParityFixture (PR 18) already documents this with an explicit early-skip; LiveStackFixture (PR 37) didn't.
a61e637411 Gitignore .local/ directory for dev-only secrets like the Galaxy.Host shared secret. Created during the PR 38 / install-services workflow to keep per-install secrets out of the repo.
Compare 3 commits »
dohertj2 merged pull request dohertj2/lmxopcua#38 2026-04-18 19:31:31 -04:00
Phase 3 PR 39 — LiveStackFixture skip-with-reason for elevated shells
dohertj2 created pull request dohertj2/lmxopcua#38 2026-04-18 19:31:29 -04:00
Phase 3 PR 39 — LiveStackFixture skip-with-reason for elevated shells
dohertj2 created branch phase-3-pr39-elevated-shell-skip in dohertj2/lmxopcua 2026-04-18 19:19:21 -04:00
dohertj2 pushed to phase-3-pr39-elevated-shell-skip at dohertj2/lmxopcua 2026-04-18 19:19:21 -04:00
8fb3dbe53b Phase 3 PR 39 — LiveStackFixture pre-flight detect for elevated shell. The OtOpcUaGalaxyHost named-pipe ACL allows the configured SID but explicitly DENIES Administrators per decision #76 / PipeAcl.cs (production-hardening — keeps an admin shell on a deployed box from connecting to the IPC channel without going through the configured service principal). A test process running with a high-integrity elevated token carries the Administrators group in its security context regardless of whose user it 'is', so the deny rule trumps the user's allow and the pipe connect returns UnauthorizedAccessException at the prerequisite-probe stage. Functionally correct but operationally confusing — when this hit during the PR 38 install workflow it took five steps to diagnose ('the user IS in the allow list, why is the pipe denying access?'). The pre-existing ParityFixture (PR 18) already documents this with an explicit early-skip; LiveStackFixture (PR 37) didn't.
a61e637411 Gitignore .local/ directory for dev-only secrets like the Galaxy.Host shared secret. Created during the PR 38 / install-services workflow to keep per-install secrets out of the repo.
Compare 2 commits »
dohertj2 pushed to v2 at dohertj2/lmxopcua 2026-04-18 17:53:28 -04:00
e4885aadd0 Merge pull request 'Phase 3 PR 38 — DriverNodeManager HistoryRead override (LMX #1 finish)' (#37) from phase-3-pr38-historyread-servicehandler into v2
52a29100b1 Phase 3 PR 38 — DriverNodeManager HistoryRead override (LMX #1 finish). Wires the OPC UA HistoryRead service through CustomNodeManager2's four protected per-kind hooks — HistoryReadRawModified / HistoryReadProcessed / HistoryReadAtTime / HistoryReadEvents — each dispatching to the driver's IHistoryProvider capability (PR 35 for ReadAtTime + ReadEvents on top of PR 19-era ReadRaw + ReadProcessed). Was the last missing piece of the end-to-end HistoryRead path: PR 10 + PR 11 shipped the Galaxy.Host IPC contracts, PR 35 surfaced them on IHistoryProvider + GalaxyProxyDriver, but no server-side handler bridged OPC UA HistoryRead service requests onto the capability interface. Now it does.
Compare 2 commits »
dohertj2 merged pull request dohertj2/lmxopcua#37 2026-04-18 17:53:26 -04:00
Phase 3 PR 38 — DriverNodeManager HistoryRead override (LMX #1 finish)