@empire-builder-kit/nx 1.0.0-rc.4 → 1.0.0-rc.40

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 (791) hide show
  1. package/README.md +18 -0
  2. package/executors.json +21 -1
  3. package/generators.json +10 -0
  4. package/package.json +31 -7
  5. package/src/aws/child-environment.d.ts +10 -0
  6. package/src/aws/child-environment.js +77 -0
  7. package/src/aws/identity.d.ts +13 -0
  8. package/src/aws/identity.js +41 -0
  9. package/src/aws-authority/index.d.ts +2 -0
  10. package/src/aws-authority/index.js +6 -0
  11. package/src/aws-authority/lambda-policy-ordering.d.ts +38 -0
  12. package/src/aws-authority/lambda-policy-ordering.js +56 -0
  13. package/src/aws-authority/stage-authority.d.ts +248 -0
  14. package/src/aws-authority/stage-authority.js +3558 -0
  15. package/src/blueprints/external-sandbox.js +21 -9
  16. package/src/blueprints/manifest.d.ts +1 -1
  17. package/src/blueprints/resolver.js +28 -15
  18. package/src/cli/bootstrap.d.ts +1 -1
  19. package/src/cli/deploy-runtime.d.ts +6 -0
  20. package/src/cli/deploy-runtime.js +58 -0
  21. package/src/cli/dev-command.d.ts +16 -4
  22. package/src/cli/dev-command.js +63 -0
  23. package/src/cli/main.d.ts +9 -1
  24. package/src/cli/main.js +139 -20
  25. package/src/cli/output.d.ts +1 -1
  26. package/src/cli/output.js +1 -1
  27. package/src/developer-agent/context.js +41 -9
  28. package/src/developer-agent/generator-planning.js +20 -6
  29. package/src/developer-agent/git-inspection.d.ts +6 -2
  30. package/src/developer-agent/git-inspection.js +78 -6
  31. package/src/developer-agent/model.d.ts +5 -3
  32. package/src/developer-agent/model.js +4 -4
  33. package/src/developer-agent/operation-registry.d.ts +5 -0
  34. package/src/developer-agent/operation-registry.js +286 -40
  35. package/src/developer-agent/planning.js +16 -13
  36. package/src/developer-agent/preview-changes.d.ts +2 -0
  37. package/src/developer-agent/preview-changes.js +14 -2
  38. package/src/developer-agent/preview-source.js +3 -0
  39. package/src/developer-agent/validation.js +25 -9
  40. package/src/developer-agent/workspace-inspection.js +60 -5
  41. package/src/executors/blueprint-trust/blueprint-trust.js +6 -0
  42. package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
  43. package/src/executors/deployment-plan/deployment-plan.js +57 -2
  44. package/src/executors/dev-doctor/dev-doctor.js +13 -6
  45. package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
  46. package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
  47. package/src/executors/dev-task-cleanup/schema.json +9 -0
  48. package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
  49. package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
  50. package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
  51. package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
  52. package/src/executors/fleet/fleet.js +1 -1
  53. package/src/executors/foundation-preflight/foundation-preflight.d.ts +1 -0
  54. package/src/executors/foundation-preflight/foundation-preflight.js +6 -2
  55. package/src/executors/foundation-preflight/schema.json +5 -0
  56. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +13 -2
  57. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +95 -31
  58. package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +65 -0
  59. package/src/executors/foundation-profile-preflight/production-database-safeguard.js +223 -0
  60. package/src/executors/foundation-profile-preflight/schema.json +15 -4
  61. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +11 -1
  62. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +70 -20
  63. package/src/executors/foundation-remove-preflight/schema.json +6 -1
  64. package/src/executors/github-bootstrap/github-bootstrap.d.ts +1 -0
  65. package/src/executors/github-bootstrap/github-bootstrap.js +3 -0
  66. package/src/executors/github-bootstrap/schema.json +7 -1
  67. package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +29 -136
  68. package/src/executors/infrastructure-plan/infrastructure-plan.js +230 -3282
  69. package/src/executors/infrastructure-plan/schema.json +12 -52
  70. package/src/executors/local-deploy/federated-credential-transport.d.ts +48 -0
  71. package/src/executors/local-deploy/federated-credential-transport.js +252 -0
  72. package/src/executors/local-deploy/local-approval.d.ts +18 -0
  73. package/src/executors/local-deploy/local-approval.js +39 -0
  74. package/src/executors/local-deploy/local-deploy.d.ts +112 -0
  75. package/src/executors/local-deploy/local-deploy.js +1404 -0
  76. package/src/executors/local-deploy/schema.json +70 -0
  77. package/src/executors/refresh/refresh.js +2 -2
  78. package/src/executors/remove/remove.js +2 -2
  79. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +42 -0
  80. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +1229 -0
  81. package/src/executors/router-waf-rehearsal/schema.json +29 -0
  82. package/src/executors/secret-initialize/schema.json +42 -0
  83. package/src/executors/secret-initialize/secret-initialize.d.ts +34 -0
  84. package/src/executors/secret-initialize/secret-initialize.js +297 -0
  85. package/src/executors/secret-metadata/schema.json +5 -0
  86. package/src/executors/secret-metadata/secret-metadata.d.ts +16 -2
  87. package/src/executors/secret-metadata/secret-metadata.js +129 -30
  88. package/src/executors/sst-lifecycle/generated-secret-retirement.d.ts +53 -0
  89. package/src/executors/sst-lifecycle/generated-secret-retirement.js +192 -0
  90. package/src/executors/sst-lifecycle/governed-native-operation.d.ts +48 -0
  91. package/src/executors/sst-lifecycle/governed-native-operation.js +162 -0
  92. package/src/executors/sst-lifecycle/logging-preflight.d.ts +5 -0
  93. package/src/executors/sst-lifecycle/logging-preflight.js +23 -13
  94. package/src/executors/sst-lifecycle/run-sst-command.d.ts +40 -6
  95. package/src/executors/sst-lifecycle/run-sst-command.js +779 -70
  96. package/src/executors/sst-lifecycle/schema.json +8 -1
  97. package/src/executors/sst-lifecycle/secret-preflight.d.ts +2 -0
  98. package/src/executors/sst-lifecycle/secret-preflight.js +13 -7
  99. package/src/executors/sst-lifecycle/sst-environment-source.d.ts +33 -0
  100. package/src/executors/sst-lifecycle/sst-environment-source.js +267 -0
  101. package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
  102. package/src/executors/sst-lifecycle/task-unlock.js +126 -0
  103. package/src/executors/unlock/unlock.js +2 -2
  104. package/src/foundation/capability-plan.d.ts +43 -0
  105. package/src/foundation/capability-plan.js +168 -0
  106. package/src/foundation/discovery.d.ts +14 -11
  107. package/src/foundation/discovery.js +32 -6
  108. package/src/foundation/index.d.ts +4 -0
  109. package/src/foundation/index.js +11 -0
  110. package/src/foundation/local-database-contract.d.ts +20 -0
  111. package/src/foundation/local-database-contract.js +262 -13
  112. package/src/foundation/local-private-smoke-access.d.ts +20 -0
  113. package/src/foundation/local-private-smoke-access.js +197 -0
  114. package/src/foundation/logging-preflight.js +1 -1
  115. package/src/foundation/logging.d.ts +3 -1
  116. package/src/foundation/logging.js +1 -1
  117. package/src/foundation/partial-state.d.ts +10 -0
  118. package/src/foundation/partial-state.js +21 -0
  119. package/src/foundation/preflight.js +37 -18
  120. package/src/foundation/private-smoke-access.d.ts +25 -0
  121. package/src/foundation/private-smoke-access.js +135 -0
  122. package/src/foundation/private-smoke-admission.d.ts +45 -0
  123. package/src/foundation/private-smoke-admission.js +180 -0
  124. package/src/foundation/private-smoke-control-plane.d.ts +18 -0
  125. package/src/foundation/private-smoke-control-plane.js +184 -0
  126. package/src/foundation/provision-database-bindings.d.ts +5 -0
  127. package/src/foundation/provision-database-bindings.js +41 -8
  128. package/src/foundation/provision-logical-database.js +15 -8
  129. package/src/foundation/requirements.d.ts +3 -3
  130. package/src/foundation/requirements.js +24 -12
  131. package/src/foundation/router-waf-rate-rehearsal.d.ts +97 -0
  132. package/src/foundation/router-waf-rate-rehearsal.js +210 -0
  133. package/src/foundation/router-waf.d.ts +149 -0
  134. package/src/foundation/router-waf.js +809 -0
  135. package/src/foundation/stages.d.ts +1 -0
  136. package/src/foundation/stages.js +11 -0
  137. package/src/generators/blueprint/blueprint.d.ts +5 -0
  138. package/src/generators/blueprint/blueprint.js +102 -0
  139. package/src/generators/blueprint/files.d.ts +6 -0
  140. package/src/generators/blueprint/files.js +217 -0
  141. package/src/generators/blueprint/schema.d.ts +4 -0
  142. package/src/generators/blueprint/schema.json +18 -0
  143. package/src/generators/formatting.d.ts +8 -0
  144. package/src/generators/formatting.js +141 -0
  145. package/src/generators/function/function.js +38 -17
  146. package/src/generators/logging-registry.d.ts +2 -0
  147. package/src/generators/logging-registry.js +22 -0
  148. package/src/generators/post-generation-install.js +2 -2
  149. package/src/generators/preset/dependency-overrides.d.ts +8 -0
  150. package/src/generators/preset/dependency-overrides.js +55 -0
  151. package/src/generators/preset/generator.js +43 -3
  152. package/src/generators/preset/schema.d.ts +10 -0
  153. package/src/generators/preset/schema.json +47 -0
  154. package/src/generators/preset/tool-versions.d.ts +2 -0
  155. package/src/generators/preset/tool-versions.js +3 -1
  156. package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
  157. package/src/generators/preset/workspace-files-adopter-skills.js +303 -0
  158. package/src/generators/preset/workspace-files-ci-acceptance.d.ts +1 -0
  159. package/src/generators/preset/workspace-files-ci-acceptance.js +791 -0
  160. package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
  161. package/src/generators/preset/workspace-files-ci-install.js +196 -0
  162. package/src/generators/preset/workspace-files-developer-agent.d.ts +2 -0
  163. package/src/generators/preset/workspace-files-developer-agent.js +90 -28
  164. package/src/generators/preset/workspace-files-ecr-inspector.d.ts +18 -0
  165. package/src/generators/preset/workspace-files-ecr-inspector.js +298 -0
  166. package/src/generators/preset/workspace-files-foundation-workload-roles.js +5 -2
  167. package/src/generators/preset/workspace-files-performance-cost.d.ts +2 -2
  168. package/src/generators/preset/workspace-files-performance-cost.js +8 -8
  169. package/src/generators/preset/workspace-files-performance-load.d.ts +1 -1
  170. package/src/generators/preset/workspace-files-performance-load.js +39 -25
  171. package/src/generators/preset/workspace-files-stage-authority.d.ts +6 -0
  172. package/src/generators/preset/workspace-files-stage-authority.js +518 -0
  173. package/src/generators/preset/workspace-files-thin-deploy.d.ts +55 -0
  174. package/src/generators/preset/workspace-files-thin-deploy.js +2473 -0
  175. package/src/generators/preset/workspace-files-thin-docs.d.ts +7 -0
  176. package/src/generators/preset/workspace-files-thin-docs.js +352 -0
  177. package/src/generators/preset/workspace-files-thin-release.d.ts +14 -0
  178. package/src/generators/preset/workspace-files-thin-release.js +26 -0
  179. package/src/generators/preset/workspace-files-workload-role-baseline.js +254 -42
  180. package/src/generators/preset/workspace-files.d.ts +18 -2
  181. package/src/generators/preset/workspace-files.js +1504 -608
  182. package/src/generators/repository-policy/repository-policy.js +235 -5
  183. package/src/generators/repository-policy/schema.d.ts +10 -0
  184. package/src/generators/repository-policy/schema.json +80 -4
  185. package/src/generators/repository-policy/tree-policy.d.ts +3 -0
  186. package/src/generators/repository-policy/tree-policy.js +25 -0
  187. package/src/generators/slice/built-in-plan-api-contract-files.js +42 -7
  188. package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
  189. package/src/generators/slice/built-in-plan-api-files.js +130 -414
  190. package/src/generators/slice/built-in-plan-async-work-files.js +166 -1969
  191. package/src/generators/slice/built-in-plan-authorization-files.js +92 -329
  192. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +60 -2
  193. package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
  194. package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
  195. package/src/generators/slice/built-in-plan-background-work-files.d.ts +2 -0
  196. package/src/generators/slice/built-in-plan-background-work-files.js +99 -0
  197. package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
  198. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +5 -31
  199. package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
  200. package/src/generators/slice/built-in-plan-data-files.js +163 -1196
  201. package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
  202. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +37 -2
  203. package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2443
  204. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +50 -8
  205. package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
  206. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +44 -25
  207. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +20 -1
  208. package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
  209. package/src/generators/slice/built-in-plan-foundation-files.js +39 -18
  210. package/src/generators/slice/built-in-plan-frontend-files.js +7 -3
  211. package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
  212. package/src/generators/slice/built-in-plan-infrastructure-files.js +933 -729
  213. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +67 -11
  214. package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
  215. package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
  216. package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
  217. package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
  218. package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
  219. package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
  220. package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
  221. package/src/generators/slice/built-in-plan-key-value-delivery.js +137 -0
  222. package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
  223. package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
  224. package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
  225. package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
  226. package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
  227. package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
  228. package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
  229. package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
  230. package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
  231. package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
  232. package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
  233. package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
  234. package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
  235. package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
  236. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
  237. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
  238. package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
  239. package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
  240. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
  241. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
  242. package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
  243. package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
  244. package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
  245. package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
  246. package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
  247. package/src/generators/slice/built-in-plan-metadata-files.js +157 -28
  248. package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +2 -0
  249. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +324 -0
  250. package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
  251. package/src/generators/slice/built-in-plan-operations-files.js +585 -97
  252. package/src/generators/slice/built-in-plan-performance-files.d.ts +2 -1
  253. package/src/generators/slice/built-in-plan-performance-files.js +220 -1074
  254. package/src/generators/slice/built-in-plan-project-files.js +141 -135
  255. package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
  256. package/src/generators/slice/built-in-plan-release-files.js +310 -70
  257. package/src/generators/slice/built-in-plan-reliability-files.d.ts +1 -1
  258. package/src/generators/slice/built-in-plan-reliability-files.js +279 -43
  259. package/src/generators/slice/built-in-plan-secret-runtime-files.d.ts +1 -1
  260. package/src/generators/slice/built-in-plan-secret-runtime-files.js +87 -76
  261. package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
  262. package/src/generators/slice/built-in-plan-shared.js +41 -19
  263. package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
  264. package/src/generators/slice/built-in-plan-sql-events.js +276 -0
  265. package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
  266. package/src/generators/slice/built-in-plan-testing-files.js +304 -172
  267. package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
  268. package/src/generators/slice/built-in-plan-testing-persistence-files.js +178 -0
  269. package/src/generators/slice/built-in-plan-thin-release-files.d.ts +11 -0
  270. package/src/generators/slice/built-in-plan-thin-release-files.js +162 -0
  271. package/src/generators/slice/built-in-plan-verification-files.js +76 -2
  272. package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
  273. package/src/generators/slice/built-in-plan-web-files.js +223 -16
  274. package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
  275. package/src/generators/slice/built-in-plan-workload-role-files.js +143 -279
  276. package/src/generators/slice/built-in-plan.d.ts +11 -1
  277. package/src/generators/slice/built-in-plan.js +80 -29
  278. package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
  279. package/src/generators/slice/data-policy-review-seed.js +22 -0
  280. package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
  281. package/src/generators/slice/deployed-smoke-readiness.js +214 -0
  282. package/src/generators/slice/local-source-identity.d.ts +2 -0
  283. package/src/generators/slice/local-source-identity.js +31 -0
  284. package/src/generators/slice/persistence-contract.d.ts +14 -0
  285. package/src/generators/slice/persistence-contract.js +32 -0
  286. package/src/generators/slice/slice.js +61 -50
  287. package/src/generators/sql/schema.d.ts +7 -0
  288. package/src/generators/sql/schema.json +38 -0
  289. package/src/generators/sql/sql.d.ts +6 -0
  290. package/src/generators/sql/sql.js +53 -0
  291. package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
  292. package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
  293. package/src/generators/upgrade/upgrade.d.ts +15 -1
  294. package/src/generators/upgrade/upgrade.js +435 -44
  295. package/src/generators/workload/performance-registration.d.ts +1 -0
  296. package/src/generators/workload/performance-registration.js +9 -11
  297. package/src/generators/workload/service-performance-files.d.ts +1 -0
  298. package/src/generators/workload/service-performance-files.js +27 -7
  299. package/src/generators/workload/workload.d.ts +1 -1
  300. package/src/generators/workload/workload.js +105 -29
  301. package/src/git-policy/action-pins.d.ts +5 -0
  302. package/src/git-policy/action-pins.js +5 -0
  303. package/src/git-policy/github-bootstrap.d.ts +39 -8
  304. package/src/git-policy/github-bootstrap.js +329 -175
  305. package/src/git-policy/routing.d.ts +7 -1
  306. package/src/git-policy/routing.js +62 -1
  307. package/src/index.d.ts +1 -0
  308. package/src/index.js +1 -0
  309. package/src/infrastructure-change/local-capability.d.ts +73 -0
  310. package/src/infrastructure-change/local-capability.js +114 -0
  311. package/src/infrastructure-change/model.d.ts +25 -4
  312. package/src/infrastructure-change/model.js +1 -0
  313. package/src/infrastructure-change/normalize.d.ts +4 -0
  314. package/src/infrastructure-change/normalize.js +47 -7
  315. package/src/infrastructure-change/plan.d.ts +30 -3
  316. package/src/infrastructure-change/plan.js +323 -13
  317. package/src/infrastructure-change/risk.d.ts +3 -1
  318. package/src/infrastructure-change/risk.js +96 -16
  319. package/src/local-dev/browser-verification.d.ts +37 -0
  320. package/src/local-dev/browser-verification.js +281 -0
  321. package/src/local-dev/contracts.d.ts +10 -1
  322. package/src/local-dev/contracts.js +114 -13
  323. package/src/local-dev/dev-command-core.js +24 -5
  324. package/src/local-dev/docker-credential-health.d.ts +14 -0
  325. package/src/local-dev/docker-credential-health.js +94 -0
  326. package/src/local-dev/environment-inspector.d.ts +7 -0
  327. package/src/local-dev/environment-inspector.js +42 -15
  328. package/src/local-dev/environment-state.js +2 -2
  329. package/src/local-dev/errors.d.ts +1 -1
  330. package/src/local-dev/errors.js +2 -0
  331. package/src/local-dev/fleet-client.js +2 -2
  332. package/src/local-dev/fleet-configuration.js +57 -25
  333. package/src/local-dev/fleet-inventory.js +46 -18
  334. package/src/local-dev/fleet-ipc.d.ts +7 -0
  335. package/src/local-dev/fleet-ipc.js +14 -2
  336. package/src/local-dev/fleet-launcher.d.ts +6 -0
  337. package/src/local-dev/fleet-launcher.js +14 -2
  338. package/src/local-dev/fleet-logs.js +50 -22
  339. package/src/local-dev/fleet-process.d.ts +20 -1
  340. package/src/local-dev/fleet-process.js +197 -41
  341. package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
  342. package/src/local-dev/fleet-runner-evidence.js +56 -0
  343. package/src/local-dev/fleet-runtime.js +268 -229
  344. package/src/local-dev/fleet-session.d.ts +2 -0
  345. package/src/local-dev/fleet-session.js +28 -11
  346. package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
  347. package/src/local-dev/fleet-state.d.ts +5 -2
  348. package/src/local-dev/fleet-state.js +25 -4
  349. package/src/local-dev/fleet-supervisor.d.ts +3 -0
  350. package/src/local-dev/fleet-supervisor.js +66 -11
  351. package/src/local-dev/fleet-web-start.d.ts +12 -0
  352. package/src/local-dev/fleet-web-start.js +48 -0
  353. package/src/local-dev/identity.js +3 -14
  354. package/src/local-dev/index.d.ts +1 -0
  355. package/src/local-dev/index.js +1 -0
  356. package/src/local-dev/native-completion.d.ts +9 -0
  357. package/src/local-dev/native-completion.js +130 -0
  358. package/src/local-dev/nx-workspace.d.ts +4 -2
  359. package/src/local-dev/nx-workspace.js +11 -6
  360. package/src/local-dev/personal-stage.d.ts +4 -5
  361. package/src/local-dev/personal-stage.js +6 -54
  362. package/src/local-dev/port-claims.d.ts +13 -0
  363. package/src/local-dev/port-claims.js +46 -0
  364. package/src/local-dev/ports.d.ts +14 -2
  365. package/src/local-dev/ports.js +78 -3
  366. package/src/local-dev/private-state.d.ts +11 -0
  367. package/src/local-dev/private-state.js +146 -40
  368. package/src/local-dev/process-group.d.ts +4 -0
  369. package/src/local-dev/process-group.js +29 -0
  370. package/src/local-dev/process-identity.d.ts +8 -0
  371. package/src/local-dev/process-identity.js +31 -1
  372. package/src/local-dev/proxy.js +11 -12
  373. package/src/local-dev/runtime-paths.js +1 -1
  374. package/src/local-dev/slice-claim.js +1 -1
  375. package/src/local-dev/slice-runner.d.ts +15 -6
  376. package/src/local-dev/slice-runner.js +189 -54
  377. package/src/local-dev/task-attachment.d.ts +17 -0
  378. package/src/local-dev/task-attachment.js +73 -0
  379. package/src/local-dev/task-authority.d.ts +10 -0
  380. package/src/local-dev/task-authority.js +27 -0
  381. package/src/local-dev/task-identity.d.ts +33 -0
  382. package/src/local-dev/task-identity.js +418 -0
  383. package/src/local-dev/task-native-writer.d.ts +18 -0
  384. package/src/local-dev/task-native-writer.js +329 -0
  385. package/src/local-dev/tls.js +8 -2
  386. package/src/local-dev/web-launch.d.ts +9 -0
  387. package/src/local-dev/web-launch.js +130 -0
  388. package/src/ownership/composition.d.ts +2 -1
  389. package/src/ownership/composition.js +1 -0
  390. package/src/performance/cost-collection.d.ts +1 -1
  391. package/src/performance/cost-collection.js +4 -2
  392. package/src/performance/cost-controls.d.ts +8 -4
  393. package/src/performance/cost-controls.js +39 -28
  394. package/src/performance/evidence.d.ts +1 -1
  395. package/src/performance/evidence.js +5 -3
  396. package/src/performance/load-safety.js +5 -3
  397. package/src/performance/model.d.ts +4 -4
  398. package/src/performance/model.js +4 -5
  399. package/src/performance/scenario.d.ts +22 -0
  400. package/src/performance/scenario.js +100 -92
  401. package/src/release/index.d.ts +0 -2
  402. package/src/release/index.js +0 -2
  403. package/src/release/source-authority.d.ts +5 -5
  404. package/src/release/source-authority.js +141 -124
  405. package/src/repository-policy/aurora-preflight.d.ts +1 -1
  406. package/src/repository-policy/aurora-preflight.js +4 -1
  407. package/src/repository-policy/capacity-migration.d.ts +3 -0
  408. package/src/repository-policy/capacity-migration.js +21 -0
  409. package/src/repository-policy/deployment-plan.d.ts +4 -1
  410. package/src/repository-policy/deployment-plan.js +9 -0
  411. package/src/repository-policy/foundation-profile.js +10 -1
  412. package/src/repository-policy/policy.d.ts +57 -3
  413. package/src/repository-policy/policy.js +497 -11
  414. package/src/schemas/blueprint-v1.json +5 -4
  415. package/src/schemas/foundation-requirement-v1.json +5 -4
  416. package/src/schemas/performance-policy-v1.json +3 -3
  417. package/src/schemas/repository-policy-v1.json +130 -6
  418. package/src/schemas/testing-evidence-result-v1.json +1 -1
  419. package/src/secrets/adapters.d.ts +7 -2
  420. package/src/secrets/adapters.js +34 -3
  421. package/src/secrets/aws-control-plane.d.ts +10 -1
  422. package/src/secrets/aws-control-plane.js +67 -0
  423. package/src/secrets/generated-aws-control-plane.d.ts +23 -0
  424. package/src/secrets/generated-aws-control-plane.js +259 -0
  425. package/src/secrets/metadata.js +38 -10
  426. package/src/secrets/model.d.ts +8 -1
  427. package/src/secrets/model.js +24 -3
  428. package/src/secrets/operator.d.ts +91 -3
  429. package/src/secrets/operator.js +463 -13
  430. package/src/secrets/registry.d.ts +2 -1
  431. package/src/secrets/registry.js +18 -1
  432. package/src/secrets/verification.js +9 -1
  433. package/src/secrets/workload-access.js +10 -2
  434. package/src/sst-environment-source-format.d.ts +6 -0
  435. package/src/sst-environment-source-format.js +199 -0
  436. package/src/supply-chain/action-pins.js +61 -7
  437. package/src/supply-chain/blueprint-trust-git.js +85 -24
  438. package/src/supply-chain/blueprint-verification-authority.js +55 -3
  439. package/src/supply-chain/build-output-bounds.d.ts +2 -0
  440. package/src/supply-chain/build-output-bounds.js +12 -0
  441. package/src/supply-chain/build-output.d.ts +7 -1
  442. package/src/supply-chain/build-output.js +177 -24
  443. package/src/supply-chain/ecr-scanning.d.ts +5 -3
  444. package/src/supply-chain/ecr-scanning.js +11 -7
  445. package/src/supply-chain/ecs-deployed-image.d.ts +5 -3
  446. package/src/supply-chain/ecs-deployed-image.js +6 -4
  447. package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
  448. package/src/supply-chain/generated-command.js +1 -0
  449. package/src/supply-chain/generated-container-release-command.js +1285 -124
  450. package/src/supply-chain/generated-ecr-collector-command.d.ts +0 -1
  451. package/src/supply-chain/generated-ecr-collector-command.js +200 -93
  452. package/src/supply-chain/generated-files.js +25 -14
  453. package/src/supply-chain/generated-scanner-command.js +2 -1
  454. package/src/supply-chain/index.d.ts +1 -1
  455. package/src/supply-chain/index.js +2 -1
  456. package/src/supply-chain/sbom.d.ts +1 -1
  457. package/src/supply-chain/sbom.js +30 -5
  458. package/src/supply-chain/scanner.js +3 -0
  459. package/src/testing-evidence/fixture-scope.d.ts +2 -1
  460. package/src/testing-evidence/fixture-scope.js +4 -2
  461. package/src/testing-evidence/result.d.ts +2 -1
  462. package/src/testing-evidence/result.js +18 -4
  463. package/src/workload-roles/account-baseline.d.ts +11 -0
  464. package/src/workload-roles/account-baseline.js +253 -16
  465. package/src/workload-roles/authority.d.ts +3 -1
  466. package/src/workload-roles/authority.js +48 -2
  467. package/src/workload-roles/aws-s3-state.js +27 -0
  468. package/src/workload-roles/boundary.d.ts +2 -1
  469. package/src/workload-roles/boundary.js +9 -2
  470. package/src/workload-roles/handler.js +52 -24
  471. package/src/workload-roles/index.d.ts +10 -17
  472. package/src/workload-roles/index.js +5 -18
  473. package/src/workload-roles/injection.js +1 -1
  474. package/src/workload-roles/provisioner.js +12 -4
  475. package/src/workload-roles/registration.d.ts +1 -0
  476. package/src/workload-roles/registration.js +5 -0
  477. package/src/workload-roles/stage-boundary.js +1 -1
  478. package/src/workload-roles/standard-slice.js +3 -3
  479. package/src/workspace-deployment/affected-lifecycle.d.ts +53 -0
  480. package/src/workspace-deployment/affected-lifecycle.js +84 -0
  481. package/src/workspace-deployment/identity.d.ts +3 -0
  482. package/src/workspace-deployment/identity.js +22 -0
  483. package/src/workspace-deployment/index.d.ts +4 -0
  484. package/src/workspace-deployment/index.js +8 -0
  485. package/src/workspace-deployment/migration-evidence.d.ts +29 -0
  486. package/src/workspace-deployment/migration-evidence.js +83 -0
  487. package/src/workspace-deployment/migration.d.ts +27 -0
  488. package/src/workspace-deployment/migration.js +109 -0
  489. package/src/workspace-deployment/ownership.d.ts +81 -0
  490. package/src/workspace-deployment/ownership.js +381 -0
  491. package/src/api-contract/baseline-update.js.map +0 -1
  492. package/src/api-contract/compatibility.js.map +0 -1
  493. package/src/api-contract/contract-graph.js.map +0 -1
  494. package/src/api-contract/evidence.js.map +0 -1
  495. package/src/api-contract/index.js.map +0 -1
  496. package/src/api-contract/model.fixtures.d.ts +0 -2
  497. package/src/api-contract/model.fixtures.js +0 -81
  498. package/src/api-contract/model.fixtures.js.map +0 -1
  499. package/src/api-contract/model.js.map +0 -1
  500. package/src/api-contract/rollout.js.map +0 -1
  501. package/src/authorization/compatibility.js.map +0 -1
  502. package/src/authorization/index.js.map +0 -1
  503. package/src/blueprints/execution.js.map +0 -1
  504. package/src/blueprints/external-sandbox.js.map +0 -1
  505. package/src/blueprints/index.js.map +0 -1
  506. package/src/blueprints/inputs.js.map +0 -1
  507. package/src/blueprints/manifest.js.map +0 -1
  508. package/src/blueprints/resolver.js.map +0 -1
  509. package/src/blueprints/transitions.js.map +0 -1
  510. package/src/cli/agent-command.js.map +0 -1
  511. package/src/cli/agent-runtime.js.map +0 -1
  512. package/src/cli/blueprint-authority.js.map +0 -1
  513. package/src/cli/blueprint-command.js.map +0 -1
  514. package/src/cli/bootstrap.js.map +0 -1
  515. package/src/cli/dev-command.js.map +0 -1
  516. package/src/cli/main.js.map +0 -1
  517. package/src/cli/output.js.map +0 -1
  518. package/src/cli/personal-secret-runtime.js.map +0 -1
  519. package/src/cli/secret-terminal.js.map +0 -1
  520. package/src/container-images.js.map +0 -1
  521. package/src/data-lifecycle/index.js.map +0 -1
  522. package/src/data-lifecycle/model.fixtures.d.ts +0 -2
  523. package/src/data-lifecycle/model.fixtures.js +0 -244
  524. package/src/data-lifecycle/model.fixtures.js.map +0 -1
  525. package/src/data-lifecycle/model.js.map +0 -1
  526. package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
  527. package/src/data-lifecycle/validation.js.map +0 -1
  528. package/src/database-retirement/contract.js.map +0 -1
  529. package/src/database-retirement/index.js.map +0 -1
  530. package/src/deterministic-order.js.map +0 -1
  531. package/src/developer-agent/context.js.map +0 -1
  532. package/src/developer-agent/generator-planning.js.map +0 -1
  533. package/src/developer-agent/generator-preview.js.map +0 -1
  534. package/src/developer-agent/git-inspection.js.map +0 -1
  535. package/src/developer-agent/handoff.js.map +0 -1
  536. package/src/developer-agent/index.js.map +0 -1
  537. package/src/developer-agent/model.js.map +0 -1
  538. package/src/developer-agent/operation-registry.js.map +0 -1
  539. package/src/developer-agent/ordering.js.map +0 -1
  540. package/src/developer-agent/planning.js.map +0 -1
  541. package/src/developer-agent/preview-changes.js.map +0 -1
  542. package/src/developer-agent/preview-source.js.map +0 -1
  543. package/src/developer-agent/validation.js.map +0 -1
  544. package/src/developer-agent/workspace-inspection.js.map +0 -1
  545. package/src/developer-agent/workspace-path.js.map +0 -1
  546. package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
  547. package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
  548. package/src/executors/deploy/deploy.js.map +0 -1
  549. package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
  550. package/src/executors/dev/dev.js.map +0 -1
  551. package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
  552. package/src/executors/dev-setup/dev-setup.js.map +0 -1
  553. package/src/executors/developer-context/developer-context.js.map +0 -1
  554. package/src/executors/fleet/fleet.js.map +0 -1
  555. package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
  556. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
  557. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
  558. package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
  559. package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
  560. package/src/executors/refresh/refresh.js.map +0 -1
  561. package/src/executors/remove/remove.js.map +0 -1
  562. package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
  563. package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
  564. package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
  565. package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
  566. package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
  567. package/src/executors/unlock/unlock.js.map +0 -1
  568. package/src/executors/work-markers/work-markers.js.map +0 -1
  569. package/src/foundation/discovery.js.map +0 -1
  570. package/src/foundation/index.js.map +0 -1
  571. package/src/foundation/local-database-contract.js.map +0 -1
  572. package/src/foundation/logging-preflight.js.map +0 -1
  573. package/src/foundation/logging.js.map +0 -1
  574. package/src/foundation/preflight.js.map +0 -1
  575. package/src/foundation/provision-database-bindings.js.map +0 -1
  576. package/src/foundation/provision-logical-database.js.map +0 -1
  577. package/src/foundation/requirements.js.map +0 -1
  578. package/src/foundation/router-origin-proof.js.map +0 -1
  579. package/src/foundation/stages.js.map +0 -1
  580. package/src/frontend-security/index.js.map +0 -1
  581. package/src/frontend-security/security-headers.js.map +0 -1
  582. package/src/generators/feature-registry.js.map +0 -1
  583. package/src/generators/function/function.js.map +0 -1
  584. package/src/generators/job/job.js.map +0 -1
  585. package/src/generators/logging-registry.js.map +0 -1
  586. package/src/generators/post-generation-install.js.map +0 -1
  587. package/src/generators/preset/generator.js.map +0 -1
  588. package/src/generators/preset/tool-versions.js.map +0 -1
  589. package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
  590. package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
  591. package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
  592. package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
  593. package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
  594. package/src/generators/preset/workspace-files.js.map +0 -1
  595. package/src/generators/repository-policy/repository-policy.js.map +0 -1
  596. package/src/generators/service/service.js.map +0 -1
  597. package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
  598. package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
  599. package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
  600. package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
  601. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
  602. package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
  603. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
  604. package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
  605. package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
  606. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
  607. package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
  608. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
  609. package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
  610. package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
  611. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
  612. package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
  613. package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
  614. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
  615. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
  616. package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
  617. package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
  618. package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
  619. package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
  620. package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
  621. package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
  622. package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
  623. package/src/generators/slice/built-in-plan-shared.js.map +0 -1
  624. package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
  625. package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
  626. package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
  627. package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
  628. package/src/generators/slice/built-in-plan.js.map +0 -1
  629. package/src/generators/slice/slice.js.map +0 -1
  630. package/src/generators/upgrade/upgrade.js.map +0 -1
  631. package/src/generators/workload/frozen-container.js.map +0 -1
  632. package/src/generators/workload/performance-registration.js.map +0 -1
  633. package/src/generators/workload/reliability-registration.js.map +0 -1
  634. package/src/generators/workload/service-performance-files.js.map +0 -1
  635. package/src/generators/workload/workload.js.map +0 -1
  636. package/src/git-policy/action-pins.js.map +0 -1
  637. package/src/git-policy/github-bootstrap.js.map +0 -1
  638. package/src/git-policy/index.js.map +0 -1
  639. package/src/git-policy/routing.js.map +0 -1
  640. package/src/index.js.map +0 -1
  641. package/src/infrastructure-change/convergence.js.map +0 -1
  642. package/src/infrastructure-change/drift.js.map +0 -1
  643. package/src/infrastructure-change/index.js.map +0 -1
  644. package/src/infrastructure-change/model.js.map +0 -1
  645. package/src/infrastructure-change/normalize.js.map +0 -1
  646. package/src/infrastructure-change/plan.js.map +0 -1
  647. package/src/infrastructure-change/risk.js.map +0 -1
  648. package/src/infrastructure-change/summary.js.map +0 -1
  649. package/src/local-dev/context-discovery.js.map +0 -1
  650. package/src/local-dev/contract-validation.js.map +0 -1
  651. package/src/local-dev/contracts.js.map +0 -1
  652. package/src/local-dev/control-contract.js.map +0 -1
  653. package/src/local-dev/dev-command-core.js.map +0 -1
  654. package/src/local-dev/effects.js.map +0 -1
  655. package/src/local-dev/environment-inspector.js.map +0 -1
  656. package/src/local-dev/environment-state.js.map +0 -1
  657. package/src/local-dev/errors.js.map +0 -1
  658. package/src/local-dev/fleet-client.js.map +0 -1
  659. package/src/local-dev/fleet-configuration.js.map +0 -1
  660. package/src/local-dev/fleet-inventory.js.map +0 -1
  661. package/src/local-dev/fleet-ipc.js.map +0 -1
  662. package/src/local-dev/fleet-launcher.js.map +0 -1
  663. package/src/local-dev/fleet-lock.js.map +0 -1
  664. package/src/local-dev/fleet-logs.js.map +0 -1
  665. package/src/local-dev/fleet-process.js.map +0 -1
  666. package/src/local-dev/fleet-runtime.js.map +0 -1
  667. package/src/local-dev/fleet-session.js.map +0 -1
  668. package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
  669. package/src/local-dev/fleet-startup.js.map +0 -1
  670. package/src/local-dev/fleet-state.js.map +0 -1
  671. package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
  672. package/src/local-dev/fleet-supervisor.js.map +0 -1
  673. package/src/local-dev/gateway-daemon.js.map +0 -1
  674. package/src/local-dev/gateway.js.map +0 -1
  675. package/src/local-dev/identity.js.map +0 -1
  676. package/src/local-dev/index.js.map +0 -1
  677. package/src/local-dev/local-context.js.map +0 -1
  678. package/src/local-dev/nx-workspace.js.map +0 -1
  679. package/src/local-dev/personal-secret-ledger.js.map +0 -1
  680. package/src/local-dev/personal-stage.js.map +0 -1
  681. package/src/local-dev/portless.js.map +0 -1
  682. package/src/local-dev/ports.js.map +0 -1
  683. package/src/local-dev/private-state.js.map +0 -1
  684. package/src/local-dev/process-identity.js.map +0 -1
  685. package/src/local-dev/proxy.js.map +0 -1
  686. package/src/local-dev/runtime-paths.js.map +0 -1
  687. package/src/local-dev/secret-slice-claim.js.map +0 -1
  688. package/src/local-dev/slice-claim.js.map +0 -1
  689. package/src/local-dev/slice-runner.js.map +0 -1
  690. package/src/local-dev/tls.js.map +0 -1
  691. package/src/ownership/composition.js.map +0 -1
  692. package/src/ownership/foundation-record.js.map +0 -1
  693. package/src/ownership/hash.js.map +0 -1
  694. package/src/ownership/index.js.map +0 -1
  695. package/src/ownership/json-ownership.js.map +0 -1
  696. package/src/ownership/record.js.map +0 -1
  697. package/src/ownership/workspace-record.js.map +0 -1
  698. package/src/performance/cost-collection.js.map +0 -1
  699. package/src/performance/cost-controls.js.map +0 -1
  700. package/src/performance/evidence.js.map +0 -1
  701. package/src/performance/index.js.map +0 -1
  702. package/src/performance/load-safety.js.map +0 -1
  703. package/src/performance/model.js.map +0 -1
  704. package/src/performance/pr-artifact-budget.js.map +0 -1
  705. package/src/performance/runner.js.map +0 -1
  706. package/src/performance/scenario-endpoint.js.map +0 -1
  707. package/src/performance/scenario.js.map +0 -1
  708. package/src/performance/test-fixtures.d.ts +0 -7
  709. package/src/performance/test-fixtures.js +0 -169
  710. package/src/performance/test-fixtures.js.map +0 -1
  711. package/src/performance/unit-cost.js.map +0 -1
  712. package/src/release/index.js.map +0 -1
  713. package/src/release/lifecycle.js.map +0 -1
  714. package/src/release/manifest.js.map +0 -1
  715. package/src/release/rollout.js.map +0 -1
  716. package/src/release/source-authority.js.map +0 -1
  717. package/src/repository-policy/aurora-preflight.js.map +0 -1
  718. package/src/repository-policy/deployment-plan.js.map +0 -1
  719. package/src/repository-policy/foundation-profile.js.map +0 -1
  720. package/src/repository-policy/index.js.map +0 -1
  721. package/src/repository-policy/policy.js.map +0 -1
  722. package/src/secrets/adapters.js.map +0 -1
  723. package/src/secrets/aws-control-plane.js.map +0 -1
  724. package/src/secrets/declaration-verification.js.map +0 -1
  725. package/src/secrets/guardrails.js.map +0 -1
  726. package/src/secrets/index.js.map +0 -1
  727. package/src/secrets/metadata.js.map +0 -1
  728. package/src/secrets/model.js.map +0 -1
  729. package/src/secrets/operator.js.map +0 -1
  730. package/src/secrets/permissions.js.map +0 -1
  731. package/src/secrets/personal-command.js.map +0 -1
  732. package/src/secrets/personal-ledger.js.map +0 -1
  733. package/src/secrets/registry.js.map +0 -1
  734. package/src/secrets/verification.js.map +0 -1
  735. package/src/secrets/workload-access.js.map +0 -1
  736. package/src/supply-chain/action-pins.js.map +0 -1
  737. package/src/supply-chain/blueprint-trust-git.js.map +0 -1
  738. package/src/supply-chain/blueprint-trust-process.js.map +0 -1
  739. package/src/supply-chain/blueprint-trust.js.map +0 -1
  740. package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
  741. package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
  742. package/src/supply-chain/build-output.js.map +0 -1
  743. package/src/supply-chain/common.js.map +0 -1
  744. package/src/supply-chain/container-artifact-contract.js.map +0 -1
  745. package/src/supply-chain/container-release.js.map +0 -1
  746. package/src/supply-chain/ecr-applicability.js.map +0 -1
  747. package/src/supply-chain/ecr-scanning.js.map +0 -1
  748. package/src/supply-chain/ecs-deployed-image.js.map +0 -1
  749. package/src/supply-chain/errors.js.map +0 -1
  750. package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
  751. package/src/supply-chain/generated-command.js.map +0 -1
  752. package/src/supply-chain/generated-container-release-command.js.map +0 -1
  753. package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
  754. package/src/supply-chain/generated-files.js.map +0 -1
  755. package/src/supply-chain/generated-scanner-command.js.map +0 -1
  756. package/src/supply-chain/index.js.map +0 -1
  757. package/src/supply-chain/inventory.js.map +0 -1
  758. package/src/supply-chain/license-expression.js.map +0 -1
  759. package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
  760. package/src/supply-chain/policy.js.map +0 -1
  761. package/src/supply-chain/publication.js.map +0 -1
  762. package/src/supply-chain/sbom.js.map +0 -1
  763. package/src/supply-chain/scanner.js.map +0 -1
  764. package/src/supply-chain/vendored-source.js.map +0 -1
  765. package/src/testing-evidence/fixture-scope.js.map +0 -1
  766. package/src/testing-evidence/index.js.map +0 -1
  767. package/src/testing-evidence/quarantine.js.map +0 -1
  768. package/src/testing-evidence/result.js.map +0 -1
  769. package/src/testing-evidence/runner-adapter.js.map +0 -1
  770. package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
  771. package/src/validation.js.map +0 -1
  772. package/src/work-markers/index.js.map +0 -1
  773. package/src/work-markers/work-markers.js.map +0 -1
  774. package/src/workload-roles/account-baseline.js.map +0 -1
  775. package/src/workload-roles/authority.js.map +0 -1
  776. package/src/workload-roles/aws-adapter.js.map +0 -1
  777. package/src/workload-roles/aws-internal-handler.js.map +0 -1
  778. package/src/workload-roles/aws-s3-state.js.map +0 -1
  779. package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
  780. package/src/workload-roles/boundary.js.map +0 -1
  781. package/src/workload-roles/convergence.js.map +0 -1
  782. package/src/workload-roles/effective-policy.js.map +0 -1
  783. package/src/workload-roles/handler.js.map +0 -1
  784. package/src/workload-roles/history.js.map +0 -1
  785. package/src/workload-roles/index.js.map +0 -1
  786. package/src/workload-roles/injection.js.map +0 -1
  787. package/src/workload-roles/manifest.js.map +0 -1
  788. package/src/workload-roles/provisioner.js.map +0 -1
  789. package/src/workload-roles/registration.js.map +0 -1
  790. package/src/workload-roles/stage-boundary.js.map +0 -1
  791. package/src/workload-roles/standard-slice.js.map +0 -1
@@ -1,27 +1,48 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.REPOSITORY_MODE_PRESETS = exports.SLICE_PRODUCTION_STATUSES = exports.DEFAULT_RECOVERY_PRODUCTION_FOUNDATION_PROFILE = exports.PRODUCTION_FOUNDATION_PROFILES = exports.PRODUCTION_APPROVAL_MODES = exports.PRODUCTION_ACCESS_VALUES = exports.REPOSITORY_POLICY_SCHEMA_URL = exports.REPOSITORY_POLICY_SCHEMA_VERSION = exports.REPOSITORY_POLICY_FILE = void 0;
3
+ exports.DEFAULT_DELIVERY_LANE = exports.DELIVERY_LANES = exports.DEPLOYMENT_PROFILES = exports.REPOSITORY_MODE_PRESETS = exports.SLICE_PRODUCTION_STATUSES = exports.DEFAULT_RECOVERY_PRODUCTION_FOUNDATION_PROFILE = exports.PRODUCTION_FOUNDATION_PROFILES = exports.PRODUCTION_APPROVAL_MODES = exports.PRODUCTION_ACCESS_VALUES = exports.REPOSITORY_POLICY_SCHEMA_URL = exports.REPOSITORY_POLICY_SCHEMA_VERSION = exports.REPOSITORY_POLICY_FILE = void 0;
4
+ exports.deliveryLaneOf = deliveryLaneOf;
5
+ exports.normalizeDeploymentAccountId = normalizeDeploymentAccountId;
6
+ exports.requiresGithubDeployment = requiresGithubDeployment;
7
+ exports.activeDeploymentStages = activeDeploymentStages;
8
+ exports.isActiveDeploymentStage = isActiveDeploymentStage;
9
+ exports.productionRehearsalStage = productionRehearsalStage;
10
+ exports.validateDeploymentAccountTopology = validateDeploymentAccountTopology;
11
+ exports.configuredDeploymentAccountTopology = configuredDeploymentAccountTopology;
12
+ exports.configuredDeploymentAccountForStage = configuredDeploymentAccountForStage;
13
+ exports.configuredDeploymentRegion = configuredDeploymentRegion;
4
14
  exports.validateRepositoryOperatingPolicy = validateRepositoryOperatingPolicy;
5
15
  exports.formatRepositoryPolicyIssues = formatRepositoryPolicyIssues;
6
16
  exports.parseRepositoryOperatingPolicy = parseRepositoryOperatingPolicy;
17
+ exports.validateRepositoryOperatingPolicyMigrationProvenance = validateRepositoryOperatingPolicyMigrationProvenance;
7
18
  exports.readRepositoryOperatingPolicy = readRepositoryOperatingPolicy;
8
19
  exports.createIncubationRepositoryPolicy = createIncubationRepositoryPolicy;
9
20
  exports.applyRepositoryPolicyChange = applyRepositoryPolicyChange;
10
21
  exports.evaluateRepositoryPolicyRequest = evaluateRepositoryPolicyRequest;
11
22
  exports.assertRepositoryPolicyRequest = assertRepositoryPolicyRequest;
23
+ const node_crypto_1 = require("node:crypto");
24
+ const capacity_migration_js_1 = require("./capacity-migration.js");
25
+ const node_buffer_1 = require("node:buffer");
12
26
  const node_fs_1 = require("node:fs");
13
27
  const node_path_1 = require("node:path");
14
28
  const validation_js_1 = require("../validation.js");
29
+ const identity_js_1 = require("../workspace-deployment/identity.js");
30
+ const migration_evidence_js_1 = require("../workspace-deployment/migration-evidence.js");
15
31
  exports.REPOSITORY_POLICY_FILE = 'ebk.repository-policy.json';
16
32
  exports.REPOSITORY_POLICY_SCHEMA_VERSION = 1;
33
+ const MAX_REPOSITORY_POLICY_BYTES = 1024 * 1024;
34
+ const MAX_WORKSPACE_DEPLOYMENT_MIGRATION_EVIDENCE_BYTES = 128 * 1024;
35
+ const UNSUPPORTED_AWS_PARTITION_REGION = /^(?:us-iso-|us-isob-|eu-isoe-|us-isof-)/u;
17
36
  exports.REPOSITORY_POLICY_SCHEMA_URL = './node_modules/@empire-builder-kit/nx/schemas/repository-policy-v1.json';
18
37
  exports.PRODUCTION_ACCESS_VALUES = ['disabled', 'controlled'];
19
38
  exports.PRODUCTION_APPROVAL_MODES = [
20
39
  'promotion-pr',
21
40
  'environment-reviewer',
41
+ 'trunk-promotion',
22
42
  ];
23
43
  exports.PRODUCTION_FOUNDATION_PROFILES = [
24
44
  'cost-optimized',
45
+ 'balanced',
25
46
  'standard',
26
47
  ];
27
48
  exports.DEFAULT_RECOVERY_PRODUCTION_FOUNDATION_PROFILE = 'standard';
@@ -31,21 +52,161 @@ exports.REPOSITORY_MODE_PRESETS = [
31
52
  'controlled-production',
32
53
  'operational',
33
54
  ];
55
+ exports.DEPLOYMENT_PROFILES = [
56
+ 'starter',
57
+ 'production-isolated',
58
+ 'fully-isolated',
59
+ ];
60
+ /** How work reaches production. protected-pair keeps develop and main with a
61
+ * promotion pull request and sync-back; trunk protects main alone and deploys
62
+ * production from every merged main push (starter fast lane). */
63
+ exports.DELIVERY_LANES = ['protected-pair', 'trunk'];
64
+ exports.DEFAULT_DELIVERY_LANE = 'protected-pair';
65
+ function deliveryLaneOf(policy) {
66
+ return policy.deliveryLane ?? exports.DEFAULT_DELIVERY_LANE;
67
+ }
68
+ const DEPLOYMENT_STAGES_BY_PROFILE = {
69
+ starter: ['development', 'production'],
70
+ 'production-isolated': ['development', 'staging', 'production'],
71
+ 'fully-isolated': ['development', 'staging', 'production'],
72
+ };
73
+ function normalizeDeploymentAccountId(value, label) {
74
+ if (typeof value === 'string' && /^\d{12}$/.test(value))
75
+ return value;
76
+ if (typeof value === 'number' &&
77
+ Number.isSafeInteger(value) &&
78
+ value >= 100_000_000_000 &&
79
+ value <= 999_999_999_999) {
80
+ return String(value);
81
+ }
82
+ throw new Error(`${label} must be an exact 12-digit AWS account ID.`);
83
+ }
84
+ function requiresGithubDeployment(profile, stage) {
85
+ return ((profile === 'production-isolated' && stage === 'production') ||
86
+ (profile === 'fully-isolated' && stage === 'staging') ||
87
+ (profile === 'fully-isolated' && stage === 'production'));
88
+ }
89
+ function activeDeploymentStages(profile) {
90
+ return DEPLOYMENT_STAGES_BY_PROFILE[profile];
91
+ }
92
+ function isActiveDeploymentStage(profile, stage) {
93
+ return activeDeploymentStages(profile).includes(stage);
94
+ }
95
+ function productionRehearsalStage(profile) {
96
+ return profile === 'starter' ? 'development' : 'staging';
97
+ }
98
+ function validateDeploymentAccountTopology(profile, accounts) {
99
+ for (const stage of ['development', 'production']) {
100
+ if (!/^\d{12}$/.test(accounts[stage])) {
101
+ throw new Error(`Deployment account for ${stage} must be an exact 12-digit AWS account ID.`);
102
+ }
103
+ }
104
+ if (profile === 'starter') {
105
+ if (accounts.staging !== null) {
106
+ throw new Error('The starter deployment profile has no staging stage; its staging deployment account must be null.');
107
+ }
108
+ if (accounts.development !== accounts.production) {
109
+ throw new Error('The starter deployment profile requires one shared development and production AWS account.');
110
+ }
111
+ return { ...accounts };
112
+ }
113
+ if (accounts.staging === null || !/^\d{12}$/.test(accounts.staging)) {
114
+ throw new Error('Deployment account for staging must be an exact 12-digit AWS account ID.');
115
+ }
116
+ const unique = new Set(Object.values(accounts));
117
+ if (profile === 'production-isolated' &&
118
+ (accounts.development !== accounts.staging ||
119
+ accounts.production === accounts.staging)) {
120
+ throw new Error('The production-isolated deployment profile requires one shared development/staging account and one distinct production account.');
121
+ }
122
+ if (profile === 'fully-isolated' && unique.size !== 3) {
123
+ throw new Error('The fully-isolated deployment profile requires three distinct AWS accounts.');
124
+ }
125
+ return { ...accounts };
126
+ }
127
+ function configuredDeploymentAccountTopology(profile, accounts) {
128
+ if (accounts.development === null || accounts.production === null) {
129
+ throw new Error('Deployment account topology is incomplete; configure exact development and production AWS account IDs before deployment.');
130
+ }
131
+ if (profile !== 'starter' && accounts.staging === null) {
132
+ throw new Error('Deployment account topology is incomplete; isolated profiles require an exact staging AWS account ID.');
133
+ }
134
+ return validateDeploymentAccountTopology(profile, {
135
+ development: accounts.development,
136
+ production: accounts.production,
137
+ staging: accounts.staging,
138
+ });
139
+ }
140
+ function validateConfiguredIsolatedAccounts(accounts) {
141
+ const configured = new Set();
142
+ for (const stage of ['development', 'staging', 'production']) {
143
+ const account = accounts[stage];
144
+ if (account === null)
145
+ continue;
146
+ if (typeof account !== 'string' || !/^\d{12}$/.test(account)) {
147
+ throw new Error(`Deployment account for ${stage} must be null or an exact 12-digit AWS account ID.`);
148
+ }
149
+ if (configured.has(account)) {
150
+ throw new Error('The fully-isolated deployment profile requires distinct configured AWS accounts.');
151
+ }
152
+ configured.add(account);
153
+ }
154
+ }
155
+ function configuredDeploymentAccountForStage(profile, accounts, stage) {
156
+ if (!isActiveDeploymentStage(profile, stage)) {
157
+ throw new Error(`Deployment stage ${stage} is inactive for the ${profile} deployment profile.`);
158
+ }
159
+ // Fresh isolated accounts can be provisioned independently. This does not
160
+ // relax production rehearsal or migrated-workspace tuple requirements.
161
+ if (profile === 'fully-isolated' && stage !== 'production') {
162
+ validateConfiguredIsolatedAccounts(accounts);
163
+ const account = accounts[stage];
164
+ if (account === null) {
165
+ throw new Error(`Deployment account for active stage ${stage} is not configured.`);
166
+ }
167
+ return account;
168
+ }
169
+ const topology = configuredDeploymentAccountTopology(profile, accounts);
170
+ const account = topology[stage];
171
+ if (account === null) {
172
+ throw new Error(`Deployment account for active stage ${stage} is not configured.`);
173
+ }
174
+ return account;
175
+ }
176
+ function configuredDeploymentRegion(region) {
177
+ if (region === null ||
178
+ !/^[a-z]{2}(?:-gov)?-[a-z]+(?:-[a-z]+)*-\d$/.test(region) ||
179
+ UNSUPPORTED_AWS_PARTITION_REGION.test(region)) {
180
+ throw new Error('Deployment Region is incomplete or belongs to an unsupported AWS partition; configure one exact commercial, China, or GovCloud AWS Region before deployment.');
181
+ }
182
+ return region;
183
+ }
34
184
  const SLICE_NAME_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
35
185
  const POLICY_PROPERTIES = new Set([
36
186
  '$schema',
187
+ 'deliveryLane',
188
+ 'deploymentAccounts',
189
+ 'deploymentProfile',
190
+ 'deploymentRegion',
37
191
  'productionAccess',
38
192
  'productionApproval',
39
193
  'productionFoundation',
40
194
  'schemaVersion',
41
195
  'slices',
196
+ 'workspaceDeploymentId',
197
+ 'workspaceDeploymentProvenance',
42
198
  ]);
43
199
  const REQUIRED_POLICY_PROPERTIES = [
200
+ 'deploymentAccounts',
201
+ 'deploymentProfile',
202
+ 'deploymentRegion',
44
203
  'productionAccess',
45
204
  'productionApproval',
46
205
  'productionFoundation',
47
206
  'schemaVersion',
48
207
  'slices',
208
+ 'workspaceDeploymentId',
209
+ 'workspaceDeploymentProvenance',
49
210
  ];
50
211
  function rejectUnknownProperties(value, allowed, path, issues) {
51
212
  for (const property of Object.keys(value)) {
@@ -79,6 +240,153 @@ function validateRepositoryOperatingPolicy(value) {
79
240
  path: 'policy.$schema',
80
241
  });
81
242
  }
243
+ if (value.deliveryLane !== undefined &&
244
+ !isOneOf(value.deliveryLane, exports.DELIVERY_LANES)) {
245
+ issues.push({
246
+ message: 'must be protected-pair or trunk',
247
+ path: 'policy.deliveryLane',
248
+ });
249
+ }
250
+ if (value.deliveryLane === 'trunk' && value.deploymentProfile !== 'starter') {
251
+ issues.push({
252
+ message: 'trunk delivery requires the starter deployment profile',
253
+ path: 'policy.deliveryLane',
254
+ });
255
+ }
256
+ if ((0, validation_js_1.isRecord)(value.productionApproval) &&
257
+ value.productionApproval.mode === 'trunk-promotion' &&
258
+ (value.deploymentProfile === 'starter' || value.deliveryLane === 'trunk')) {
259
+ issues.push({
260
+ message: 'trunk-promotion requires an isolated deployment profile on the protected pair; the starter profile uses the trunk delivery lane instead',
261
+ path: 'policy.productionApproval.mode',
262
+ });
263
+ }
264
+ if (!(0, validation_js_1.isRecord)(value.workspaceDeploymentProvenance)) {
265
+ issues.push({
266
+ message: 'must declare exact fresh or migrated provenance',
267
+ path: 'policy.workspaceDeploymentProvenance',
268
+ });
269
+ }
270
+ else {
271
+ const provenance = value.workspaceDeploymentProvenance;
272
+ const provenancePath = 'policy.workspaceDeploymentProvenance';
273
+ if (provenance.kind === 'fresh') {
274
+ rejectUnknownProperties(provenance, new Set(['kind', 'schemaVersion']), provenancePath, issues);
275
+ if (provenance.schemaVersion !== 1) {
276
+ issues.push({
277
+ message: 'must equal 1',
278
+ path: `${provenancePath}.schemaVersion`,
279
+ });
280
+ }
281
+ }
282
+ else if (provenance.kind === 'migrated') {
283
+ rejectUnknownProperties(provenance, new Set(['evidencePath', 'evidenceSha256', 'kind', 'schemaVersion']), provenancePath, issues);
284
+ const evidencePath = provenance.evidencePath;
285
+ const pathSegments = typeof evidencePath === 'string' ? evidencePath.split('/') : [];
286
+ if (typeof evidencePath !== 'string' ||
287
+ !/^docs\/adoption\/[A-Za-z0-9._/-]+[.]json$/u.test(evidencePath) ||
288
+ (0, node_path_1.isAbsolute)(evidencePath) ||
289
+ evidencePath.includes('\\') ||
290
+ evidencePath.includes('//') ||
291
+ pathSegments.some((segment) => segment === '' || segment === '.' || segment === '..')) {
292
+ issues.push({
293
+ message: 'must be one normalized JSON path beneath docs/adoption without traversal',
294
+ path: `${provenancePath}.evidencePath`,
295
+ });
296
+ }
297
+ if (typeof provenance.evidenceSha256 !== 'string' ||
298
+ !/^[a-f0-9]{64}$/u.test(provenance.evidenceSha256)) {
299
+ issues.push({
300
+ message: 'must be one lowercase SHA-256 digest',
301
+ path: `${provenancePath}.evidenceSha256`,
302
+ });
303
+ }
304
+ if (provenance.schemaVersion !== 1) {
305
+ issues.push({
306
+ message: 'must equal 1',
307
+ path: `${provenancePath}.schemaVersion`,
308
+ });
309
+ }
310
+ }
311
+ else {
312
+ issues.push({
313
+ message: 'kind must equal fresh or migrated',
314
+ path: `${provenancePath}.kind`,
315
+ });
316
+ }
317
+ }
318
+ if (typeof value.workspaceDeploymentId !== 'string' ||
319
+ !identity_js_1.WORKSPACE_DEPLOYMENT_ID_PATTERN.test(value.workspaceDeploymentId)) {
320
+ issues.push({
321
+ message: 'must be ebkws- followed by exactly 128 bits of lowercase hexadecimal identity',
322
+ path: 'policy.workspaceDeploymentId',
323
+ });
324
+ }
325
+ if (!isOneOf(value.deploymentProfile, exports.DEPLOYMENT_PROFILES)) {
326
+ issues.push({
327
+ message: `must equal ${exports.DEPLOYMENT_PROFILES.join(', ')}`,
328
+ path: 'policy.deploymentProfile',
329
+ });
330
+ }
331
+ if (value.deploymentRegion !== null &&
332
+ (typeof value.deploymentRegion !== 'string' ||
333
+ !/^[a-z]{2}(?:-gov)?-[a-z]+(?:-[a-z]+)*-\d$/.test(value.deploymentRegion) ||
334
+ UNSUPPORTED_AWS_PARTITION_REGION.test(value.deploymentRegion))) {
335
+ issues.push({
336
+ message: 'must be null or one exact commercial, China, or GovCloud AWS Region',
337
+ path: 'policy.deploymentRegion',
338
+ });
339
+ }
340
+ if (!(0, validation_js_1.isRecord)(value.deploymentAccounts)) {
341
+ issues.push({
342
+ message: 'must be an object with development, staging, and production account decisions',
343
+ path: 'policy.deploymentAccounts',
344
+ });
345
+ }
346
+ else {
347
+ rejectUnknownProperties(value.deploymentAccounts, new Set(['development', 'staging', 'production']), 'policy.deploymentAccounts', issues);
348
+ for (const stage of ['development', 'staging', 'production']) {
349
+ const account = value.deploymentAccounts[stage];
350
+ if (account !== null &&
351
+ (typeof account !== 'string' || !/^\d{12}$/.test(account))) {
352
+ issues.push({
353
+ message: 'must be null or an exact 12-digit AWS account ID',
354
+ path: `policy.deploymentAccounts.${stage}`,
355
+ });
356
+ }
357
+ }
358
+ if (value.deploymentProfile === 'fully-isolated' &&
359
+ Object.values(value.deploymentAccounts).some((account) => account === null)) {
360
+ try {
361
+ validateConfiguredIsolatedAccounts(value.deploymentAccounts);
362
+ }
363
+ catch (error) {
364
+ issues.push({
365
+ message: error instanceof Error ? error.message : String(error),
366
+ path: 'policy.deploymentAccounts',
367
+ });
368
+ }
369
+ }
370
+ if (isOneOf(value.deploymentProfile, exports.DEPLOYMENT_PROFILES) &&
371
+ typeof value.deploymentAccounts.development === 'string' &&
372
+ typeof value.deploymentAccounts.production === 'string' &&
373
+ (value.deploymentAccounts.staging === null ||
374
+ typeof value.deploymentAccounts.staging === 'string')) {
375
+ try {
376
+ validateDeploymentAccountTopology(value.deploymentProfile, {
377
+ development: value.deploymentAccounts.development,
378
+ production: value.deploymentAccounts.production,
379
+ staging: value.deploymentAccounts.staging,
380
+ });
381
+ }
382
+ catch (error) {
383
+ issues.push({
384
+ message: error instanceof Error ? error.message : String(error),
385
+ path: 'policy.deploymentAccounts',
386
+ });
387
+ }
388
+ }
389
+ }
82
390
  if (!isOneOf(value.productionAccess, exports.PRODUCTION_ACCESS_VALUES)) {
83
391
  issues.push({
84
392
  message: `must equal ${exports.PRODUCTION_ACCESS_VALUES.join(' or ')}`,
@@ -87,7 +395,7 @@ function validateRepositoryOperatingPolicy(value) {
87
395
  }
88
396
  if (!(0, validation_js_1.isRecord)(value.productionApproval)) {
89
397
  issues.push({
90
- message: 'must be an object with an explicit promotion-pr or environment-reviewer mode',
398
+ message: 'must be an object with an explicit promotion-pr, environment-reviewer, or trunk-promotion mode',
91
399
  path: 'policy.productionApproval',
92
400
  });
93
401
  }
@@ -151,7 +459,7 @@ function missingPolicyDecisionGuidance(value) {
151
459
  const missing = REQUIRED_POLICY_PROPERTIES.filter((property) => !Object.prototype.hasOwnProperty.call(value, property));
152
460
  if (missing.length === 0)
153
461
  return '';
154
- return `\nMissing required top-level policy members: ${missing.join(', ')}.\nClean regeneration required: regenerate the workspace from the current exact packed candidate, then deliberately reapply the reviewed production-access, approval-mode, Foundation-profile, and per-Slice decisions. Missing decisions are not inferred or amended in place.`;
462
+ return `\nMissing required top-level policy members: ${missing.join(', ')}.\nClean regeneration required: regenerate the workspace from the current exact packed candidate, then deliberately reapply the reviewed deployment-profile, production-access, approval-mode, Foundation-profile, and per-Slice decisions. Existing prerelease repositories must explicitly migrate a stable workspaceDeploymentId and required migrated provenance with bounded, version-controlled tuple occupancy evidence; a legacy profile migration also requires --deploymentProfile=fully-isolated. Then commit exact development, staging, and production AWS account IDs plus deploymentRegion before any deployment. Migration preserves the reviewed authority model and workspace ownership assertion, not deployability; all-null account topology remains fail closed. Missing decisions are not inferred or amended in place.`;
155
463
  }
156
464
  function parseRepositoryOperatingPolicy(contents, source = exports.REPOSITORY_POLICY_FILE) {
157
465
  let value;
@@ -167,27 +475,173 @@ function parseRepositoryOperatingPolicy(contents, source = exports.REPOSITORY_PO
167
475
  }
168
476
  return result.value;
169
477
  }
170
- function readRepositoryOperatingPolicy(workspaceRoot) {
171
- const path = (0, node_path_1.join)(workspaceRoot, exports.REPOSITORY_POLICY_FILE);
172
- let contents;
478
+ function workspaceDeploymentMigrationCoordinates(policy) {
479
+ const region = configuredDeploymentRegion(policy.deploymentRegion);
480
+ const accounts = configuredDeploymentAccountTopology(policy.deploymentProfile, policy.deploymentAccounts);
481
+ return activeDeploymentStages(policy.deploymentProfile)
482
+ .map((stage) => ({ accountId: accounts[stage], region, stage }))
483
+ .sort((left, right) => left.stage < right.stage ? -1 : left.stage > right.stage ? 1 : 0);
484
+ }
485
+ function validateRepositoryOperatingPolicyMigrationProvenance(input) {
486
+ if (input.policy.workspaceDeploymentProvenance.kind !== 'migrated')
487
+ return;
488
+ if (node_buffer_1.Buffer.byteLength(input.evidenceBytes, 'utf8') > 131_072) {
489
+ throw new Error(`Workspace deployment migration evidence at ${input.evidenceSource} exceeds the 128 KiB retention bound.`);
490
+ }
491
+ const actualDigest = (0, node_crypto_1.createHash)('sha256')
492
+ .update(input.evidenceBytes, 'utf8')
493
+ .digest('hex');
494
+ if (actualDigest !== input.policy.workspaceDeploymentProvenance.evidenceSha256) {
495
+ throw new Error(`Workspace deployment migration evidence at ${input.evidenceSource} does not match the committed SHA-256 binding.`);
496
+ }
497
+ let evidence;
498
+ try {
499
+ evidence = JSON.parse(input.evidenceBytes);
500
+ }
501
+ catch (error) {
502
+ throw new Error(`Workspace deployment migration evidence at ${input.evidenceSource} is not valid JSON: ${error instanceof Error ? error.message : String(error)}`);
503
+ }
504
+ (0, migration_evidence_js_1.validateWorkspaceDeploymentMigrationEvidence)({
505
+ evidence,
506
+ expectedCoordinates: workspaceDeploymentMigrationCoordinates(input.policy),
507
+ workspaceDeploymentId: input.policy.workspaceDeploymentId,
508
+ });
509
+ }
510
+ function isContainedFilesystemPath(root, path) {
511
+ const fromRoot = (0, node_path_1.relative)(root, path);
512
+ return (fromRoot === '' ||
513
+ (!fromRoot.startsWith(`..${node_path_1.sep}`) &&
514
+ fromRoot !== '..' &&
515
+ !(0, node_path_1.isAbsolute)(fromRoot)));
516
+ }
517
+ function repositoryPolicyWorkspaceRoot(workspaceRoot) {
173
518
  try {
174
- contents = (0, node_fs_1.readFileSync)(path, 'utf8');
519
+ const root = (0, node_fs_1.realpathSync)(workspaceRoot);
520
+ if (!(0, node_fs_1.lstatSync)(root).isDirectory()) {
521
+ throw new Error('workspace root is not a directory');
522
+ }
523
+ return root;
175
524
  }
176
525
  catch (error) {
177
- throw new Error(`Repository Operating Policy is required at ${path}: ${error instanceof Error ? error.message : String(error)}`);
526
+ throw new Error(`Repository Operating Policy workspace root is unavailable at ${workspaceRoot}: ${error instanceof Error ? error.message : String(error)}`);
178
527
  }
179
- return parseRepositoryOperatingPolicy(contents, path);
180
528
  }
181
- function createIncubationRepositoryPolicy() {
529
+ function readBoundedContainedRepositoryFile(input) {
530
+ const segments = input.relativePath.split('/');
531
+ if (input.relativePath.length === 0 ||
532
+ input.relativePath.includes('\0') ||
533
+ input.relativePath.includes('\\') ||
534
+ (0, node_path_1.isAbsolute)(input.relativePath) ||
535
+ segments.some((segment) => segment === '' || segment === '.' || segment === '..')) {
536
+ throw new Error(`${input.label} path escaped the workspace: ${input.relativePath}`);
537
+ }
538
+ const path = (0, node_path_1.resolve)(input.workspaceRoot, ...segments);
539
+ if (!isContainedFilesystemPath(input.workspaceRoot, path)) {
540
+ throw new Error(`${input.label} path escaped the workspace: ${path}`);
541
+ }
542
+ let descriptor;
543
+ try {
544
+ const pathMetadata = (0, node_fs_1.lstatSync)(path);
545
+ if (pathMetadata.isSymbolicLink() || !pathMetadata.isFile()) {
546
+ throw new Error('path is not one regular non-symlink file');
547
+ }
548
+ const resolvedPath = (0, node_fs_1.realpathSync)(path);
549
+ if (!isContainedFilesystemPath(input.workspaceRoot, resolvedPath)) {
550
+ throw new Error(`${input.label} path escaped the workspace through a parent path`);
551
+ }
552
+ descriptor = (0, node_fs_1.openSync)(path, node_fs_1.constants.O_RDONLY | (node_fs_1.constants.O_NOFOLLOW ?? 0));
553
+ const metadata = (0, node_fs_1.fstatSync)(descriptor);
554
+ if (!metadata.isFile() ||
555
+ metadata.dev !== pathMetadata.dev ||
556
+ metadata.ino !== pathMetadata.ino) {
557
+ throw new Error('path changed before it could be read safely');
558
+ }
559
+ if (metadata.size > input.maximumBytes) {
560
+ throw new Error(`file exceeds ${input.maximumDescription}`);
561
+ }
562
+ const capacity = Math.min(input.maximumBytes + 1, metadata.size + 1);
563
+ const buffer = node_buffer_1.Buffer.alloc(capacity);
564
+ let offset = 0;
565
+ while (offset < buffer.byteLength) {
566
+ const count = (0, node_fs_1.readSync)(descriptor, buffer, offset, buffer.byteLength - offset, null);
567
+ if (count === 0)
568
+ break;
569
+ offset += count;
570
+ }
571
+ const finalMetadata = (0, node_fs_1.fstatSync)(descriptor);
572
+ if (offset !== metadata.size ||
573
+ finalMetadata.size !== metadata.size ||
574
+ finalMetadata.mtimeMs !== metadata.mtimeMs ||
575
+ finalMetadata.ctimeMs !== metadata.ctimeMs) {
576
+ throw new Error('file changed while it was read or exceeded its fixed byte bound');
577
+ }
578
+ const finalPathMetadata = (0, node_fs_1.lstatSync)(path);
579
+ const finalResolvedPath = (0, node_fs_1.realpathSync)(path);
580
+ if (finalPathMetadata.isSymbolicLink() ||
581
+ !finalPathMetadata.isFile() ||
582
+ finalPathMetadata.dev !== metadata.dev ||
583
+ finalPathMetadata.ino !== metadata.ino ||
584
+ !isContainedFilesystemPath(input.workspaceRoot, finalResolvedPath)) {
585
+ throw new Error('path changed after it was read safely');
586
+ }
587
+ return {
588
+ contents: buffer.subarray(0, offset).toString('utf8'),
589
+ path: finalResolvedPath,
590
+ };
591
+ }
592
+ catch (error) {
593
+ throw new Error(`${input.label} is required as a bounded contained regular non-symlink file at ${path}: ${error instanceof Error ? error.message : String(error)}`);
594
+ }
595
+ finally {
596
+ if (descriptor !== undefined)
597
+ (0, node_fs_1.closeSync)(descriptor);
598
+ }
599
+ }
600
+ function readRepositoryOperatingPolicy(workspaceRoot) {
601
+ const workspace = repositoryPolicyWorkspaceRoot(workspaceRoot);
602
+ const policySource = readBoundedContainedRepositoryFile({
603
+ label: 'Repository Operating Policy',
604
+ maximumBytes: MAX_REPOSITORY_POLICY_BYTES,
605
+ maximumDescription: 'its 1 MiB control-file bound',
606
+ relativePath: exports.REPOSITORY_POLICY_FILE,
607
+ workspaceRoot: workspace,
608
+ });
609
+ const policy = parseRepositoryOperatingPolicy(policySource.contents, policySource.path);
610
+ if (policy.workspaceDeploymentProvenance.kind === 'migrated') {
611
+ const evidenceSource = readBoundedContainedRepositoryFile({
612
+ label: 'Workspace deployment migration evidence',
613
+ maximumBytes: MAX_WORKSPACE_DEPLOYMENT_MIGRATION_EVIDENCE_BYTES,
614
+ maximumDescription: 'the 128 KiB retention bound',
615
+ relativePath: policy.workspaceDeploymentProvenance.evidencePath,
616
+ workspaceRoot: workspace,
617
+ });
618
+ validateRepositoryOperatingPolicyMigrationProvenance({
619
+ evidenceBytes: evidenceSource.contents,
620
+ evidenceSource: evidenceSource.path,
621
+ policy,
622
+ });
623
+ }
624
+ return policy;
625
+ }
626
+ function createIncubationRepositoryPolicy(deploymentProfile = 'starter', workspaceDeploymentId = (0, identity_js_1.createWorkspaceDeploymentId)()) {
182
627
  return {
183
628
  $schema: exports.REPOSITORY_POLICY_SCHEMA_URL,
629
+ deploymentAccounts: {
630
+ development: null,
631
+ production: null,
632
+ staging: null,
633
+ },
634
+ deploymentProfile,
635
+ deploymentRegion: null,
184
636
  productionAccess: 'disabled',
185
637
  productionApproval: { mode: 'promotion-pr' },
186
638
  productionFoundation: {
187
- profile: exports.DEFAULT_RECOVERY_PRODUCTION_FOUNDATION_PROFILE,
639
+ profile: 'cost-optimized',
188
640
  },
189
641
  schemaVersion: exports.REPOSITORY_POLICY_SCHEMA_VERSION,
190
642
  slices: {},
643
+ workspaceDeploymentId,
644
+ workspaceDeploymentProvenance: { kind: 'fresh', schemaVersion: 1 },
191
645
  };
192
646
  }
193
647
  function applyRepositoryPolicyChange(current, change) {
@@ -209,9 +663,32 @@ function applyRepositoryPolicyChange(current, change) {
209
663
  if (change.productionAccess !== undefined) {
210
664
  next.productionAccess = change.productionAccess;
211
665
  }
666
+ if (change.deploymentProfile !== undefined) {
667
+ next.deploymentProfile = change.deploymentProfile;
668
+ if (change.deploymentProfile === 'starter') {
669
+ next.deploymentAccounts.staging = null;
670
+ }
671
+ }
672
+ if (change.deploymentAccounts !== undefined) {
673
+ next.deploymentAccounts = {
674
+ ...next.deploymentAccounts,
675
+ ...change.deploymentAccounts,
676
+ };
677
+ }
678
+ if (change.deploymentRegion !== undefined) {
679
+ next.deploymentRegion = change.deploymentRegion;
680
+ }
212
681
  if (change.productionApprovalMode !== undefined) {
213
682
  next.productionApproval = { mode: change.productionApprovalMode };
214
683
  }
684
+ if (change.deliveryLane !== undefined) {
685
+ if (change.deliveryLane === exports.DEFAULT_DELIVERY_LANE) {
686
+ delete next.deliveryLane;
687
+ }
688
+ else {
689
+ next.deliveryLane = change.deliveryLane;
690
+ }
691
+ }
215
692
  if (change.productionFoundationProfile !== undefined) {
216
693
  next.productionFoundation = {
217
694
  profile: change.productionFoundationProfile,
@@ -238,6 +715,12 @@ function evaluateRepositoryPolicyRequest(policy, request) {
238
715
  }
239
716
  projectNames.add(project.name);
240
717
  }
718
+ if ((request.stage === 'development' ||
719
+ request.stage === 'staging' ||
720
+ request.stage === 'production') &&
721
+ !isActiveDeploymentStage(policy.deploymentProfile, request.stage)) {
722
+ reasons.push(`Stage ${request.stage} is inactive for the ${policy.deploymentProfile} deployment profile.`);
723
+ }
241
724
  if (request.stage !== 'production') {
242
725
  return { allowed: reasons.length === 0, reasons };
243
726
  }
@@ -269,6 +752,9 @@ function evaluateRepositoryPolicyRequest(policy, request) {
269
752
  }
270
753
  function assertRepositoryPolicyRequest(workspaceRoot, request) {
271
754
  const policy = readRepositoryOperatingPolicy(workspaceRoot);
755
+ if (request.action === 'deploy' && request.stage === 'production') {
756
+ (0, capacity_migration_js_1.assertWorkspaceCapacityMigrationChoice)(workspaceRoot, policy.productionFoundation.profile);
757
+ }
272
758
  const decision = evaluateRepositoryPolicyRequest(policy, request);
273
759
  if (!decision.allowed) {
274
760
  throw new Error(`Repository Operating Policy rejected ${request.action} for ${request.stage}:\n${decision.reasons.map((reason) => `- ${reason}`).join('\n')}`);
@@ -13,15 +13,16 @@
13
13
  "capabilities": {
14
14
  "items": {
15
15
  "enum": [
16
- "network",
16
+ "key-value",
17
17
  "routing",
18
- "container-compute",
19
- "postgres",
20
18
  "identity",
21
19
  "events",
22
20
  "observability",
23
21
  "configuration",
24
- "deployment"
22
+ "deployment",
23
+ "network",
24
+ "container-compute",
25
+ "postgres"
25
26
  ],
26
27
  "type": "string"
27
28
  },
@@ -6,15 +6,16 @@
6
6
  "capabilities": {
7
7
  "items": {
8
8
  "enum": [
9
- "network",
9
+ "key-value",
10
10
  "routing",
11
- "container-compute",
12
- "postgres",
13
11
  "identity",
14
12
  "events",
15
13
  "observability",
16
14
  "configuration",
17
- "deployment"
15
+ "deployment",
16
+ "network",
17
+ "container-compute",
18
+ "postgres"
18
19
  ],
19
20
  "type": "string"
20
21
  },