diff --git a/vsl-msl/vsl-implementation-tracker.md b/vsl-msl/vsl-implementation-tracker.md index ad93821..3be0425 100644 --- a/vsl-msl/vsl-implementation-tracker.md +++ b/vsl-msl/vsl-implementation-tracker.md @@ -58,7 +58,7 @@ below; see [`msl-vsl-orchestration-kickoff.md`](msl-vsl-orchestration-kickoff.md | T1.4 | M1 | consumer (VPNG) | 🟢 | **DONE 2026-06-16 — golden match against the INSTALLED routine, both engines.** New repo `vpng` (github.com/vista-cloud-dev/vpng, public, layer **v**, own `VPNG` namespace; reads m-stdlib+v-stdlib, edits neither). `$$ping^VPNG()` = `$$get^VSLCFG("VPNG GREETING","hello")` → `$$encode^STDJSON` → `{"greeting":"hello"}` (waterline-clean: never touches `^XPAR`/raw JSON). TDD red-first (safe-default stub → 0/2; green → golden passes); `VPNGTST` adds a seeded-`"world"` test so green≠default fallback (it files only test-in-place, the T1.2 def gotcha). Branch `t1.4-t1.5-vpng-m1` (`1ac6b59`, pushed). | T1.3 | | T1.5 | M1 | consumer | 🟢 | **DONE 2026-06-16 — §12.1 determinism ledger GREEN, both engines (FIRST FULL VERTICAL).** Install-once base **MSL\*0.1\*1 → VSL\*1.0\*1 → VPNG\*1.0\*1** in dependency order (Required-Build chain genuinely present), each install status 3; verify all components present; **golden `{"greeting":"hello"}` BYTE-IDENTICAL on vehu (YDB) + foia-t12 (IRIS)**; test-in-place `VPNGTST` **3/3** against the installed routines (no `--routines`); uninstall reverse + verify-clean (`installed:false`, exit 3) → engine back to pre-install. All over the driver stack (no raw docker exec). vpng `make check-fast` green (fmt/lint/arch + namespaces + check-kids + engine-access; seam/icr/citation/msl-pin N/A — thin consumer); upstream m-stdlib/v-stdlib gates unregressed. **M1 DONE.** Memory: `vpng/docs/memory/t1.4-t1.5-vpng-m1.md`. | T1.4 | | M2 | M2 | m-stdlib + v-stdlib | 🟡 | **Lane A DONE 2026-06-16 — `STDNET` socket leaf (S4), YDB loopback echo GREEN 9/9.** The MSL half: `STDNET` portable raw-TCP API (handle-based; `listen`/`accept`/`connect`/`read`/`write`/`close` + `available`/`boundport`) over the engine-native `SOCKET` device, `@seam STDNET` (6 verbs) emitted + bump-forcer green; `@tier optional`; `m arch check` layer m / G2 clean. YottaDB-only today (single-process loopback via the GT.M collection-of-sockets device; `/WAIT` auto-accepts); IRIS soft-skips (`$$available`=0, the owed `|TCP|`+`JOB` follow-up). m-stdlib branch `m2-stdnet` **merged to `master` (`f3e1f9c`) + released as MSL tag `v0.8.0`** (`d51084b`, 2026-06-16) — `v0.8.0:dist/seam-snapshot.json` carries `seams.STDNET`. **Lane B DONE 2026-06-16 — `VSLIO` binds STDNET to VistA's device handler (outbound TCP via `CALL^%ZISTCP`, ICR #2118).** v-stdlib branch `m2-vslio` (`db3c5e0`, pushed). Re-pinned `msl_ref` v0.7.0→**v0.8.0** (first real fetch-at-tag run; check-msl-pin green, 2 seams). VSLIO exposes the CLIENT subset of STDNET's signature (`connect`/`read`/`write`/`close`) — **VistA has NO Supported listen/accept API** (corpus-confirmed; inbound = the listener-JOB pattern), so the server side stays in portable STDNET (waterline, no dup). **Acceptance over the driver: vehu (YDB) 10/10** (tier-1 `CALL^%ZISTCP` POP=0 + tier-2 byte echo via a raw STDNET listener + VSLIO client) **· foia-t12 (IRIS) 6/6** (connect-failure proves `CALL^%ZISTCP` wired on IRIS; TLS-gap green; **loopback soft-skips** — STDNET's IRIS leg is the owed m-stdlib follow-up). 3 boundaries green (① check-msl-pin@v0.8.0 ② check-icr 4 [VSLCFG #2263 + VSLIO #2118] ③ check-citations 4); `make check-fast` clean. TLS gap **loud** (`$$tlsAvailable`=0, `$$connectTls` raises `U-VSLIO-NOTLS`); **tier-3 real TLS stays infra-blocked** (no cert / `XU*8.0*787`; the gating cleanup STDNET's discoveries row tracks). KEY: the gold doc's input-var convention for `CALL^%ZISTCP` is WRONG — it's argument-passed `CALL(IP,SOCK,TO)`. No KIDS/VSLBLD (M5). Memory: `v-stdlib/docs/memory/m2-vslio.md`. **M2 functionally complete for tiers 1–2; owed: STDNET IRIS leg + tier-3 TLS.** Kickoffs: [`../prompts/m2-vslio-kickoff.md`](../prompts/m2-vslio-kickoff.md), [`../prompts/m2-lane-b-vslio-kickoff.md`](../prompts/m2-lane-b-vslio-kickoff.md). | T1.5 | -| M3 | M3 | m-stdlib + v-stdlib | 🟡 | **DONE (adapter) 2026-06-16 — the storage seam (S1) proven dual-engine.** **Lane A — `STDKV` (MSL storage leaf):** resolved design Q3 — the storage seam is a **NEW minimal MSL module** (a record store over `(coll,key,field)`), **not** a `STDFS` sub-API (STDFS stays filesystem-only). Four `$$` verbs (`set`/`get`/`exists`/`kill`), `@seam STDKV` (4 entry points, bump-forcer green), global-backed reference impl, **dual-engine GREEN 12/12** (YDB + IRIS, no `$ZVERSION` arm, byte-exact). m-stdlib branch `m3-stdkv` (`d22ff1b`) **released as MSL tag `v0.9.0`** (`497c678`) — `v0.9.0:dist/seam-snapshot.json` carries `seams.STDKV`. **Lane B — `VSLFS` binds STDKV→FileMan DBS:** `$$set`=`UPDATE^DIE` (returns resolved IENS; `"+1,"` adds), `$$get`/`$$exists`=`$$GET1^DIQ`, `$$kill`=`FILE^DIE` with FDA **`.01="@"`** (**corpus-confirmed: NO `DELETE^DIE`**; `^DIK`/direct KILL forbidden). v-stdlib branch `m3-vslfs` (`8b5839a`, pushed; **stacked on `m2-vslio`** — merge order m2→m3). Re-pinned `msl_ref` v0.8.0→**v0.9.0** (check-msl-pin green, 3 seams). **Acceptance over the driver: vehu (YDB) 7/7 · foia-t12 (IRIS) 7/7** — create→get byte-identical, exists, kill, and a **`DIERR`→`,U-VSL-FS-DIERR,` `$ECODE`** with detail in `$$lastError` (MSG_ROOT="ERR" keeps errors private). Test file = an **existing low-risk file (#8989.51**, free-text `.01`, no other required fields → safe ZZ throwaway record) — **the FileMan DD-install is decoupled and deferred to a v-pkg track**. Full v-stdlib suite **22/22**, no VSLCFG/VSLIO regression. 3 boundaries green (① check-msl-pin@v0.9.0 ② **check-icr 8** ③ **check-citations 8** vs gold corpus); `make check-fast` clean. **ICR is notional:** the FileMan DBS API has no ICR number in the gold corpus and the DBIA registry is a human-curated FORUM list, not enforced programmatically → `gen-icr.py` now accepts a notional `@icr DBS` marker (plan §5.4 amended; the gate's real invariants — Supported + no-direct-global — stay). No KIDS/VSLBLD (M5). Memory: m-stdlib `m3-stdkv-storage-seam.md`, v-stdlib `m3-vslfs.md`, shared `notional-dbia-not-a-blocker.md`. **Owed: the v-pkg FileMan-DD-install enabler (re-test with a dedicated throwaway file) + merge m2/m3.** Kickoff: [`../prompts/m3-vslfs-kickoff.md`](../prompts/m3-vslfs-kickoff.md). | M2 | +| M3 | M3 | m-stdlib + v-stdlib | 🟡 | **DONE (adapter) 2026-06-16 — the storage seam (S1) proven dual-engine.** **Lane A — `STDKV` (MSL storage leaf):** resolved design Q3 — the storage seam is a **NEW minimal MSL module** (a record store over `(coll,key,field)`), **not** a `STDFS` sub-API (STDFS stays filesystem-only). Four `$$` verbs (`set`/`get`/`exists`/`kill`), `@seam STDKV` (4 entry points, bump-forcer green), global-backed reference impl, **dual-engine GREEN 12/12** (YDB + IRIS, no `$ZVERSION` arm, byte-exact). m-stdlib branch `m3-stdkv` (`d22ff1b`) **released as MSL tag `v0.9.0`** (`497c678`) — `v0.9.0:dist/seam-snapshot.json` carries `seams.STDKV`. **Lane B — `VSLFS` binds STDKV→FileMan DBS:** `$$set`=`UPDATE^DIE` (returns resolved IENS; `"+1,"` adds), `$$get`/`$$exists`=`$$GET1^DIQ`, `$$kill`=`FILE^DIE` with FDA **`.01="@"`** (**corpus-confirmed: NO `DELETE^DIE`**; `^DIK`/direct KILL forbidden). v-stdlib branch `m3-vslfs` (`8b5839a`, pushed; **stacked on `m2-vslio`** — merge order m2→m3). Re-pinned `msl_ref` v0.8.0→**v0.9.0** (check-msl-pin green, 3 seams). **Acceptance over the driver: vehu (YDB) 7/7 · foia-t12 (IRIS) 7/7** — create→get byte-identical, exists, kill, and a **`DIERR`→`,U-VSL-FS-DIERR,` `$ECODE`** with detail in `$$lastError` (MSG_ROOT="ERR" keeps errors private). Test file = an **existing low-risk file (#8989.51**, free-text `.01`, no other required fields → safe ZZ throwaway record) — **the FileMan DD-install is decoupled and deferred to a v-pkg track**. Full v-stdlib suite **22/22**, no VSLCFG/VSLIO regression. 3 boundaries green (① check-msl-pin@v0.9.0 ② **check-icr 8** ③ **check-citations 8** vs gold corpus); `make check-fast` clean. **ICR is notional:** the FileMan DBS API has no ICR number in the gold corpus and the DBIA registry is a human-curated FORUM list, not enforced programmatically → `gen-icr.py` now accepts a notional `@icr DBS` marker (plan §5.4 amended; the gate's real invariants — Supported + no-direct-global — stay). No KIDS/VSLBLD (M5). Memory: m-stdlib `m3-stdkv-storage-seam.md`, v-stdlib `m3-vslfs.md`, shared `notional-dbia-not-a-blocker.md`. **ALL MERGED to default branches 2026-06-16:** m-stdlib `m3-stdkv`→`master` (**PR #17**, carries tag `v0.9.0`); v-stdlib `m2-vslio`→`main` (**PR #4**) then `m3-vslfs`→`main` (**PR #5**); docs `coordination`→`main` (**PR #2**). Merged `main` re-verified **22/22** (vehu); `make check-fast` clean. **Remaining owed (separate, deferred):** the v-pkg FileMan-DD-install enabler (re-test VSLFS with a dedicated throwaway file) + the M2 tail (STDNET IRIS leg + tier-3 TLS). Kickoff: [`../prompts/m3-vslfs-kickoff.md`](../prompts/m3-vslfs-kickoff.md). | M2 | | M4 | M4 | v-stdlib | ⬜ | VSLSEC bind + VSLLOG audit | M3 | | M5 | M5 | v-stdlib | ⬜ | VSLTASK self-restart + VSLBLD full install/back-out | M4 | | M6 | M6 | consumer + v-stdlib | ⬜ | VWEB FHIR GET /Patient over HTTPS, both engines | M5 | @@ -133,6 +133,7 @@ in that file. - 2026-06-16 — **T1.2 DONE — VSLCFGTST GREEN 3/3 on BOTH engines (the harness blocker fixed in m-cli); M1 vertical's first VSL* module complete.** The spike ([`../prompts/t1.2-harness-routine-base-spike.md`](../prompts/t1.2-harness-routine-base-spike.md)) found the routine-base drop was in **m-cli's internal DockerEngine** (`m test --docker`), NOT the m-ydb driver: `DockerRunner` exported `ydb_routines=" $ydb_routines"`, but a GT.M VistA (`vehu`) sets `gtmroutines` not `ydb_routines`, so the export went stageDir-only and (GT.M honors `ydb_routines` over `gtmroutines`) vehu's resident XPAR/FileMan routines vanished → suite aborted **0/0**. **Fix (m-cli `docker-routines-base` `d9ee76a`, pushed):** extract `dockerEnvPrefix` + fall back to `${ydb_routines:-$gtmroutines}`; TDD red→green table test; m-test-engine regression green; `make lint`+`go test ./...` clean. **Acceptance gate met: `VSLCFGTST` `0/0→3/3` GREEN on `vehu` (YDB) AND `foia-t12` (IRIS `--namespace VISTA`)** via the driver stack — no `M_YDB_*` host vars needed (the container `bash -l` env supplies `gtmgbldir`+`gtmroutines`; IRIS needed no change — namespace-resident routines). The three determinism boundaries stay green (re-pin MSL v0.7.0 / `check-icr` #2263 / `check-citations`). v-stdlib `t1.2-vslcfg` `e1f1aa8`; m-cli `docker-routines-base` `d9ee76a`; both pushed, unmerged. **Unblocks ALL VistA-dependent `VSL*TST` testing over `m test --docker`** (T1.3 VSL KIDS base, T1.4 VPNG, …). Memories: m-cli `docker-routines-gtmroutines-fallback`, v-stdlib `t1.2-vslcfg`. **Next: T1.3** (VSL KIDS base — `VSL*` + the PARAMETER DEFINITION component, install/uninstall clean both engines). - 2026-06-16 — **T1.3 DONE — VSL KIDS base installs/uninstalls clean on BOTH engines (M1 vertical's installable VSL layer).** v-stdlib branch `t1.3-vsl-kids`. Packaged the VSL layer as `kids/vsl.build.json` = **`VSLCFG` routine + a `VPNG GREETING` #8989.51 PARAMETER DEFINITION** (SYS entity 4.2, free text) **+ a Required Build on `MSL*0.1*1`** (action `DON'T INSTALL, LEAVE GLOBAL`; MSL base name read from `m-stdlib/kids/std.build.json`; **pin stays MSL v0.7.0**, no new tag). Built the **normalized export** with the **KRN-capable v-pkg standalone** (built from v-pkg `main` `2a3f273`, which merged the #8989.51 KRN-component + Required-Build capability) → `routines:1 paramDefs:1 requiredBuilds:1`, committed at `dist/kids/VSL.kids`; wired **`make kids`/`make check-kids`** (deterministic build twice → byte-identical + golden diff vs committed; SKIP-green when v-pkg absent, mirroring `check-citations`) into the `gates` aggregate; `v-pkg roundtrip` clean (54 pairs). **Acceptance gate met: install→verify→uninstall→verify-clean GREEN on BOTH engines OVER THE DRIVER** (`v-pkg`, not `m test`): **vehu** (YDB, `--engine ydb --transport docker` + `M_YDB_GBLDIR`/`M_YDB_ROUTINES`) and **foia-t12** (IRIS, `--engine iris --transport docker` + `M_IRIS_CONTAINER=foia-t12 M_IRIS_NAMESPACE=VISTA M_IRIS_IRIS_INSTANCE=IRIS`) — install reports `installed:true status:3`, verify reports `routines.VSLCFG:true` + `params."VPNG GREETING":true`, uninstall `uninstalled:true`, verify-clean `installed:false` (routine+param both false, exit 3). **Decisions:** (1) param NAME = **`VPNG GREETING`** (the consumer's name; matches VSLCFG.m's committed doc example + its default `"hello"` → T1.4's golden `{"greeting":"hello"}`), NOT the kickoff's illustrative "VSL GREETING"; T1.3 installs the **empty DEFINITION only** (T1.4 seeds/reads the value). (2) Required-build **posture (a)** — the Required Build is **emitted** into #9.6/MBREQ (faithful drift-gated artifact) but **NOT enforced** at install: v-pkg's direct-populate install bypasses the interactive KIDS LOAD where the prereq check fires; the faithful "install-once base" ordering (posture (b), install MSL base first) is deferred (relevant to T1.4/T1.5 test-in-place). `make check-fast` green (fmt/lint/arch + all 7 drift gates incl. check-kids); T1.2's three determinism boundaries unregressed; VSLCFG.m/VSLCFGTST.m untouched. Memory: `v-stdlib/docs/memory/t1.3-vsl-kids.md`. **Next: T1.4** (`VPNG` consumer — `$$ping^VPNG()`==`{"greeting":"hello"}`, KIDS Requires the VSL base) → T1.5 (M1 exit gate, determinism ledger byte-identical both engines). - 2026-06-16 — **T1.4 + T1.5 DONE — M1 COMPLETE: the first full vertical `STDENV→VSLCFG→VPNG` is proven byte-identical on both engines.** New repo **`vpng`** (github.com/vista-cloud-dev/vpng, public, layer **v**, own `VPNG` namespace; branch `t1.4-t1.5-vpng-m1` `1ac6b59`, pushed). Reads m-stdlib + v-stdlib (stages src / installs their KIDS bases), **edits neither**. **VPNG** (one routine): `$$ping^VPNG()` = `$$get^VSLCFG("VPNG GREETING","hello")` → `$$encode^STDJSON(.root)` → `{"greeting":"hello"}` — waterline-clean (it calls the VSL adapter + the MSL encoder; never touches `^XPAR` or hand-builds JSON). TDD red-first (safe-default stub → `0/2`; green → golden passes). **`VPNGTST` seeds a distinct `"world"`** (not just the default) so green≠default fallback — and that seeded read only **files test-in-place** (the VSL base installs the `#8989.51` def; a hand-built def won't FILE — the T1.2 gotcha). **T1.5 = the §12.1 determinism ledger, install-once base, both engines:** install **`MSL*0.1*1` → `VSL*1.0*1` → `VPNG*1.0*1`** in dependency order (Required-Build chain genuinely present), each `status:3`; verify all components present; **golden `{"greeting":"hello"}` BYTE-IDENTICAL on vehu (YDB) + foia-t12 (IRIS)** via `m vista exec`; **test-in-place `VPNGTST` 3/3** against the installed routines (NO `--routines` staging) both engines; **uninstall reverse VPNG→VSL→MSL + verify-clean** (`installed:false`, exit 3) → engine back to pre-install. All over the driver stack (`v-pkg` + `m vista exec` + `m test --docker`; no raw docker exec). **Gates (thin consumer):** `make check-fast` = fmt/lint + `m arch check` (layer v) + `check-namespaces` (VPNG prefix) + `check-kids` (`dist/kids/VPNG.kids` deterministic + golden; `v-pkg roundtrip` clean, 29 pairs) + `check-engine-access`; seam/icr/citation/msl-pin gates **N/A** (no `@seam`, no direct L4 call). Upstream v-stdlib/m-stdlib gates re-run green (unregressed). **Gotchas captured** (vpng memory): `m test` needs explicit `--routines src` (no auto-stage) but test-in-place uses **none**; `m test` uses `--docker`/`--namespace` (internal DockerEngine) while `v-pkg`/`m vista exec` use `--transport docker` + `M_*` driver env (two engine paths — don't cross flags); `v-pkg verify` on a clean engine prints two JSON objects (data + exit-3 envelope). Memory: `vpng/docs/memory/t1.4-t1.5-vpng-m1.md`. **M1 DONE — next is M2** (VSLIO TLS echo; the per-seam horizontal build-out, §12.2). Kickoff: [`../prompts/t1.4-vpng-consumer-kickoff.md`](../prompts/t1.4-vpng-consumer-kickoff.md). +- 2026-06-16 — **M3 DONE + ALL MERGED — the storage seam (S1) proven dual-engine and landed on every default branch.** **Lane A `STDKV`** (m-stdlib): a NEW minimal MSL record-store module (`$$set`/`$$get`/`$$exists`/`$$kill` over `(coll,key,field)`, `@seam STDKV`, global-backed reference impl) — resolved design **Q3** (a record store, NOT a `STDFS` sub-API). Dual-engine GREEN 12/12 (YDB+IRIS, byte-exact, no `$ZVERSION` arm); full `make test` 46 suites/2448 assertions. Released as MSL tag **`v0.9.0`**. **Lane B `VSLFS`** (v-stdlib): binds STDKV → FileMan DBS — `$$set`=`UPDATE^DIE` (returns resolved IENS; `"+1,"` adds), `$$get`/`$$exists`=`$$GET1^DIQ`, `$$kill`=`FILE^DIE` with FDA **`.01="@"`** (**corpus-confirmed: no `DELETE^DIE`**; `^DIK`/direct KILL forbidden). Dual-engine GREEN **7/7** (vehu+foia-t12) over an existing low-risk file (**#8989.51**, free-text `.01`, no other required fields → safe ZZ throwaway record; **DD-install decoupled/deferred to a v-pkg track**); DIERR→**`,U-VSL-FS-DIERR,`** `$ECODE` + `$$lastError` (MSG_ROOT="ERR" keeps errors private). Re-pin `msl_ref` v0.8.0→**v0.9.0**; 3 boundaries green (check-msl-pin / check-icr 8 / check-citations 8). **ICR is NOTIONAL** (user directive): the FileMan DBS API has no ICR number in the gold corpus and the DBIA registry is a human-curated FORUM list, not enforced programmatically → `gen-icr.py` accepts a notional `@icr DBS` marker (plan **§5.4** amended; gate's real invariants — Supported + no-direct-global — stay); shared memory `notional-dbia-not-a-blocker.md`. **Merged to default branches:** m-stdlib `m3-stdkv`→`master` (**PR #17** w/ tag `v0.9.0`); v-stdlib `m2-vslio`→`main` (**PR #4**) + `m3-vslfs`→`main` (**PR #5**); docs `coordination`→`main` (**PR #2**). Merged v-stdlib `main` re-verified **22/22** (vehu); all `check-fast` clean. Memories: m-stdlib `m3-stdkv-storage-seam.md`, v-stdlib `m3-vslfs.md`, shared `notional-dbia-not-a-blocker.md`. **Next: M4** (VSLSEC + VSLLOG — security + audit seams, §12.2; VSLLOG reuses this FileMan-DBS binding for the S3 audit sink). Owed (deferred, non-blocking): the v-pkg FileMan-DD-install enabler + the M2 tail (STDNET IRIS leg + tier-3 TLS). ---