docs(claude): add Sister Projects section + cross-repo index propagation rule
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user