docs(claude): add Sister Projects section + cross-repo index propagation rule
ci / java (push) Successful in 2m2s
ci / windows-x86 (push) Failing after 29s
ci / nightly-windev (push) Has been skipped
ci / portable (push) Successful in 7m20s

This commit is contained in:
Joseph Doherty
2026-07-27 15:25:14 -04:00
parent 2d54ace5d9
commit aecc50a14b
+36
View File
@@ -15,6 +15,42 @@ The architecture is a two-process design — read `gateway.md` before making str
The worker must do all MXAccess COM calls on its dedicated STA thread, and the STA loop must pump Windows messages (`MsgWaitForMultipleObjectsEx` + `PeekMessage`/`DispatchMessage`) so MXAccess events deliver. A plain blocking queue on an STA is not enough. The worker must do all MXAccess COM calls on its dedicated STA thread, and the STA loop must pump Windows messages (`MsgWaitForMultipleObjectsEx` + `PeekMessage`/`DispatchMessage`) so MXAccess events deliver. A plain blocking queue on an STA is not enough.
## Sister Projects (scadaproj umbrella)
`mxaccessgw` is one of a family of related SCADA / OT / Wonderware / OPC UA **sister
projects** cloned as sibling directories under `~/Desktop/`. They are **separate repos
and separate processes**, coupled at runtime over wire protocols (gRPC + OPC UA) — not
by project/compile references — and share the `ZB.MOM.WW.*` product namespace. **mxaccessgw
is the linchpin**: the only component that loads 32-bit MXAccess COM, so the others depend
on it over gRPC rather than touching COM directly.
- **`~/Desktop/scadaproj`** ([`../scadaproj/CLAUDE.md`](../scadaproj/CLAUDE.md)) — the
umbrella/index workspace that aggregates the whole family (purpose, location, stack,
primary commands per project) and hosts the shared `ZB.MOM.WW.*` libraries, the dev/test
GLAuth (`10.100.0.35:3893`, source of truth `scadaproj/infra/glauth/`), and the shared
**`ZB.MOM.WW.GalaxyRepository`** package this gateway consumes. **This repo is indexed
there** — see the MxAccessGateway entry in `../scadaproj/CLAUDE.md`.
- **`~/Desktop/OtOpcUa`** (`lmxopcua`, [`../OtOpcUa/CLAUDE.md`](../OtOpcUa/CLAUDE.md)) — OPC
UA server whose in-process `GalaxyDriver` **depends on this gateway** for live Galaxy
read/write/subscribe and Galaxy Repository browse.
- **`~/Desktop/ScadaBridge`** ([`../ScadaBridge/CLAUDE.md`](../ScadaBridge/CLAUDE.md)) —
distributed SCADA platform whose Data Connection Layer has a dedicated **MxGateway
adapter** that talks to this gateway directly (native MxAccess data + A&C alarms),
bypassing OtOpcUa.
- **`~/Desktop/HistorianGateway`** (`historiangw`,
[`../HistorianGateway/CLAUDE.md`](../HistorianGateway/CLAUDE.md)) — single-process gRPC
sidecar **patterned on this gateway** (session model, dashboard shell, auth interceptor,
Galaxy SQL browse) but with no COM / no x86 worker. It also consumes the shared
`ZB.MOM.WW.GalaxyRepository` package — the same library mxaccessgw adopted (2026-06-25),
so the `galaxy_repository.v1` wire contract is served from one implementation.
**Propagate cross-repo changes to the umbrella index.** When a fact the index records about
mxaccessgw changes here — remote/push status, the `.proto` contracts (`mxaccess_gateway.proto`,
`mxaccess_worker.proto`, `galaxy_repository.proto`), the two-process architecture, shared-lib
consumption, or per-project commands — update the **MxAccessGateway entry in
[`../scadaproj/CLAUDE.md`](../scadaproj/CLAUDE.md)** in the same change so the umbrella index
never drifts from this repo. (Mirrors the same rule in the peer repos.)
## Build, Test, Run ## Build, Test, Run
```powershell ```powershell