docs: relabel wonder-app-vd03 as DEV, not production, across plans, records, reviews and API specs

vd03 is the DEV box (vd = DEV, vq03/vq04 = QA). Historical docs called it prod/production.
Only vd03-referential uses are changed; generic 'production' wording (production HOCON,
production code paths, ASPNETCORE_ENVIRONMENT=Production, real-world production guidance)
is unchanged. One verbatim git commit message quoted in PLAN-07 is left as recorded.
This commit is contained in:
Joseph Doherty
2026-11-10 15:11:45 -05:00
parent ee320cd544
commit 48517b49fb
35 changed files with 110 additions and 110 deletions
@@ -1,4 +1,4 @@
# Deployment record — wonder-app-vd03 (prod single host) — 2026-08-20
# Deployment record — wonder-app-vd03 (DEV single host) — 2026-08-20
Binary + schema upgrade of the single-host install at `wonder-app-vd03.zmr.zimmer.com`
(`E:\ApiInstall\ScadaBridge`; `ScadaBridge-Central` :8085, `ScadaBridge-Site`, `ScadaBridge-LDAP`;
@@ -76,6 +76,6 @@ restart cleared it incidentally. A graceful gateway shutdown takes the same path
(pinned by `MxGatewayDataConnectionReconnectTests.EventStreamGracefulCompletion_*`).
Deployed to all four QA nodes as a binary-only swap (no migrations, no config): backups
`app.bak.20260820T165357` / `cli.bak.20260820T165357` on both boxes; `/health/ready` 200
Healthy, 2/2 members, site replication connected. **Not yet on prod vd03.** Live gate still to
Healthy, 2/2 members, site replication connected. **Not yet on DEV vd03.** Live gate still to
run: close the site's session from the gateway dashboard and confirm the site reconnects
(`MxGateway event stream ended without a fault … signalling disconnect` → reconnect → values resume).
@@ -1,4 +1,4 @@
# Deployment record — QA (wonder-app-vq03/vq04) + prod (wonder-app-vd03) — 2026-08-21
# Deployment record — QA (wonder-app-vq03/vq04) + DEV (wonder-app-vd03) — 2026-08-21
Binary-only upgrade of all three ZB hosts from `da0bfe2b` to `main` @ **`691a2f2f`** (create-time
connection bindings: Create Instance page binds module groups via `IFlatteningPipeline.PreviewAsync`,
@@ -12,7 +12,7 @@ schema step and no DB backup. Driven entirely from psbridge on vq04; vq03 and vd
| Publish | Host (`app\`, 520 files) + CLI (`cli\`, 223 files) `-c Release -r win-x64 --self-contained`, `scadabridge-691a2f2f.zip` 125 MB, `psbridge push --compress` (SHA-256 `c11bcf15…`). |
| Staging | `E:\psrem\releases\691a2f2f\unpacked` on vq04; robocopy `/MIR` to `\\wonder-app-vq03\E$\psrem-stage\691a2f2f` and `\\wonder-app-vd03\E$\psrem-stage\691a2f2f` (1246 files each, ProductVersion verified before the swap). |
| QA swap | 06:30:40 — Site pair stopped, Central pair stopped, `app`/`cli` → `app.bak.20260821T063040` / `cli.bak.20260821T063040` on both boxes, stage copied, each box's three `appsettings*.json` copied back, Central pair started, +20 s Site pair started. |
| Prod swap | 06:33:42 — same on vd03 (single host): `app.bak.20260821T063342`, `cli.bak.20260821T063342`. |
| DEV swap | 06:33:42 — same on vd03 (single host): `app.bak.20260821T063342`, `cli.bak.20260821T063342`. |
| Preserved | `appsettings*.json`, service registry environment, `central\data`, `site\data` on every host. |
### Verification
@@ -1,4 +1,4 @@
# 2026-08-21 — QA (vq03/vq04) + prod (vd03) → `afb27e77` (template picker)
# 2026-08-21 — QA (vq03/vq04) + DEV (vd03) → `afb27e77` (template picker)
**Build:** `main` @ `afb27e77` (= `origin/main`), ProductVersion `1.0.0+afb27e77803b0ef775ce7202df1a04fe36e7889e`.
**Delta from the boxes' previous build `691a2f2f`:** Central UI only — Create Instance picks its
@@ -16,7 +16,7 @@ confirm verb pinned by test (plan `docs/plans/2026-08-21-template-picker.md`). *
2. **QA 08:29** — Site pair stopped, Central pair stopped (both boxes together), `app`/`cli` renamed to
`*.bak.20260821T082917`, staged copy in, each box's three `appsettings*.json` restored,
Central pair started (+20 s), Site pair started (+45 s).
3. **Prod 08:32** — same on vd03, backups `*.bak.20260821T083203`.
3. **DEV 08:32** — same on vd03, backups `*.bak.20260821T083203`.
## Verification
@@ -64,8 +64,8 @@ modified except the `SimpleAlarmStatusRequest` stub (below); CvdReactor and its
| Object | Id | Notes |
|---|---|---|
| Template `TestMESReceiver` | 28 | 26 STATIC attributes with the prod MESReceiver names; ready flags default true |
| Template `TestDelmiaReceiver` | 29 | 10 STATIC attributes with the prod DelmiaReceiver names; ReadyFlag true |
| Template `TestMESReceiver` | 28 | 26 STATIC attributes with the real MESReceiver names; ready flags default true |
| Template `TestDelmiaReceiver` | 29 | 10 STATIC attributes with the real DelmiaReceiver names; ReadyFlag true |
| Template `TestMesMachine` | 30 | standalone base (not CvdReactor-derived); composes `LeftMESReceiver`/`RightMESReceiver`/`DelmiaReceiver`; Call scripts `MesMoveIn`, `MesMoveOut`, `ProcessRecipeDownload`, `AlarmStatus`; simulators `SimLeft/RightMoveIn`, `SimLeft/RightMoveOut`, `SimDelmiaRecipe` |
| Instance `SBTEST01` | 9 | Dev Site, deployed |
| Instance `SBTEST02` | 10 | Dev Site, deployed; alarm override `SensorFault` → MES-reportable |
@@ -1,4 +1,4 @@
# 2026-09-XX — QA (vq03/vq04) + prod (vd03) → shared inbound API key store (PLANNED)
# 2026-09-XX — QA (vq03/vq04) + DEV (vd03) → shared inbound API key store (PLANNED)
**Status: PLANNED — not yet run.** This record is a script for the operator to execute on the
ZB servers and then fill in (date/time, log lines, results). Everything below the header table
@@ -45,7 +45,7 @@ new secret is distributed.
both boxes, staged copy in, each box's three `appsettings*.json` restored **and then edited**
to add the `ApiKeyStore.Provider` block above, Central pair started (+20 s), Site pair started
(+45 s).
4. **Prod `_____`** — same on vd03 (single node): backup `*.bak.<timestamp>`, same appsettings
4. **DEV `_____`** — same on vd03 (single node): backup `*.bak.<timestamp>`, same appsettings
edit, Central started, no site-pair step (`vd03` central is single-node; its site pair is
unaffected by this change and follows the same stop/start cadence as any other binary swap on
that box).
@@ -65,8 +65,8 @@ steps 5–6:
| `inbound-api-keys.sqlite.imported` (+ `-wal.imported`/`-shm.imported`) present next to each QA node's data | present on both boxes | `_____` |
| `scadabridge security api-key list` against `.2:8085` | matches `.3:8085` (same key set) | `_____` |
| `scadabridge security api-key list` against `.3:8085` | matches `.2:8085` | `_____` |
| Prod boot log | `Inbound API key store: imported … KeysInserted=5` for the five existing keys (`mes`, `mes api key`, `delmia-mes-receivers`, `TestKey`, `JOE_TEST_KEY`) | `_____` |
| Prod `security api-key list` before vs. after | unchanged | `_____` |
| DEV boot log | `Inbound API key store: imported … KeysInserted=5` for the five existing keys (`mes`, `mes api key`, `delmia-mes-receivers`, `TestKey`, `JOE_TEST_KEY`) | `_____` |
| DEV `security api-key list` before vs. after | unchanged | `_____` |
| Boot warning **absent** on QA post-change | (was present pre-change: `Startup configuration warning: Inbound API keys use the per-node SQLite store on a 2-node central cluster; …`) — confirm it no longer logs | `_____` |
| Failover check, no file copy: mint a key via the active node, `curl -X POST /api/DelmiaRecipeDownload` with it aimed at the **non-active** node's port | 200, not 401 (standby relays; both nodes now verify against the same SQL rows even without a relay) | `_____` |
| Optional real failover: stop the active node, repeat the same call against the new active | 200 | `_____` |
@@ -91,7 +91,7 @@ on SQLite.
## Quarantine
Leave the `*.imported` files in place for **30 days** after the change is confirmed stable on
both QA and prod, then delete them (all three: `.imported`, `-wal.imported`, `-shm.imported`)
both QA and DEV, then delete them (all three: `.imported`, `-wal.imported`, `-shm.imported`)
from every node's data volume. Do not delete them before that window — they are the only
rollback path for keys as of the cutover moment.
@@ -107,10 +107,10 @@ rollback path for keys as of the cutover moment.
| QA start (Site, both boxes) | `_____` | vq03 + vq04 | `_____` | — |
| QA import — first node | `_____` | `_____` | `_____` | `_____` |
| QA import — second node | `_____` | `_____` | `_____` | `_____` |
| Prod stop | `_____` | vd03 | `_____` | — |
| Prod swap + appsettings edit | `_____` | vd03 | `_____` | — |
| Prod start | `_____` | vd03 | `_____` | `_____` |
| Prod import | `_____` | vd03 | `_____` | `_____` |
| DEV stop | `_____` | vd03 | `_____` | — |
| DEV swap + appsettings edit | `_____` | vd03 | `_____` | — |
| DEV start | `_____` | vd03 | `_____` | `_____` |
| DEV import | `_____` | vd03 | `_____` | `_____` |
| Failover relay check (no file copy) | `_____` | `_____` | `_____` | — |
| Optional real failover | `_____` | `_____` | `_____` takeover `_____ s` | — |