@empire-builder-kit/nx 1.0.0-rc.37 → 1.0.0-rc.39

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 (637) hide show
  1. package/README.md +18 -0
  2. package/executors.json +5 -0
  3. package/generators.json +10 -0
  4. package/package.json +20 -3
  5. package/src/aws-authority/index.d.ts +1 -0
  6. package/src/aws-authority/index.js +1 -0
  7. package/src/aws-authority/lambda-policy-ordering.d.ts +38 -0
  8. package/src/aws-authority/lambda-policy-ordering.js +56 -0
  9. package/src/aws-authority/stage-authority.d.ts +11 -3
  10. package/src/aws-authority/stage-authority.js +615 -29
  11. package/src/blueprints/external-sandbox.js +21 -9
  12. package/src/blueprints/manifest.d.ts +1 -1
  13. package/src/blueprints/resolver.js +28 -15
  14. package/src/cli/bootstrap.d.ts +1 -1
  15. package/src/cli/deploy-runtime.d.ts +6 -0
  16. package/src/cli/deploy-runtime.js +58 -0
  17. package/src/cli/dev-command.d.ts +16 -4
  18. package/src/cli/dev-command.js +63 -0
  19. package/src/cli/main.d.ts +7 -1
  20. package/src/cli/main.js +128 -20
  21. package/src/cli/output.d.ts +1 -1
  22. package/src/developer-agent/context.js +41 -9
  23. package/src/developer-agent/generator-planning.js +16 -2
  24. package/src/developer-agent/git-inspection.d.ts +6 -2
  25. package/src/developer-agent/git-inspection.js +78 -6
  26. package/src/developer-agent/model.d.ts +4 -2
  27. package/src/developer-agent/operation-registry.d.ts +5 -0
  28. package/src/developer-agent/operation-registry.js +179 -23
  29. package/src/developer-agent/preview-changes.d.ts +2 -0
  30. package/src/developer-agent/preview-changes.js +14 -2
  31. package/src/developer-agent/preview-source.js +3 -0
  32. package/src/developer-agent/validation.js +20 -8
  33. package/src/developer-agent/workspace-inspection.js +37 -3
  34. package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
  35. package/src/executors/deployment-plan/deployment-plan.js +51 -4
  36. package/src/executors/dev-doctor/dev-doctor.js +13 -6
  37. package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
  38. package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
  39. package/src/executors/dev-task-cleanup/schema.json +9 -0
  40. package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
  41. package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
  42. package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
  43. package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
  44. package/src/executors/fleet/fleet.js +1 -1
  45. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +28 -1
  46. package/src/executors/local-deploy/local-deploy.d.ts +8 -1
  47. package/src/executors/local-deploy/local-deploy.js +97 -24
  48. package/src/executors/local-deploy/schema.json +8 -0
  49. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +30 -18
  50. package/src/executors/sst-lifecycle/governed-native-operation.d.ts +2 -0
  51. package/src/executors/sst-lifecycle/governed-native-operation.js +9 -0
  52. package/src/executors/sst-lifecycle/run-sst-command.d.ts +5 -0
  53. package/src/executors/sst-lifecycle/run-sst-command.js +220 -32
  54. package/src/executors/sst-lifecycle/sst-environment-source.d.ts +8 -0
  55. package/src/executors/sst-lifecycle/sst-environment-source.js +54 -0
  56. package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
  57. package/src/executors/sst-lifecycle/task-unlock.js +126 -0
  58. package/src/foundation/capability-plan.d.ts +43 -0
  59. package/src/foundation/capability-plan.js +168 -0
  60. package/src/foundation/discovery.d.ts +14 -11
  61. package/src/foundation/discovery.js +32 -6
  62. package/src/foundation/index.d.ts +1 -0
  63. package/src/foundation/index.js +1 -0
  64. package/src/foundation/local-database-contract.d.ts +20 -0
  65. package/src/foundation/local-database-contract.js +262 -13
  66. package/src/foundation/local-private-smoke-access.d.ts +20 -0
  67. package/src/foundation/local-private-smoke-access.js +197 -0
  68. package/src/foundation/preflight.js +37 -18
  69. package/src/foundation/private-smoke-access.js +10 -2
  70. package/src/foundation/private-smoke-admission.d.ts +3 -1
  71. package/src/foundation/private-smoke-admission.js +29 -8
  72. package/src/foundation/private-smoke-control-plane.js +17 -6
  73. package/src/foundation/provision-database-bindings.d.ts +5 -0
  74. package/src/foundation/provision-database-bindings.js +41 -8
  75. package/src/foundation/provision-logical-database.js +13 -8
  76. package/src/foundation/requirements.d.ts +3 -3
  77. package/src/foundation/requirements.js +24 -12
  78. package/src/foundation/router-waf.d.ts +1 -0
  79. package/src/foundation/router-waf.js +14 -1
  80. package/src/generators/blueprint/blueprint.d.ts +5 -0
  81. package/src/generators/blueprint/blueprint.js +102 -0
  82. package/src/generators/blueprint/files.d.ts +6 -0
  83. package/src/generators/blueprint/files.js +217 -0
  84. package/src/generators/blueprint/schema.d.ts +4 -0
  85. package/src/generators/blueprint/schema.json +18 -0
  86. package/src/generators/formatting.js +24 -1
  87. package/src/generators/logging-registry.d.ts +2 -0
  88. package/src/generators/logging-registry.js +22 -0
  89. package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
  90. package/src/generators/preset/workspace-files-adopter-skills.js +301 -0
  91. package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
  92. package/src/generators/preset/workspace-files-ci-install.js +196 -0
  93. package/src/generators/preset/workspace-files-developer-agent.js +40 -13
  94. package/src/generators/preset/workspace-files-performance-load.js +8 -0
  95. package/src/generators/preset/workspace-files-stage-authority.js +40 -1
  96. package/src/generators/preset/workspace-files-thin-deploy.js +66 -34
  97. package/src/generators/preset/workspace-files-thin-docs.js +64 -18
  98. package/src/generators/preset/workspace-files.d.ts +4 -0
  99. package/src/generators/preset/workspace-files.js +159 -91
  100. package/src/generators/repository-policy/repository-policy.js +37 -0
  101. package/src/generators/slice/built-in-plan-api-contract-files.js +42 -7
  102. package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
  103. package/src/generators/slice/built-in-plan-api-files.js +47 -389
  104. package/src/generators/slice/built-in-plan-async-work-files.js +19 -1912
  105. package/src/generators/slice/built-in-plan-authorization-files.js +92 -329
  106. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +36 -2
  107. package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
  108. package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
  109. package/src/generators/slice/built-in-plan-background-work-files.d.ts +1 -1
  110. package/src/generators/slice/built-in-plan-background-work-files.js +15 -5
  111. package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
  112. package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
  113. package/src/generators/slice/built-in-plan-data-files.js +61 -1164
  114. package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
  115. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +18 -2
  116. package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2446
  117. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +30 -6
  118. package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
  119. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +4 -15
  120. package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
  121. package/src/generators/slice/built-in-plan-foundation-files.js +34 -10
  122. package/src/generators/slice/built-in-plan-frontend-files.js +2 -2
  123. package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
  124. package/src/generators/slice/built-in-plan-infrastructure-files.js +180 -522
  125. package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
  126. package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
  127. package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
  128. package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
  129. package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
  130. package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
  131. package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
  132. package/src/generators/slice/built-in-plan-key-value-delivery.js +120 -0
  133. package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
  134. package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
  135. package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
  136. package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
  137. package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
  138. package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
  139. package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
  140. package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
  141. package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
  142. package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
  143. package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
  144. package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
  145. package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
  146. package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
  147. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
  148. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
  149. package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
  150. package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
  151. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
  152. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
  153. package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
  154. package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
  155. package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
  156. package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
  157. package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
  158. package/src/generators/slice/built-in-plan-metadata-files.js +140 -28
  159. package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +1 -1
  160. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +36 -19
  161. package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
  162. package/src/generators/slice/built-in-plan-operations-files.js +89 -50
  163. package/src/generators/slice/built-in-plan-performance-files.js +84 -1010
  164. package/src/generators/slice/built-in-plan-project-files.js +116 -67
  165. package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
  166. package/src/generators/slice/built-in-plan-release-files.js +64 -15
  167. package/src/generators/slice/built-in-plan-reliability-files.js +54 -28
  168. package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
  169. package/src/generators/slice/built-in-plan-shared.js +41 -19
  170. package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
  171. package/src/generators/slice/built-in-plan-sql-events.js +257 -0
  172. package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
  173. package/src/generators/slice/built-in-plan-testing-files.js +184 -132
  174. package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
  175. package/src/generators/slice/built-in-plan-testing-persistence-files.js +178 -0
  176. package/src/generators/slice/built-in-plan-thin-release-files.d.ts +1 -1
  177. package/src/generators/slice/built-in-plan-thin-release-files.js +35 -2
  178. package/src/generators/slice/built-in-plan-verification-files.js +70 -0
  179. package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
  180. package/src/generators/slice/built-in-plan-web-files.js +206 -14
  181. package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
  182. package/src/generators/slice/built-in-plan-workload-role-files.js +113 -274
  183. package/src/generators/slice/built-in-plan.d.ts +9 -1
  184. package/src/generators/slice/built-in-plan.js +49 -21
  185. package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
  186. package/src/generators/slice/data-policy-review-seed.js +22 -0
  187. package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
  188. package/src/generators/slice/deployed-smoke-readiness.js +214 -0
  189. package/src/generators/slice/local-source-identity.d.ts +2 -0
  190. package/src/generators/slice/local-source-identity.js +31 -0
  191. package/src/generators/slice/persistence-contract.d.ts +14 -0
  192. package/src/generators/slice/persistence-contract.js +32 -0
  193. package/src/generators/slice/slice.js +29 -24
  194. package/src/generators/sql/schema.d.ts +7 -0
  195. package/src/generators/sql/schema.json +38 -0
  196. package/src/generators/sql/sql.d.ts +6 -0
  197. package/src/generators/sql/sql.js +53 -0
  198. package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
  199. package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
  200. package/src/generators/upgrade/upgrade.d.ts +2 -0
  201. package/src/generators/upgrade/upgrade.js +136 -9
  202. package/src/generators/workload/workload.js +51 -2
  203. package/src/local-dev/browser-verification.d.ts +37 -0
  204. package/src/local-dev/browser-verification.js +281 -0
  205. package/src/local-dev/contracts.d.ts +10 -1
  206. package/src/local-dev/contracts.js +114 -13
  207. package/src/local-dev/dev-command-core.js +24 -5
  208. package/src/local-dev/docker-credential-health.d.ts +14 -0
  209. package/src/local-dev/docker-credential-health.js +94 -0
  210. package/src/local-dev/environment-inspector.d.ts +7 -0
  211. package/src/local-dev/environment-inspector.js +42 -15
  212. package/src/local-dev/environment-state.js +2 -2
  213. package/src/local-dev/errors.d.ts +1 -1
  214. package/src/local-dev/errors.js +2 -0
  215. package/src/local-dev/fleet-client.js +2 -2
  216. package/src/local-dev/fleet-configuration.js +57 -25
  217. package/src/local-dev/fleet-inventory.js +46 -18
  218. package/src/local-dev/fleet-ipc.d.ts +7 -0
  219. package/src/local-dev/fleet-ipc.js +14 -2
  220. package/src/local-dev/fleet-launcher.d.ts +6 -0
  221. package/src/local-dev/fleet-launcher.js +14 -2
  222. package/src/local-dev/fleet-logs.js +50 -22
  223. package/src/local-dev/fleet-process.d.ts +20 -1
  224. package/src/local-dev/fleet-process.js +197 -41
  225. package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
  226. package/src/local-dev/fleet-runner-evidence.js +56 -0
  227. package/src/local-dev/fleet-runtime.js +268 -229
  228. package/src/local-dev/fleet-session.d.ts +2 -0
  229. package/src/local-dev/fleet-session.js +28 -11
  230. package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
  231. package/src/local-dev/fleet-state.d.ts +5 -2
  232. package/src/local-dev/fleet-state.js +25 -4
  233. package/src/local-dev/fleet-supervisor.d.ts +3 -0
  234. package/src/local-dev/fleet-supervisor.js +66 -11
  235. package/src/local-dev/fleet-web-start.d.ts +12 -0
  236. package/src/local-dev/fleet-web-start.js +48 -0
  237. package/src/local-dev/identity.js +3 -14
  238. package/src/local-dev/index.d.ts +1 -0
  239. package/src/local-dev/index.js +1 -0
  240. package/src/local-dev/native-completion.d.ts +9 -0
  241. package/src/local-dev/native-completion.js +130 -0
  242. package/src/local-dev/nx-workspace.d.ts +4 -2
  243. package/src/local-dev/nx-workspace.js +11 -6
  244. package/src/local-dev/personal-stage.d.ts +4 -5
  245. package/src/local-dev/personal-stage.js +6 -54
  246. package/src/local-dev/port-claims.d.ts +13 -0
  247. package/src/local-dev/port-claims.js +46 -0
  248. package/src/local-dev/ports.d.ts +14 -2
  249. package/src/local-dev/ports.js +78 -3
  250. package/src/local-dev/private-state.d.ts +6 -0
  251. package/src/local-dev/private-state.js +126 -34
  252. package/src/local-dev/process-group.d.ts +4 -0
  253. package/src/local-dev/process-group.js +29 -0
  254. package/src/local-dev/process-identity.d.ts +8 -0
  255. package/src/local-dev/process-identity.js +31 -1
  256. package/src/local-dev/proxy.js +11 -12
  257. package/src/local-dev/runtime-paths.js +1 -1
  258. package/src/local-dev/slice-claim.js +1 -1
  259. package/src/local-dev/slice-runner.d.ts +15 -6
  260. package/src/local-dev/slice-runner.js +189 -54
  261. package/src/local-dev/task-attachment.d.ts +17 -0
  262. package/src/local-dev/task-attachment.js +73 -0
  263. package/src/local-dev/task-authority.d.ts +10 -0
  264. package/src/local-dev/task-authority.js +27 -0
  265. package/src/local-dev/task-identity.d.ts +33 -0
  266. package/src/local-dev/task-identity.js +418 -0
  267. package/src/local-dev/task-native-writer.d.ts +18 -0
  268. package/src/local-dev/task-native-writer.js +329 -0
  269. package/src/local-dev/tls.js +3 -1
  270. package/src/local-dev/web-launch.d.ts +9 -0
  271. package/src/local-dev/web-launch.js +130 -0
  272. package/src/ownership/composition.d.ts +2 -1
  273. package/src/ownership/composition.js +1 -0
  274. package/src/performance/scenario.d.ts +22 -0
  275. package/src/performance/scenario.js +100 -92
  276. package/src/repository-policy/deployment-plan.d.ts +2 -2
  277. package/src/repository-policy/deployment-plan.js +2 -1
  278. package/src/repository-policy/policy.js +38 -3
  279. package/src/schemas/blueprint-v1.json +5 -4
  280. package/src/schemas/foundation-requirement-v1.json +5 -4
  281. package/src/schemas/testing-evidence-result-v1.json +1 -1
  282. package/src/secrets/operator.d.ts +3 -1
  283. package/src/secrets/operator.js +22 -3
  284. package/src/sst-environment-source-format.d.ts +3 -0
  285. package/src/sst-environment-source-format.js +20 -0
  286. package/src/supply-chain/blueprint-trust-git.js +13 -3
  287. package/src/supply-chain/build-output.js +15 -0
  288. package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
  289. package/src/testing-evidence/fixture-scope.d.ts +2 -1
  290. package/src/testing-evidence/fixture-scope.js +4 -2
  291. package/src/testing-evidence/result.d.ts +2 -1
  292. package/src/testing-evidence/result.js +18 -4
  293. package/src/workload-roles/standard-slice.js +2 -3
  294. package/src/api-contract/baseline-update.js.map +0 -1
  295. package/src/api-contract/compatibility.js.map +0 -1
  296. package/src/api-contract/contract-graph.js.map +0 -1
  297. package/src/api-contract/evidence.js.map +0 -1
  298. package/src/api-contract/index.js.map +0 -1
  299. package/src/api-contract/model.fixtures.d.ts +0 -2
  300. package/src/api-contract/model.fixtures.js +0 -81
  301. package/src/api-contract/model.fixtures.js.map +0 -1
  302. package/src/api-contract/model.js.map +0 -1
  303. package/src/api-contract/rollout.js.map +0 -1
  304. package/src/authorization/compatibility.js.map +0 -1
  305. package/src/authorization/index.js.map +0 -1
  306. package/src/aws/child-environment.js.map +0 -1
  307. package/src/aws/identity.js.map +0 -1
  308. package/src/aws-authority/index.js.map +0 -1
  309. package/src/aws-authority/stage-authority.js.map +0 -1
  310. package/src/blueprints/execution.js.map +0 -1
  311. package/src/blueprints/external-sandbox.js.map +0 -1
  312. package/src/blueprints/index.js.map +0 -1
  313. package/src/blueprints/inputs.js.map +0 -1
  314. package/src/blueprints/manifest.js.map +0 -1
  315. package/src/blueprints/resolver.js.map +0 -1
  316. package/src/blueprints/transitions.js.map +0 -1
  317. package/src/cli/agent-command.js.map +0 -1
  318. package/src/cli/agent-runtime.js.map +0 -1
  319. package/src/cli/blueprint-authority.js.map +0 -1
  320. package/src/cli/blueprint-command.js.map +0 -1
  321. package/src/cli/bootstrap.js.map +0 -1
  322. package/src/cli/dev-command.js.map +0 -1
  323. package/src/cli/main.js.map +0 -1
  324. package/src/cli/output.js.map +0 -1
  325. package/src/cli/personal-secret-runtime.js.map +0 -1
  326. package/src/cli/secret-terminal.js.map +0 -1
  327. package/src/container-images.js.map +0 -1
  328. package/src/data-lifecycle/index.js.map +0 -1
  329. package/src/data-lifecycle/model.fixtures.d.ts +0 -2
  330. package/src/data-lifecycle/model.fixtures.js +0 -244
  331. package/src/data-lifecycle/model.fixtures.js.map +0 -1
  332. package/src/data-lifecycle/model.js.map +0 -1
  333. package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
  334. package/src/data-lifecycle/validation.js.map +0 -1
  335. package/src/database-retirement/contract.js.map +0 -1
  336. package/src/database-retirement/index.js.map +0 -1
  337. package/src/deterministic-order.js.map +0 -1
  338. package/src/developer-agent/context.js.map +0 -1
  339. package/src/developer-agent/generator-planning.js.map +0 -1
  340. package/src/developer-agent/generator-preview.js.map +0 -1
  341. package/src/developer-agent/git-inspection.js.map +0 -1
  342. package/src/developer-agent/handoff.js.map +0 -1
  343. package/src/developer-agent/index.js.map +0 -1
  344. package/src/developer-agent/model.js.map +0 -1
  345. package/src/developer-agent/operation-registry.js.map +0 -1
  346. package/src/developer-agent/ordering.js.map +0 -1
  347. package/src/developer-agent/planning.js.map +0 -1
  348. package/src/developer-agent/preview-changes.js.map +0 -1
  349. package/src/developer-agent/preview-source.js.map +0 -1
  350. package/src/developer-agent/validation.js.map +0 -1
  351. package/src/developer-agent/workspace-inspection.js.map +0 -1
  352. package/src/developer-agent/workspace-path.js.map +0 -1
  353. package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
  354. package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
  355. package/src/executors/deploy/deploy.js.map +0 -1
  356. package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
  357. package/src/executors/dev/dev.js.map +0 -1
  358. package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
  359. package/src/executors/dev-setup/dev-setup.js.map +0 -1
  360. package/src/executors/developer-context/developer-context.js.map +0 -1
  361. package/src/executors/fleet/fleet.js.map +0 -1
  362. package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
  363. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
  364. package/src/executors/foundation-profile-preflight/production-database-safeguard.js.map +0 -1
  365. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
  366. package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
  367. package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
  368. package/src/executors/local-deploy/federated-credential-transport.js.map +0 -1
  369. package/src/executors/local-deploy/fixtures/local-deploy-state-machine.mjs +0 -53
  370. package/src/executors/local-deploy/local-approval.js.map +0 -1
  371. package/src/executors/local-deploy/local-deploy.js.map +0 -1
  372. package/src/executors/refresh/refresh.js.map +0 -1
  373. package/src/executors/remove/remove.js.map +0 -1
  374. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js.map +0 -1
  375. package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
  376. package/src/executors/secret-initialize/secret-initialize.js.map +0 -1
  377. package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
  378. package/src/executors/sst-lifecycle/generated-secret-retirement.js.map +0 -1
  379. package/src/executors/sst-lifecycle/governed-native-operation.js.map +0 -1
  380. package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
  381. package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
  382. package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
  383. package/src/executors/sst-lifecycle/sst-environment-source.js.map +0 -1
  384. package/src/executors/unlock/unlock.js.map +0 -1
  385. package/src/executors/work-markers/work-markers.js.map +0 -1
  386. package/src/foundation/discovery.js.map +0 -1
  387. package/src/foundation/index.js.map +0 -1
  388. package/src/foundation/local-database-contract.js.map +0 -1
  389. package/src/foundation/logging-preflight.js.map +0 -1
  390. package/src/foundation/logging.js.map +0 -1
  391. package/src/foundation/partial-state.js.map +0 -1
  392. package/src/foundation/preflight.js.map +0 -1
  393. package/src/foundation/private-smoke-access.js.map +0 -1
  394. package/src/foundation/private-smoke-admission.js.map +0 -1
  395. package/src/foundation/private-smoke-control-plane.js.map +0 -1
  396. package/src/foundation/provision-database-bindings.js.map +0 -1
  397. package/src/foundation/provision-logical-database.js.map +0 -1
  398. package/src/foundation/requirements.js.map +0 -1
  399. package/src/foundation/router-origin-proof.js.map +0 -1
  400. package/src/foundation/router-waf-rate-rehearsal.js.map +0 -1
  401. package/src/foundation/router-waf.js.map +0 -1
  402. package/src/foundation/stages.js.map +0 -1
  403. package/src/frontend-security/index.js.map +0 -1
  404. package/src/frontend-security/security-headers.js.map +0 -1
  405. package/src/generators/feature-registry.js.map +0 -1
  406. package/src/generators/formatting.js.map +0 -1
  407. package/src/generators/function/function.js.map +0 -1
  408. package/src/generators/job/job.js.map +0 -1
  409. package/src/generators/logging-registry.js.map +0 -1
  410. package/src/generators/post-generation-install.js.map +0 -1
  411. package/src/generators/preset/dependency-overrides.js.map +0 -1
  412. package/src/generators/preset/generator.js.map +0 -1
  413. package/src/generators/preset/tool-versions.js.map +0 -1
  414. package/src/generators/preset/workspace-files-ci-acceptance.js.map +0 -1
  415. package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
  416. package/src/generators/preset/workspace-files-ecr-inspector.js.map +0 -1
  417. package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
  418. package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
  419. package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
  420. package/src/generators/preset/workspace-files-stage-authority.js.map +0 -1
  421. package/src/generators/preset/workspace-files-thin-deploy.js.map +0 -1
  422. package/src/generators/preset/workspace-files-thin-docs.js.map +0 -1
  423. package/src/generators/preset/workspace-files-thin-release.js.map +0 -1
  424. package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
  425. package/src/generators/preset/workspace-files.js.map +0 -1
  426. package/src/generators/repository-policy/repository-policy.js.map +0 -1
  427. package/src/generators/repository-policy/tree-policy.js.map +0 -1
  428. package/src/generators/service/service.js.map +0 -1
  429. package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
  430. package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
  431. package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
  432. package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
  433. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
  434. package/src/generators/slice/built-in-plan-background-work-files.js.map +0 -1
  435. package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
  436. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
  437. package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
  438. package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
  439. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
  440. package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
  441. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
  442. package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
  443. package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
  444. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
  445. package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
  446. package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
  447. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
  448. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
  449. package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
  450. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js.map +0 -1
  451. package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
  452. package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
  453. package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
  454. package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
  455. package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
  456. package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
  457. package/src/generators/slice/built-in-plan-shared.js.map +0 -1
  458. package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
  459. package/src/generators/slice/built-in-plan-thin-release-files.js.map +0 -1
  460. package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
  461. package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
  462. package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
  463. package/src/generators/slice/built-in-plan.js.map +0 -1
  464. package/src/generators/slice/slice.js.map +0 -1
  465. package/src/generators/upgrade/upgrade.js.map +0 -1
  466. package/src/generators/workload/frozen-container.js.map +0 -1
  467. package/src/generators/workload/performance-registration.js.map +0 -1
  468. package/src/generators/workload/reliability-registration.js.map +0 -1
  469. package/src/generators/workload/service-performance-files.js.map +0 -1
  470. package/src/generators/workload/workload.js.map +0 -1
  471. package/src/git-policy/action-pins.js.map +0 -1
  472. package/src/git-policy/github-bootstrap.js.map +0 -1
  473. package/src/git-policy/index.js.map +0 -1
  474. package/src/git-policy/routing.js.map +0 -1
  475. package/src/index.js.map +0 -1
  476. package/src/infrastructure-change/convergence.js.map +0 -1
  477. package/src/infrastructure-change/drift.js.map +0 -1
  478. package/src/infrastructure-change/index.js.map +0 -1
  479. package/src/infrastructure-change/local-capability.js.map +0 -1
  480. package/src/infrastructure-change/model.js.map +0 -1
  481. package/src/infrastructure-change/normalize.js.map +0 -1
  482. package/src/infrastructure-change/plan.js.map +0 -1
  483. package/src/infrastructure-change/risk.js.map +0 -1
  484. package/src/infrastructure-change/summary.js.map +0 -1
  485. package/src/local-dev/context-discovery.js.map +0 -1
  486. package/src/local-dev/contract-validation.js.map +0 -1
  487. package/src/local-dev/contracts.js.map +0 -1
  488. package/src/local-dev/control-contract.js.map +0 -1
  489. package/src/local-dev/dev-command-core.js.map +0 -1
  490. package/src/local-dev/effects.js.map +0 -1
  491. package/src/local-dev/environment-inspector.js.map +0 -1
  492. package/src/local-dev/environment-state.js.map +0 -1
  493. package/src/local-dev/errors.js.map +0 -1
  494. package/src/local-dev/fleet-client.js.map +0 -1
  495. package/src/local-dev/fleet-configuration.js.map +0 -1
  496. package/src/local-dev/fleet-inventory.js.map +0 -1
  497. package/src/local-dev/fleet-ipc.js.map +0 -1
  498. package/src/local-dev/fleet-launcher.js.map +0 -1
  499. package/src/local-dev/fleet-lock.js.map +0 -1
  500. package/src/local-dev/fleet-logs.js.map +0 -1
  501. package/src/local-dev/fleet-process.js.map +0 -1
  502. package/src/local-dev/fleet-runtime.js.map +0 -1
  503. package/src/local-dev/fleet-session.js.map +0 -1
  504. package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
  505. package/src/local-dev/fleet-startup.js.map +0 -1
  506. package/src/local-dev/fleet-state.js.map +0 -1
  507. package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
  508. package/src/local-dev/fleet-supervisor.js.map +0 -1
  509. package/src/local-dev/gateway-daemon.js.map +0 -1
  510. package/src/local-dev/gateway.js.map +0 -1
  511. package/src/local-dev/identity.js.map +0 -1
  512. package/src/local-dev/index.js.map +0 -1
  513. package/src/local-dev/local-context.js.map +0 -1
  514. package/src/local-dev/nx-workspace.js.map +0 -1
  515. package/src/local-dev/personal-secret-ledger.js.map +0 -1
  516. package/src/local-dev/personal-stage.js.map +0 -1
  517. package/src/local-dev/portless.js.map +0 -1
  518. package/src/local-dev/ports.js.map +0 -1
  519. package/src/local-dev/private-state.js.map +0 -1
  520. package/src/local-dev/process-identity.js.map +0 -1
  521. package/src/local-dev/proxy.js.map +0 -1
  522. package/src/local-dev/runtime-paths.js.map +0 -1
  523. package/src/local-dev/secret-slice-claim.js.map +0 -1
  524. package/src/local-dev/slice-claim.js.map +0 -1
  525. package/src/local-dev/slice-runner.js.map +0 -1
  526. package/src/local-dev/tls.js.map +0 -1
  527. package/src/ownership/composition.js.map +0 -1
  528. package/src/ownership/foundation-record.js.map +0 -1
  529. package/src/ownership/hash.js.map +0 -1
  530. package/src/ownership/index.js.map +0 -1
  531. package/src/ownership/json-ownership.js.map +0 -1
  532. package/src/ownership/record.js.map +0 -1
  533. package/src/ownership/workspace-record.js.map +0 -1
  534. package/src/performance/cost-collection.js.map +0 -1
  535. package/src/performance/cost-controls.js.map +0 -1
  536. package/src/performance/evidence.js.map +0 -1
  537. package/src/performance/index.js.map +0 -1
  538. package/src/performance/load-safety.js.map +0 -1
  539. package/src/performance/model.js.map +0 -1
  540. package/src/performance/pr-artifact-budget.js.map +0 -1
  541. package/src/performance/runner.js.map +0 -1
  542. package/src/performance/scenario-endpoint.js.map +0 -1
  543. package/src/performance/scenario.js.map +0 -1
  544. package/src/performance/test-fixtures.d.ts +0 -7
  545. package/src/performance/test-fixtures.js +0 -167
  546. package/src/performance/test-fixtures.js.map +0 -1
  547. package/src/performance/unit-cost.js.map +0 -1
  548. package/src/release/index.js.map +0 -1
  549. package/src/release/lifecycle.js.map +0 -1
  550. package/src/release/manifest.js.map +0 -1
  551. package/src/release/rollout.js.map +0 -1
  552. package/src/release/source-authority.js.map +0 -1
  553. package/src/repository-policy/aurora-preflight.js.map +0 -1
  554. package/src/repository-policy/capacity-migration.js.map +0 -1
  555. package/src/repository-policy/deployment-plan.js.map +0 -1
  556. package/src/repository-policy/foundation-profile.js.map +0 -1
  557. package/src/repository-policy/index.js.map +0 -1
  558. package/src/repository-policy/policy.js.map +0 -1
  559. package/src/secrets/adapters.js.map +0 -1
  560. package/src/secrets/aws-control-plane.js.map +0 -1
  561. package/src/secrets/declaration-verification.js.map +0 -1
  562. package/src/secrets/generated-aws-control-plane.js.map +0 -1
  563. package/src/secrets/guardrails.js.map +0 -1
  564. package/src/secrets/index.js.map +0 -1
  565. package/src/secrets/metadata.js.map +0 -1
  566. package/src/secrets/model.js.map +0 -1
  567. package/src/secrets/operator.js.map +0 -1
  568. package/src/secrets/permissions.js.map +0 -1
  569. package/src/secrets/personal-command.js.map +0 -1
  570. package/src/secrets/personal-ledger.js.map +0 -1
  571. package/src/secrets/registry.js.map +0 -1
  572. package/src/secrets/verification.js.map +0 -1
  573. package/src/secrets/workload-access.js.map +0 -1
  574. package/src/sst-environment-source-format.js.map +0 -1
  575. package/src/supply-chain/action-pins.js.map +0 -1
  576. package/src/supply-chain/blueprint-trust-git.js.map +0 -1
  577. package/src/supply-chain/blueprint-trust-process.js.map +0 -1
  578. package/src/supply-chain/blueprint-trust.js.map +0 -1
  579. package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
  580. package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
  581. package/src/supply-chain/build-output-bounds.js.map +0 -1
  582. package/src/supply-chain/build-output.js.map +0 -1
  583. package/src/supply-chain/common.js.map +0 -1
  584. package/src/supply-chain/container-artifact-contract.js.map +0 -1
  585. package/src/supply-chain/container-release.js.map +0 -1
  586. package/src/supply-chain/ecr-applicability.js.map +0 -1
  587. package/src/supply-chain/ecr-scanning.js.map +0 -1
  588. package/src/supply-chain/ecs-deployed-image.js.map +0 -1
  589. package/src/supply-chain/errors.js.map +0 -1
  590. package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
  591. package/src/supply-chain/generated-command.js.map +0 -1
  592. package/src/supply-chain/generated-container-release-command.js.map +0 -1
  593. package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
  594. package/src/supply-chain/generated-files.js.map +0 -1
  595. package/src/supply-chain/generated-scanner-command.js.map +0 -1
  596. package/src/supply-chain/index.js.map +0 -1
  597. package/src/supply-chain/inventory.js.map +0 -1
  598. package/src/supply-chain/license-expression.js.map +0 -1
  599. package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
  600. package/src/supply-chain/policy.js.map +0 -1
  601. package/src/supply-chain/publication.js.map +0 -1
  602. package/src/supply-chain/sbom.js.map +0 -1
  603. package/src/supply-chain/scanner.js.map +0 -1
  604. package/src/supply-chain/vendored-source.js.map +0 -1
  605. package/src/testing-evidence/fixture-scope.js.map +0 -1
  606. package/src/testing-evidence/index.js.map +0 -1
  607. package/src/testing-evidence/quarantine.js.map +0 -1
  608. package/src/testing-evidence/result.js.map +0 -1
  609. package/src/testing-evidence/runner-adapter.js.map +0 -1
  610. package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
  611. package/src/validation.js.map +0 -1
  612. package/src/work-markers/index.js.map +0 -1
  613. package/src/work-markers/work-markers.js.map +0 -1
  614. package/src/workload-roles/account-baseline.js.map +0 -1
  615. package/src/workload-roles/authority.js.map +0 -1
  616. package/src/workload-roles/aws-adapter.js.map +0 -1
  617. package/src/workload-roles/aws-internal-handler.js.map +0 -1
  618. package/src/workload-roles/aws-s3-state.js.map +0 -1
  619. package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
  620. package/src/workload-roles/boundary.js.map +0 -1
  621. package/src/workload-roles/convergence.js.map +0 -1
  622. package/src/workload-roles/effective-policy.js.map +0 -1
  623. package/src/workload-roles/handler.js.map +0 -1
  624. package/src/workload-roles/history.js.map +0 -1
  625. package/src/workload-roles/index.js.map +0 -1
  626. package/src/workload-roles/injection.js.map +0 -1
  627. package/src/workload-roles/manifest.js.map +0 -1
  628. package/src/workload-roles/provisioner.js.map +0 -1
  629. package/src/workload-roles/registration.js.map +0 -1
  630. package/src/workload-roles/stage-boundary.js.map +0 -1
  631. package/src/workload-roles/standard-slice.js.map +0 -1
  632. package/src/workspace-deployment/affected-lifecycle.js.map +0 -1
  633. package/src/workspace-deployment/identity.js.map +0 -1
  634. package/src/workspace-deployment/index.js.map +0 -1
  635. package/src/workspace-deployment/migration-evidence.js.map +0 -1
  636. package/src/workspace-deployment/migration.js.map +0 -1
  637. package/src/workspace-deployment/ownership.js.map +0 -1
@@ -10,6 +10,7 @@ const sensitive_patterns_1 = require("@empire-builder-kit/runtime/sensitive-patt
10
10
  const dependency_overrides_js_1 = require("./dependency-overrides.js");
11
11
  const index_js_1 = require("../../ownership/index.js");
12
12
  const index_js_2 = require("../../frontend-security/index.js");
13
+ const capability_plan_js_1 = require("../../foundation/capability-plan.js");
13
14
  const index_js_3 = require("../../git-policy/index.js");
14
15
  const index_js_4 = require("../../repository-policy/index.js");
15
16
  const index_js_5 = require("../../release/index.js");
@@ -18,6 +19,8 @@ const deterministic_order_js_1 = require("../../deterministic-order.js");
18
19
  const tool_versions_js_1 = require("./tool-versions.js");
19
20
  const workspace_files_developer_agent_js_1 = require("./workspace-files-developer-agent.js");
20
21
  const workspace_files_ci_acceptance_js_1 = require("./workspace-files-ci-acceptance.js");
22
+ const workspace_files_ci_install_js_1 = require("./workspace-files-ci-install.js");
23
+ const workspace_files_adopter_skills_js_1 = require("./workspace-files-adopter-skills.js");
21
24
  const workspace_files_ecr_inspector_js_1 = require("./workspace-files-ecr-inspector.js");
22
25
  const workspace_files_thin_deploy_js_1 = require("./workspace-files-thin-deploy.js");
23
26
  const workspace_files_thin_docs_js_1 = require("./workspace-files-thin-docs.js");
@@ -186,7 +189,7 @@ function protectedSecretPolicyDerivationScript() {
186
189
  return `node --input-type=module <<'NODE'
187
190
  import { appendFileSync } from 'node:fs';
188
191
  import {
189
- configuredDeploymentAccountTopology,
192
+ configuredDeploymentAccountForStage,
190
193
  configuredDeploymentRegion,
191
194
  isActiveDeploymentStage,
192
195
  readRepositoryOperatingPolicy,
@@ -203,16 +206,18 @@ if (policy.deploymentProfile !== renderedProfile) {
203
206
  if (!isActiveDeploymentStage(policy.deploymentProfile, stage)) {
204
207
  throw new Error('Secret workflow stage is inactive for the committed deployment profile.');
205
208
  }
206
- const accounts = configuredDeploymentAccountTopology(
209
+ configuredDeploymentAccountForStage(
207
210
  policy.deploymentProfile,
208
211
  policy.deploymentAccounts,
212
+ stage,
209
213
  );
214
+ const accounts = policy.deploymentAccounts;
210
215
  const region = configuredDeploymentRegion(policy.deploymentRegion);
211
216
  appendFileSync(output, [
212
217
  'deployment_region=' + region,
213
- 'development_account_id=' + accounts.development,
218
+ 'development_account_id=' + (accounts.development ?? ''),
214
219
  'staging_account_id=' + (accounts.staging ?? ''),
215
- 'production_account_id=' + accounts.production,
220
+ 'production_account_id=' + (accounts.production ?? ''),
216
221
  '',
217
222
  ].join('\\n'));
218
223
  NODE`;
@@ -1170,6 +1175,10 @@ function createWorkspaceOwnership(files, frameworkVersion) {
1170
1175
  }
1171
1176
  function renderWorkspaceFiles(options) {
1172
1177
  const { frameworkVersion, name } = options;
1178
+ const foundationPlan = (0, capability_plan_js_1.planFoundationCapabilities)({
1179
+ current: options.foundationDescriptor,
1180
+ requirements: options.foundationRequirements ?? [],
1181
+ });
1173
1182
  const dependencyOverrides = (0, dependency_overrides_js_1.parseDependencyOverrides)(options.dependencyOverrides === undefined
1174
1183
  ? { schemaVersion: 1, overrides: {} }
1175
1184
  : options.dependencyOverrides);
@@ -1249,6 +1258,7 @@ function renderWorkspaceFiles(options) {
1249
1258
  const stagingApplyJobPrefix = 'apply staging plan ';
1250
1259
  const files = {
1251
1260
  ...(0, workspace_files_ci_acceptance_js_1.renderWorkspaceCiAcceptanceFiles)(),
1261
+ ...(0, workspace_files_ci_install_js_1.renderWorkspaceCiInstallFiles)(),
1252
1262
  '.node-version': `${tool_versions_js_1.WORKSPACE_NODE_VERSION}\n`,
1253
1263
  '.github/CODEOWNERS': `# Replace this placeholder with the GitHub user or team that owns protected source.
1254
1264
  # GitHub bootstrap remains blocked until a non-placeholder catch-all owner is committed.
@@ -1346,7 +1356,7 @@ jobs:
1346
1356
  with:
1347
1357
  node-version: ${tool_versions_js_1.WORKSPACE_NODE_VERSION}
1348
1358
  cache: pnpm
1349
- - run: pnpm install --frozen-lockfile
1359
+ - run: node tools/ci/install.mjs
1350
1360
  - run: node tools/ebk-git-policy.mjs
1351
1361
  env:
1352
1362
  EBK_HEAD_REPOSITORY: \${{ github.event.pull_request.head.repo.full_name }}
@@ -1366,7 +1376,7 @@ jobs:
1366
1376
  with:
1367
1377
  node-version: ${tool_versions_js_1.WORKSPACE_NODE_VERSION}
1368
1378
  cache: pnpm
1369
- - run: pnpm install --frozen-lockfile
1379
+ - run: node tools/ci/install.mjs
1370
1380
  ${nxCacheSteps}
1371
1381
  - run: pnpm format:check
1372
1382
  - name: Resolve the affected base and head for proposed work
@@ -1444,15 +1454,19 @@ ${nxCacheSteps}
1444
1454
  with:
1445
1455
  node-version: ${tool_versions_js_1.WORKSPACE_NODE_VERSION}
1446
1456
  cache: pnpm
1447
- - run: pnpm install --frozen-lockfile
1457
+ - run: node tools/ci/install.mjs
1448
1458
  ${nxCacheSteps}
1449
1459
  - name: Build immutable release candidates
1460
+ id: candidates
1450
1461
  env:
1451
1462
  EBK_SOURCE_COMMIT: \${{ github.sha }}
1452
1463
  run: |
1453
- slice_projects="$(pnpm nx show projects --with-target=release-candidate --json | jq -r 'join(",")')"
1454
- test -n "$slice_projects" ||
1455
- { echo 'At least one release-candidate target is required'; exit 1; }
1464
+ slice_projects="$(node tools/ci/release-candidates.mjs)"
1465
+ if [ -z "$slice_projects" ]; then
1466
+ echo 'No application release producers; application artifacts are not applicable.'
1467
+ echo 'available=false' >> "$GITHUB_OUTPUT"
1468
+ exit 0
1469
+ fi
1456
1470
  pnpm nx run-many -t release-candidate --projects="$slice_projects" --parallel=3
1457
1471
  mkdir -p .ebk/evidence/release-candidate/packages
1458
1472
  IFS=',' read -r -a projects <<< "$slice_projects"
@@ -1463,7 +1477,9 @@ ${nxCacheSteps}
1463
1477
  cp packages/"$project"/.ebk/evidence/release-candidate/*.json \
1464
1478
  ".ebk/evidence/release-candidate/packages/$project/"
1465
1479
  done
1480
+ echo 'available=true' >> "$GITHUB_OUTPUT"
1466
1481
  - name: Retain exact immutable release candidate
1482
+ if: steps.candidates.outputs.available == 'true'
1467
1483
  uses: ${uploadArtifactAction}
1468
1484
  with:
1469
1485
  name: release-candidate-\${{ github.sha }}
@@ -7684,6 +7700,12 @@ infrastructure or protected deployment policy. Preserve the ownership boundary r
7684
7700
  \`.ebk/ownership.json\`: managed files belong to EBK, seeded files are generated starting
7685
7701
  points that adopters may change, and unrecorded files are adopter-owned.
7686
7702
 
7703
+ Ordinary feature work uses affected tests, typecheck, lint, and ownership checks.
7704
+ At a local milestone, \`pnpm verify\` checks current source through
7705
+ \`${name}:verify-proposed\`, including before the first Git commit. This is not
7706
+ protected Blueprint acceptance. The separate \`${name}:verify\` target and
7707
+ protected GitHub workflows retain their committed-history and trust gates.
7708
+
7687
7709
  Human-supplied secret values are a human-only TTY ceremony. Agents and CI must
7688
7710
  never invoke \`ebk secret set\` or \`ebk secret remove\`. They may use
7689
7711
  value-blind metadata, status, verification, and the exact generated-secret
@@ -7765,10 +7787,13 @@ ${activeStages.join(', ')}. Each active canonical consumer stage uses the matchi
7765
7787
  Inactive canonical stages are rejected. Framework-derived personal stages may use only the
7766
7788
  \`development\` Foundation; generic preview stages are unsupported.
7767
7789
 
7768
- Every active canonical stage owns a separate Router/domain, Aurora cluster and migration history,
7769
- Cognito user pool, event bus, secret namespace, IAM boundary, logs, queues, ECR namespace, and
7790
+ Every active canonical stage owns a separate Router/domain, Cognito user pool,
7791
+ event bus, secret namespace, IAM boundary, logs, queues, ECR namespace, and
7770
7792
  stage-qualified SSM discovery contract. Discovery rejects a record for an inactive or different
7771
- canonical stage.
7793
+ canonical stage. DynamoDB tables belong to individual Slices/tasks, not one global application
7794
+ table. Declared relational features add an independent Aurora cluster per canonical stage,
7795
+ with separate logical databases and migration histories per Slice. Existing relational resources
7796
+ remain declared on upgrade and after removing their last consumer; that is not database retirement.
7772
7797
  `,
7773
7798
  'docs/work-markers.md': `# Agent work markers
7774
7799
 
@@ -7891,7 +7916,7 @@ must be committed, reviewable, and auditable.
7891
7916
  lint: `nx run-many -t lint --exclude=${name}`,
7892
7917
  test: `nx run-many -t test --exclude=${name}`,
7893
7918
  typecheck: `nx run-many -t typecheck --exclude=${name}`,
7894
- verify: `nx format:check --all && nx run ${name}:verify && nx run-many -t verify --exclude=${name}`,
7919
+ verify: `nx format:check --all && nx run ${name}:verify-proposed && nx run-many -t verify --exclude=${name}`,
7895
7920
  },
7896
7921
  dependencies: {
7897
7922
  '@empire-builder-kit/runtime': frameworkVersion,
@@ -8043,23 +8068,11 @@ must be committed, reviewable, and auditable.
8043
8068
  },
8044
8069
  },
8045
8070
  }),
8046
- 'packages/foundation/contracts/foundation.json': json({
8047
- contractVersion: '1.0.0',
8048
- capabilities: [
8049
- 'network',
8050
- 'routing',
8051
- 'container-compute',
8052
- 'postgres',
8053
- 'identity',
8054
- 'events',
8055
- 'observability',
8056
- 'configuration',
8057
- 'deployment',
8058
- ],
8059
- }),
8071
+ 'packages/foundation/contracts/foundation.json': json(foundationPlan.descriptor),
8060
8072
  'packages/foundation/contracts/costs.json': json({
8061
- schemaVersion: 2,
8073
+ schemaVersion: 3,
8062
8074
  aurora: {
8075
+ declared: foundationPlan.resources.postgres,
8063
8076
  engine: index_js_4.FOUNDATION_AURORA_ENGINE_FAMILY,
8064
8077
  engineVersion: index_js_4.FOUNDATION_AURORA_ENGINE_VERSION,
8065
8078
  },
@@ -8067,23 +8080,29 @@ must be committed, reviewable, and auditable.
8067
8080
  productionProfileSource: 'ebk.repository-policy.json',
8068
8081
  stages: {
8069
8082
  development: {
8070
- aurora: 'scale-to-zero',
8083
+ aurora: foundationPlan.resources.postgres
8084
+ ? 'scale-to-zero'
8085
+ : 'not-declared',
8071
8086
  dataRetention: 'retained',
8072
- nat: 'ec2',
8087
+ nat: foundationPlan.resources.network ? 'ec2' : 'none',
8073
8088
  },
8074
8089
  ...(deploymentProfile === 'starter'
8075
8090
  ? {}
8076
8091
  : {
8077
8092
  staging: {
8078
- aurora: 'scale-to-zero',
8093
+ aurora: foundationPlan.resources.postgres
8094
+ ? 'scale-to-zero'
8095
+ : 'not-declared',
8079
8096
  dataRetention: 'retained',
8080
- nat: 'ec2',
8097
+ nat: foundationPlan.resources.network ? 'ec2' : 'none',
8081
8098
  },
8082
8099
  }),
8083
8100
  production: {
8084
- aurora: 'repository-policy',
8101
+ aurora: foundationPlan.resources.postgres
8102
+ ? 'repository-policy'
8103
+ : 'not-declared',
8085
8104
  dataRetention: 'retained-and-protected',
8086
- nat: 'managed',
8105
+ nat: foundationPlan.resources.network ? 'managed' : 'none',
8087
8106
  },
8088
8107
  },
8089
8108
  usagePriced: [
@@ -8098,16 +8117,21 @@ must be committed, reviewable, and auditable.
8098
8117
  'packages/foundation/contracts/frontend-security-headers.json': json((0, index_js_2.foundationFrontendSecurityHeaderPolicy)()),
8099
8118
  'packages/foundation/docs/costs.md': `# Foundation cost contract
8100
8119
 
8101
- The VPC NAT path and Aurora capacity are the main fixed-cost decisions.
8120
+ The default Foundation has no Aurora, VPC/NAT, or ECS cluster. Slice-scoped DynamoDB
8121
+ is the first persistence choice. A relational requirement adds Aurora and its
8122
+ network/container migration dependencies; an explicit network workload can also
8123
+ require those dependencies without SQL. Previously provisioned capabilities stay
8124
+ declared until an explicit retirement operation, even with no remaining consumers.
8102
8125
  The machine-readable stage inventory is \`../contracts/costs.json\`; keep this
8103
8126
  seeded decision record aligned with organization-specific budgets and alerts.
8104
8127
 
8105
- - Development uses EC2 NAT, a development bastion, and Aurora scale-to-zero.
8106
- ${deploymentProfile === 'starter' ? '' : '- Staging uses EC2 NAT and Aurora scale-to-zero by default.\n'}- Production always uses managed NAT and retains protected data. Its explicit Repository
8128
+ - When network/SQL is declared, development uses EC2 NAT, a development bastion,
8129
+ and Aurora scale-to-zero.
8130
+ ${deploymentProfile === 'starter' ? '' : '- Declared staging network/SQL uses EC2 NAT and Aurora scale-to-zero by default.\n'}- Declared production networking uses managed NAT; production retains protected data. Its explicit Repository
8107
8131
  Operating Policy profile selects cost-optimized (0–2 ACUs, pause after five idle
8108
8132
  minutes), balanced (0.5–4 ACUs, always warm), or standard (2–16 ACUs, always warm).
8109
- New starter repositories default to cost-optimized. Cold resume typically takes
8110
- about 15 seconds and can exceed 30 seconds after extended inactivity; validate
8133
+ Newly generated repositories default to cost-optimized in every deployment profile.
8134
+ Cold resume adds latency; measure it for the workload and validate
8111
8135
  connection retries, request timeouts, migrations, and background polling.
8112
8136
  Capacity is shared by all Slices. Open connections can prevent pausing; storage
8113
8137
  and managed NAT remain billable while Aurora compute is paused.
@@ -8122,10 +8146,11 @@ the SST configuration.
8122
8146
  'packages/foundation/docs/security.md': `# Foundation security contract
8123
8147
 
8124
8148
  - Production resources are retained and protected.
8125
- - The shared Aurora master credential is Foundation-internal.
8126
- - Aurora IAM authentication is enabled for generated short-lived migration
8149
+ - When relational persistence is declared, the shared Aurora master credential is Foundation-internal.
8150
+ - Declared Aurora IAM authentication is enabled for generated short-lived migration
8127
8151
  tasks. The exact cluster resource ID is non-secret Foundation discovery.
8128
- - Product slices receive scoped logical-database credentials through the provisioning contract.
8152
+ - Relational Product Slices receive scoped logical-database credentials through the provisioning contract.
8153
+ - DynamoDB tables and their access are Slice/task scoped; no shared Foundation application table exists.
8129
8154
  - Cognito owns authentication; product slices own authorization policy and app clients.
8130
8155
  - Lambda and server-side web workloads use resource linking. Containers use the documented
8131
8156
  stage-scoped SSM/secret path and least-privilege IAM.
@@ -8168,10 +8193,9 @@ declare const $app: {
8168
8193
 
8169
8194
  import {
8170
8195
  FOUNDATION_SSM_SCHEMA_VERSION,
8171
- STANDARD_FOUNDATION_CAPABILITIES,
8172
8196
  createRouterWafRules,
8173
8197
  createRouterWafStagePlan,
8174
- foundationDatabaseEndpointHost,
8198
+ ${foundationPlan.resources.postgres ? ' foundationDatabaseEndpointHost,' : ''}
8175
8199
  foundationSsmPath,
8176
8200
  normalizeRouterWafPolicy,
8177
8201
  reconcileRouterWafBlockingRehearsal,
@@ -8179,8 +8203,7 @@ import {
8179
8203
  type FoundationSsmKey,
8180
8204
  } from '@empire-builder-kit/nx/foundation';
8181
8205
  import {
8182
- FOUNDATION_AURORA_ENGINE,
8183
- FOUNDATION_AURORA_ENGINE_VERSION,
8206
+ ${foundationPlan.resources.postgres ? ' FOUNDATION_AURORA_ENGINE,\n FOUNDATION_AURORA_ENGINE_VERSION,' : ''}
8184
8207
  productionFoundationProfileContract,
8185
8208
  } from '@empire-builder-kit/nx/repository-policy';
8186
8209
  import { installStageIamBoundaryTransforms } from '@empire-builder-kit/nx/aws-authority';
@@ -8216,7 +8239,7 @@ function identityDomainPrefix(stage: string, accountId: string): string {
8216
8239
  return value.slice(0, 50) + '-' + digest;
8217
8240
  }
8218
8241
 
8219
- function publishFoundation(values: Record<FoundationSsmKey, any>) {
8242
+ function publishFoundation(values: Partial<Record<FoundationSsmKey, any>>) {
8220
8243
  return Object.fromEntries(
8221
8244
  Object.entries(values).map(([key, value]) => [
8222
8245
  key,
@@ -8231,14 +8254,14 @@ function publishFoundation(values: Record<FoundationSsmKey, any>) {
8231
8254
 
8232
8255
  export function foundation() {
8233
8256
  const isProduction = $app.stage === 'production';
8234
- const isStaging = $app.stage === 'staging';
8257
+ ${foundationPlan.resources.postgres ? " const isStaging = $app.stage === 'staging';" : ''}
8235
8258
  const rootDomain = process.env.EBK_ROOT_DOMAIN?.trim();
8236
8259
  const productionConfiguration = isProduction
8237
8260
  ? productionFoundationProfileContract(
8238
8261
  process.env.EBK_PRODUCTION_FOUNDATION_PROFILE,
8239
8262
  )
8240
8263
  : undefined;
8241
- const natMode = productionConfiguration?.contract.nat ?? 'ec2';
8264
+ ${foundationPlan.resources.network ? " const natMode = productionConfiguration?.contract.nat ?? 'ec2';" : ''}
8242
8265
  const normalizedRouterWafPolicy = normalizeRouterWafPolicy(routerWafPolicy);
8243
8266
  if (repositoryPolicy.deploymentProfile !== normalizedRouterWafPolicy.deploymentProfile) {
8244
8267
  throw new Error('Router WAF policy profile differs from committed repository policy.');
@@ -8292,13 +8315,15 @@ export function foundation() {
8292
8315
  | 'production',
8293
8316
  });
8294
8317
 
8295
- const vpc = new sst.aws.Vpc('FoundationVpc', {
8318
+ ${foundationPlan.resources.network
8319
+ ? ` const vpc = new sst.aws.Vpc('FoundationVpc', {
8296
8320
  az: 2,
8297
8321
  bastion: $app.stage === 'development',
8298
8322
  nat:
8299
8323
  natMode === 'ec2' ? 'ec2' : 'managed',
8300
- });
8301
- const cluster = new sst.aws.Cluster('FoundationCluster', { vpc });
8324
+ });`
8325
+ : ''}
8326
+ ${foundationPlan.resources.containerCompute ? " const cluster = new sst.aws.Cluster('FoundationCluster', { vpc });" : ''}
8302
8327
  const router = new sst.aws.Router('FoundationRouter', {
8303
8328
  ...(rootDomain
8304
8329
  ? {
@@ -8339,7 +8364,7 @@ export function foundation() {
8339
8364
  'Foundation Router Web ACL must use global CloudFront scope.',
8340
8365
  );
8341
8366
  }
8342
- const ipSets: { ipv4Arn?: any; ipv6Arn?: any } = {};
8367
+ const ipSets: { ipv4Arn?: any; ipv6Arn?: any; smokeArn?: any } = {};
8343
8368
  if (wafPlan.ipv4Cidrs.length > 0) {
8344
8369
  ipSets.ipv4Arn = new aws.wafv2.IpSet(
8345
8370
  'FoundationRouterIpv4Allowlist',
@@ -8378,6 +8403,42 @@ export function foundation() {
8378
8403
  { provider: opts.provider },
8379
8404
  ).arn;
8380
8405
  }
8406
+ if (wafPlan.access === 'allowlist') {
8407
+ // Smoke rotates WAF's LockToken outside Pulumi. Keep the existing
8408
+ // baseline IP sets untouched; AWS's Cloud Control handler owns the
8409
+ // separate ephemeral set's lifecycle without a cached lock token.
8410
+ const smokeAccess = new aws.cloudcontrol.Resource(
8411
+ 'FoundationRouterSmokeAccess',
8412
+ {
8413
+ typeName: 'AWS::WAFv2::IPSet',
8414
+ desiredState: JSON.stringify({
8415
+ Addresses: [],
8416
+ IPAddressVersion: 'IPV4',
8417
+ Name: 'foundation-' + wafPlan.stage + '-router-smoke-access',
8418
+ Scope: 'CLOUDFRONT',
8419
+ Tags: Object.entries({
8420
+ 'ebk:managed-by': 'empire-builder-kit',
8421
+ 'ebk:owner': 'foundation',
8422
+ 'ebk:purpose': 'private-smoke-access',
8423
+ 'ebk:stage': wafPlan.stage,
8424
+ 'ebk:workspace': '${name}',
8425
+ }).map(([Key, Value]) => ({ Key, Value })),
8426
+ }),
8427
+ },
8428
+ {
8429
+ provider: opts.provider,
8430
+ // This dedicated set has creation-only identity/ownership inputs.
8431
+ // Admission owns its addresses; the Web ACL owns policy binding.
8432
+ // Retain old inputs on upgrade too: Cloud Control patches arrays
8433
+ // by index, which is unsafe for service-reordered Tags (including
8434
+ // removing an older policy-digest tag). Never patch this document.
8435
+ ignoreChanges: ['desiredState'],
8436
+ },
8437
+ );
8438
+ ipSets.smokeArn = smokeAccess.properties.apply(
8439
+ (properties: string) => JSON.parse(properties).Arn,
8440
+ );
8441
+ }
8381
8442
  args.defaultAction = { allow: {} };
8382
8443
  args.rules = createRouterWafRules(wafPlan, ipSets);
8383
8444
  args.scope = 'CLOUDFRONT';
@@ -8401,7 +8462,8 @@ export function foundation() {
8401
8462
  },
8402
8463
  },
8403
8464
  });
8404
- const database = new sst.aws.Aurora('FoundationDatabase', {
8465
+ ${foundationPlan.resources.postgres
8466
+ ? ` const database = new sst.aws.Aurora('FoundationDatabase', {
8405
8467
  // SQL bootstrap and migrations run inside the VPC. Keep the public HTTPS
8406
8468
  // Data API surface disabled; protected GitHub roles also deny its actions.
8407
8469
  dataApi: false,
@@ -8462,7 +8524,8 @@ export function foundation() {
8462
8524
  secretArn: database.secretArn,
8463
8525
  username: database.username,
8464
8526
  },
8465
- });
8527
+ });`
8528
+ : ''}
8466
8529
  const foundationAccountId = aws.getCallerIdentityOutput({}).accountId;
8467
8530
  const foundationPartition = aws.getPartitionOutput({});
8468
8531
  const foundationRegion = aws.getRegionOutput({});
@@ -8496,7 +8559,7 @@ export function foundation() {
8496
8559
  stage: $app.stage,
8497
8560
  workspace: '${name}',
8498
8561
  });
8499
- const databaseInstanceId = database.nodes.instance.identifier;
8562
+ ${foundationPlan.resources.postgres ? ' const databaseInstanceId = database.nodes.instance.identifier;' : ''}
8500
8563
  const alertTopicPolicy = new aws.sns.TopicPolicy(
8501
8564
  'FoundationAlertTopicPolicy',
8502
8565
  {
@@ -8542,7 +8605,8 @@ export function foundation() {
8542
8605
  resources: [alertTopic.arn],
8543
8606
  sid: 'AllowCostAnomalyAlerts',
8544
8607
  },
8545
- {
8608
+ ${foundationPlan.resources.postgres
8609
+ ? ` {
8546
8610
  actions: ['sns:Publish'],
8547
8611
  conditions: [
8548
8612
  {
@@ -8564,7 +8628,8 @@ export function foundation() {
8564
8628
  }],
8565
8629
  resources: [alertTopic.arn],
8566
8630
  sid: 'AllowRdsEventAlerts',
8567
- },
8631
+ },`
8632
+ : ''}
8568
8633
  {
8569
8634
  actions: ['sns:Publish'],
8570
8635
  conditions: [
@@ -8652,7 +8717,8 @@ export function foundation() {
8652
8717
  { dependsOn: [accountCostAnomalyMonitor, alertTopicPolicy] },
8653
8718
  )
8654
8719
  : undefined;
8655
- const databaseEvents = isProduction
8720
+ ${foundationPlan.resources.postgres
8721
+ ? ` const databaseEvents = isProduction
8656
8722
  ? new aws.rds.EventSubscription(
8657
8723
  'FoundationDatabaseEvents',
8658
8724
  {
@@ -8734,7 +8800,14 @@ export function foundation() {
8734
8800
  threshold: 90,
8735
8801
  treatMissingData: 'notBreaching',
8736
8802
  },
8737
- );
8803
+ );`
8804
+ : ` const dashboard = new aws.cloudwatch.Dashboard('FoundationDashboard', {
8805
+ dashboardName: 'ebk-' + $app.stage + '-foundation',
8806
+ dashboardBody: JSON.stringify({ widgets: [{
8807
+ type: 'text', x: 0, y: 0, width: 24, height: 3,
8808
+ properties: { markdown: '# Empire Builder Kit Foundation\\nStage: ' + $app.stage + '\\nPersistence: Slice-scoped DynamoDB; SQL not declared.' },
8809
+ }] }),
8810
+ });`}
8738
8811
 
8739
8812
  if (new Set(['development', 'staging', 'production']).has($app.stage)) {
8740
8813
  new aws.cloudwatch.EventArchive('FoundationEventArchive', {
@@ -8750,16 +8823,18 @@ export function foundation() {
8750
8823
  accountCostControl.authority.monthlyMaximumUsd,
8751
8824
  ),
8752
8825
  alertTopicArn: alertTopic.arn,
8753
- capabilities: STANDARD_FOUNDATION_CAPABILITIES.join(','),
8754
- clusterId: cluster.id,
8755
- contractVersion: '1.0.0',
8756
- databaseClusterArn: database.clusterArn,
8826
+ capabilities: ${JSON.stringify(foundationPlan.descriptor.capabilities.join(','))},
8827
+ ${foundationPlan.resources.containerCompute ? ' clusterId: cluster.id,' : ''}
8828
+ contractVersion: '${foundationPlan.descriptor.contractVersion}',
8829
+ ${foundationPlan.resources.postgres
8830
+ ? ` databaseClusterArn: database.clusterArn,
8757
8831
  databaseClusterEndpoint,
8758
8832
  databaseClusterId: database.id,
8759
8833
  databaseClusterResourceId: database.nodes.cluster.clusterResourceId,
8760
8834
  databaseHost: databaseClusterEndpoint,
8761
8835
  databaseMasterSecretArn: database.secretArn,
8762
- databasePort: database.port.apply(String),
8836
+ databasePort: database.port.apply(String),`
8837
+ : ''}
8763
8838
  eventBusArn: eventBus.arn,
8764
8839
  eventBusName: eventBus.name,
8765
8840
  hasPublicDomain: rootDomain ? 'true' : 'false',
@@ -8770,20 +8845,22 @@ export function foundation() {
8770
8845
  routerDistributionId: router.distributionID,
8771
8846
  routerUrl: router.url,
8772
8847
  schemaVersion: String(FOUNDATION_SSM_SCHEMA_VERSION),
8773
- vpcId: vpc.id,
8848
+ ${foundationPlan.resources.network ? ' vpcId: vpc.id,' : ''}
8774
8849
  });
8775
8850
 
8776
8851
  return {
8777
8852
  accountBudgetName: accountBudget?.name,
8778
8853
  alertTopicArn: alertTopic.arn,
8779
- capabilities: STANDARD_FOUNDATION_CAPABILITIES,
8780
- clusterId: cluster.id,
8781
- contractVersion: '1.0.0',
8854
+ capabilities: ${JSON.stringify(foundationPlan.descriptor.capabilities)},
8855
+ ${foundationPlan.resources.containerCompute ? ' clusterId: cluster.id,' : ''}
8856
+ contractVersion: '${foundationPlan.descriptor.contractVersion}',
8782
8857
  costAnomalySubscriptionArn: accountCostAnomalySubscription?.arn,
8783
- databaseCapacityAlarmName: databaseCapacityAlarm.name,
8858
+ ${foundationPlan.resources.postgres ? ' databaseCapacityAlarmName: databaseCapacityAlarm.name,' : ''}
8784
8859
  dashboardName: dashboard.dashboardName,
8785
- databaseClusterId: database.id,
8786
- databaseEventSubscriptionId: databaseEvents?.id,
8860
+ ${foundationPlan.resources.postgres
8861
+ ? ` databaseClusterId: database.id,
8862
+ databaseEventSubscriptionId: databaseEvents?.id,`
8863
+ : ''}
8787
8864
  eventBusName: eventBus.name,
8788
8865
  identityUserPoolId: userPool.id,
8789
8866
  identityTokenEndpoint,
@@ -8791,7 +8868,7 @@ export function foundation() {
8791
8868
  productionFoundationProfile: productionConfiguration?.profile,
8792
8869
  rootDomain,
8793
8870
  routerUrl: router.url,
8794
- vpcId: vpc.id,
8871
+ ${foundationPlan.resources.network ? ' vpcId: vpc.id,' : ''}
8795
8872
  };
8796
8873
  }
8797
8874
  `,
@@ -9161,20 +9238,10 @@ if (normalizedRehearsal) {
9161
9238
  receipt: normalizedRehearsal,
9162
9239
  });
9163
9240
  }
9164
- const expectedCapabilities = [
9165
- 'network',
9166
- 'routing',
9167
- 'container-compute',
9168
- 'postgres',
9169
- 'identity',
9170
- 'events',
9171
- 'observability',
9172
- 'configuration',
9173
- 'deployment',
9174
- ];
9241
+ const expectedCapabilities = ${JSON.stringify(foundationPlan.descriptor.capabilities)};
9175
9242
 
9176
- if (descriptor.contractVersion !== '1.0.0') {
9177
- throw new Error('Foundation contractVersion must be 1.0.0.');
9243
+ if (descriptor.contractVersion !== '2.0.0') {
9244
+ throw new Error('Foundation contractVersion must be 2.0.0.');
9178
9245
  }
9179
9246
  if (
9180
9247
  JSON.stringify(Object.keys(routerWafPolicy.stages).sort()) !==
@@ -9186,10 +9253,11 @@ if (
9186
9253
  throw new Error('Foundation Router WAF stage defaults are invalid.');
9187
9254
  }
9188
9255
  if (JSON.stringify(descriptor.capabilities) !== JSON.stringify(expectedCapabilities)) {
9189
- throw new Error('Foundation capability descriptor does not match the v1 standard.');
9256
+ throw new Error('Foundation capability descriptor does not match its generated resource declaration.');
9190
9257
  }
9191
9258
  if (
9192
- costs.schemaVersion !== 2 ||
9259
+ costs.schemaVersion !== 3 ||
9260
+ costs.aurora?.declared !== ${foundationPlan.resources.postgres} ||
9193
9261
  costs.aurora?.engineVersion !== '${index_js_4.FOUNDATION_AURORA_ENGINE_VERSION}' ||
9194
9262
  costs.productionProfileSource !== 'ebk.repository-policy.json' ||
9195
9263
  costs.productionProfiles?.standard?.aurora?.min !== '2 ACU' ||
@@ -9199,7 +9267,7 @@ if (
9199
9267
  JSON.stringify(${JSON.stringify([...activeStages].sort())}) ||
9200
9268
  costs.stages?.production?.dataRetention !== 'retained-and-protected'
9201
9269
  ) {
9202
- throw new Error('Foundation cost manifest does not match the v1 stage contract.');
9270
+ throw new Error('Foundation cost manifest does not match the declared capability and stage contract.');
9203
9271
  }
9204
9272
  const localHeaders =
9205
9273
  frontendSecurityHeaders.profiles?.['local-development']?.headers ?? [];
@@ -10294,7 +10362,7 @@ assertWorkMarkerReport(markerReport);
10294
10362
  process.stdout.write('Empire Builder Kit workspace source health is green.\\n');
10295
10363
  `,
10296
10364
  };
10297
- Object.assign(files, SUPPLY_CHAIN_WORKSPACE_FILE_PLAN.files, developerAgentFilePlan.files, (0, workspace_files_stage_authority_js_1.renderStageAuthorityWorkspaceFiles)({
10365
+ Object.assign(files, SUPPLY_CHAIN_WORKSPACE_FILE_PLAN.files, developerAgentFilePlan.files, (0, workspace_files_adopter_skills_js_1.renderAdopterSkills)({ name, deploymentProfile }), (0, workspace_files_stage_authority_js_1.renderStageAuthorityWorkspaceFiles)({
10298
10366
  deploymentProfile,
10299
10367
  name,
10300
10368
  workspaceDeploymentId,
@@ -7,6 +7,34 @@ const node_crypto_1 = require("node:crypto");
7
7
  const node_path_1 = require("node:path");
8
8
  const index_js_1 = require("../../repository-policy/index.js");
9
9
  const index_js_2 = require("../../workspace-deployment/index.js");
10
+ const SEEDED_ROUTER_WAF_POLICY_PATH = 'packages/foundation/security/router-waf.json';
11
+ const SEEDED_PROFILE_GUIDANCE = 'Review adopter-owned README.md, AGENTS.md, docs/architecture.md, docs/developer-agent.md, docs/repository-operating-policy.md, Foundation README/runbooks/security/costs guidance, and packages/foundation/performance/account-cost-policy.json after changing profile.';
12
+ function staleSeededRouterWafDiagnostic(tree, profile) {
13
+ const source = tree.read(SEEDED_ROUTER_WAF_POLICY_PATH, 'utf8');
14
+ if (source === null)
15
+ return null;
16
+ let value;
17
+ try {
18
+ value = JSON.parse(source);
19
+ }
20
+ catch {
21
+ value = null;
22
+ }
23
+ const policy = value !== null && typeof value === 'object' && !Array.isArray(value)
24
+ ? value
25
+ : null;
26
+ const stages = policy?.stages !== null &&
27
+ typeof policy?.stages === 'object' &&
28
+ !Array.isArray(policy.stages)
29
+ ? Object.keys(policy.stages).sort()
30
+ : null;
31
+ const expectedStages = [...(0, index_js_1.activeDeploymentStages)(profile)].sort();
32
+ if (policy?.deploymentProfile === profile &&
33
+ JSON.stringify(stages) === JSON.stringify(expectedStages)) {
34
+ return null;
35
+ }
36
+ return `The seeded ${SEEDED_ROUTER_WAF_POLICY_PATH} still has a different deployment profile or stage set. Before applying this topology change, update that adopter-owned policy to ${profile} with exactly ${expectedStages.join(', ')} stages, preserving reviewed CIDRs and WAF settings. Then rerun repository-policy --apply, managed workspace/Foundation upgrades, and foundation:verify. Review profile-dependent seeded guidance before protected deployment; EBK will not overwrite it.`;
37
+ }
10
38
  function sliceStatusFor(options) {
11
39
  if (options.status)
12
40
  return options.status;
@@ -246,6 +274,15 @@ async function repositoryPolicyGenerator(tree, options) {
246
274
  current,
247
275
  next,
248
276
  }, null, 2)}\nPolicy source changes do not deploy, remove, or alter AWS resources.`);
277
+ if (current.deploymentProfile !== next.deploymentProfile) {
278
+ devkit_1.logger.warn(`[ebk-repository-policy] ${SEEDED_PROFILE_GUIDANCE}`);
279
+ const diagnostic = staleSeededRouterWafDiagnostic(tree, next.deploymentProfile);
280
+ if (diagnostic !== null) {
281
+ if (options.apply)
282
+ throw new Error(diagnostic);
283
+ devkit_1.logger.warn(`[ebk-repository-policy] ${diagnostic}`);
284
+ }
285
+ }
249
286
  if (!options.apply || !changed)
250
287
  return;
251
288
  tree.write(index_js_1.REPOSITORY_POLICY_FILE, `${JSON.stringify(next, null, 2)}\n`);