Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 22 additions & 11 deletions docs/memory/m3-vslfs.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: m3-vslfs
description: VSL/MSL M3 Lane B DONE — VSLFS binds the STDKV storage seam (MSL v0.9.0) to VistA's FileMan DBS (UPDATE^DIE / $$GET1^DIQ / FILE^DIE). Re-pinned msl_ref v0.8.0→v0.9.0. Dual-engine GREEN 7/7 (vehu YDB + foia-t12 IRIS) over #8989.51: create/get byte-identical, exists, kill (FDA .01="@"), DIERR→,U-VSL-FS-DIERR, $ECODE. 3 boundaries green; ICR notional (DBS marker).
description: VSL/MSL M3 Lane B DONE — VSLFS binds the STDKV storage seam (MSL v0.9.0) to VistA's FileMan DBS (UPDATE^DIE / $$GET1^DIQ / FILE^DIE). Re-pinned msl_ref v0.8.0→v0.9.0. Dual-engine GREEN 7/7 (vehu YDB + foia-t12 IRIS): create/get byte-identical, exists, kill (FDA .01="@"), DIERR→,U-VSL-FS-DIERR, $ECODE. 3 boundaries green; ICR notional (DBS marker). M3.T1 (2026-06-17): re-proven against the DEDICATED #999000 ZZVSLFS installed by the v-pkg FileMan-DD enabler (borrowed #8989.51 retired).
metadata:
type: project
---
Expand Down Expand Up @@ -40,13 +40,24 @@ A DIERR on a **write** maps to a clean **`,U-VSL-FS-DIERR,`** `$ECODE` (via
land in the adapter's own array, never the shared `^TMP("DIERR",$J)`. `kill` is
idempotent (records a DIERR, still returns 1).

## Test file — an EXISTING low-risk file (no DD install; that's the deferred v-pkg track)
**#8989.51 PARAMETER DEFINITION**: `.01` (NAME) is free-text with **NO other
required fields** (verified live via a DD probe — `^DD(8989.51,*)`), so a
throwaway **ZZ-namespaced** record (`"ZZVSLFS "_$job_<tag>`) is created and
deleted cleanly through the DBS API. The NAME is uppercase, so the round-trip
value is **transform-invariant** → byte-identical set→get over real FileMan.
Present on both engines.
## Test file — NOW the DEDICATED throwaway #999000 ZZVSLFS (M3.T1 part 2, 2026-06-17)
`tests/VSLFSTST.m setup()` points at **#999000 ZZVSLFS**, a dedicated throwaway
file the **v-pkg FileMan-DD enabler installs from scratch** (`.01` NAME free text,
1–30 chars, data global `^DIZ(999000,` — see v-pkg `fileman-dd-component.md`). The
ZZ-namespaced record (`"ZZVSLFS "_$job_<tag>`) round-trips byte-identical; VSLFS.m
is unchanged (file-number parameterized) — only `setup()` `8989.51`→`999000` + the
header comment changed.
**Original M3 acceptance used a BORROWED file** (#8989.51 PARAMETER DEFINITION,
free-text `.01`, no other required fields) — no DD install needed; that was the
decoupled track now closed.
**Fixture-install acceptance harness (driver stack only), per engine:** `v pkg
install /tmp/ZZVSLFS.kids --engine <e> --transport docker` (DD must be RESIDENT
before `m test`) → `m test --engine <e> --docker <c> [...] tests/VSLFSTST.m` → `v pkg
uninstall …`. The `.KID` is built from v-pkg `testdata/zzvslfs/kids/ZZVSLFS.build.json`
(v-pkg branch `m3t1-fileman-dd`, byte-identical to the committed golden). **Re-proven
dual-engine 7/7 (vehu YDB + foia-t12 IRIS), clean back-out each (`^DD/^DIC/^DIZ(999000)`
+ #9.7 all gone); full suite 56/56 with the fixture resident.** Note: `m test --docker`
and `v pkg --transport docker` are two engine paths — don't cross their flags.

## Acceptance — dual-engine GREEN 7/7 (the exit criterion)
3 tests / 7 assertions on **BOTH** `vehu`(YDB) and `foia-t12`(IRIS): create→get
Expand Down Expand Up @@ -78,9 +89,9 @@ gold corpus — DI/fm22_2dg anchors verified)** + check-namespaces (3 VSL routin

## Owed / next
- **M2 tail** (parallel, unblocked): STDNET IRIS leg + tier-3 TLS.
- **DD-install enabler** (deferred v-pkg track): teach `v pkg` the FileMan
FILE-DD component, then re-test VSLFS with a throwaway *dedicated* file
instead of #8989.51. The "DD install" the M3 milestone bundles.
- **DD-install enabler + re-test — DONE (M3.T1, 2026-06-17).** v-pkg learned the
FileMan FILE-DD component (`fileman-dd-component.md`); VSLFS re-proven against the
dedicated #999000 ZZVSLFS, dual-engine 7/7, borrowed #8989.51 out of the loop.
- **Next: M4** (VSLSEC + VSLLOG — security + audit seams, §12.2). VSLLOG reuses
this FileMan-DBS binding (S3) for the audit-file sink.
Companion to [[m2-vslio]] (the Lane-B adapter rhythm) + the m-stdlib leaf
Expand Down
19 changes: 10 additions & 9 deletions tests/VSLFSTST.m
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@
; m test --engine iris --docker foia-t12 --namespace VISTA \
; --routines src --routines <m-stdlib>/src tests/VSLFSTST.m
;
; The "test FileMan file" is an EXISTING low-risk file — #8989.51 PARAMETER
; DEFINITION — whose .01 (NAME) is free-text with NO other required fields, so
; a throwaway, ZZ-namespaced record can be created and deleted cleanly through
; the DBS API (no DD install needed; the DD-install enabler is a deferred
; v-pkg track). Each test creates a uniquely-named record and removes it; the
; .01 NAME is uppercase free text, so the round-trip value is chosen
; transform-invariant (byte-identical set->get over real FileMan).
; The "test FileMan file" is a DEDICATED throwaway file — #999000 ZZVSLFS —
; installed from scratch by `v pkg install` (the FileMan FILE-DD enabler) for
; the duration of this run, then backed out. Its single .01 (NAME) is uppercase
; free text, 1-30 chars, with NO other required fields, so a ZZ-namespaced
; record can be created and deleted cleanly through the DBS API. Each test
; creates a uniquely-named record and removes it; the .01 NAME is uppercase
; free text, so the round-trip value is transform-invariant (byte-identical
; set->get over real FileMan). The DD must be RESIDENT before this suite runs.
new pass,fail
do start^STDASSERT(.pass,.fail)
;
Expand Down Expand Up @@ -55,9 +56,9 @@
;
; ---------- fixtures ----------
;
setup(file) ; FileMan programmer context + the safe test file (#8989.51).
setup(file) ; FileMan programmer context + the dedicated test file (#999000 ZZVSLFS).
set DUZ=1,DUZ(0)="@",U="^",DT=$$DT^XLFDT
set file=8989.51
set file=999000
quit
;
teardown(file,iens) ; Remove the throwaway record if it still exists.
Expand Down
Loading