@xemahq/xema 0.59.0 → 0.60.1

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 (850) hide show
  1. package/README.md +1 -2
  2. package/dist/appliance-owner.d.ts.map +1 -1
  3. package/dist/appliance-owner.js +6 -6
  4. package/dist/appliance-owner.js.map +1 -1
  5. package/dist/assets/appliance-base/authorization.lock.json +5186 -0
  6. package/dist/assets/appliance-base/distribution.lock.json +760 -279
  7. package/dist/assets/appliance-base/images.lock.json +576 -513
  8. package/dist/assets/appliance-lean/authorization.lock.json +4648 -0
  9. package/dist/assets/appliance-lean/distribution.lock.json +641 -186
  10. package/dist/assets/appliance-lean/images.lock.json +574 -512
  11. package/dist/assets/boot-graph.json +33 -14
  12. package/dist/assets/distribution-assets.manifest.json +23 -20
  13. package/dist/cli.d.ts.map +1 -1
  14. package/dist/cli.js +7 -9
  15. package/dist/cli.js.map +1 -1
  16. package/dist/commands/biome-dev.d.ts.map +1 -1
  17. package/dist/commands/biome-dev.js +41 -137
  18. package/dist/commands/biome-dev.js.map +1 -1
  19. package/dist/commands/biome-lifecycle.d.ts +24 -0
  20. package/dist/commands/biome-lifecycle.d.ts.map +1 -0
  21. package/dist/commands/biome-lifecycle.js +253 -0
  22. package/dist/commands/biome-lifecycle.js.map +1 -0
  23. package/dist/commands/biome.d.ts +2 -4
  24. package/dist/commands/biome.d.ts.map +1 -1
  25. package/dist/commands/biome.js +61 -46
  26. package/dist/commands/biome.js.map +1 -1
  27. package/dist/commands/config.d.ts.map +1 -1
  28. package/dist/commands/config.js +96 -8
  29. package/dist/commands/config.js.map +1 -1
  30. package/dist/commands/doctor.d.ts.map +1 -1
  31. package/dist/commands/doctor.js +13 -20
  32. package/dist/commands/doctor.js.map +1 -1
  33. package/dist/commands/down.d.ts.map +1 -1
  34. package/dist/commands/down.js +14 -21
  35. package/dist/commands/down.js.map +1 -1
  36. package/dist/commands/init.d.ts.map +1 -1
  37. package/dist/commands/init.js +6 -3
  38. package/dist/commands/init.js.map +1 -1
  39. package/dist/commands/installation-tenancy.d.ts +11 -0
  40. package/dist/commands/installation-tenancy.d.ts.map +1 -0
  41. package/dist/commands/installation-tenancy.js +308 -0
  42. package/dist/commands/installation-tenancy.js.map +1 -0
  43. package/dist/commands/installation.d.ts.map +1 -1
  44. package/dist/commands/installation.js +19 -5
  45. package/dist/commands/installation.js.map +1 -1
  46. package/dist/commands/logs.d.ts +2 -0
  47. package/dist/commands/logs.d.ts.map +1 -1
  48. package/dist/commands/logs.js +41 -8
  49. package/dist/commands/logs.js.map +1 -1
  50. package/dist/commands/{dev.d.ts → mirror.d.ts} +1 -1
  51. package/dist/commands/mirror.d.ts.map +1 -0
  52. package/dist/commands/mirror.js +132 -0
  53. package/dist/commands/mirror.js.map +1 -0
  54. package/dist/commands/source.d.ts.map +1 -1
  55. package/dist/commands/source.js +3 -2
  56. package/dist/commands/source.js.map +1 -1
  57. package/dist/commands/status.d.ts.map +1 -1
  58. package/dist/commands/status.js +40 -21
  59. package/dist/commands/status.js.map +1 -1
  60. package/dist/commands/up.d.ts.map +1 -1
  61. package/dist/commands/up.js +36 -4
  62. package/dist/commands/up.js.map +1 -1
  63. package/dist/dev/infra-preflight.d.ts.map +1 -1
  64. package/dist/dev/infra-preflight.js +0 -4
  65. package/dist/dev/infra-preflight.js.map +1 -1
  66. package/dist/lib/confirm.d.ts +3 -0
  67. package/dist/lib/confirm.d.ts.map +1 -0
  68. package/dist/lib/confirm.js +19 -0
  69. package/dist/lib/confirm.js.map +1 -0
  70. package/dist/lib/output-format.d.ts +6 -0
  71. package/dist/lib/output-format.d.ts.map +1 -0
  72. package/dist/lib/output-format.js +20 -0
  73. package/dist/lib/output-format.js.map +1 -0
  74. package/dist/mirror/config/mirror-config-document.d.ts +18 -0
  75. package/dist/mirror/config/mirror-config-document.d.ts.map +1 -0
  76. package/dist/mirror/config/mirror-config-document.js +57 -0
  77. package/dist/mirror/config/mirror-config-document.js.map +1 -0
  78. package/dist/mirror/config/mirror-config-schema.d.ts +54 -0
  79. package/dist/mirror/config/mirror-config-schema.d.ts.map +1 -0
  80. package/dist/mirror/config/mirror-config-schema.js +80 -0
  81. package/dist/mirror/config/mirror-config-schema.js.map +1 -0
  82. package/dist/mirror/kit/delta.d.ts +4 -0
  83. package/dist/mirror/kit/delta.d.ts.map +1 -0
  84. package/dist/mirror/kit/delta.js +41 -0
  85. package/dist/mirror/kit/delta.js.map +1 -0
  86. package/dist/mirror/kit/export-kit.d.ts +16 -0
  87. package/dist/mirror/kit/export-kit.d.ts.map +1 -0
  88. package/dist/mirror/kit/export-kit.js +112 -0
  89. package/dist/mirror/kit/export-kit.js.map +1 -0
  90. package/dist/mirror/kit/import-kit.d.ts +9 -0
  91. package/dist/mirror/kit/import-kit.d.ts.map +1 -0
  92. package/dist/mirror/kit/import-kit.js +166 -0
  93. package/dist/mirror/kit/import-kit.js.map +1 -0
  94. package/dist/mirror/kit/kit-archive.d.ts +4 -0
  95. package/dist/mirror/kit/kit-archive.d.ts.map +1 -0
  96. package/dist/mirror/kit/kit-archive.js +38 -0
  97. package/dist/mirror/kit/kit-archive.js.map +1 -0
  98. package/dist/mirror/kit/kit-layout.d.ts +10 -0
  99. package/dist/mirror/kit/kit-layout.d.ts.map +1 -0
  100. package/dist/mirror/kit/kit-layout.js +19 -0
  101. package/dist/mirror/kit/kit-layout.js.map +1 -0
  102. package/dist/mirror/kit/kit-sums.d.ts +5 -0
  103. package/dist/mirror/kit/kit-sums.d.ts.map +1 -0
  104. package/dist/mirror/kit/kit-sums.js +63 -0
  105. package/dist/mirror/kit/kit-sums.js.map +1 -0
  106. package/dist/mirror/kit/layout-sync.d.ts +8 -0
  107. package/dist/mirror/kit/layout-sync.d.ts.map +1 -0
  108. package/dist/mirror/kit/layout-sync.js +58 -0
  109. package/dist/mirror/kit/layout-sync.js.map +1 -0
  110. package/dist/mirror/plan/bundle-content.d.ts +10 -0
  111. package/dist/mirror/plan/bundle-content.d.ts.map +1 -0
  112. package/dist/mirror/plan/bundle-content.js +61 -0
  113. package/dist/mirror/plan/bundle-content.js.map +1 -0
  114. package/dist/mirror/plan/declaration-file.d.ts +9 -0
  115. package/dist/mirror/plan/declaration-file.d.ts.map +1 -0
  116. package/dist/mirror/plan/declaration-file.js +27 -0
  117. package/dist/mirror/plan/declaration-file.js.map +1 -0
  118. package/dist/mirror/plan/edition-inputs.d.ts +57 -0
  119. package/dist/mirror/plan/edition-inputs.d.ts.map +1 -0
  120. package/dist/mirror/plan/edition-inputs.js +44 -0
  121. package/dist/mirror/plan/edition-inputs.js.map +1 -0
  122. package/dist/mirror/plan/edition-reader.d.ts +9 -0
  123. package/dist/mirror/plan/edition-reader.d.ts.map +1 -0
  124. package/dist/mirror/plan/edition-reader.js +47 -0
  125. package/dist/mirror/plan/edition-reader.js.map +1 -0
  126. package/dist/mirror/plan/image-content.d.ts +30 -0
  127. package/dist/mirror/plan/image-content.d.ts.map +1 -0
  128. package/dist/mirror/plan/image-content.js +120 -0
  129. package/dist/mirror/plan/image-content.js.map +1 -0
  130. package/dist/mirror/plan/npm-lockfile.d.ts +12 -0
  131. package/dist/mirror/plan/npm-lockfile.d.ts.map +1 -0
  132. package/dist/mirror/plan/npm-lockfile.js +106 -0
  133. package/dist/mirror/plan/npm-lockfile.js.map +1 -0
  134. package/dist/mirror/plan/oci-reads.d.ts +22 -0
  135. package/dist/mirror/plan/oci-reads.d.ts.map +1 -0
  136. package/dist/mirror/plan/oci-reads.js +43 -0
  137. package/dist/mirror/plan/oci-reads.js.map +1 -0
  138. package/dist/mirror/plan/plan-command.d.ts +22 -0
  139. package/dist/mirror/plan/plan-command.d.ts.map +1 -0
  140. package/dist/mirror/plan/plan-command.js +81 -0
  141. package/dist/mirror/plan/plan-command.js.map +1 -0
  142. package/dist/mirror/plan/plan-file.d.ts +13 -0
  143. package/dist/mirror/plan/plan-file.d.ts.map +1 -0
  144. package/dist/mirror/plan/plan-file.js +63 -0
  145. package/dist/mirror/plan/plan-file.js.map +1 -0
  146. package/dist/mirror/plan/resolve-content-set.d.ts +16 -0
  147. package/dist/mirror/plan/resolve-content-set.d.ts.map +1 -0
  148. package/dist/mirror/plan/resolve-content-set.js +90 -0
  149. package/dist/mirror/plan/resolve-content-set.js.map +1 -0
  150. package/dist/mirror/preflight/glob.d.ts +2 -0
  151. package/dist/mirror/preflight/glob.d.ts.map +1 -0
  152. package/dist/mirror/preflight/glob.js +59 -0
  153. package/dist/mirror/preflight/glob.js.map +1 -0
  154. package/dist/mirror/preflight/harbor-api.d.ts +27 -0
  155. package/dist/mirror/preflight/harbor-api.d.ts.map +1 -0
  156. package/dist/mirror/preflight/harbor-api.js +39 -0
  157. package/dist/mirror/preflight/harbor-api.js.map +1 -0
  158. package/dist/mirror/preflight/preflight.d.ts +18 -0
  159. package/dist/mirror/preflight/preflight.d.ts.map +1 -0
  160. package/dist/mirror/preflight/preflight.js +41 -0
  161. package/dist/mirror/preflight/preflight.js.map +1 -0
  162. package/dist/mirror/preflight/tag-moves.d.ts +16 -0
  163. package/dist/mirror/preflight/tag-moves.d.ts.map +1 -0
  164. package/dist/mirror/preflight/tag-moves.js +28 -0
  165. package/dist/mirror/preflight/tag-moves.js.map +1 -0
  166. package/dist/mirror/preflight/write-probe.d.ts +10 -0
  167. package/dist/mirror/preflight/write-probe.d.ts.map +1 -0
  168. package/dist/mirror/preflight/write-probe.js +36 -0
  169. package/dist/mirror/preflight/write-probe.js.map +1 -0
  170. package/dist/mirror/target/extras.d.ts +16 -0
  171. package/dist/mirror/target/extras.d.ts.map +1 -0
  172. package/dist/mirror/target/extras.js +47 -0
  173. package/dist/mirror/target/extras.js.map +1 -0
  174. package/dist/mirror/target/npm-registry.d.ts +20 -0
  175. package/dist/mirror/target/npm-registry.d.ts.map +1 -0
  176. package/dist/mirror/target/npm-registry.js +67 -0
  177. package/dist/mirror/target/npm-registry.js.map +1 -0
  178. package/dist/mirror/target/npm-sync.d.ts +15 -0
  179. package/dist/mirror/target/npm-sync.d.ts.map +1 -0
  180. package/dist/mirror/target/npm-sync.js +44 -0
  181. package/dist/mirror/target/npm-sync.js.map +1 -0
  182. package/dist/mirror/target/oci-items.d.ts +27 -0
  183. package/dist/mirror/target/oci-items.d.ts.map +1 -0
  184. package/dist/mirror/target/oci-items.js +79 -0
  185. package/dist/mirror/target/oci-items.js.map +1 -0
  186. package/dist/mirror/target/oci-sync.d.ts +20 -0
  187. package/dist/mirror/target/oci-sync.d.ts.map +1 -0
  188. package/dist/mirror/target/oci-sync.js +93 -0
  189. package/dist/mirror/target/oci-sync.js.map +1 -0
  190. package/dist/mirror/target/receipt-store.d.ts +13 -0
  191. package/dist/mirror/target/receipt-store.d.ts.map +1 -0
  192. package/dist/mirror/target/receipt-store.js +61 -0
  193. package/dist/mirror/target/receipt-store.js.map +1 -0
  194. package/dist/mirror/target/receipt.d.ts +13 -0
  195. package/dist/mirror/target/receipt.d.ts.map +1 -0
  196. package/dist/mirror/target/receipt.js +25 -0
  197. package/dist/mirror/target/receipt.js.map +1 -0
  198. package/dist/mirror/target/seed-push.d.ts +15 -0
  199. package/dist/mirror/target/seed-push.d.ts.map +1 -0
  200. package/dist/mirror/target/seed-push.js +20 -0
  201. package/dist/mirror/target/seed-push.js.map +1 -0
  202. package/dist/mirror/target/target-access.d.ts +7 -0
  203. package/dist/mirror/target/target-access.d.ts.map +1 -0
  204. package/dist/mirror/target/target-access.js +17 -0
  205. package/dist/mirror/target/target-access.js.map +1 -0
  206. package/dist/mirror/target/target-commands.d.ts +21 -0
  207. package/dist/mirror/target/target-commands.d.ts.map +1 -0
  208. package/dist/mirror/target/target-commands.js +134 -0
  209. package/dist/mirror/target/target-commands.js.map +1 -0
  210. package/dist/mirror/target/target-context.d.ts +11 -0
  211. package/dist/mirror/target/target-context.d.ts.map +1 -0
  212. package/dist/mirror/target/target-context.js +31 -0
  213. package/dist/mirror/target/target-context.js.map +1 -0
  214. package/dist/mirror/target/target-ports.d.ts +18 -0
  215. package/dist/mirror/target/target-ports.d.ts.map +1 -0
  216. package/dist/mirror/target/target-ports.js +49 -0
  217. package/dist/mirror/target/target-ports.js.map +1 -0
  218. package/dist/mirror/target/target-state.d.ts +22 -0
  219. package/dist/mirror/target/target-state.d.ts.map +1 -0
  220. package/dist/mirror/target/target-state.js +41 -0
  221. package/dist/mirror/target/target-state.js.map +1 -0
  222. package/dist/runtime/biome-dev.d.ts +0 -16
  223. package/dist/runtime/biome-dev.d.ts.map +1 -1
  224. package/dist/runtime/biome-dev.js +0 -53
  225. package/dist/runtime/biome-dev.js.map +1 -1
  226. package/dist/runtime/biome-host/biome-directory-packer.d.ts +3 -0
  227. package/dist/runtime/biome-host/biome-directory-packer.d.ts.map +1 -0
  228. package/dist/runtime/biome-host/biome-directory-packer.js +12 -0
  229. package/dist/runtime/biome-host/biome-directory-packer.js.map +1 -0
  230. package/dist/runtime/biome-host/bundle-packer.d.ts +8 -0
  231. package/dist/runtime/biome-host/bundle-packer.d.ts.map +1 -0
  232. package/dist/runtime/biome-host/bundle-packer.js +3 -0
  233. package/dist/runtime/biome-host/bundle-packer.js.map +1 -0
  234. package/dist/runtime/biome-host/from-spec.d.ts +33 -0
  235. package/dist/runtime/biome-host/from-spec.d.ts.map +1 -0
  236. package/dist/runtime/biome-host/from-spec.js +70 -0
  237. package/dist/runtime/biome-host/from-spec.js.map +1 -0
  238. package/dist/runtime/biome-host/lifecycle-client.d.ts +20 -0
  239. package/dist/runtime/biome-host/lifecycle-client.d.ts.map +1 -0
  240. package/dist/runtime/biome-host/lifecycle-client.js +197 -0
  241. package/dist/runtime/biome-host/lifecycle-client.js.map +1 -0
  242. package/dist/runtime/biome-host/lifecycle-contract.d.ts +95 -0
  243. package/dist/runtime/biome-host/lifecycle-contract.d.ts.map +1 -0
  244. package/dist/runtime/biome-host/lifecycle-contract.js +61 -0
  245. package/dist/runtime/biome-host/lifecycle-contract.js.map +1 -0
  246. package/dist/runtime/biome-host/lifecycle-flow.d.ts +29 -0
  247. package/dist/runtime/biome-host/lifecycle-flow.d.ts.map +1 -0
  248. package/dist/runtime/biome-host/lifecycle-flow.js +106 -0
  249. package/dist/runtime/biome-host/lifecycle-flow.js.map +1 -0
  250. package/dist/runtime/biome-host/plan-sources.d.ts +4 -0
  251. package/dist/runtime/biome-host/plan-sources.d.ts.map +1 -0
  252. package/dist/runtime/biome-host/plan-sources.js +26 -0
  253. package/dist/runtime/biome-host/plan-sources.js.map +1 -0
  254. package/dist/runtime/biome-host/relay/bundle-fetch.d.ts +12 -0
  255. package/dist/runtime/biome-host/relay/bundle-fetch.d.ts.map +1 -0
  256. package/dist/runtime/biome-host/relay/bundle-fetch.js +76 -0
  257. package/dist/runtime/biome-host/relay/bundle-fetch.js.map +1 -0
  258. package/dist/runtime/biome-host/relay/declared-scheme.d.ts +3 -0
  259. package/dist/runtime/biome-host/relay/declared-scheme.d.ts.map +1 -0
  260. package/dist/runtime/biome-host/relay/declared-scheme.js +14 -0
  261. package/dist/runtime/biome-host/relay/declared-scheme.js.map +1 -0
  262. package/dist/runtime/biome-host/relay/npm-token.d.ts +4 -0
  263. package/dist/runtime/biome-host/relay/npm-token.d.ts.map +1 -0
  264. package/dist/runtime/biome-host/relay/npm-token.js +16 -0
  265. package/dist/runtime/biome-host/relay/npm-token.js.map +1 -0
  266. package/dist/runtime/biome-host/relay/relay-flow.d.ts +16 -0
  267. package/dist/runtime/biome-host/relay/relay-flow.d.ts.map +1 -0
  268. package/dist/runtime/biome-host/relay/relay-flow.js +48 -0
  269. package/dist/runtime/biome-host/relay/relay-flow.js.map +1 -0
  270. package/dist/runtime/biome-host/source-staging.d.ts +17 -0
  271. package/dist/runtime/biome-host/source-staging.d.ts.map +1 -0
  272. package/dist/runtime/biome-host/source-staging.js +80 -0
  273. package/dist/runtime/biome-host/source-staging.js.map +1 -0
  274. package/dist/runtime/biome-host/sse.d.ts +2 -0
  275. package/dist/runtime/biome-host/sse.d.ts.map +1 -0
  276. package/dist/runtime/biome-host/sse.js +33 -0
  277. package/dist/runtime/biome-host/sse.js.map +1 -0
  278. package/dist/runtime/biome-local-install.js +1 -1
  279. package/dist/runtime/biome-local-install.js.map +1 -1
  280. package/dist/runtime/browser-origins.d.ts +9 -0
  281. package/dist/runtime/browser-origins.d.ts.map +1 -1
  282. package/dist/runtime/browser-origins.js +10 -0
  283. package/dist/runtime/browser-origins.js.map +1 -1
  284. package/dist/runtime/config/config-document.d.ts +10 -0
  285. package/dist/runtime/config/config-document.d.ts.map +1 -0
  286. package/dist/runtime/config/config-document.js +56 -0
  287. package/dist/runtime/config/config-document.js.map +1 -0
  288. package/dist/runtime/config/config-migrations.d.ts +21 -0
  289. package/dist/runtime/config/config-migrations.d.ts.map +1 -0
  290. package/dist/runtime/config/config-migrations.js +102 -0
  291. package/dist/runtime/config/config-migrations.js.map +1 -0
  292. package/dist/runtime/config/config-paths.d.ts +3 -0
  293. package/dist/runtime/config/config-paths.d.ts.map +1 -0
  294. package/dist/runtime/config/config-paths.js +9 -0
  295. package/dist/runtime/config/config-paths.js.map +1 -0
  296. package/dist/runtime/config/dev-mode.d.ts +0 -1
  297. package/dist/runtime/config/dev-mode.d.ts.map +1 -1
  298. package/dist/runtime/config/dev-mode.js +11 -27
  299. package/dist/runtime/config/dev-mode.js.map +1 -1
  300. package/dist/runtime/config/init-presets.js +5 -9
  301. package/dist/runtime/config/init-presets.js.map +1 -1
  302. package/dist/runtime/config/launch-config-help.d.ts +4 -0
  303. package/dist/runtime/config/launch-config-help.d.ts.map +1 -0
  304. package/dist/runtime/config/launch-config-help.js +42 -0
  305. package/dist/runtime/config/launch-config-help.js.map +1 -0
  306. package/dist/runtime/config/launch-config.d.ts +60 -0
  307. package/dist/runtime/config/launch-config.d.ts.map +1 -0
  308. package/dist/runtime/config/launch-config.js +123 -0
  309. package/dist/runtime/config/launch-config.js.map +1 -0
  310. package/dist/runtime/config/launch-schema.d.ts +18 -0
  311. package/dist/runtime/config/launch-schema.d.ts.map +1 -0
  312. package/dist/runtime/config/launch-schema.js +31 -0
  313. package/dist/runtime/config/launch-schema.js.map +1 -0
  314. package/dist/runtime/config/loader.d.ts.map +1 -1
  315. package/dist/runtime/config/loader.js +4 -14
  316. package/dist/runtime/config/loader.js.map +1 -1
  317. package/dist/runtime/config/schema.d.ts +43 -38
  318. package/dist/runtime/config/schema.d.ts.map +1 -1
  319. package/dist/runtime/config/schema.js +17 -46
  320. package/dist/runtime/config/schema.js.map +1 -1
  321. package/dist/runtime/config/sources-config.d.ts +0 -2
  322. package/dist/runtime/config/sources-config.d.ts.map +1 -1
  323. package/dist/runtime/config/sources-config.js +10 -29
  324. package/dist/runtime/config/sources-config.js.map +1 -1
  325. package/dist/runtime/config/versioned-document.d.ts +26 -0
  326. package/dist/runtime/config/versioned-document.d.ts.map +1 -0
  327. package/dist/runtime/config/versioned-document.js +87 -0
  328. package/dist/runtime/config/versioned-document.js.map +1 -0
  329. package/dist/runtime/directory-changes.d.ts +12 -0
  330. package/dist/runtime/directory-changes.d.ts.map +1 -0
  331. package/dist/runtime/directory-changes.js +62 -0
  332. package/dist/runtime/directory-changes.js.map +1 -0
  333. package/dist/runtime/foreground.d.ts +2 -0
  334. package/dist/runtime/foreground.d.ts.map +1 -1
  335. package/dist/runtime/foreground.js +5 -20
  336. package/dist/runtime/foreground.js.map +1 -1
  337. package/dist/runtime/infra/infra-runner.js +5 -5
  338. package/dist/runtime/infra/infra-runner.js.map +1 -1
  339. package/dist/runtime/infra/keycloak-realm.d.ts +3 -19
  340. package/dist/runtime/infra/keycloak-realm.d.ts.map +1 -1
  341. package/dist/runtime/infra/keycloak-realm.js +12 -133
  342. package/dist/runtime/infra/keycloak-realm.js.map +1 -1
  343. package/dist/runtime/installation/current-launcher-renderer.js.map +1 -1
  344. package/dist/runtime/installation/from-current-config.d.ts.map +1 -1
  345. package/dist/runtime/installation/from-current-config.js +24 -47
  346. package/dist/runtime/installation/from-current-config.js.map +1 -1
  347. package/dist/runtime/installation/index.d.ts +1 -0
  348. package/dist/runtime/installation/index.d.ts.map +1 -1
  349. package/dist/runtime/installation/index.js +1 -0
  350. package/dist/runtime/installation/index.js.map +1 -1
  351. package/dist/runtime/installation/installation-file.d.ts +3 -0
  352. package/dist/runtime/installation/installation-file.d.ts.map +1 -0
  353. package/dist/runtime/installation/installation-file.js +9 -0
  354. package/dist/runtime/installation/installation-file.js.map +1 -0
  355. package/dist/runtime/installation/readiness.d.ts +6 -7
  356. package/dist/runtime/installation/readiness.d.ts.map +1 -1
  357. package/dist/runtime/installation/readiness.js +82 -132
  358. package/dist/runtime/installation/readiness.js.map +1 -1
  359. package/dist/runtime/installation/state-store.d.ts +4 -0
  360. package/dist/runtime/installation/state-store.d.ts.map +1 -1
  361. package/dist/runtime/installation/state-store.js +22 -1
  362. package/dist/runtime/installation/state-store.js.map +1 -1
  363. package/dist/runtime/installation/to-current-config.d.ts +4 -1
  364. package/dist/runtime/installation/to-current-config.d.ts.map +1 -1
  365. package/dist/runtime/installation/to-current-config.js +10 -36
  366. package/dist/runtime/installation/to-current-config.js.map +1 -1
  367. package/dist/runtime/launch-plan-format.d.ts.map +1 -1
  368. package/dist/runtime/launch-plan-format.js +31 -6
  369. package/dist/runtime/launch-plan-format.js.map +1 -1
  370. package/dist/runtime/launch-result.d.ts +15 -0
  371. package/dist/runtime/launch-result.d.ts.map +1 -0
  372. package/dist/runtime/launch-result.js +3 -0
  373. package/dist/runtime/launch-result.js.map +1 -0
  374. package/dist/runtime/launch.d.ts +16 -5
  375. package/dist/runtime/launch.d.ts.map +1 -1
  376. package/dist/runtime/launch.js +151 -315
  377. package/dist/runtime/launch.js.map +1 -1
  378. package/dist/runtime/license/helm-pull-secret.d.ts +1 -1
  379. package/dist/runtime/license/helm-pull-secret.d.ts.map +1 -1
  380. package/dist/runtime/license/helm-pull-secret.js +2 -2
  381. package/dist/runtime/license/helm-pull-secret.js.map +1 -1
  382. package/dist/runtime/lifecycle-progress/index.d.ts +9 -0
  383. package/dist/runtime/lifecycle-progress/index.d.ts.map +1 -0
  384. package/dist/runtime/lifecycle-progress/index.js +30 -0
  385. package/dist/runtime/lifecycle-progress/index.js.map +1 -0
  386. package/dist/runtime/lifecycle-progress/json-renderer.d.ts +3 -0
  387. package/dist/runtime/lifecycle-progress/json-renderer.d.ts.map +1 -0
  388. package/dist/runtime/lifecycle-progress/json-renderer.js +27 -0
  389. package/dist/runtime/lifecycle-progress/json-renderer.js.map +1 -0
  390. package/dist/runtime/lifecycle-progress/text-renderer.d.ts +5 -0
  391. package/dist/runtime/lifecycle-progress/text-renderer.d.ts.map +1 -0
  392. package/dist/runtime/lifecycle-progress/text-renderer.js +83 -0
  393. package/dist/runtime/lifecycle-progress/text-renderer.js.map +1 -0
  394. package/dist/runtime/lifecycle-progress/types.d.ts +79 -0
  395. package/dist/runtime/lifecycle-progress/types.d.ts.map +1 -0
  396. package/dist/runtime/lifecycle-progress/types.js +32 -0
  397. package/dist/runtime/lifecycle-progress/types.js.map +1 -0
  398. package/dist/runtime/lock-loader.d.ts +13 -3
  399. package/dist/runtime/lock-loader.d.ts.map +1 -1
  400. package/dist/runtime/lock-loader.js +28 -8
  401. package/dist/runtime/lock-loader.js.map +1 -1
  402. package/dist/runtime/paths.d.ts +2 -0
  403. package/dist/runtime/paths.d.ts.map +1 -1
  404. package/dist/runtime/paths.js +17 -4
  405. package/dist/runtime/paths.js.map +1 -1
  406. package/dist/runtime/roster.d.ts +6 -5
  407. package/dist/runtime/roster.d.ts.map +1 -1
  408. package/dist/runtime/roster.js +0 -21
  409. package/dist/runtime/roster.js.map +1 -1
  410. package/dist/runtime/runner/container-preflight.d.ts +3 -2
  411. package/dist/runtime/runner/container-preflight.d.ts.map +1 -1
  412. package/dist/runtime/runner/container-preflight.js +5 -5
  413. package/dist/runtime/runner/container-preflight.js.map +1 -1
  414. package/dist/runtime/runner/container-runner.d.ts +0 -22
  415. package/dist/runtime/runner/container-runner.d.ts.map +1 -1
  416. package/dist/runtime/runner/container-runner.js +0 -112
  417. package/dist/runtime/runner/container-runner.js.map +1 -1
  418. package/dist/runtime/runner/docker-cli.d.ts +1 -0
  419. package/dist/runtime/runner/docker-cli.d.ts.map +1 -1
  420. package/dist/runtime/runner/docker-cli.js +19 -0
  421. package/dist/runtime/runner/docker-cli.js.map +1 -1
  422. package/dist/runtime/runner/helm-cli.d.ts +1 -0
  423. package/dist/runtime/runner/helm-cli.d.ts.map +1 -1
  424. package/dist/runtime/runner/helm-cli.js +5 -1
  425. package/dist/runtime/runner/helm-cli.js.map +1 -1
  426. package/dist/runtime/runner/helm-pre-install.d.ts +3 -2
  427. package/dist/runtime/runner/helm-pre-install.d.ts.map +1 -1
  428. package/dist/runtime/runner/helm-pre-install.js +3 -3
  429. package/dist/runtime/runner/helm-pre-install.js.map +1 -1
  430. package/dist/runtime/runner/helm-runner.d.ts +29 -4
  431. package/dist/runtime/runner/helm-runner.d.ts.map +1 -1
  432. package/dist/runtime/runner/helm-runner.js +44 -14
  433. package/dist/runtime/runner/helm-runner.js.map +1 -1
  434. package/dist/runtime/runner/kube-cli.d.ts +1 -0
  435. package/dist/runtime/runner/kube-cli.d.ts.map +1 -1
  436. package/dist/runtime/runner/kube-cli.js +24 -2
  437. package/dist/runtime/runner/kube-cli.js.map +1 -1
  438. package/dist/runtime/secrets/managed-local-key-provider.d.ts +2 -0
  439. package/dist/runtime/secrets/managed-local-key-provider.d.ts.map +1 -1
  440. package/dist/runtime/secrets/managed-local-key-provider.js +17 -8
  441. package/dist/runtime/secrets/managed-local-key-provider.js.map +1 -1
  442. package/dist/runtime/seed/closure-container.d.ts +8 -0
  443. package/dist/runtime/seed/closure-container.d.ts.map +1 -0
  444. package/dist/runtime/seed/closure-container.js +23 -0
  445. package/dist/runtime/seed/closure-container.js.map +1 -0
  446. package/dist/runtime/seed/closure-helm.d.ts +9 -0
  447. package/dist/runtime/seed/closure-helm.d.ts.map +1 -0
  448. package/dist/runtime/seed/closure-helm.js +16 -0
  449. package/dist/runtime/seed/closure-helm.js.map +1 -0
  450. package/dist/runtime/seed/closure-names.d.ts +4 -0
  451. package/dist/runtime/seed/closure-names.d.ts.map +1 -0
  452. package/dist/runtime/seed/closure-names.js +29 -0
  453. package/dist/runtime/seed/closure-names.js.map +1 -0
  454. package/dist/runtime/seed/closure-native.d.ts +3 -0
  455. package/dist/runtime/seed/closure-native.d.ts.map +1 -0
  456. package/dist/runtime/seed/closure-native.js +18 -0
  457. package/dist/runtime/seed/closure-native.js.map +1 -0
  458. package/dist/runtime/seed/installation-tar.d.ts +5 -0
  459. package/dist/runtime/seed/installation-tar.d.ts.map +1 -0
  460. package/dist/runtime/seed/installation-tar.js +30 -0
  461. package/dist/runtime/seed/installation-tar.js.map +1 -0
  462. package/dist/runtime/seed/launch-env.d.ts +42 -0
  463. package/dist/runtime/seed/launch-env.d.ts.map +1 -0
  464. package/dist/runtime/seed/launch-env.js +150 -0
  465. package/dist/runtime/seed/launch-env.js.map +1 -0
  466. package/dist/runtime/seed/seed-container.d.ts +13 -0
  467. package/dist/runtime/seed/seed-container.d.ts.map +1 -0
  468. package/dist/runtime/seed/seed-container.js +175 -0
  469. package/dist/runtime/seed/seed-container.js.map +1 -0
  470. package/dist/runtime/seed/seed-delivery-env.d.ts +39 -0
  471. package/dist/runtime/seed/seed-delivery-env.d.ts.map +1 -0
  472. package/dist/runtime/seed/seed-delivery-env.js +47 -0
  473. package/dist/runtime/seed/seed-delivery-env.js.map +1 -0
  474. package/dist/runtime/seed/seed-down.d.ts +2 -0
  475. package/dist/runtime/seed/seed-down.d.ts.map +1 -0
  476. package/dist/runtime/seed/seed-down.js +52 -0
  477. package/dist/runtime/seed/seed-down.js.map +1 -0
  478. package/dist/runtime/seed/seed-env-file.d.ts +3 -0
  479. package/dist/runtime/seed/seed-env-file.d.ts.map +1 -0
  480. package/dist/runtime/seed/seed-env-file.js +24 -0
  481. package/dist/runtime/seed/seed-env-file.js.map +1 -0
  482. package/dist/runtime/seed/seed-env-secret.d.ts +18 -0
  483. package/dist/runtime/seed/seed-env-secret.d.ts.map +1 -0
  484. package/dist/runtime/seed/seed-env-secret.js +62 -0
  485. package/dist/runtime/seed/seed-env-secret.js.map +1 -0
  486. package/dist/runtime/seed/seed-environment.d.ts +12 -0
  487. package/dist/runtime/seed/seed-environment.d.ts.map +1 -0
  488. package/dist/runtime/seed/seed-environment.js +66 -0
  489. package/dist/runtime/seed/seed-environment.js.map +1 -0
  490. package/dist/runtime/seed/seed-facts.d.ts +22 -0
  491. package/dist/runtime/seed/seed-facts.d.ts.map +1 -0
  492. package/dist/runtime/seed/seed-facts.js +40 -0
  493. package/dist/runtime/seed/seed-facts.js.map +1 -0
  494. package/dist/runtime/seed/seed-helm.d.ts +10 -0
  495. package/dist/runtime/seed/seed-helm.d.ts.map +1 -0
  496. package/dist/runtime/seed/seed-helm.js +74 -0
  497. package/dist/runtime/seed/seed-helm.js.map +1 -0
  498. package/dist/runtime/seed/seed-image-user.d.ts +6 -0
  499. package/dist/runtime/seed/seed-image-user.d.ts.map +1 -0
  500. package/dist/runtime/seed/seed-image-user.js +14 -0
  501. package/dist/runtime/seed/seed-image-user.js.map +1 -0
  502. package/dist/runtime/seed/seed-installation-files.d.ts +23 -0
  503. package/dist/runtime/seed/seed-installation-files.d.ts.map +1 -0
  504. package/dist/runtime/seed/seed-installation-files.js +51 -0
  505. package/dist/runtime/seed/seed-installation-files.js.map +1 -0
  506. package/dist/runtime/seed/seed-installation.d.ts +20 -0
  507. package/dist/runtime/seed/seed-installation.d.ts.map +1 -0
  508. package/dist/runtime/seed/seed-installation.js +36 -0
  509. package/dist/runtime/seed/seed-installation.js.map +1 -0
  510. package/dist/runtime/seed/seed-launcher.d.ts +14 -0
  511. package/dist/runtime/seed/seed-launcher.d.ts.map +1 -0
  512. package/dist/runtime/seed/seed-launcher.js +155 -0
  513. package/dist/runtime/seed/seed-launcher.js.map +1 -0
  514. package/dist/runtime/seed/seed-options.d.ts +22 -0
  515. package/dist/runtime/seed/seed-options.d.ts.map +1 -0
  516. package/dist/runtime/seed/seed-options.js +57 -0
  517. package/dist/runtime/seed/seed-options.js.map +1 -0
  518. package/dist/runtime/seed/seed-platform-endpoints.d.ts +8 -0
  519. package/dist/runtime/seed/seed-platform-endpoints.d.ts.map +1 -0
  520. package/dist/runtime/seed/seed-platform-endpoints.js +55 -0
  521. package/dist/runtime/seed/seed-platform-endpoints.js.map +1 -0
  522. package/dist/runtime/seed/seed-process.d.ts +22 -0
  523. package/dist/runtime/seed/seed-process.d.ts.map +1 -0
  524. package/dist/runtime/seed/seed-process.js +79 -0
  525. package/dist/runtime/seed/seed-process.js.map +1 -0
  526. package/dist/runtime/seed/seed-record.d.ts +101 -0
  527. package/dist/runtime/seed/seed-record.d.ts.map +1 -0
  528. package/dist/runtime/seed/seed-record.js +141 -0
  529. package/dist/runtime/seed/seed-record.js.map +1 -0
  530. package/dist/runtime/seed/seed-resolved-deployment.d.ts +14 -0
  531. package/dist/runtime/seed/seed-resolved-deployment.d.ts.map +1 -0
  532. package/dist/runtime/seed/seed-resolved-deployment.js +52 -0
  533. package/dist/runtime/seed/seed-resolved-deployment.js.map +1 -0
  534. package/dist/runtime/seed/substrate-facts.d.ts +52 -0
  535. package/dist/runtime/seed/substrate-facts.d.ts.map +1 -0
  536. package/dist/runtime/seed/substrate-facts.js +92 -0
  537. package/dist/runtime/seed/substrate-facts.js.map +1 -0
  538. package/dist/runtime/seed/supervisor-contract.d.ts +9 -0
  539. package/dist/runtime/seed/supervisor-contract.d.ts.map +1 -0
  540. package/dist/runtime/seed/supervisor-contract.js +68 -0
  541. package/dist/runtime/seed/supervisor-contract.js.map +1 -0
  542. package/dist/runtime/seed/workload-identity-facts.d.ts +17 -0
  543. package/dist/runtime/seed/workload-identity-facts.d.ts.map +1 -0
  544. package/dist/runtime/seed/workload-identity-facts.js +53 -0
  545. package/dist/runtime/seed/workload-identity-facts.js.map +1 -0
  546. package/dist/runtime/sources/schema.d.ts +2 -0
  547. package/dist/runtime/sources/schema.d.ts.map +1 -1
  548. package/dist/runtime/sources/schema.js +10 -9
  549. package/dist/runtime/sources/schema.js.map +1 -1
  550. package/dist/runtime/store-client.d.ts +0 -10
  551. package/dist/runtime/store-client.d.ts.map +1 -1
  552. package/dist/runtime/store-client.js +0 -5
  553. package/dist/runtime/store-client.js.map +1 -1
  554. package/dist/runtime/tenancy/identity-installer.d.ts +11 -0
  555. package/dist/runtime/tenancy/identity-installer.d.ts.map +1 -0
  556. package/dist/runtime/tenancy/identity-installer.js +39 -0
  557. package/dist/runtime/tenancy/identity-installer.js.map +1 -0
  558. package/dist/runtime/tenancy/import-cache.d.ts +5 -0
  559. package/dist/runtime/tenancy/import-cache.d.ts.map +1 -0
  560. package/dist/runtime/tenancy/import-cache.js +27 -0
  561. package/dist/runtime/tenancy/import-cache.js.map +1 -0
  562. package/dist/runtime/tenancy/openfga.d.ts +4 -0
  563. package/dist/runtime/tenancy/openfga.d.ts.map +1 -0
  564. package/dist/runtime/tenancy/openfga.js +29 -0
  565. package/dist/runtime/tenancy/openfga.js.map +1 -0
  566. package/dist/runtime/tenancy/servers.d.ts +18 -0
  567. package/dist/runtime/tenancy/servers.d.ts.map +1 -0
  568. package/dist/runtime/tenancy/servers.js +102 -0
  569. package/dist/runtime/tenancy/servers.js.map +1 -0
  570. package/dist/runtime/tenancy/session.d.ts +19 -0
  571. package/dist/runtime/tenancy/session.d.ts.map +1 -0
  572. package/dist/runtime/tenancy/session.js +79 -0
  573. package/dist/runtime/tenancy/session.js.map +1 -0
  574. package/dist/runtime/tenancy/specs.d.ts +27 -0
  575. package/dist/runtime/tenancy/specs.d.ts.map +1 -0
  576. package/dist/runtime/tenancy/specs.js +129 -0
  577. package/dist/runtime/tenancy/specs.js.map +1 -0
  578. package/examples/01-local-native.yaml +1 -3
  579. package/examples/02-local-container-full.yaml +0 -2
  580. package/examples/03-byo-infra.yaml +1 -5
  581. package/examples/06-biome-sources.yaml +1 -3
  582. package/package.json +32 -37
  583. package/xema.config.example.yaml +1 -10
  584. package/dist/assets/keycloak/realm-xema.json +0 -397
  585. package/dist/commands/dev.d.ts.map +0 -1
  586. package/dist/commands/dev.js +0 -196
  587. package/dist/commands/dev.js.map +0 -1
  588. package/dist/commands/edition.d.ts +0 -3
  589. package/dist/commands/edition.d.ts.map +0 -1
  590. package/dist/commands/edition.js +0 -54
  591. package/dist/commands/edition.js.map +0 -1
  592. package/dist/commands/serve.d.ts +0 -3
  593. package/dist/commands/serve.d.ts.map +0 -1
  594. package/dist/commands/serve.js +0 -114
  595. package/dist/commands/serve.js.map +0 -1
  596. package/dist/dev/carved-installs.d.ts +0 -3
  597. package/dist/dev/carved-installs.d.ts.map +0 -1
  598. package/dist/dev/carved-installs.js +0 -63
  599. package/dist/dev/carved-installs.js.map +0 -1
  600. package/dist/dev/env-defaults.d.ts +0 -15
  601. package/dist/dev/env-defaults.d.ts.map +0 -1
  602. package/dist/dev/env-defaults.js +0 -178
  603. package/dist/dev/env-defaults.js.map +0 -1
  604. package/dist/dev/forked-worker-bootstrap-protocol.d.ts +0 -17
  605. package/dist/dev/forked-worker-bootstrap-protocol.d.ts.map +0 -1
  606. package/dist/dev/forked-worker-bootstrap-protocol.js +0 -35
  607. package/dist/dev/forked-worker-bootstrap-protocol.js.map +0 -1
  608. package/dist/dev/forked-worker-bootstrap.d.ts +0 -18
  609. package/dist/dev/forked-worker-bootstrap.d.ts.map +0 -1
  610. package/dist/dev/forked-worker-bootstrap.js +0 -84
  611. package/dist/dev/forked-worker-bootstrap.js.map +0 -1
  612. package/dist/dev/forked-worker.d.ts +0 -43
  613. package/dist/dev/forked-worker.d.ts.map +0 -1
  614. package/dist/dev/forked-worker.js +0 -358
  615. package/dist/dev/forked-worker.js.map +0 -1
  616. package/dist/edition/verify-image-evidence.bundle.mjs +0 -70456
  617. package/dist/edition/verify-image-evidence.bundle.provenance.json +0 -3957
  618. package/dist/runtime/backing-registration.d.ts +0 -11
  619. package/dist/runtime/backing-registration.d.ts.map +0 -1
  620. package/dist/runtime/backing-registration.js +0 -94
  621. package/dist/runtime/backing-registration.js.map +0 -1
  622. package/dist/runtime/edition/run-entry.d.ts +0 -9
  623. package/dist/runtime/edition/run-entry.d.ts.map +0 -1
  624. package/dist/runtime/edition/run-entry.js +0 -36
  625. package/dist/runtime/edition/run-entry.js.map +0 -1
  626. package/dist/runtime/edition/verb-map.d.ts +0 -70
  627. package/dist/runtime/edition/verb-map.d.ts.map +0 -1
  628. package/dist/runtime/edition/verb-map.js +0 -166
  629. package/dist/runtime/edition/verb-map.js.map +0 -1
  630. package/dist/runtime/env-seeder.d.ts +0 -26
  631. package/dist/runtime/env-seeder.d.ts.map +0 -1
  632. package/dist/runtime/env-seeder.js +0 -340
  633. package/dist/runtime/env-seeder.js.map +0 -1
  634. package/dist/runtime/port-map.d.ts +0 -3
  635. package/dist/runtime/port-map.d.ts.map +0 -1
  636. package/dist/runtime/port-map.js +0 -25
  637. package/dist/runtime/port-map.js.map +0 -1
  638. package/dist/runtime/run-manifest.d.ts +0 -52
  639. package/dist/runtime/run-manifest.d.ts.map +0 -1
  640. package/dist/runtime/run-manifest.js +0 -585
  641. package/dist/runtime/run-manifest.js.map +0 -1
  642. package/dist/runtime/runner/native-runner.d.ts +0 -13
  643. package/dist/runtime/runner/native-runner.d.ts.map +0 -1
  644. package/dist/runtime/runner/native-runner.js +0 -94
  645. package/dist/runtime/runner/native-runner.js.map +0 -1
  646. package/dist/runtime/runner/service-runner.d.ts +0 -28
  647. package/dist/runtime/runner/service-runner.d.ts.map +0 -1
  648. package/dist/runtime/runner/service-runner.js +0 -10
  649. package/dist/runtime/runner/service-runner.js.map +0 -1
  650. package/dist/runtime/secrets/generated-platform-secrets.d.ts +0 -16
  651. package/dist/runtime/secrets/generated-platform-secrets.d.ts.map +0 -1
  652. package/dist/runtime/secrets/generated-platform-secrets.js +0 -115
  653. package/dist/runtime/secrets/generated-platform-secrets.js.map +0 -1
  654. package/dist/runtime/secrets/resolver.d.ts +0 -23
  655. package/dist/runtime/secrets/resolver.d.ts.map +0 -1
  656. package/dist/runtime/secrets/resolver.js +0 -266
  657. package/dist/runtime/secrets/resolver.js.map +0 -1
  658. package/dist/runtime/supervisor.d.ts +0 -67
  659. package/dist/runtime/supervisor.d.ts.map +0 -1
  660. package/dist/runtime/supervisor.js +0 -227
  661. package/dist/runtime/supervisor.js.map +0 -1
  662. package/edition/README.md +0 -293
  663. package/edition/adapter-bundled-versions.mjs +0 -108
  664. package/edition/adapter-host-versions.mjs +0 -41
  665. package/edition/assemble-producer-input.mjs +0 -1414
  666. package/edition/assemble-third-party-input.mjs +0 -336
  667. package/edition/authored-source-check.mjs +0 -135
  668. package/edition/authorization-base.mjs +0 -357
  669. package/edition/biome-content.mjs +0 -327
  670. package/edition/build-biome-index.mjs +0 -180
  671. package/edition/build-ledger-completeness.mjs +0 -67
  672. package/edition/build-ledger.mjs +0 -107
  673. package/edition/build-platform-service-index.mjs +0 -292
  674. package/edition/build-runtime-image-source-index.mjs +0 -1187
  675. package/edition/built-verifier.mjs +0 -55
  676. package/edition/candidate-edition.mjs +0 -697
  677. package/edition/canonical-evidence-json.mjs +0 -82
  678. package/edition/canonical-repository-url.mjs +0 -47
  679. package/edition/catalogue-edition.mjs +0 -49
  680. package/edition/catalogue-evidence.mjs +0 -228
  681. package/edition/catalogue-fetch.mjs +0 -124
  682. package/edition/catalogue-lock-field.mjs +0 -41
  683. package/edition/catalogue-pin.mjs +0 -71
  684. package/edition/catalogue.mjs +0 -223
  685. package/edition/chart-set-source-commit.mjs +0 -97
  686. package/edition/check-committed-image-evidence.mjs +0 -412
  687. package/edition/checkout-indexed-source-repositories.mjs +0 -283
  688. package/edition/collected-refusals.mjs +0 -59
  689. package/edition/comment-blanker.mjs +0 -75
  690. package/edition/connector-source-authority.mjs +0 -60
  691. package/edition/contract-authority.mjs +0 -122
  692. package/edition/cosign-certificate-constraints.mjs +0 -50
  693. package/edition/cross-repo-build-inputs.mjs +0 -158
  694. package/edition/customer-definition.mjs +0 -174
  695. package/edition/customer-edition-verbs.mjs +0 -617
  696. package/edition/customer-flags.mjs +0 -15
  697. package/edition/develop-catalogue-free-resolve.mjs +0 -280
  698. package/edition/develop-chart-roster.mjs +0 -96
  699. package/edition/develop-chart-set.mjs +0 -147
  700. package/edition/develop-coverage-readers.mjs +0 -217
  701. package/edition/develop-coverage-run.mjs +0 -50
  702. package/edition/develop-coverage-verdict.mjs +0 -153
  703. package/edition/develop-coverage.mjs +0 -131
  704. package/edition/develop-current-resolution.mjs +0 -29
  705. package/edition/develop-edition-invariants.mjs +0 -142
  706. package/edition/develop-edition-resolve.mjs +0 -211
  707. package/edition/develop-edition.mjs +0 -379
  708. package/edition/develop-engine-image.mjs +0 -95
  709. package/edition/develop-follow.mjs +0 -491
  710. package/edition/develop-freeze.mjs +0 -289
  711. package/edition/develop-git-bundles.mjs +0 -255
  712. package/edition/develop-graph.mjs +0 -28
  713. package/edition/develop-image-coordinate.mjs +0 -54
  714. package/edition/develop-image-probe.mjs +0 -120
  715. package/edition/develop-image-record.mjs +0 -194
  716. package/edition/develop-record-ancestry.mjs +0 -144
  717. package/edition/develop-record-verify.mjs +0 -216
  718. package/edition/develop-resolve-report.mjs +0 -159
  719. package/edition/develop-select-records.mjs +0 -172
  720. package/edition/develop-selection-line.mjs +0 -30
  721. package/edition/develop-selection-pins.mjs +0 -36
  722. package/edition/develop-snapshot-inputs.mjs +0 -93
  723. package/edition/develop-verify-image-record.mjs +0 -109
  724. package/edition/dispatched-runtime-components.mjs +0 -172
  725. package/edition/dist-check.mjs +0 -1137
  726. package/edition/distribution-evidence-set.mjs +0 -1064
  727. package/edition/distribution-paths.mjs +0 -191
  728. package/edition/edition-artifact.mjs +0 -529
  729. package/edition/edition-biome-manifests.mjs +0 -85
  730. package/edition/edition-ceiling.mjs +0 -180
  731. package/edition/edition-channel.mjs +0 -20
  732. package/edition/edition-chart-set.mjs +0 -104
  733. package/edition/edition-config.mjs +0 -374
  734. package/edition/edition-constants.mjs +0 -110
  735. package/edition/edition-contract-parse.mjs +0 -179
  736. package/edition/edition-contract.json +0 -100
  737. package/edition/edition-image-seal.mjs +0 -110
  738. package/edition/edition-kind.mjs +0 -10
  739. package/edition/edition-list.mjs +0 -35
  740. package/edition/edition-locks.mjs +0 -79
  741. package/edition/edition-pin-verbs.mjs +0 -183
  742. package/edition/edition-pin.mjs +0 -17
  743. package/edition/edition-pinned-inputs.mjs +0 -116
  744. package/edition/edition-protocol.mjs +0 -277
  745. package/edition/edition-publisher.mjs +0 -21
  746. package/edition/edition-seal.mjs +0 -257
  747. package/edition/edition-source-pins.mjs +0 -211
  748. package/edition/edition-unpin.mjs +0 -16
  749. package/edition/edition-workspace.mjs +0 -204
  750. package/edition/evidence-checkout.mjs +0 -439
  751. package/edition/evidence-grammars.mjs +0 -18
  752. package/edition/evidence-input-mode.mjs +0 -136
  753. package/edition/evidence-trust-pin.mjs +0 -380
  754. package/edition/evidence-trust-policy.mjs +0 -374
  755. package/edition/external-source-walk.mjs +0 -485
  756. package/edition/first-party-source-ids.mjs +0 -62
  757. package/edition/fleet-coordinate-finality.mjs +0 -363
  758. package/edition/fulcio-certificate-extensions.mjs +0 -231
  759. package/edition/git-json.mjs +0 -54
  760. package/edition/git-source-auth.mjs +0 -131
  761. package/edition/image-delivery-entitlement-descriptor.mjs +0 -106
  762. package/edition/image-evidence-replay-state.mjs +0 -242
  763. package/edition/image-evidence.mjs +0 -1404
  764. package/edition/image-lock-service-rows.mjs +0 -26
  765. package/edition/image-subject-identity.mjs +0 -24
  766. package/edition/images-from-record.mjs +0 -298
  767. package/edition/indexes-at-pins.mjs +0 -13
  768. package/edition/kernel-capability-domain.mjs +0 -30
  769. package/edition/kernel-contract-authority.mjs +0 -517
  770. package/edition/kernel-contract-source-path-set.mjs +0 -94
  771. package/edition/kernel-package.mjs +0 -206
  772. package/edition/kernel-protocol-choice.mjs +0 -239
  773. package/edition/kernel-signer-kind.mjs +0 -23
  774. package/edition/lib.mjs +0 -3303
  775. package/edition/locked-bundle-signer.mjs +0 -297
  776. package/edition/map-with-concurrency.mjs +0 -19
  777. package/edition/no-follow-file.mjs +0 -94
  778. package/edition/oci-evidence-verbs.mjs +0 -419
  779. package/edition/oci-image-source-evidence.mjs +0 -364
  780. package/edition/operation-grant-admission.mjs +0 -285
  781. package/edition/operation-requirements.mjs +0 -282
  782. package/edition/oras-process.mjs +0 -35
  783. package/edition/oras.mjs +0 -742
  784. package/edition/pin-source.mjs +0 -242
  785. package/edition/pinned-cosign.mjs +0 -70
  786. package/edition/plan-image-evidence-refresh.mjs +0 -427
  787. package/edition/platform-lock-readability.mjs +0 -901
  788. package/edition/platform-service-class.mjs +0 -85
  789. package/edition/platform-service-ownership.mjs +0 -88
  790. package/edition/platform-service-source-authority.mjs +0 -105
  791. package/edition/positive-closure.mjs +0 -162
  792. package/edition/previous-seal-registry.mjs +0 -149
  793. package/edition/produce-distribution-completeness-evidence.mjs +0 -318
  794. package/edition/produce-edition-catalogue-evidence.mjs +0 -252
  795. package/edition/produce-image-delivery-entitlement-evidence.mjs +0 -304
  796. package/edition/produce-image-source-evidence.mjs +0 -788
  797. package/edition/producer-evidence-bundle.mjs +0 -201
  798. package/edition/producer-evidence-index-file.mjs +0 -4
  799. package/edition/record-refused.mjs +0 -12
  800. package/edition/registry-credentials.mjs +0 -225
  801. package/edition/release-catalogue.mjs +0 -47
  802. package/edition/release-channel-guard.mjs +0 -108
  803. package/edition/release-edition-artifact.mjs +0 -152
  804. package/edition/release-edition.mjs +0 -54
  805. package/edition/remedy-command.mjs +0 -89
  806. package/edition/repin-evidence-trust.mjs +0 -109
  807. package/edition/required-resource-provider.mjs +0 -58
  808. package/edition/resolve-chart-set.mjs +0 -376
  809. package/edition/resolve-customer-edition.mjs +0 -374
  810. package/edition/resolve-distribution.mjs +0 -2639
  811. package/edition/resolve-edition.mjs +0 -192
  812. package/edition/resolve-images.mjs +0 -2294
  813. package/edition/seal-image-digests.mjs +0 -954
  814. package/edition/sealed-distribution-lock.mjs +0 -22
  815. package/edition/sealed-evidence-accept.mjs +0 -82
  816. package/edition/shallow-checkout.mjs +0 -18
  817. package/edition/sigstore-bundle-media-type.mjs +0 -4
  818. package/edition/source-authority.mjs +0 -713
  819. package/edition/source-closure.mjs +0 -115
  820. package/edition/store-publisher-trust.mjs +0 -40
  821. package/edition/strict-json.mjs +0 -121
  822. package/edition/string-order.mjs +0 -5
  823. package/edition/third-party-admission.mjs +0 -91
  824. package/edition/third-party-bundle-registry.mjs +0 -242
  825. package/edition/third-party-certificate-extensions.mjs +0 -21
  826. package/edition/third-party-image-pins.mjs +0 -41
  827. package/edition/third-party-pins-trusted.mjs +0 -24
  828. package/edition/third-party-producer-evidence.mjs +0 -76
  829. package/edition/third-party-source-check.mjs +0 -28
  830. package/edition/third-party-source-context.mjs +0 -41
  831. package/edition/third-party-source-evidence.mjs +0 -287
  832. package/edition/third-party-source-flags.mjs +0 -134
  833. package/edition/third-party-source-pins.mjs +0 -259
  834. package/edition/third-party-source-uniqueness.mjs +0 -54
  835. package/edition/third-party-source-walk.mjs +0 -115
  836. package/edition/third-party-source-writer.mjs +0 -213
  837. package/edition/third-party-subjects.mjs +0 -128
  838. package/edition/trust-policy-arming-verb.mjs +0 -60
  839. package/edition/trust-policy-arming.mjs +0 -144
  840. package/edition/trust-policy-image-ownership.mjs +0 -85
  841. package/edition/trusted-executable.mjs +0 -166
  842. package/edition/verifier-binding.mjs +0 -45
  843. package/edition/verifier-files.mjs +0 -8
  844. package/edition/verifier-kernel-schemas.mjs +0 -22
  845. package/edition/verifier-provenance.mjs +0 -64
  846. package/edition/verify-catalogue-evidence.mjs +0 -247
  847. package/edition/verify-image-evidence.mjs +0 -475
  848. package/edition/verify-image-platforms.mjs +0 -523
  849. package/edition/why.mjs +0 -56
  850. package/edition/workspace-sections.mjs +0 -276
@@ -1,363 +0,0 @@
1
- // ─────────────────────────────────────────────────────────────────────────────
2
- // fleet-coordinate-finality — has this coordinate FINISHED MOVING?
3
- //
4
- // WHY THIS EXISTS
5
- // ---------------
6
- // A seal pins what a MUTABLE TAG currently resolves to. `imageRef:contentHash`
7
- // is a build-input key, not a content address: two builds of one input set wear
8
- // the same tag, and the arm64 lane REPUBLISHES that tag by design —
9
- // `imagetools create -t :<contentHash>` writes a NEW index at the SAME
10
- // coordinate. So sealing a coordinate that is still awaiting its arm64
11
- // supplement pins a manifest the tag will stop serving.
12
- //
13
- // THE REGRESSION THIS WAS WRITTEN FOR, measured — and how it is now graded
14
- // -----------------------------------------------------------------------
15
- // `xema-internal` was sealed at 09:25 on 2026-09-18 while 40 of its coordinates
16
- // were still amd64-only, awaiting the supplement. The arm64 backfill — the
17
- // CORRECT repair — then moved those digests, and 63 of its 66 seals named a
18
- // manifest their tag no longer served.
19
- //
20
- // Its own per-edition verification PASSED, and passed CORRECTLY: `xema-internal`
21
- // declares `requiredPlatforms: ["linux/amd64"]`, and amd64-only satisfies that.
22
- // No rule the sealer could evaluate was violated.
23
- //
24
- // WHY A PER-EDITION CHECK CANNOT CATCH IT — the whole point of this module
25
- // -----------------------------------------------------------------------
26
- // `appliance-base` and `appliance-lean` declare `linux/arm64`, and they share 63
27
- // of those coordinates with `xema-internal` by identical `imageRef` AND
28
- // `contentHash`. So `xema-internal`'s stability depended on a platform
29
- // requirement declared in an edition it cannot see.
30
- //
31
- // > PLATFORM VERIFICATION IS PER-EDITION. FINALITY IS A FLEET PROPERTY.
32
- //
33
- // OWNER RULING 2026-09-29 NARROWS WHAT IS REFUSED. Finality is graded against
34
- // the sealing edition's OWN requiredPlatforms. The xema-internal shape above —
35
- // an amd64-only edition sealing while another edition's arm64 is pending — is
36
- // now ALLOWED and RECORDED (`pendingElsewhere`), the residual accepted: its
37
- // sealed digest stays resolvable and serves every platform it requires. A
38
- // coordinate pending a platform the sealing edition itself declares is still
39
- // refused. The fleet map is still built from every edition, because the
40
- // recorded residual must name who is waiting.
41
- //
42
- // A per-edition sealer cannot express that even in principle. This module is the
43
- // fleet-scoped half, and it lives HERE — beside the sealer, in the repository
44
- // that holds every edition's lock — because that is where the data and the edit
45
- // both are. An aggregator gate would grade this repository at a RECORDED
46
- // GITLINK: it would fire late, in a repository nobody was editing, about a
47
- // change made somewhere else.
48
- //
49
- // IT RESOLVES NOTHING ITSELF
50
- // --------------------------
51
- // `verifyDistributionPlatforms` already fetches each index, hash-checks the
52
- // bytes, walks every child manifest BY DIGEST and reads each image CONFIG for
53
- // its real platform — and it already returns `publishedPlatforms`, the FULL set
54
- // the coordinate serves rather than only the subset this edition required. That
55
- // return value is the input here. There is no second registry walk and no
56
- // second opinion about what a coordinate serves.
57
- //
58
- // WHAT IT DOES NOT COVER, said out loud rather than discovered
59
- // -----------------------------------------------------------
60
- // The fleet is the EDITIONS ROOT IT IS GIVEN. Run against a customer's own root
61
- // it grades that customer's editions and cannot see the vendor's, because they
62
- // are not there to read. That is why every verdict prints its corpus — the
63
- // number of editions and coordinates graded — so the scope of an answer is
64
- // visible in the answer rather than assumed from the fact that it passed.
65
- // ─────────────────────────────────────────────────────────────────────────────
66
-
67
- import { existsSync, readFileSync } from 'node:fs';
68
- import { join } from 'node:path';
69
-
70
- import { discoverEditionDirectories } from './distribution-paths.mjs';
71
- import { platformIdentity } from './verify-image-platforms.mjs';
72
-
73
- export const IMAGE_LOCK_FILENAME = 'images.lock.json';
74
-
75
- /**
76
- * The coordinate a subject names, in the ONE spelling the verifier uses.
77
- *
78
- * `verifyDistributionPlatforms` builds `${imageRef}:${contentHash}` and returns
79
- * it as `coordinate` on every verified subject. This function must produce the
80
- * same string for the lock-side map, or the two halves would silently fail to
81
- * join and every lookup would miss — which is a refusal that grades nothing
82
- * while reporting success. The join is asserted rather than trusted: see the
83
- * unknown-coordinate throw in {@link assertCoordinatesFinal}.
84
- */
85
- export function coordinateOf(subject) {
86
- return `${subject.imageRef}:${subject.contentHash}`;
87
- }
88
-
89
- /**
90
- * Pure: every platform any edition requires at each coordinate, and WHO
91
- * requires it.
92
- *
93
- * `editions` is `[{ distributionId, subjects }]` — already read, so the
94
- * decision table is testable without a filesystem or a registry.
95
- *
96
- * The returned shape is `Map<coordinate, Map<platformIdentity, string[]>>`,
97
- * where the array is the sorted edition ids requiring that platform there. The
98
- * REQUIRERS are carried rather than only the platforms because a refusal that
99
- * cannot name who is still waiting sends the reader to look for the reason
100
- * themselves, and the reason is in another edition's declaration.
101
- */
102
- export function collectFleetPlatformRequirements({ editions, isThirdPartySubject = () => false }) {
103
- if (!Array.isArray(editions) || editions.length === 0) {
104
- throw new Error(
105
- 'fleet-coordinate-finality: no edition was supplied; a fleet requirement map ' +
106
- 'built over zero editions would make every coordinate look final, which is ' +
107
- 'the refusal passing while grading nothing',
108
- );
109
- }
110
- const byCoordinate = new Map();
111
- for (const edition of editions) {
112
- const { distributionId, subjects } = edition;
113
- if (typeof distributionId !== 'string' || distributionId.length === 0) {
114
- throw new Error(
115
- 'fleet-coordinate-finality: an edition was supplied with no distributionId',
116
- );
117
- }
118
- if (!Array.isArray(subjects) || subjects.length === 0) {
119
- throw new Error(
120
- `fleet-coordinate-finality: "${distributionId}" has an image lock declaring no ` +
121
- 'subjects. An edition that contributes no coordinate is indistinguishable ' +
122
- 'from one this pass failed to read, so it is refused rather than skipped.',
123
- );
124
- }
125
- for (const subject of subjects) {
126
- if (
127
- !Array.isArray(subject.requiredPlatforms) ||
128
- subject.requiredPlatforms.length === 0
129
- ) {
130
- throw new Error(
131
- `fleet-coordinate-finality: "${distributionId}" subject ${subject.kind}:${subject.id} ` +
132
- 'declares no requiredPlatforms. It would contribute nothing to the fleet map ' +
133
- 'and silently weaken the refusal for every edition sharing its coordinate.',
134
- );
135
- }
136
- // A third-party subject is read by its pinned digest, not at `<imageRef>:<contentHash>` (its contentHash is
137
- // publisher-attested, not a tag), and no fleet lane supplements it: it contributes no first-party coordinate.
138
- if (isThirdPartySubject(subject)) {continue;}
139
- const coordinate = coordinateOf(subject);
140
- let platforms = byCoordinate.get(coordinate);
141
- if (!platforms) {
142
- platforms = new Map();
143
- byCoordinate.set(coordinate, platforms);
144
- }
145
- for (const platform of subject.requiredPlatforms) {
146
- const identity = platformIdentity(platform);
147
- let requirers = platforms.get(identity);
148
- if (!requirers) {
149
- requirers = new Set();
150
- platforms.set(identity, requirers);
151
- }
152
- requirers.add(distributionId);
153
- }
154
- }
155
- }
156
- // Freeze the requirer sets into sorted arrays so a message built from this map
157
- // is deterministic, and so a caller cannot mutate the map it was handed.
158
- return new Map(
159
- [...byCoordinate].map(([coordinate, platforms]) => [
160
- coordinate,
161
- new Map(
162
- [...platforms].map(([identity, requirers]) => [
163
- identity,
164
- [...requirers].sort(),
165
- ]),
166
- ),
167
- ]),
168
- );
169
- }
170
-
171
- /**
172
- * Read every edition's image lock under `editionsRoot`, in BOTH tiers.
173
- *
174
- * A pending-merge edition is a real edition that will ship its coordinates, so
175
- * a platform IT requires is just as much a reason a coordinate can still move.
176
- * Measured 2026-09-19: the two pending editions carry a declaration and no lock,
177
- * so today this widening admits nothing — which is the point at which to add it,
178
- * rather than after a pending edition has acquired one.
179
- *
180
- * TWO ABSENCES THAT ARE NOT THE SAME, and conflating them is how this check
181
- * would quietly stop working:
182
- *
183
- * * NO LOCK FILE — the edition makes no coordinate claim at all. It
184
- * contributes nothing, legitimately, and is COUNTED and reported so the
185
- * corpus line shows it was seen and skipped.
186
- * * A LOCK THAT CANNOT BE READ — refused. An unreadable lock contributes no
187
- * requirements either, and the difference between "requires nothing" and
188
- * "we failed to find out" is the whole value of the refusal.
189
- *
190
- * `JSON.parse` rather than the kernel's `parseImageLock` is deliberate. Only
191
- * three fields are read — `imageRef`, `contentHash`, `requiredPlatforms` — and
192
- * requiring a BUILT KERNEL to grade the OTHER editions would make this refusal
193
- * unrunnable in exactly the checkouts that have no kernel to build. The edition
194
- * being sealed is still parsed by the kernel on the path that seals it.
195
- */
196
- export function readFleetImageLocks(editionsRoot) {
197
- const editions = [];
198
- const withoutLock = [];
199
- for (const { id, directory } of discoverEditionDirectories(editionsRoot)) {
200
- const lockPath = join(directory, IMAGE_LOCK_FILENAME);
201
- if (!existsSync(lockPath)) {
202
- withoutLock.push(id);
203
- continue;
204
- }
205
- let raw;
206
- try {
207
- raw = JSON.parse(readFileSync(lockPath, 'utf8'));
208
- } catch (error) {
209
- throw new Error(
210
- `fleet-coordinate-finality: cannot read ${lockPath}: ${error.message}. ` +
211
- 'Refusing to grade coordinate finality over a fleet this pass could not ' +
212
- 'fully read — an unreadable lock declares no requirement, which would make ' +
213
- 'a coordinate look final because it was never asked about.',
214
- );
215
- }
216
- editions.push({ distributionId: id, subjects: raw.subjects });
217
- }
218
- if (editions.length === 0) {
219
- throw new Error(
220
- `fleet-coordinate-finality: found no image lock under ${editionsRoot}; an empty ` +
221
- 'scan is not a result',
222
- );
223
- }
224
- return { editions, withoutLock: withoutLock.sort() };
225
- }
226
-
227
- /**
228
- * Refuse to seal a coordinate THIS edition still awaits a platform at; record —
229
- * and allow — one only ANOTHER edition still awaits.
230
- *
231
- * Owner ruling 2026-09-29: finality is TARGET-PLATFORM aware. A coordinate
232
- * pending only a platform this edition does not declare is the accepted
233
- * residual, returned as `pendingElsewhere` so the caller prints it. A later
234
- * supplement for that other edition may move the tag's digest; this edition's
235
- * seal keeps pinning the manifest it verified, which still resolves by digest
236
- * and still carries every platform this edition requires.
237
- *
238
- * `verified` is `verifyDistributionPlatforms(...).subjects`, each carrying
239
- * `coordinate` and `publishedPlatforms` — the platforms the registry ACTUALLY
240
- * serves there, which is strictly wider than the subset this edition required.
241
- *
242
- * THE SUBJECT SET IS THE WRITES, NOT THE LOCK. This grades the subjects about to
243
- * RECEIVE a digest, because that is the moment the regression is introduced. An
244
- * already-sealed subject is past it: re-refusing one would make the daily
245
- * reconciler permanently red with no action available to clear it, and a gate
246
- * that cannot be cleared is one people learn to bypass.
247
- *
248
- * THIRD-PARTY SUBJECTS ARE EXCLUDED, NAMED. `thirdPartyKeys` (`kind:id`) are the pinned third-party subjects of this
249
- * edition: each is read by its pinned manifest digest (an immutable coordinate no fleet lane supplements), so it has no
250
- * first-party fleet coordinate to grade. They are returned as `thirdParty` so the caller prints them.
251
- *
252
- * Throws with `error.notFinal === true` — a PROPERTY, never a message match, so
253
- * the reconciler's skip cannot silently widen the day this wording changes. Same
254
- * discipline as `error.status` on the not-published-yet path.
255
- */
256
- export function assertCoordinatesFinal({
257
- distributionId,
258
- writes: plannedWrites,
259
- verified,
260
- fleetRequirements,
261
- thirdPartyKeys = new Set(),
262
- }) {
263
- const graded = [];
264
- const pendingElsewhere = [];
265
- if (!Array.isArray(plannedWrites)) {
266
- return { distributionId, graded, coordinateCount: 0, pendingElsewhere, thirdParty: [] };
267
- }
268
- const thirdParty = plannedWrites.filter((write) => thirdPartyKeys.has(write.key)).map((write) => write.key);
269
- const writes = plannedWrites.filter((write) => !thirdPartyKeys.has(write.key));
270
- if (writes.length === 0) {
271
- return { distributionId, graded, coordinateCount: 0, pendingElsewhere, thirdParty };
272
- }
273
- const byKey = new Map(
274
- verified.map((entry) => [`${entry.subjectKind}:${entry.subjectId}`, entry]),
275
- );
276
- const blockers = [];
277
- for (const write of writes) {
278
- const entry = byKey.get(write.key);
279
- if (!entry) {
280
- throw new Error(
281
- `fleet-coordinate-finality: ${write.key} is planned for sealing but has no ` +
282
- 'verification result to read published platforms from; refusing to grade ' +
283
- 'finality for a subject the verifier did not cover',
284
- );
285
- }
286
- const required = fleetRequirements.get(entry.coordinate);
287
- if (!required) {
288
- // NON-VACUITY GUARD. The edition being sealed is itself one of the
289
- // editions read into the map, so every coordinate it seals MUST be in
290
- // there. A miss means the two halves are keyed differently and every
291
- // lookup would return nothing — a refusal that passes while grading
292
- // nothing, which is this tree's most-repeated defect.
293
- throw new Error(
294
- `fleet-coordinate-finality: coordinate ${entry.coordinate} (${write.key}) is absent ` +
295
- 'from the fleet requirement map, which cannot happen while the edition being ' +
296
- 'sealed is itself in that map. The lock-side and verifier-side coordinate ' +
297
- 'spellings have diverged; refusing rather than passing over a lookup that ' +
298
- 'silently misses.',
299
- );
300
- }
301
- const served = new Set(entry.publishedPlatforms ?? []);
302
- const unmet = [...required]
303
- .filter(([identity]) => !served.has(identity))
304
- .map(([identity, requirers]) => ({ platform: identity, requiredBy: requirers }));
305
- graded.push({ key: write.key, coordinate: entry.coordinate });
306
- // TARGET-PLATFORM AWARE (owner ruling 2026-09-29). Finality is graded
307
- // against THIS edition's own requiredPlatforms: a platform only ANOTHER
308
- // edition awaits here is the accepted residual — allowed, and RECORDED so
309
- // the caller can print it. A platform this edition itself declares and the
310
- // registry does not serve is still refused.
311
- const own = unmet.filter((u) => u.requiredBy.includes(distributionId));
312
- const foreign = unmet.filter((u) => !u.requiredBy.includes(distributionId));
313
- if (foreign.length > 0) {
314
- pendingElsewhere.push({
315
- key: write.key,
316
- coordinate: entry.coordinate,
317
- unmet: foreign,
318
- served: [...served].sort(),
319
- });
320
- }
321
- if (own.length > 0) {
322
- blockers.push({ key: write.key, coordinate: entry.coordinate, unmet: own, served: [...served].sort() });
323
- }
324
- }
325
- if (blockers.length > 0) {
326
- const detail = blockers
327
- .slice(0, 6)
328
- .map(
329
- (b) =>
330
- ` ${b.key} ${b.coordinate}\n` +
331
- b.unmet
332
- .map(
333
- (u) =>
334
- ` awaits ${u.platform}, required by ${u.requiredBy.join(', ')} ` +
335
- `(serves: ${b.served.join(', ') || 'nothing'})`,
336
- )
337
- .join('\n'),
338
- )
339
- .join('\n');
340
- const error = new Error(
341
- `fleet-coordinate-finality: "${distributionId}" cannot be sealed — ${blockers.length} of ` +
342
- `${writes.length} coordinate(s) are NOT FINAL for a platform THIS edition requires: ` +
343
- 'the registry does not yet serve it there, so the coordinate will be supplemented ' +
344
- '— and the arm64 lane supplements by REPUBLISHING the tag (`imagetools create -t ' +
345
- ':<contentHash>`), which would move the very digest this seal is about to pin.\n' +
346
- `${detail}${blockers.length > 6 ? `\n ... and ${blockers.length - 6} more` : ''}\n` +
347
- 'Complete the supplement for this edition\'s own platforms, then seal.',
348
- );
349
- error.notFinal = true;
350
- error.blockers = blockers;
351
- throw error;
352
- }
353
- return { distributionId, graded, coordinateCount: graded.length, pendingElsewhere, thirdParty };
354
- }
355
-
356
- /**
357
- * Is this failure "another edition can still supplement this coordinate"?
358
- *
359
- * A PROPERTY, never a message match — see {@link assertCoordinatesFinal}.
360
- */
361
- export function isNotFinalYet(error) {
362
- return Boolean(error) && error.notFinal === true;
363
- }
@@ -1,231 +0,0 @@
1
- // The Fulcio v2 certificate extensions cosign has no verification flag for, read from the
2
- // leaf certificate of a sigstore bundle with a small DER walker (Node's X509Certificate does
3
- // not expose arbitrary extensions).
4
- //
5
- // 1.3.6.1.4.1.57264.1.11 Runner Environment
6
- // 1.3.6.1.4.1.57264.1.15 Source Repository Identifier
7
- // 1.3.6.1.4.1.57264.1.17 Source Repository Owner Identifier
8
- //
9
- // Each is the v2 form: the extension's OCTET STRING contains a DER UTF8String. The legacy raw
10
- // forms (.1 to .6, which put the bare bytes in the OCTET STRING) are never read. An absent
11
- // extension, a repeated one or one that is not a UTF8String is refused naming its OID.
12
- //
13
- // The certificate is the one cosign verified: the bytes come from the bundle that was verified
14
- // (`verificationMaterial.certificate.rawBytes`, else the first
15
- // `verificationMaterial.x509CertificateChain.certificates[].rawBytes`), never from a second fetch.
16
-
17
- const TAG_SEQUENCE = 0x30;
18
- const TAG_OID = 0x06;
19
- const TAG_BOOLEAN = 0x01;
20
- const TAG_OCTET_STRING = 0x04;
21
- const TAG_UTF8_STRING = 0x0c;
22
- const TAG_CONTEXT_0 = 0xa0;
23
- const TAG_CONTEXT_1 = 0xa1;
24
- const TAG_CONTEXT_2 = 0xa2;
25
- const TAG_CONTEXT_3 = 0xa3;
26
-
27
- export const FulcioExtensionOid = Object.freeze({
28
- RunnerEnvironment: '1.3.6.1.4.1.57264.1.11',
29
- SourceRepositoryIdentifier: '1.3.6.1.4.1.57264.1.15',
30
- SourceRepositoryOwnerIdentifier: '1.3.6.1.4.1.57264.1.17',
31
- });
32
-
33
- /** The Runner Environment value of a GitHub-hosted runner. */
34
- export const GITHUB_HOSTED_RUNNER_ENVIRONMENT = 'github-hosted';
35
-
36
- const OID_FIELDS = Object.freeze([
37
- ['runnerEnvironment', FulcioExtensionOid.RunnerEnvironment],
38
- ['sourceRepositoryIdentifier', FulcioExtensionOid.SourceRepositoryIdentifier],
39
- ['sourceRepositoryOwnerIdentifier', FulcioExtensionOid.SourceRepositoryOwnerIdentifier],
40
- ]);
41
-
42
- /** One DER element at `offset`: its tag, content bounds and the offset after it. Indefinite lengths are refused (DER). */
43
- function readElement(bytes, offset, end, what) {
44
- if (offset + 2 > end) {
45
- throw new Error(`certificate DER is truncated at ${what}`);
46
- }
47
- const tag = bytes[offset];
48
- if ((tag & 0x1f) === 0x1f) {
49
- throw new Error(`certificate DER has a multi-byte tag at ${what}`);
50
- }
51
- let length = bytes[offset + 1];
52
- let contentStart = offset + 2;
53
- if (length === 0x80) {
54
- throw new Error(`certificate DER has an indefinite length at ${what}`);
55
- }
56
- if (length > 0x80) {
57
- const count = length & 0x7f;
58
- if (count > 4 || contentStart + count > end) {
59
- throw new Error(`certificate DER has an invalid length at ${what}`);
60
- }
61
- length = 0;
62
- for (let index = 0; index < count; index += 1) {
63
- length = length * 256 + bytes[contentStart + index];
64
- }
65
- contentStart += count;
66
- }
67
- const contentEnd = contentStart + length;
68
- if (contentEnd > end) {
69
- throw new Error(`certificate DER overruns its container at ${what}`);
70
- }
71
- return { tag, contentStart, contentEnd };
72
- }
73
-
74
- function expectElement(bytes, offset, end, tag, what) {
75
- const element = readElement(bytes, offset, end, what);
76
- if (element.tag !== tag) {
77
- throw new Error(`certificate DER: ${what} has tag 0x${element.tag.toString(16)}, expected 0x${tag.toString(16)}`);
78
- }
79
- return element;
80
- }
81
-
82
- function decodeOid(bytes, start, end) {
83
- if (end <= start) {
84
- throw new Error('certificate DER has an empty OBJECT IDENTIFIER');
85
- }
86
- const arcs = [];
87
- let value = 0;
88
- for (let index = start; index < end; index += 1) {
89
- value = value * 128 + (bytes[index] & 0x7f);
90
- if ((bytes[index] & 0x80) === 0) {
91
- if (arcs.length === 0) {
92
- const first = Math.min(Math.floor(value / 40), 2);
93
- arcs.push(first, value - first * 40);
94
- } else {
95
- arcs.push(value);
96
- }
97
- value = 0;
98
- }
99
- }
100
- return arcs.join('.');
101
- }
102
-
103
- /** The extensions of the certificate: `Map<oid, {critical, value: Buffer}>` where `value` is the OCTET STRING content. */
104
- function certificateExtensions(der) {
105
- const certificate = expectElement(der, 0, der.length, TAG_SEQUENCE, 'Certificate');
106
- if (certificate.contentEnd !== der.length) {
107
- throw new Error('certificate DER has trailing bytes after the Certificate');
108
- }
109
- const tbs = expectElement(der, certificate.contentStart, certificate.contentEnd, TAG_SEQUENCE, 'TBSCertificate');
110
- let offset = tbs.contentStart;
111
- let element = readElement(der, offset, tbs.contentEnd, 'TBSCertificate field');
112
- if (element.tag === TAG_CONTEXT_0) {
113
- offset = element.contentEnd;
114
- }
115
- // serialNumber, signature, issuer, validity, subject, subjectPublicKeyInfo
116
- for (let field = 0; field < 6; field += 1) {
117
- element = readElement(der, offset, tbs.contentEnd, 'TBSCertificate field');
118
- offset = element.contentEnd;
119
- }
120
- let extensionsBlock = null;
121
- while (offset < tbs.contentEnd) {
122
- element = readElement(der, offset, tbs.contentEnd, 'TBSCertificate trailing field');
123
- offset = element.contentEnd;
124
- if (element.tag === TAG_CONTEXT_3) {
125
- extensionsBlock = element;
126
- } else if (element.tag !== TAG_CONTEXT_1 && element.tag !== TAG_CONTEXT_2) {
127
- throw new Error(`certificate DER: unexpected TBSCertificate field tag 0x${element.tag.toString(16)}`);
128
- }
129
- }
130
- if (extensionsBlock === null) {
131
- throw new Error('certificate has no extensions block');
132
- }
133
- const list = expectElement(der, extensionsBlock.contentStart, extensionsBlock.contentEnd, TAG_SEQUENCE, 'Extensions');
134
- const found = new Map();
135
- let cursor = list.contentStart;
136
- while (cursor < list.contentEnd) {
137
- const extension = expectElement(der, cursor, list.contentEnd, TAG_SEQUENCE, 'Extension');
138
- cursor = extension.contentEnd;
139
- const oidElement = expectElement(der, extension.contentStart, extension.contentEnd, TAG_OID, 'Extension OID');
140
- const oid = decodeOid(der, oidElement.contentStart, oidElement.contentEnd);
141
- let next = oidElement.contentEnd;
142
- let critical = false;
143
- let part = readElement(der, next, extension.contentEnd, 'Extension field');
144
- if (part.tag === TAG_BOOLEAN) {
145
- critical = der[part.contentStart] !== 0;
146
- next = part.contentEnd;
147
- part = readElement(der, next, extension.contentEnd, 'Extension value');
148
- }
149
- if (part.tag !== TAG_OCTET_STRING || part.contentEnd !== extension.contentEnd) {
150
- throw new Error(`certificate DER: extension ${oid} value is not a lone OCTET STRING`);
151
- }
152
- if (found.has(oid)) {
153
- throw new Error(`certificate carries extension ${oid} more than once`);
154
- }
155
- found.set(oid, { critical, value: der.subarray(part.contentStart, part.contentEnd) });
156
- }
157
- return found;
158
- }
159
-
160
- /** The extension's string: the OCTET STRING content must be exactly one DER UTF8String. */
161
- function utf8ExtensionValue(extensions, oid) {
162
- const extension = extensions.get(oid);
163
- if (extension === undefined) {
164
- throw new Error(`certificate does not carry Fulcio extension ${oid}`);
165
- }
166
- const { value } = extension;
167
- let element;
168
- try {
169
- element = readElement(value, 0, value.length, `extension ${oid}`);
170
- } catch (error) {
171
- throw new Error(`Fulcio extension ${oid} is not a DER UTF8String: ${error.message}`);
172
- }
173
- if (element.tag !== TAG_UTF8_STRING || element.contentEnd !== value.length) {
174
- throw new Error(`Fulcio extension ${oid} is not a DER UTF8String`);
175
- }
176
- const text = value.subarray(element.contentStart, element.contentEnd);
177
- if (text.length === 0) {
178
- throw new Error(`Fulcio extension ${oid} is an empty UTF8String`);
179
- }
180
- try {
181
- return new TextDecoder('utf-8', { fatal: true }).decode(text);
182
- } catch {
183
- throw new Error(`Fulcio extension ${oid} is not valid UTF-8`);
184
- }
185
- }
186
-
187
- function decodeBase64Der(rawBytes, what) {
188
- if (typeof rawBytes !== 'string' || rawBytes.length === 0) {
189
- throw new Error(`${what} has no rawBytes`);
190
- }
191
- return Buffer.from(rawBytes, 'base64');
192
- }
193
-
194
- /**
195
- * The DER bytes of the leaf certificate of a parsed sigstore bundle:
196
- * `verificationMaterial.certificate.rawBytes`, else the first
197
- * `verificationMaterial.x509CertificateChain.certificates[].rawBytes`.
198
- */
199
- export function leafCertificateDerFromBundle(bundle) {
200
- const material = bundle?.verificationMaterial;
201
- if (material === null || typeof material !== 'object') {
202
- throw new Error('sigstore bundle has no verificationMaterial');
203
- }
204
- if (material.certificate !== undefined) {
205
- return decodeBase64Der(material.certificate?.rawBytes, 'verificationMaterial.certificate');
206
- }
207
- const first = material.x509CertificateChain?.certificates?.[0];
208
- if (first === undefined) {
209
- throw new Error('sigstore bundle verificationMaterial carries no certificate and no x509CertificateChain');
210
- }
211
- return decodeBase64Der(first.rawBytes, 'verificationMaterial.x509CertificateChain.certificates[0]');
212
- }
213
-
214
- /**
215
- * The runner environment, source repository identifier and source repository owner identifier of a
216
- * DER certificate. Throws naming the OID when one is missing or is not a UTF8String.
217
- *
218
- * @param {Buffer} der
219
- * @returns {{runnerEnvironment: string, sourceRepositoryIdentifier: string, sourceRepositoryOwnerIdentifier: string}}
220
- */
221
- export function readFulcioCertificateExtensions(der) {
222
- const extensions = certificateExtensions(der);
223
- return Object.freeze(
224
- Object.fromEntries(OID_FIELDS.map(([field, oid]) => [field, utf8ExtensionValue(extensions, oid)])),
225
- );
226
- }
227
-
228
- /** The three extensions of the leaf certificate of a parsed sigstore bundle (the bytes cosign verified). */
229
- export function readFulcioExtensionsFromBundle(bundle) {
230
- return readFulcioCertificateExtensions(leafCertificateDerFromBundle(bundle));
231
- }
@@ -1,54 +0,0 @@
1
- import { execFileSync } from 'node:child_process';
2
- import { createRequire } from 'node:module';
3
-
4
- import { parseStrictJson } from './strict-json.mjs';
5
-
6
- const requireFromHere = createRequire(import.meta.url);
7
-
8
- let loadedSourceHash;
9
-
10
- /** Git-object primitives of `@xemahq/distribution-source-hash`; no kernel is consulted. */
11
- function gitObjectReader() {
12
- loadedSourceHash ??= requireFromHere('@xemahq/distribution-source-hash');
13
- return loadedSourceHash;
14
- }
15
-
16
- /**
17
- * Read + parse a JSON file out of an exact Git commit (never the work tree).
18
- *
19
- * This is the seam every authored source file crosses on its way into a lock
20
- * or an index — `xema-biome.json`, a platform service's `package.json`,
21
- * `cross-repo-build-inputs.json`, the committed generated biome index — so it
22
- * parses STRICTLY: a duplicated object key is refused, naming the commit, the
23
- * path and the JSON pointer of the object. `JSON.parse` would keep the last
24
- * occurrence, which is how a `resources` declaration was dropped from a sealed
25
- * lock with every reader agreeing (see `strict-json.mjs`).
26
- *
27
- * The commit check, the buffer ceiling and the exact-UTF-8 decode are the
28
- * source-hash package's own (loaded WITHOUT the kernel check hashing needs, so
29
- * the source checkout, which runs before any kernel is built, can read a record
30
- * too); only the parse differs from its
31
- * `readGitJsonAtCommit`, which is lenient and is therefore not delegated to.
32
- */
33
- export function readGitJsonAtCommit(repoDir, repoRelativePath, commit) {
34
- const sourceHash = gitObjectReader();
35
- sourceHash.assertGitCommitExists(repoDir, commit);
36
- let raw;
37
- try {
38
- raw = execFileSync(
39
- 'git',
40
- ['-C', repoDir, 'show', `${commit}:${repoRelativePath}`],
41
- {
42
- encoding: 'buffer',
43
- maxBuffer: sourceHash.GIT_OBJECT_MAX_BUFFER_BYTES,
44
- stdio: ['ignore', 'pipe', 'pipe'],
45
- },
46
- );
47
- } catch {
48
- throw new Error(
49
- `cannot read "${repoRelativePath}" from Git commit "${commit}"`,
50
- );
51
- }
52
- const context = `Git object "${commit}:${repoRelativePath}"`;
53
- return parseStrictJson(sourceHash.decodeExactUtf8(raw, context), context);
54
- }