From f21e8c3fbb40d818ea7a079148934aa7279e6bdf Mon Sep 17 00:00:00 2001 From: Rafael Richards Date: Sat, 13 Jun 2026 21:09:59 -0400 Subject: [PATCH 1/4] chore(registry): regen v-registry with pkg lifecycle verbs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The committed dist/v-registry.json carried only 7 pkg verbs (parse, decompose, assemble, roundtrip, canonicalize, lint, build). v-pkg's contract gained install/verify/uninstall in the M0a lifecycle work (T0a.3–T0a.5), so the aggregated registry was stale. Regenerate via `make registry`. This also pulls m-driver-sdk v0.3.0 into v-cli's module graph (go mod tidy) — v-pkg's pkgcli now imports mdriver.Client for the lifecycle verbs, an edge v-cli didn't yet carry. check-registry drift gate + full `make check` (vet, lint, race, build) green. Co-Authored-By: Claude Opus 4.8 (1M context) --- dist/v-registry.json | 111 +++++++++++++++++++++++++++++++++++++++++++ go.mod | 1 + go.sum | 2 + 3 files changed, 114 insertions(+) diff --git a/dist/v-registry.json b/dist/v-registry.json index 9ed9457..6041bf2 100644 --- a/dist/v-registry.json +++ b/dist/v-registry.json @@ -163,6 +163,117 @@ "help": "Path to the kids/\u003cpkg\u003e.build.json build spec." } ] + }, + { + "path": [ + "install" + ], + "help": "Install a built .KID on a live engine over the driver (non-interactive KIDS load+install).", + "flags": [ + { + "name": "engine", + "type": "enum", + "enum": [ + "ydb", + "iris" + ], + "required": true, + "help": "Engine to reach: ydb or iris." + }, + { + "name": "transport", + "type": "enum", + "enum": [ + "local", + "docker", + "remote" + ], + "default": "remote", + "help": "Driver transport: local | docker | remote." + } + ], + "args": [ + { + "name": "kid-file", + "type": "string", + "required": true, + "help": "Path to the built .KID transport file to install on the live engine." + } + ] + }, + { + "path": [ + "verify" + ], + "help": "Verify a .KID's install on a live engine (#9.7 status + per-routine presence).", + "flags": [ + { + "name": "engine", + "type": "enum", + "enum": [ + "ydb", + "iris" + ], + "required": true, + "help": "Engine to reach: ydb or iris." + }, + { + "name": "transport", + "type": "enum", + "enum": [ + "local", + "docker", + "remote" + ], + "default": "remote", + "help": "Driver transport: local | docker | remote." + } + ], + "args": [ + { + "name": "kid-file", + "type": "string", + "required": true, + "help": "Path to the .KID whose install to verify (its name + routines)." + } + ] + }, + { + "path": [ + "uninstall" + ], + "help": "Uninstall a .KID from a live engine (routine-only back-out: routines + #9.7/#9.6).", + "flags": [ + { + "name": "engine", + "type": "enum", + "enum": [ + "ydb", + "iris" + ], + "required": true, + "help": "Engine to reach: ydb or iris." + }, + { + "name": "transport", + "type": "enum", + "enum": [ + "local", + "docker", + "remote" + ], + "default": "remote", + "help": "Driver transport: local | docker | remote." + } + ], + "args": [ + { + "name": "kid-file", + "type": "string", + "required": true, + "help": "Path to the .KID whose install to reverse (routine-only back-out)." + } + ] } ] } diff --git a/go.mod b/go.mod index 3bb34d1..0d11dd6 100644 --- a/go.mod +++ b/go.mod @@ -24,6 +24,7 @@ require ( github.com/posener/complete v1.2.3 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/riywo/loginshell v0.0.0-20200815045211-7d26008be1ab // indirect + github.com/vista-cloud-dev/m-driver-sdk v0.3.0 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect golang.org/x/sys v0.44.0 // indirect golang.org/x/term v0.43.0 // indirect diff --git a/go.sum b/go.sum index 84ce838..8764fd4 100644 --- a/go.sum +++ b/go.sum @@ -52,6 +52,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/vista-cloud-dev/m-driver-sdk v0.3.0 h1:RudBmVTutjVPur0mF9sFxv7tBpCa2L78DD5GZuB8KGI= +github.com/vista-cloud-dev/m-driver-sdk v0.3.0/go.mod h1:0Qkz38Qhgyr5nYQeqgthkMHt4zVJMN3j79Kfr+THtpw= github.com/willabides/kongplete v0.4.0 h1:eivXxkp5ud5+4+NVN9e4goxC5mSh3n1RHov+gsblM2g= github.com/willabides/kongplete v0.4.0/go.mod h1:0P0jtWD9aTsqPSUAl4de35DLghrr57XcayPyvqSi2X8= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= From 0a4c15f15eaff652e3d3b319c4abe966cdd0437a Mon Sep 17 00:00:00 2001 From: Rafael Richards Date: Sat, 13 Jun 2026 23:15:13 -0400 Subject: [PATCH 2/4] chore(arch): declare layer v (waterline G1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add repo.meta.json with "layer": "v" so `m arch check` reads v-cli's side of the m/v waterline. The `v` umbrella is VistA-specific; it passes G1 trivially (v → m allowed) but carries the tag so the gate runs everywhere. The layer is a repo property, so it lives in repo.meta.json (not the generated, aggregate dist/v-registry.json). Co-Authored-By: Claude Opus 4.8 (1M context) --- repo.meta.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 repo.meta.json diff --git a/repo.meta.json b/repo.meta.json new file mode 100644 index 0000000..a73f88c --- /dev/null +++ b/repo.meta.json @@ -0,0 +1,12 @@ +{ + "id": "tool:v-cli", + "repo": "https://github.com/vista-cloud-dev/v-cli", + "role": "The `v` CLI umbrella — VistA developer tooling (v pkg/db/config/…) aggregated under one binary", + "language": ["go"], + "layer": "v", + "license": "AGPL-3.0", + "exposes": { + "registry": "dist/v-registry.json" + }, + "verification_commands": ["go test ./...", "./dist/m arch check ."] +} From 4e83283a9738709d616f431ae3149172bca6e77a Mon Sep 17 00:00:00 2001 From: Rafael Richards Date: Sun, 14 Jun 2026 07:28:20 -0400 Subject: [PATCH 3/4] ci(arch): adopt the reusable m/v waterline G1 gate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the arch job calling vista-cloud-dev/.github arch-waterline.yml@main, so `m arch check` (the G1 dependency-direction gate) runs in CI on every push/PR — the ADR §3.3 'no exception' enforcement, not just the local make gate. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..9df75fe --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,12 @@ +name: ci + +on: + push: + branches: [main] + pull_request: + +jobs: + ci: + uses: vista-cloud-dev/.github/.github/workflows/go-ci.yml@main + arch: + uses: vista-cloud-dev/.github/.github/workflows/arch-waterline.yml@main From 181bab8549fc83a44968b4616a64d59a3d901d69 Mon Sep 17 00:00:00 2001 From: Rafael Richards Date: Sun, 14 Jun 2026 08:52:57 -0400 Subject: [PATCH 4/4] deps: pin v-pkg v0.1.0 (drop dev replace => ../v-pkg) v-pkg is now a tagged release (v0.1.0), so v-cli pins it instead of the dev `replace => ../v-pkg`. The replace made go-ci red in CI (the sibling path doesn't exist in an isolated checkout) and tripped the waterline G4 seam-pin rule. Registry unchanged (same v-pkg contract); full `make check` green. Co-Authored-By: Claude Opus 4.8 (1M context) --- go.mod | 4 +--- go.sum | 2 ++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0d11dd6..9486076 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.26.3 require ( github.com/alecthomas/kong v1.15.0 - github.com/vista-cloud-dev/v-pkg v0.0.0-00010101000000-000000000000 + github.com/vista-cloud-dev/v-pkg v0.1.0 github.com/willabides/kongplete v0.4.0 ) @@ -29,5 +29,3 @@ require ( golang.org/x/sys v0.44.0 // indirect golang.org/x/term v0.43.0 // indirect ) - -replace github.com/vista-cloud-dev/v-pkg => ../v-pkg diff --git a/go.sum b/go.sum index 8764fd4..87081ec 100644 --- a/go.sum +++ b/go.sum @@ -54,6 +54,8 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/vista-cloud-dev/m-driver-sdk v0.3.0 h1:RudBmVTutjVPur0mF9sFxv7tBpCa2L78DD5GZuB8KGI= github.com/vista-cloud-dev/m-driver-sdk v0.3.0/go.mod h1:0Qkz38Qhgyr5nYQeqgthkMHt4zVJMN3j79Kfr+THtpw= +github.com/vista-cloud-dev/v-pkg v0.1.0 h1:ygeKrr8sz7bu4P7d58+gnxSdme+uhvgttgJZaNf13nY= +github.com/vista-cloud-dev/v-pkg v0.1.0/go.mod h1:nd0cXSKEYDqas2nZzRdTF6DzpQap+nylIdzBE7xntkg= github.com/willabides/kongplete v0.4.0 h1:eivXxkp5ud5+4+NVN9e4goxC5mSh3n1RHov+gsblM2g= github.com/willabides/kongplete v0.4.0/go.mod h1:0P0jtWD9aTsqPSUAl4de35DLghrr57XcayPyvqSi2X8= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=