run402 4.95.0 → 4.96.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/README.md +3 -3
  2. package/cli.mjs +1 -21
  3. package/core-dist/keystore.js +1 -1
  4. package/git-remote-run402.mjs +6 -6
  5. package/lib/cold-start.mjs +2 -2
  6. package/lib/command-manifest.mjs +3 -41
  7. package/lib/credentials.mjs +1 -1
  8. package/lib/daemon-path.mjs +3 -3
  9. package/lib/deploy-v2.mjs +17 -17
  10. package/lib/doctor.mjs +45 -54
  11. package/lib/init.mjs +29 -29
  12. package/lib/next-actions.mjs +1 -1
  13. package/lib/org-context.mjs +9 -9
  14. package/lib/orgs.mjs +19 -19
  15. package/lib/path-lookup.mjs +7 -10
  16. package/lib/path-lookup.test.mjs +19 -21
  17. package/lib/remote-helper-session.mjs +93 -93
  18. package/lib/repos.mjs +174 -175
  19. package/lib/rooms-context.mjs +7 -7
  20. package/lib/up.mjs +14 -14
  21. package/lib/{gitvault-capabilities.mjs → vault-capabilities.mjs} +10 -14
  22. package/lib/{gitvault-daemon-run.mjs → vault-daemon-run.mjs} +2 -2
  23. package/lib/{gitvault-daemon.mjs → vault-daemon.mjs} +23 -23
  24. package/lib/{gitvault-scaffold.mjs → vault-scaffold.mjs} +12 -12
  25. package/lib/{gitvault-target.mjs → vault-target.mjs} +22 -17
  26. package/package.json +2 -2
  27. package/sdk/core-dist/keystore.js +1 -1
  28. package/sdk/dist/errors.d.ts +4 -4
  29. package/sdk/dist/errors.d.ts.map +1 -1
  30. package/sdk/dist/index.d.ts +9 -9
  31. package/sdk/dist/index.d.ts.map +1 -1
  32. package/sdk/dist/index.js +8 -8
  33. package/sdk/dist/index.js.map +1 -1
  34. package/sdk/dist/namespaces/deploy.d.ts +5 -5
  35. package/sdk/dist/namespaces/deploy.d.ts.map +1 -1
  36. package/sdk/dist/namespaces/deploy.js +20 -20
  37. package/sdk/dist/namespaces/deploy.js.map +1 -1
  38. package/sdk/dist/namespaces/deploy.types.d.ts +17 -17
  39. package/sdk/dist/namespaces/deploy.types.d.ts.map +1 -1
  40. package/sdk/dist/namespaces/org.d.ts +2 -2
  41. package/sdk/dist/namespaces/org.js +2 -2
  42. package/sdk/dist/namespaces/org.types.d.ts +3 -3
  43. package/sdk/dist/namespaces/pay.js +1 -1
  44. package/sdk/dist/namespaces/{gitvault.d.ts → repos.d.ts} +436 -449
  45. package/sdk/dist/namespaces/repos.d.ts.map +1 -0
  46. package/sdk/dist/namespaces/{gitvault.js → repos.js} +451 -459
  47. package/sdk/dist/namespaces/repos.js.map +1 -0
  48. package/sdk/dist/namespaces/rooms.js +2 -2
  49. package/sdk/dist/namespaces/rooms.js.map +1 -1
  50. package/sdk/dist/namespaces/session.d.ts +2 -2
  51. package/sdk/dist/namespaces/session.d.ts.map +1 -1
  52. package/sdk/dist/namespaces/session.js +2 -2
  53. package/sdk/dist/namespaces/session.js.map +1 -1
  54. package/sdk/dist/namespaces/tier.d.ts +3 -3
  55. package/sdk/dist/namespaces/tier.d.ts.map +1 -1
  56. package/sdk/dist/namespaces/{gitvault.crypto.d.ts → vault.crypto.d.ts} +141 -141
  57. package/sdk/dist/namespaces/vault.crypto.d.ts.map +1 -0
  58. package/sdk/dist/namespaces/{gitvault.crypto.js → vault.crypto.js} +173 -173
  59. package/sdk/dist/namespaces/vault.crypto.js.map +1 -0
  60. package/sdk/dist/namespaces/{gitvault.types.d.ts → vault.types.d.ts} +136 -136
  61. package/sdk/dist/namespaces/vault.types.d.ts.map +1 -0
  62. package/sdk/dist/namespaces/{gitvault.types.js → vault.types.js} +4 -4
  63. package/sdk/dist/namespaces/vault.types.js.map +1 -0
  64. package/sdk/dist/node/bearer-redeem-key.d.ts +1 -1
  65. package/sdk/dist/node/bearer-redeem-key.js +5 -5
  66. package/sdk/dist/node/bearer-redeem-key.js.map +1 -1
  67. package/sdk/dist/node/http-dispatcher.js +5 -5
  68. package/sdk/dist/node/http-dispatcher.js.map +1 -1
  69. package/sdk/dist/node/index.d.ts +29 -29
  70. package/sdk/dist/node/index.d.ts.map +1 -1
  71. package/sdk/dist/node/index.js +39 -39
  72. package/sdk/dist/node/index.js.map +1 -1
  73. package/sdk/dist/node/{gitvault-address.d.ts → vault-address.d.ts} +42 -42
  74. package/sdk/dist/node/vault-address.d.ts.map +1 -0
  75. package/sdk/dist/node/{gitvault-address.js → vault-address.js} +43 -43
  76. package/sdk/dist/node/vault-address.js.map +1 -0
  77. package/sdk/dist/node/{gitvault-apply.d.ts → vault-apply.d.ts} +27 -27
  78. package/sdk/dist/node/vault-apply.d.ts.map +1 -0
  79. package/sdk/dist/node/{gitvault-apply.js → vault-apply.js} +38 -38
  80. package/sdk/dist/node/vault-apply.js.map +1 -0
  81. package/sdk/dist/node/vault-byo-config.d.ts +29 -0
  82. package/sdk/dist/node/vault-byo-config.d.ts.map +1 -0
  83. package/sdk/dist/node/{gitvault-byo-config.js → vault-byo-config.js} +18 -18
  84. package/sdk/dist/node/vault-byo-config.js.map +1 -0
  85. package/sdk/dist/node/vault-byo-probe.d.ts +20 -0
  86. package/sdk/dist/node/vault-byo-probe.d.ts.map +1 -0
  87. package/sdk/dist/node/vault-byo-probe.js +57 -0
  88. package/sdk/dist/node/vault-byo-probe.js.map +1 -0
  89. package/sdk/dist/node/{gitvault-creation-journal.d.ts → vault-creation-journal.d.ts} +69 -69
  90. package/sdk/dist/node/vault-creation-journal.d.ts.map +1 -0
  91. package/sdk/dist/node/{gitvault-creation-journal.js → vault-creation-journal.js} +54 -54
  92. package/sdk/dist/node/vault-creation-journal.js.map +1 -0
  93. package/sdk/dist/node/{gitvault-degraded-read.d.ts → vault-degraded-read.d.ts} +34 -34
  94. package/sdk/dist/node/vault-degraded-read.d.ts.map +1 -0
  95. package/sdk/dist/node/{gitvault-degraded-read.js → vault-degraded-read.js} +24 -24
  96. package/sdk/dist/node/vault-degraded-read.js.map +1 -0
  97. package/sdk/dist/node/{gitvault-deploy.d.ts → vault-deploy.d.ts} +67 -67
  98. package/sdk/dist/node/vault-deploy.d.ts.map +1 -0
  99. package/sdk/dist/node/{gitvault-deploy.js → vault-deploy.js} +27 -27
  100. package/sdk/dist/node/vault-deploy.js.map +1 -0
  101. package/sdk/dist/node/{gitvault-edge-fetch.d.ts → vault-edge-fetch.d.ts} +9 -9
  102. package/sdk/dist/node/vault-edge-fetch.d.ts.map +1 -0
  103. package/sdk/dist/node/{gitvault-edge-fetch.js → vault-edge-fetch.js} +11 -11
  104. package/sdk/dist/node/vault-edge-fetch.js.map +1 -0
  105. package/sdk/dist/node/{gitvault-handoff.d.ts → vault-handoff.d.ts} +9 -9
  106. package/sdk/dist/node/vault-handoff.d.ts.map +1 -0
  107. package/sdk/dist/node/{gitvault-handoff.js → vault-handoff.js} +24 -24
  108. package/sdk/dist/node/vault-handoff.js.map +1 -0
  109. package/sdk/dist/node/{gitvault-keystore.d.ts → vault-keystore.d.ts} +87 -77
  110. package/sdk/dist/node/vault-keystore.d.ts.map +1 -0
  111. package/sdk/dist/node/{gitvault-keystore.js → vault-keystore.js} +105 -68
  112. package/sdk/dist/node/vault-keystore.js.map +1 -0
  113. package/sdk/dist/node/{gitvault-member-bundle.d.ts → vault-member-bundle.d.ts} +17 -17
  114. package/sdk/dist/node/vault-member-bundle.d.ts.map +1 -0
  115. package/sdk/dist/node/{gitvault-member-bundle.js → vault-member-bundle.js} +11 -11
  116. package/sdk/dist/node/vault-member-bundle.js.map +1 -0
  117. package/sdk/dist/node/{gitvault-mirror-backend.d.ts → vault-mirror-backend.d.ts} +26 -26
  118. package/sdk/dist/node/vault-mirror-backend.d.ts.map +1 -0
  119. package/sdk/dist/node/{gitvault-mirror-backend.js → vault-mirror-backend.js} +25 -25
  120. package/sdk/dist/node/vault-mirror-backend.js.map +1 -0
  121. package/sdk/dist/node/{gitvault-mirror-config.d.ts → vault-mirror-config.d.ts} +23 -23
  122. package/sdk/dist/node/vault-mirror-config.d.ts.map +1 -0
  123. package/sdk/dist/node/{gitvault-mirror-config.js → vault-mirror-config.js} +16 -16
  124. package/sdk/dist/node/vault-mirror-config.js.map +1 -0
  125. package/sdk/dist/node/{gitvault-mirror.d.ts → vault-mirror.d.ts} +36 -36
  126. package/sdk/dist/node/vault-mirror.d.ts.map +1 -0
  127. package/sdk/dist/node/{gitvault-mirror.js → vault-mirror.js} +75 -75
  128. package/sdk/dist/node/vault-mirror.js.map +1 -0
  129. package/sdk/dist/node/{gitvault-native-crypto.d.ts → vault-native-crypto.d.ts} +10 -10
  130. package/sdk/dist/node/vault-native-crypto.d.ts.map +1 -0
  131. package/sdk/dist/node/{gitvault-native-crypto.js → vault-native-crypto.js} +16 -16
  132. package/sdk/dist/node/vault-native-crypto.js.map +1 -0
  133. package/sdk/dist/node/{gitvault-open-or-create.d.ts → vault-open-or-create.d.ts} +16 -16
  134. package/sdk/dist/node/vault-open-or-create.d.ts.map +1 -0
  135. package/sdk/dist/node/{gitvault-open-or-create.js → vault-open-or-create.js} +10 -10
  136. package/sdk/dist/node/vault-open-or-create.js.map +1 -0
  137. package/sdk/dist/node/{gitvault-prewarm.d.ts → vault-prewarm.d.ts} +13 -13
  138. package/sdk/dist/node/vault-prewarm.d.ts.map +1 -0
  139. package/sdk/dist/node/{gitvault-prewarm.js → vault-prewarm.js} +25 -25
  140. package/sdk/dist/node/vault-prewarm.js.map +1 -0
  141. package/sdk/dist/node/{gitvault-profile-scan.d.ts → vault-profile-scan.d.ts} +3 -3
  142. package/sdk/dist/node/vault-profile-scan.d.ts.map +1 -0
  143. package/sdk/dist/node/{gitvault-profile-scan.js → vault-profile-scan.js} +12 -12
  144. package/sdk/dist/node/vault-profile-scan.js.map +1 -0
  145. package/sdk/dist/node/{gitvault-prune.d.ts → vault-prune.d.ts} +61 -61
  146. package/sdk/dist/node/vault-prune.d.ts.map +1 -0
  147. package/sdk/dist/node/{gitvault-prune.js → vault-prune.js} +34 -34
  148. package/sdk/dist/node/vault-prune.js.map +1 -0
  149. package/sdk/dist/node/{gitvault-publication.d.ts → vault-publication.d.ts} +399 -399
  150. package/sdk/dist/node/vault-publication.d.ts.map +1 -0
  151. package/sdk/dist/node/{gitvault-publication.js → vault-publication.js} +584 -584
  152. package/sdk/dist/node/vault-publication.js.map +1 -0
  153. package/sdk/dist/node/{gitvault-push-to-create.d.ts → vault-push-to-create.d.ts} +16 -16
  154. package/sdk/dist/node/vault-push-to-create.d.ts.map +1 -0
  155. package/sdk/dist/node/{gitvault-push-to-create.js → vault-push-to-create.js} +9 -9
  156. package/sdk/dist/node/vault-push-to-create.js.map +1 -0
  157. package/sdk/dist/node/{gitvault-recover.d.ts → vault-recover.d.ts} +50 -50
  158. package/sdk/dist/node/vault-recover.d.ts.map +1 -0
  159. package/sdk/dist/node/{gitvault-recover.js → vault-recover.js} +84 -84
  160. package/sdk/dist/node/vault-recover.js.map +1 -0
  161. package/sdk/dist/node/{gitvault-restore.d.ts → vault-restore.d.ts} +8 -8
  162. package/sdk/dist/node/vault-restore.d.ts.map +1 -0
  163. package/sdk/dist/node/{gitvault-restore.js → vault-restore.js} +11 -11
  164. package/sdk/dist/node/vault-restore.js.map +1 -0
  165. package/sdk/dist/node/{gitvault-snapshot.d.ts → vault-snapshot.d.ts} +48 -48
  166. package/sdk/dist/node/vault-snapshot.d.ts.map +1 -0
  167. package/sdk/dist/node/{gitvault-snapshot.js → vault-snapshot.js} +61 -61
  168. package/sdk/dist/node/vault-snapshot.js.map +1 -0
  169. package/sdk/dist/node/{gitvault-writer-state.d.ts → vault-writer-state.d.ts} +8 -8
  170. package/sdk/dist/node/vault-writer-state.d.ts.map +1 -0
  171. package/sdk/dist/node/{gitvault-writer-state.js → vault-writer-state.js} +15 -15
  172. package/sdk/dist/node/vault-writer-state.js.map +1 -0
  173. package/sdk/dist/node/workflow-output.js +4 -4
  174. package/sdk/dist/node/workflow-output.js.map +1 -1
  175. package/vault-surface.json +40 -0
  176. package/gitvault-surface.json +0 -89
  177. package/lib/gitvault.mjs +0 -163
  178. package/lib/source-access.mjs +0 -70
  179. package/sdk/dist/namespaces/gitvault.crypto.d.ts.map +0 -1
  180. package/sdk/dist/namespaces/gitvault.crypto.js.map +0 -1
  181. package/sdk/dist/namespaces/gitvault.d.ts.map +0 -1
  182. package/sdk/dist/namespaces/gitvault.js.map +0 -1
  183. package/sdk/dist/namespaces/gitvault.types.d.ts.map +0 -1
  184. package/sdk/dist/namespaces/gitvault.types.js.map +0 -1
  185. package/sdk/dist/node/gitvault-address.d.ts.map +0 -1
  186. package/sdk/dist/node/gitvault-address.js.map +0 -1
  187. package/sdk/dist/node/gitvault-apply.d.ts.map +0 -1
  188. package/sdk/dist/node/gitvault-apply.js.map +0 -1
  189. package/sdk/dist/node/gitvault-byo-config.d.ts +0 -29
  190. package/sdk/dist/node/gitvault-byo-config.d.ts.map +0 -1
  191. package/sdk/dist/node/gitvault-byo-config.js.map +0 -1
  192. package/sdk/dist/node/gitvault-byo-probe.d.ts +0 -20
  193. package/sdk/dist/node/gitvault-byo-probe.d.ts.map +0 -1
  194. package/sdk/dist/node/gitvault-byo-probe.js +0 -57
  195. package/sdk/dist/node/gitvault-byo-probe.js.map +0 -1
  196. package/sdk/dist/node/gitvault-creation-journal.d.ts.map +0 -1
  197. package/sdk/dist/node/gitvault-creation-journal.js.map +0 -1
  198. package/sdk/dist/node/gitvault-degraded-read.d.ts.map +0 -1
  199. package/sdk/dist/node/gitvault-degraded-read.js.map +0 -1
  200. package/sdk/dist/node/gitvault-deploy.d.ts.map +0 -1
  201. package/sdk/dist/node/gitvault-deploy.js.map +0 -1
  202. package/sdk/dist/node/gitvault-edge-fetch.d.ts.map +0 -1
  203. package/sdk/dist/node/gitvault-edge-fetch.js.map +0 -1
  204. package/sdk/dist/node/gitvault-handoff.d.ts.map +0 -1
  205. package/sdk/dist/node/gitvault-handoff.js.map +0 -1
  206. package/sdk/dist/node/gitvault-keystore.d.ts.map +0 -1
  207. package/sdk/dist/node/gitvault-keystore.js.map +0 -1
  208. package/sdk/dist/node/gitvault-member-bundle.d.ts.map +0 -1
  209. package/sdk/dist/node/gitvault-member-bundle.js.map +0 -1
  210. package/sdk/dist/node/gitvault-mirror-backend.d.ts.map +0 -1
  211. package/sdk/dist/node/gitvault-mirror-backend.js.map +0 -1
  212. package/sdk/dist/node/gitvault-mirror-config.d.ts.map +0 -1
  213. package/sdk/dist/node/gitvault-mirror-config.js.map +0 -1
  214. package/sdk/dist/node/gitvault-mirror.d.ts.map +0 -1
  215. package/sdk/dist/node/gitvault-mirror.js.map +0 -1
  216. package/sdk/dist/node/gitvault-native-crypto.d.ts.map +0 -1
  217. package/sdk/dist/node/gitvault-native-crypto.js.map +0 -1
  218. package/sdk/dist/node/gitvault-open-or-create.d.ts.map +0 -1
  219. package/sdk/dist/node/gitvault-open-or-create.js.map +0 -1
  220. package/sdk/dist/node/gitvault-prewarm.d.ts.map +0 -1
  221. package/sdk/dist/node/gitvault-prewarm.js.map +0 -1
  222. package/sdk/dist/node/gitvault-profile-scan.d.ts.map +0 -1
  223. package/sdk/dist/node/gitvault-profile-scan.js.map +0 -1
  224. package/sdk/dist/node/gitvault-prune.d.ts.map +0 -1
  225. package/sdk/dist/node/gitvault-prune.js.map +0 -1
  226. package/sdk/dist/node/gitvault-publication.d.ts.map +0 -1
  227. package/sdk/dist/node/gitvault-publication.js.map +0 -1
  228. package/sdk/dist/node/gitvault-push-to-create.d.ts.map +0 -1
  229. package/sdk/dist/node/gitvault-push-to-create.js.map +0 -1
  230. package/sdk/dist/node/gitvault-recover.d.ts.map +0 -1
  231. package/sdk/dist/node/gitvault-recover.js.map +0 -1
  232. package/sdk/dist/node/gitvault-restore.d.ts.map +0 -1
  233. package/sdk/dist/node/gitvault-restore.js.map +0 -1
  234. package/sdk/dist/node/gitvault-snapshot.d.ts.map +0 -1
  235. package/sdk/dist/node/gitvault-snapshot.js.map +0 -1
  236. package/sdk/dist/node/gitvault-writer-state.d.ts.map +0 -1
  237. package/sdk/dist/node/gitvault-writer-state.js.map +0 -1
package/README.md CHANGED
@@ -61,7 +61,7 @@ Every mode (and `run402 deploy`) verifies the files the manifest references befo
61
61
 
62
62
  ### repos — host-blind encrypted git repos (zero deploy ceremony)
63
63
 
64
- One noun, fourteen verbs (`repo` singular resolves identically). `run402 gitvault <verb>` answers `COMMAND_MOVED`/`COMMAND_REMOVED`.
64
+ One noun, seventeen verbs: KyGit is the brand, a vault is the resource, a repo is what you have.
65
65
 
66
66
  ```bash
67
67
  run402 init # once per machine
@@ -76,7 +76,7 @@ run402 repos list --org org_1a2b3c
76
76
  run402 repos delete --project prj_xyz --force # refuses without --force while the vault holds generations
77
77
  ```
78
78
 
79
- A hosted git remote, encrypted before it leaves the machine — no deploy, no manifest, no app. `origin` is claimed additively — an existing `origin` is never touched, the run402 remote falls back to `run402` instead. A directory inside another repository is never scaffolded into that repository: the skip carries a `create_nested_repo` next action, `--nested` makes it its own nested repository (one line appended to the enclosing repository's local `.git/info/exclude`, nothing else touched), and `create` prints a `git push` next action only for a remote it actually added. Every mutating `repos` verb (`create`, `rename`, `delete`, `snapshot`, `policy`, `mirror`, `gc`, `handoff`, `resume`, `invite`, `join`) is CLI/OpenClaw-only by design — no MCP tool exists or will exist for them (one-shot recovery receipts, immutable generations, irreversible delete, single-use bearer keys). Three READ-ONLY tools do exist — `repos_view`, `repos_list_heads`, `repos_fsck` — teaching only `repos` spellings. See `run402 repos --help` for the full tiered surface (common: `create`/`view`/`list`; occasional: `snapshot`/`mirror`/`recover`/`handoff`/`resume`/`invite`/`join`; lifecycle: `rename`/`delete`; maintenance: `fsck`/`gc`/`access`/`policy`), and the CLI reference's `repos` section for the terminal-loss statement and the progressive backup warning.
79
+ A hosted git remote, encrypted before it leaves the machine — no deploy, no manifest, no app. `origin` is claimed additively — an existing `origin` is never touched, the run402 remote falls back to `run402` instead. A directory inside another repository is never scaffolded into that repository: the skip carries a `create_nested_repo` next action, `--nested` makes it its own nested repository (one line appended to the enclosing repository's local `.git/info/exclude`, nothing else touched), and `create` prints a `git push` next action only for a remote it actually added. Every mutating `repos` verb (`create`, `rename`, `delete`, `capture`, `policy`, `mirror`, `gc`, `handoff`, `resume`, `invite`, `join`) is CLI/OpenClaw-only by design — no MCP tool exists or will exist for them (one-shot recovery receipts, immutable generations, irreversible delete, single-use bearer keys). Three READ-ONLY tools do exist — `repos_view`, `repos_list_heads`, `repos_fsck` — teaching only `repos` spellings. See `run402 repos --help` for the full tiered surface (common: `create`/`view`/`list`; occasional: `capture`/`mirror`/`recover`/`handoff`/`resume`/`invite`/`join`; lifecycle: `rename`/`delete`; maintenance: `fsck`/`gc`/`access`/`policy`), and the CLI reference's `repos` section for the terminal-loss statement and the progressive backup warning.
80
80
 
81
81
  **Handoff / resume.** `run402 repos handoff [--note-file <path>]` captures the actual working tree (staged/unstaged/untracked, like `git stash push -u`) into the vault and mints a single-use bearer key (`kgh1_…`, printed to stdout exactly once); `run402 repos resume <kgh1_…>` claims it on another machine, clones fresh, and reapplies the exact dirty state with `git stash apply --index`. No shared keystore, no shared wallet — the key is the whole handoff. On a wallet with no active tier, `resume` first folds the same cold-start chain `create` does (wallet → faucet → one x402 prototype payment); `--no-init` opts out, and the claim itself never waits on it. Sensitive untracked files (`.env`, `*.pem`, SSH/AWS/GPG dirs, …) are excluded from capture by default (`--include-sensitive <glob>` re-admits one). See the reference `run402.com/llms-cli.txt` for the full note-schema and flag reference.
82
82
 
@@ -323,7 +323,7 @@ run402 doctor # { ok, blocking[], warnings[], checks[] }
323
323
  run402 doctor --refresh # live npm check for a newer run402
324
324
  ```
325
325
 
326
- `ok` is structural: `true` exactly when `blocking[]` is empty. Every check carries `severity: "blocking" | "advisory" | "info"`; advisory findings (an unbound contact passkey, a degraded recovery posture on another org, a stale CLI, gitvault gaps) land in `warnings[]` without changing `ok` or the exit code. The `tier` check's `status` is a fixed vocabulary (`ok | inactive | frozen | past_due | dormant | purged | missing | unknown | error`, never a tier name; see `value.tier` / `value.lifecycle`), and a wallet whose own org holds no tier but can reach another org's projects reports `missing` as advisory (`TIER_MISSING_ON_OWN_ORG`).
326
+ `ok` is structural: `true` exactly when `blocking[]` is empty. Every check carries `severity: "blocking" | "advisory" | "info"`; advisory findings (an unbound contact passkey, a degraded recovery posture on another org, a stale CLI, vault gaps) land in `warnings[]` without changing `ok` or the exit code. The `tier` check's `status` is a fixed vocabulary (`ok | inactive | frozen | past_due | dormant | purged | missing | unknown | error`, never a tier name; see `value.tier` / `value.lifecycle`), and a wallet whose own org holds no tier but can reach another org's projects reports `missing` as advisory (`TIER_MISSING_ON_OWN_ORG`).
327
327
 
328
328
  ## State
329
329
 
package/cli.mjs CHANGED
@@ -7,7 +7,7 @@
7
7
  import { readFileSync } from "node:fs";
8
8
  import * as nodeModule from "node:module";
9
9
 
10
- // gitvault-startup-amortization (D2): on-disk V8 compile cache for the
10
+ // vault-startup-amortization (D2): on-disk V8 compile cache for the
11
11
  // lazily-imported subcommand graphs. Feature-guarded (Node 22.8+) and
12
12
  // try/caught — absence or an unwritable cache dir degrade silently.
13
13
  try {
@@ -95,8 +95,6 @@ PLATFORM — everything else, and the things still finding a home
95
95
  jobs Submit and inspect platform-managed jobs
96
96
  transfer Project transfer to a wallet, an email, or an owned org (init, preview, list, accept, cancel)
97
97
  archives Portable project archives (create, status, download --target cloud; inspect, verify; import --target core)
98
- gitvault RETIRED — moved to repos (repo-surface-consolidation); every spelling answers COMMAND_MOVED/COMMAND_REMOVED
99
- source-access RETIRED — moved into repos (recovery-bundle + access); every spelling answers COMMAND_MOVED
100
98
  buzz Buzz human/community/agent control-plane workflows
101
99
  apps Browse and manage the app marketplace
102
100
  ai AI translation and moderation tools
@@ -232,14 +230,6 @@ switch (cmd) {
232
230
  await run(sub, rest);
233
231
  break;
234
232
  }
235
- // `repo` singular resolves identically to `repos` (design D1 — agents type
236
- // what `gh repo` already taught them). Its own case block, not a
237
- // fall-through, so cli-conventions-gate's per-line family scanner sees it.
238
- case "repo": {
239
- const { run } = await import("./lib/repos.mjs");
240
- await run(sub, rest);
241
- break;
242
- }
243
233
  case "snapshots": {
244
234
  const { run } = await import("./lib/snapshots.mjs");
245
235
  await run(sub, rest);
@@ -325,11 +315,6 @@ switch (cmd) {
325
315
  await run(sub, rest);
326
316
  break;
327
317
  }
328
- case "gitvault": {
329
- const { run } = await import("./lib/gitvault.mjs");
330
- await run(sub, rest);
331
- break;
332
- }
333
318
  case "escalations": {
334
319
  const { run } = await import("./lib/escalations.mjs");
335
320
  await run(sub, rest);
@@ -448,11 +433,6 @@ switch (cmd) {
448
433
  await run([sub, ...rest].filter(Boolean));
449
434
  break;
450
435
  }
451
- case "source-access": {
452
- const { run } = await import("./lib/source-access.mjs");
453
- await run(sub, rest);
454
- break;
455
- }
456
436
  case "auth": {
457
437
  const { run } = await import("./lib/auth.mjs");
458
438
  await run(sub, rest);
@@ -190,7 +190,7 @@ export function removeProject(projectId, path) {
190
190
  * bucket, not "unknown") and PERMANENTLY shadows every later wallet-scoped
191
191
  * activation for every caller that reads through this module: `resolveProjectId`
192
192
  * / `resolveProject` (cli/lib/config.mjs), `projects current`, and every
193
- * gitvault-verb target resolution. The failure it causes: `repos create`
193
+ * vault-verb target resolution. The failure it causes: `repos create`
194
194
  * calls `projects.provision`, whose `creds.setActiveProject` correctly
195
195
  * persists the new project under the real wallet's scoped bucket AND the
196
196
  * flat fallback, yet every CLI read of "the active project" resolves the
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * `git-remote-run402` — the THIN CLIENT (gitvault-persistent-helper).
3
+ * `git-remote-run402` — the THIN CLIENT (vault-persistent-helper).
4
4
  *
5
5
  * git spawns a fresh helper process per remote operation, so everything warm
6
6
  * dies per command — Node boot, the SDK graph, the signer, the paid stack,
@@ -10,7 +10,7 @@
10
10
  * when that is impossible does it load the full session module and run
11
11
  * in-process — which is byte-identical to the pre-daemon behavior.
12
12
  *
13
- * INVARIANTS (spec: gitvault-client-surface, "A resident helper engine…"):
13
+ * INVARIANTS (spec: vault-client-surface, "A resident helper engine…"):
14
14
  * - The daemon is never load-bearing: any failure to use it — absent,
15
15
  * busy, stale, mismatched, dying mid-handshake — falls back silently to
16
16
  * the in-process path. The handshake completes BEFORE this client
@@ -35,7 +35,7 @@ import net from "node:net";
35
35
  import { spawn } from "node:child_process";
36
36
  import { daemonSocketPath, daemonRunnerPath, DAEMON_PROTOCOL_VERSION, cliVersion, forwardableEnv } from "./lib/daemon-path.mjs";
37
37
 
38
- // gitvault-startup-amortization (D2): on-disk V8 compile cache for every
38
+ // vault-startup-amortization (D2): on-disk V8 compile cache for every
39
39
  // module loaded from here on. Feature-guarded (Node 22.8+) and try/caught
40
40
  // (a read-only install dir degrades silently).
41
41
  try {
@@ -201,11 +201,11 @@ if (invokedDirectly) {
201
201
  process.exitCode = code;
202
202
  } else {
203
203
  // Fallback: today's in-process path, byte-identical. Fire the prewarm
204
- // BEFORE the heavy graph evaluates (gitvault-startup-amortization D1),
204
+ // BEFORE the heavy graph evaluates (vault-startup-amortization D1),
205
205
  // and leave a daemon behind for next time.
206
206
  if (daemonEnabled) spawnDaemon();
207
- const { prewarmGitvaultConnection } = await import("./sdk/dist/node/gitvault-prewarm.js");
208
- prewarmGitvaultConnection();
207
+ const { prewarmVaultConnection } = await import("./sdk/dist/node/vault-prewarm.js");
208
+ prewarmVaultConnection();
209
209
  const { runHelperSession } = await import("./lib/remote-helper-session.mjs");
210
210
  process.exitCode = await runHelperSession(argv);
211
211
  }
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * `cold-start.mjs` — the minimal x402/Base-Sepolia cold-start chain
3
3
  * (kygit-handoff design D5): wallet → faucet → one x402 prototype
4
- * payment. `repos create` (and so `kygit create`) folds this in when it is
5
- * refused `NO_ACTIVE_TIER`, so `kygit create` on a genuinely fresh machine
4
+ * payment. `repos create` folds this in when it is
5
+ * refused `NO_ACTIVE_TIER`, so `run402 repos create` on a genuinely fresh machine
6
6
  * ends with a vault, no human signup, no cloud dashboard.
7
7
  *
8
8
  * This is the SAME shape `run402 init` already walks (create the wallet →
@@ -281,12 +281,6 @@ export const COMMAND_MANIFEST = [
281
281
  { path: ["claims", "list"], positionals: [], projectScoped: true, legacyPositionalProject: false, minimalArgs: [], runStyle: "sub" },
282
282
  { path: ["claims", "release"], positionals: [p("claim_id")], projectScoped: true, legacyPositionalProject: false, minimalArgs: ["clm_1"], runStyle: "sub" },
283
283
 
284
- // ── gitvault — no manifest entries ──────────────────────
285
- // `cli/lib/gitvault.mjs`'s dispatcher handles every `gitvault <verb>` and
286
- // answers a structural COMMAND_MOVED (or, for `push`/`reconcile`,
287
- // COMMAND_REMOVED) redirect that dispatches nothing — see
288
- // RESERVED_SUBCOMMANDS below, and "gitvault" in SKIPPED_FAMILIES.
289
-
290
284
  // ── repos (the consolidated 15-verb family) ─
291
285
  // Every verb needs a real principal keystore and, for most, an allocated
292
286
  // repo and a local git working tree, so the gate runs structural checks
@@ -299,7 +293,7 @@ export const COMMAND_MANIFEST = [
299
293
  // name, with `--repo`/`--project` addressing.
300
294
  { path: ["repos", "rename"], positionals: [p("new_name")], projectScoped: true, legacyPositionalProject: false, minimalArgs: ["my-notes"], runStyle: "sub", skipBehavioral: "claims a per-org-unique repo name against a live project" },
301
295
  { path: ["repos", "delete"], positionals: [], projectScoped: true, legacyPositionalProject: true, minimalArgs: [], runStyle: "sub", skipBehavioral: "irreversibly deletes a project after reading its live non-repo-resource state and vault generation count" },
302
- { path: ["repos", "snapshot"], positionals: [], projectScoped: true, legacyPositionalProject: false, minimalArgs: [], runStyle: "sub", skipBehavioral: "captures the cwd git working tree and publishes a signed head" },
296
+ { path: ["repos", "capture"], positionals: [], projectScoped: true, legacyPositionalProject: false, minimalArgs: [], runStyle: "sub", skipBehavioral: "captures the cwd git working tree and publishes a signed head" },
303
297
  // kygit-handoff: `handoff` captures a stash-shaped checkpoint and mints a
304
298
  // single-use bearer key through a live gateway call; `resume` claims one
305
299
  // (a real membership mutation) and writes into a fresh working tree.
@@ -320,7 +314,7 @@ export const COMMAND_MANIFEST = [
320
314
  { path: ["repos", "access", "repair"], positionals: [], projectScoped: true, legacyPositionalProject: false, minimalArgs: ["--recipient-state-version", "0", "--recipient-revocation-version", "0"], runStyle: "sub", skipBehavioral: "owner+step-up-gated epoch rotation (D193-D203, rev 42) — samples a fresh epoch key and re-seals a live vault's recipients" },
321
315
  { path: ["repos", "access", "revoke-key"], positionals: [p("principal_id")], projectScoped: true, legacyPositionalProject: false, minimalArgs: ["prin_00000000000000000000000000000000"], runStyle: "sub", skipBehavioral: "owner+step-up-gated: declares a recipient's key revoked (org-scoped watermark) and drives a real epoch rotation off it" },
322
316
  { path: ["repos", "access", "declare-exposure"], positionals: [], projectScoped: true, legacyPositionalProject: false, minimalArgs: [], runStyle: "sub", skipBehavioral: "owner+step-up-gated: declares this vault's epoch secret exposed, forcing every subsequent ordinary push to refuse until a rotation lands" },
323
- { path: ["repos", "access", "sync"], positionals: [], projectScoped: true, legacyPositionalProject: false, minimalArgs: [], runStyle: "sub", skipBehavioral: "gitvault-multi-writer (rev 47): on-demand writer-admission reconcile — resolves pending candidates' signing keys via the live org encryption-key directory and publishes a real add_writer_key head per candidate" },
317
+ { path: ["repos", "access", "sync"], positionals: [], projectScoped: true, legacyPositionalProject: false, minimalArgs: [], runStyle: "sub", skipBehavioral: "vault-multi-writer (rev 47): on-demand writer-admission reconcile — resolves pending candidates' signing keys via the live org encryption-key directory and publishes a real add_writer_key head per candidate" },
324
318
  { path: ["repos", "recover"], positionals: [p("source")], projectScoped: false, legacyPositionalProject: false, minimalArgs: ["s3://example-mirror-bucket", "--out", "__SCRATCH_DIR__/recover-out"], runStyle: "sub", skipBehavioral: "materializes a git repository from a mirror source, offline, with no server call" },
325
319
  // Principal-scoped (one bundle covers every vault you can read), so no
326
320
  // --project — deliberately unlike its eleven vault-scoped siblings.
@@ -477,7 +471,7 @@ export const COMMAND_MANIFEST = [
477
471
  { path: ["service", "health"], positionals: [], projectScoped: false, legacyPositionalProject: false, minimalArgs: [] },
478
472
  { path: ["cache", "inspect"], positionals: [p("url")], projectScoped: false, legacyPositionalProject: false, minimalArgs: ["https://example.com/"] },
479
473
  { path: ["cache", "invalidate"], positionals: [p("url", { required: false })], projectScoped: false, legacyPositionalProject: false, minimalArgs: ["--all", "--host", "example.com"] },
480
- // projectScoped: --project targets the gitvault
474
+ // projectScoped: --project targets the vault
481
475
  // check only (see doctor.mjs's own HELP) — every other check stays
482
476
  // wallet/machine-wide, but the gate's contract is "accepts --project
483
477
  // without rejecting it," which this satisfies.
@@ -501,20 +495,6 @@ export const SKIPPED_FAMILIES = {
501
495
  // Split into `deliveries` / `contacts` / `subscriptions`; every subcommand
502
496
  // answers COMMAND_REMOVED naming its successor.
503
497
  "notifications": "reserved group; split by legible-cli-surface",
504
- // The gitvault dispatcher answers COMMAND_MOVED/COMMAND_REMOVED for every
505
- // `gitvault <verb>` (see RESERVED_SUBCOMMANDS below for the per-verb list)
506
- // — the family stays dispatched in cli.mjs (so the redirect fires instead
507
- // of UNKNOWN_COMMAND) but has zero manifest entries, since a redirect
508
- // dispatches nothing.
509
- "gitvault": "retired; every subcommand answers COMMAND_MOVED/COMMAND_REMOVED naming its `repos`/git successor",
510
- // Shipped in exactly one release (v4.54.0, live for hours) before the
511
- // one-noun review caught it: a gateway route namespace is not a CLI noun.
512
- // Both verbs answer COMMAND_MOVED into the repos family for one release,
513
- // then the spelling is reserved and answers nothing.
514
- "source-access": "retired same-day; `export` -> `repos recovery-bundle`, `status` -> `repos access` (member_custody block)",
515
- // `repo` singular resolves identically to `repos` — same
516
- // module, same case block in cli.mjs, so it needs no manifest of its own.
517
- "repo": "alias for `repos`, resolves identically (design D1)",
518
498
  };
519
499
 
520
500
  /**
@@ -530,23 +510,5 @@ export const SKIPPED_FAMILIES = {
530
510
  * which the family list cannot express.
531
511
  */
532
512
  export const RESERVED_SUBCOMMANDS = {
533
- "source-access:export": "moved to `repos recovery-bundle` — the artifact `repos recover --bundle` consumes belongs to the repos family",
534
- "source-access:status": "moved to `repos access` — your own wrapper custody rides its member_custody block; the org advisory is `doctor --only recovery_posture`",
535
513
  "escalations:contacts": "merged into `contacts` — the ladder and Telegram channels are one question",
536
- // Every `gitvault <verb>` spelling. Nine
537
- // answer COMMAND_MOVED naming their `repos` successor; `push` and
538
- // `reconcile` answer COMMAND_REMOVED (no equivalent successor for either —
539
- // `push`'s one-release alias window is over, `reconcile` was a workaround
540
- // with no permanent replacement, only a read at `repos access`).
541
- "gitvault:init": "moved to `repos create --project <project_id>`",
542
- "gitvault:status": "moved to `repos view`",
543
- "gitvault:snapshot": "moved to `repos snapshot`",
544
- "gitvault:policy": "moved to `repos policy`",
545
- "gitvault:compact": "moved to `repos gc`",
546
- "gitvault:prune": "moved to `repos gc`",
547
- "gitvault:verify": "moved to `repos fsck`",
548
- "gitvault:mirror": "moved to `repos mirror`",
549
- "gitvault:recover": "moved to `repos recover`",
550
- "gitvault:push": "removed — its one-release deprecation-alias window is over; `git push` / `repos snapshot`",
551
- "gitvault:reconcile": "removed — a workaround with no permanent successor; read `repos access` instead",
552
514
  };
@@ -454,7 +454,7 @@ async function issue(args) {
454
454
  try {
455
455
  const res = await getSdk().credentials.issue(projectId, { kind, name, expiresAt: expiresAt || undefined });
456
456
  if (importToCache && res?.secret) {
457
- // The cold-restart re-key path (gitvault-deploy-lane 6.5a): the minted
457
+ // The cold-restart re-key path (vault-deploy-lane 6.5a): the minted
458
458
  // secret goes straight into the local cache the deploy and data-plane
459
459
  // commands read, so a fresh machine re-keys in one command per kind
460
460
  // instead of the four-command issue-then-project-keys-import dance.
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Daemon identity + transport addressing (gitvault-persistent-helper D4/D5)
2
+ * Daemon identity + transport addressing (vault-persistent-helper D4/D5)
3
3
  * — the ONE module the thin client's fast path may import beside node
4
4
  * builtins (pinned by the import-graph gate test), so it must stay tiny.
5
5
  *
6
6
  * The socket lives INSIDE the client configuration directory — the same
7
7
  * 0700 trust boundary that already holds the wallet private key and the
8
- * gitvault keystore — and its path is keyed by CLI version, so a CLI
8
+ * vault keystore — and its path is keyed by CLI version, so a CLI
9
9
  * upgrade resolves a NEW path: the new client never reaches the old daemon,
10
10
  * which idles out on its own. Windows uses a named pipe whose name carries
11
11
  * a hash of the config dir (pipes have no filesystem home) plus the same
@@ -79,7 +79,7 @@ export function daemonSocketPath() {
79
79
  }
80
80
 
81
81
  export function daemonRunnerPath() {
82
- return join(dirname(fileURLToPath(import.meta.url)), "gitvault-daemon-run.mjs");
82
+ return join(dirname(fileURLToPath(import.meta.url)), "vault-daemon-run.mjs");
83
83
  }
84
84
 
85
85
  /**
package/lib/deploy-v2.mjs CHANGED
@@ -28,7 +28,7 @@
28
28
  import { existsSync, fstatSync, readFileSync } from "node:fs";
29
29
  import { resolve, dirname, extname, isAbsolute } from "node:path";
30
30
  import {
31
- applyWithGitvault,
31
+ applyWithVault,
32
32
  assertLocalFileReferencesExist,
33
33
  buildDeployResolveSummary,
34
34
  githubActionsCredentials,
@@ -139,7 +139,7 @@ Options:
139
139
  --final-only Alias for --quiet; final success/error envelope is still preserved
140
140
  --allow-warning <code> Continue past this reviewed warning code (repeatable)
141
141
  --allow-warnings Continue past plan warnings that require confirmation
142
- --allow-dirty gitvault-required projects only: capture a dirty
142
+ --allow-dirty vault-required projects only: capture a dirty
143
143
  work tree as-is instead of refusing
144
144
  SNAPSHOT_DIRTY_TREE. The result discloses exactly
145
145
  what was swept in, printed to stderr too — even
@@ -1328,14 +1328,14 @@ async function deployCmd(args) {
1328
1328
  const requiredPlan = opts.mode && opts.mode.kind === "applyReviewed"
1329
1329
  ? { planId: opts.mode.planId, ...(opts.mode.planFingerprint ? { planFingerprint: opts.mode.planFingerprint } : {}) }
1330
1330
  : undefined;
1331
- // A thin shim over the SDK lane (add-gitvault 5.0). `applyWithGitvault`
1332
- // takes the project's `gitvault_policy` into account: a project that is
1331
+ // A thin shim over the SDK lane (add-vault 5.0). `applyWithVault`
1332
+ // takes the project's `vault_policy` into account: a project that is
1333
1333
  // not `required` runs the same `apply()` this line always ran, with the
1334
1334
  // same options object; a `required` one captures, publishes, mints an
1335
1335
  // activation token, and commits with it.
1336
1336
  const sdk = getSdk(sdkOpts);
1337
1337
  const outcome = await withAutoApprove(() =>
1338
- applyWithGitvault({
1338
+ applyWithVault({
1339
1339
  sdk,
1340
1340
  spec: releaseSpec,
1341
1341
  apply: {
@@ -1348,7 +1348,7 @@ async function deployCmd(args) {
1348
1348
  },
1349
1349
  target: isCoreApiTarget() ? "core" : "cloud",
1350
1350
  ...(opts.allowDirty ? { allowDirty: true } : {}),
1351
- // The `gitvault_commit` line is printed ALWAYS, and to stderr, so
1351
+ // The `vault_commit` line is printed ALWAYS, and to stderr, so
1352
1352
  // `run402 deploy | jq` stays clean (the pipe contract).
1353
1353
  onCommitLine: (line) => { if (!opts.quiet) process.stderr.write(`${line}\n`); },
1354
1354
  }),
@@ -1357,29 +1357,29 @@ async function deployCmd(args) {
1357
1357
  // pass it as an optimization (the gateway defaults to the live release
1358
1358
  // without it). Best-effort: a keystore hiccup never fails the deploy.
1359
1359
  rememberLastDeployment(releaseSpec.project_id, outcome.deploy?.urls?.deployment_id);
1360
- if (!outcome.gitvault) {
1360
+ if (!outcome.vault) {
1361
1361
  console.log(JSON.stringify({ ...outcome.deploy, stats: sdkStats(sdk) }, null, 2));
1362
1362
  printVerboseStats(opts.verbose, sdk);
1363
1363
  return;
1364
1364
  }
1365
- const vaulted = outcome.gitvault;
1365
+ const vaulted = outcome.vault;
1366
1366
  // Both `DEPLOYED_*` outcomes activated a release; the override one just
1367
1367
  // did it without a vaulted capture and carries a draining advisory.
1368
1368
  const activated = vaulted.outcome === "DEPLOYED_AND_VAULTED" || vaulted.outcome === "DEPLOYED_UNVAULTED_OVERRIDE";
1369
1369
  console.log(JSON.stringify({
1370
1370
  ok: activated,
1371
1371
  outcome: vaulted.outcome,
1372
- gitvault_commit: vaulted.gitvault_commit,
1372
+ vault_commit: vaulted.vault_commit,
1373
1373
  capture_id: vaulted.capture_id,
1374
1374
  operation_id: vaulted.operation_id,
1375
1375
  ...("generation" in vaulted ? { generation: vaulted.generation } : {}),
1376
1376
  ...("push_error" in vaulted ? { push_error: vaulted.push_error } : {}),
1377
1377
  ...("deploy_error" in vaulted ? { deploy_error: vaulted.deploy_error } : {}),
1378
- // Design D5/D6 (gitvault-human-envelopes task 4.1 + gitvault-mirror):
1378
+ // Design D5/D6 (vault-human-envelopes task 4.1 + vault-mirror):
1379
1379
  // present only when this deploy landed a new generation — the SDK
1380
1380
  // omits both fields entirely on the other three outcomes rather than
1381
1381
  // faking a `skipped_*` value for something that never had a chance to
1382
- // run. See `Gitvault.deploy`'s doc comment (sdk/src/namespaces/gitvault.ts).
1382
+ // run. See `Repos.deploy`'s doc comment (sdk/src/namespaces/repos.ts).
1383
1383
  ...("mirror_push" in vaulted ? { mirror_push: vaulted.mirror_push } : {}),
1384
1384
  ...("reconcile_recipients" in vaulted ? { reconcile_recipients: vaulted.reconcile_recipients } : {}),
1385
1385
  next_actions: vaulted.next_actions,
@@ -1388,11 +1388,11 @@ async function deployCmd(args) {
1388
1388
  }, null, 2));
1389
1389
  // Design D6: the mirror result is reported BESIDE the vault outcome
1390
1390
  // above, on its own stderr line — a mirror failure never blocks the
1391
- // deploy (mirrors `run402 gitvault snapshot`'s reporting).
1391
+ // deploy (mirrors `run402 repos capture`'s reporting).
1392
1392
  if (vaulted.mirror_push?.outcome === "pushed") {
1393
1393
  console.error(`mirror: pushed generation ${vaulted.generation} (${vaulted.mirror_push.summary?.objects_copied ?? 0} object(s) copied)`);
1394
1394
  } else if (vaulted.mirror_push?.outcome === "failed") {
1395
- console.error(`mirror: dual-push FAILED (deploy is unaffected) — ${vaulted.mirror_push.error ?? "see mirror_push.summary.errors"}`);
1395
+ console.error(`mirror: mirroring this capture FAILED (deploy is unaffected) — ${vaulted.mirror_push.error ?? "see mirror_push.summary.errors"}`);
1396
1396
  }
1397
1397
  // Dirty-tree disclosure (Tal's decision, "help people not make
1398
1398
  // mistakes"): even an explicit --allow-dirty override never captures
@@ -1502,12 +1502,12 @@ const CI_DEPLOY_ERROR_GUIDANCE = {
1502
1502
  };
1503
1503
 
1504
1504
  /**
1505
- * The gateway's envelope for gitvault deploy errors — `upgrade_client` first,
1505
+ * The gateway's envelope for vault deploy errors — `upgrade_client` first,
1506
1506
  * then `grandfather_policy` — is relayed untouched: `deployCmd` deploys
1507
- * through `applyWithGitvault`, which declares `{capture_id,
1507
+ * through `applyWithVault`, which declares `{capture_id,
1508
1508
  * snapshot_oid_hmac}` at plan time and presents an activation token at
1509
- * commit, satisfying `gitvault_policy: required`, so no client-side rewrite
1510
- * of the envelope is needed. `cli-deploy-gitvault-lane.test.mjs` is the gate
1509
+ * commit, satisfying `vault_policy: required`, so no client-side rewrite
1510
+ * of the envelope is needed. `cli-deploy-vault-lane.test.mjs` is the gate
1511
1511
  * for this behavior.
1512
1512
  */
1513
1513
  function reportDeployApplyError(err, useGithubActionsOidc) {