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

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 (805) hide show
  1. package/README.md +44 -10
  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.d.ts +1 -1
  16. package/src/blueprints/external-sandbox.js +21 -9
  17. package/src/blueprints/manifest.d.ts +1 -1
  18. package/src/blueprints/resolver.js +28 -15
  19. package/src/cli/bootstrap.d.ts +1 -1
  20. package/src/cli/deploy-runtime.d.ts +30 -0
  21. package/src/cli/deploy-runtime.js +174 -0
  22. package/src/cli/dev-command.d.ts +18 -4
  23. package/src/cli/dev-command.js +71 -0
  24. package/src/cli/main.d.ts +9 -1
  25. package/src/cli/main.js +157 -24
  26. package/src/cli/output.d.ts +1 -1
  27. package/src/cli/output.js +1 -1
  28. package/src/cli/personal-secret-runtime.d.ts +12 -0
  29. package/src/cli/personal-secret-runtime.js +18 -3
  30. package/src/cli/secret-terminal.js +1 -1
  31. package/src/container-images.d.ts +1 -1
  32. package/src/container-images.js +1 -1
  33. package/src/developer-agent/context.js +41 -9
  34. package/src/developer-agent/generator-planning.js +20 -6
  35. package/src/developer-agent/git-inspection.d.ts +6 -2
  36. package/src/developer-agent/git-inspection.js +78 -6
  37. package/src/developer-agent/model.d.ts +5 -3
  38. package/src/developer-agent/model.js +4 -4
  39. package/src/developer-agent/operation-registry.d.ts +15 -0
  40. package/src/developer-agent/operation-registry.js +342 -49
  41. package/src/developer-agent/planning.d.ts +8 -1
  42. package/src/developer-agent/planning.js +39 -16
  43. package/src/developer-agent/preview-changes.d.ts +2 -0
  44. package/src/developer-agent/preview-changes.js +14 -2
  45. package/src/developer-agent/preview-source.js +3 -0
  46. package/src/developer-agent/validation.js +25 -9
  47. package/src/developer-agent/workspace-inspection.js +60 -5
  48. package/src/executors/blueprint-trust/blueprint-trust.js +6 -0
  49. package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
  50. package/src/executors/deployment-plan/deployment-plan.js +57 -2
  51. package/src/executors/dev-doctor/dev-doctor.js +13 -6
  52. package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
  53. package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
  54. package/src/executors/dev-task-cleanup/schema.json +9 -0
  55. package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
  56. package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
  57. package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
  58. package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
  59. package/src/executors/fleet/fleet.js +1 -1
  60. package/src/executors/foundation-preflight/foundation-preflight.d.ts +1 -0
  61. package/src/executors/foundation-preflight/foundation-preflight.js +6 -2
  62. package/src/executors/foundation-preflight/schema.json +5 -0
  63. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +13 -2
  64. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +95 -31
  65. package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +65 -0
  66. package/src/executors/foundation-profile-preflight/production-database-safeguard.js +223 -0
  67. package/src/executors/foundation-profile-preflight/schema.json +15 -4
  68. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +11 -1
  69. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +70 -20
  70. package/src/executors/foundation-remove-preflight/schema.json +6 -1
  71. package/src/executors/github-bootstrap/github-bootstrap.d.ts +1 -0
  72. package/src/executors/github-bootstrap/github-bootstrap.js +3 -0
  73. package/src/executors/github-bootstrap/schema.json +7 -1
  74. package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +29 -136
  75. package/src/executors/infrastructure-plan/infrastructure-plan.js +230 -3282
  76. package/src/executors/infrastructure-plan/schema.json +12 -52
  77. package/src/executors/local-deploy/federated-credential-transport.d.ts +48 -0
  78. package/src/executors/local-deploy/federated-credential-transport.js +252 -0
  79. package/src/executors/local-deploy/local-approval.d.ts +18 -0
  80. package/src/executors/local-deploy/local-approval.js +39 -0
  81. package/src/executors/local-deploy/local-deploy.d.ts +112 -0
  82. package/src/executors/local-deploy/local-deploy.js +1404 -0
  83. package/src/executors/local-deploy/schema.json +70 -0
  84. package/src/executors/refresh/refresh.js +2 -2
  85. package/src/executors/remove/remove.js +2 -2
  86. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +42 -0
  87. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +1229 -0
  88. package/src/executors/router-waf-rehearsal/schema.json +29 -0
  89. package/src/executors/secret-initialize/schema.json +42 -0
  90. package/src/executors/secret-initialize/secret-initialize.d.ts +34 -0
  91. package/src/executors/secret-initialize/secret-initialize.js +297 -0
  92. package/src/executors/secret-metadata/schema.json +5 -0
  93. package/src/executors/secret-metadata/secret-metadata.d.ts +16 -2
  94. package/src/executors/secret-metadata/secret-metadata.js +129 -30
  95. package/src/executors/sst-lifecycle/generated-secret-retirement.d.ts +53 -0
  96. package/src/executors/sst-lifecycle/generated-secret-retirement.js +192 -0
  97. package/src/executors/sst-lifecycle/governed-native-operation.d.ts +48 -0
  98. package/src/executors/sst-lifecycle/governed-native-operation.js +163 -0
  99. package/src/executors/sst-lifecycle/logging-preflight.d.ts +5 -0
  100. package/src/executors/sst-lifecycle/logging-preflight.js +23 -13
  101. package/src/executors/sst-lifecycle/run-sst-command.d.ts +46 -6
  102. package/src/executors/sst-lifecycle/run-sst-command.js +750 -71
  103. package/src/executors/sst-lifecycle/schema.json +8 -1
  104. package/src/executors/sst-lifecycle/secret-preflight.d.ts +2 -0
  105. package/src/executors/sst-lifecycle/secret-preflight.js +13 -7
  106. package/src/executors/sst-lifecycle/sst-environment-source.d.ts +33 -0
  107. package/src/executors/sst-lifecycle/sst-environment-source.js +267 -0
  108. package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
  109. package/src/executors/sst-lifecycle/task-unlock.js +126 -0
  110. package/src/executors/unlock/unlock.js +2 -2
  111. package/src/foundation/capability-plan.d.ts +43 -0
  112. package/src/foundation/capability-plan.js +168 -0
  113. package/src/foundation/cost-estimate.d.ts +170 -0
  114. package/src/foundation/cost-estimate.js +683 -0
  115. package/src/foundation/discovery.d.ts +14 -11
  116. package/src/foundation/discovery.js +32 -6
  117. package/src/foundation/index.d.ts +4 -0
  118. package/src/foundation/index.js +11 -0
  119. package/src/foundation/local-database-contract.d.ts +20 -0
  120. package/src/foundation/local-database-contract.js +262 -13
  121. package/src/foundation/local-private-smoke-access.d.ts +20 -0
  122. package/src/foundation/local-private-smoke-access.js +197 -0
  123. package/src/foundation/logging-preflight.js +1 -1
  124. package/src/foundation/logging.d.ts +3 -1
  125. package/src/foundation/logging.js +1 -1
  126. package/src/foundation/partial-state.d.ts +10 -0
  127. package/src/foundation/partial-state.js +21 -0
  128. package/src/foundation/preflight.js +37 -18
  129. package/src/foundation/private-smoke-access.d.ts +25 -0
  130. package/src/foundation/private-smoke-access.js +135 -0
  131. package/src/foundation/private-smoke-admission.d.ts +45 -0
  132. package/src/foundation/private-smoke-admission.js +180 -0
  133. package/src/foundation/private-smoke-control-plane.d.ts +18 -0
  134. package/src/foundation/private-smoke-control-plane.js +184 -0
  135. package/src/foundation/provision-database-bindings.d.ts +5 -0
  136. package/src/foundation/provision-database-bindings.js +41 -8
  137. package/src/foundation/provision-logical-database.js +15 -8
  138. package/src/foundation/requirements.d.ts +3 -3
  139. package/src/foundation/requirements.js +24 -12
  140. package/src/foundation/router-waf-rate-rehearsal.d.ts +97 -0
  141. package/src/foundation/router-waf-rate-rehearsal.js +210 -0
  142. package/src/foundation/router-waf.d.ts +149 -0
  143. package/src/foundation/router-waf.js +809 -0
  144. package/src/foundation/stages.d.ts +1 -0
  145. package/src/foundation/stages.js +11 -0
  146. package/src/generators/blueprint/blueprint.d.ts +5 -0
  147. package/src/generators/blueprint/blueprint.js +102 -0
  148. package/src/generators/blueprint/files.d.ts +6 -0
  149. package/src/generators/blueprint/files.js +217 -0
  150. package/src/generators/blueprint/schema.d.ts +4 -0
  151. package/src/generators/blueprint/schema.json +18 -0
  152. package/src/generators/formatting.d.ts +8 -0
  153. package/src/generators/formatting.js +141 -0
  154. package/src/generators/function/function.js +38 -17
  155. package/src/generators/logging-registry.d.ts +2 -0
  156. package/src/generators/logging-registry.js +22 -0
  157. package/src/generators/post-generation-install.js +2 -2
  158. package/src/generators/preset/dependency-overrides.d.ts +8 -0
  159. package/src/generators/preset/dependency-overrides.js +55 -0
  160. package/src/generators/preset/generator.js +43 -3
  161. package/src/generators/preset/schema.d.ts +10 -0
  162. package/src/generators/preset/schema.json +47 -0
  163. package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
  164. package/src/generators/preset/workspace-files-adopter-skills.js +324 -0
  165. package/src/generators/preset/workspace-files-ci-acceptance.d.ts +1 -0
  166. package/src/generators/preset/workspace-files-ci-acceptance.js +791 -0
  167. package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
  168. package/src/generators/preset/workspace-files-ci-install.js +196 -0
  169. package/src/generators/preset/workspace-files-developer-agent.d.ts +2 -0
  170. package/src/generators/preset/workspace-files-developer-agent.js +162 -44
  171. package/src/generators/preset/workspace-files-ecr-inspector.d.ts +18 -0
  172. package/src/generators/preset/workspace-files-ecr-inspector.js +298 -0
  173. package/src/generators/preset/workspace-files-foundation-workload-roles.js +5 -2
  174. package/src/generators/preset/workspace-files-performance-cost.d.ts +2 -2
  175. package/src/generators/preset/workspace-files-performance-cost.js +8 -8
  176. package/src/generators/preset/workspace-files-performance-load.d.ts +1 -1
  177. package/src/generators/preset/workspace-files-performance-load.js +39 -25
  178. package/src/generators/preset/workspace-files-shared-operation-claims.d.ts +10 -0
  179. package/src/generators/preset/workspace-files-shared-operation-claims.js +59 -0
  180. package/src/generators/preset/workspace-files-stage-authority.d.ts +6 -0
  181. package/src/generators/preset/workspace-files-stage-authority.js +529 -0
  182. package/src/generators/preset/workspace-files-thin-deploy.d.ts +65 -0
  183. package/src/generators/preset/workspace-files-thin-deploy.js +2507 -0
  184. package/src/generators/preset/workspace-files-thin-docs.d.ts +7 -0
  185. package/src/generators/preset/workspace-files-thin-docs.js +370 -0
  186. package/src/generators/preset/workspace-files-thin-release.d.ts +14 -0
  187. package/src/generators/preset/workspace-files-thin-release.js +26 -0
  188. package/src/generators/preset/workspace-files-workload-role-baseline.js +254 -42
  189. package/src/generators/preset/workspace-files.d.ts +18 -2
  190. package/src/generators/preset/workspace-files.js +1525 -609
  191. package/src/generators/repository-policy/repository-policy.js +235 -5
  192. package/src/generators/repository-policy/schema.d.ts +10 -0
  193. package/src/generators/repository-policy/schema.json +80 -4
  194. package/src/generators/repository-policy/tree-policy.d.ts +3 -0
  195. package/src/generators/repository-policy/tree-policy.js +25 -0
  196. package/src/generators/slice/built-in-plan-api-contract-files.js +49 -11
  197. package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
  198. package/src/generators/slice/built-in-plan-api-files.js +130 -414
  199. package/src/generators/slice/built-in-plan-async-work-files.js +166 -1969
  200. package/src/generators/slice/built-in-plan-authorization-files.js +102 -334
  201. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +975 -233
  202. package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
  203. package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
  204. package/src/generators/slice/built-in-plan-background-work-files.d.ts +2 -0
  205. package/src/generators/slice/built-in-plan-background-work-files.js +99 -0
  206. package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
  207. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +5 -31
  208. package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
  209. package/src/generators/slice/built-in-plan-data-files.js +176 -1200
  210. package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
  211. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +37 -2
  212. package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2443
  213. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +50 -8
  214. package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
  215. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +44 -25
  216. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +25 -2
  217. package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
  218. package/src/generators/slice/built-in-plan-foundation-files.js +39 -18
  219. package/src/generators/slice/built-in-plan-frontend-files.js +14 -3
  220. package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
  221. package/src/generators/slice/built-in-plan-infrastructure-files.js +933 -730
  222. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +75 -14
  223. package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
  224. package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
  225. package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
  226. package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
  227. package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
  228. package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
  229. package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
  230. package/src/generators/slice/built-in-plan-key-value-delivery.js +137 -0
  231. package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
  232. package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
  233. package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
  234. package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
  235. package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
  236. package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
  237. package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
  238. package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
  239. package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
  240. package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
  241. package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
  242. package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
  243. package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
  244. package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
  245. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
  246. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
  247. package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
  248. package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
  249. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
  250. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
  251. package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
  252. package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
  253. package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
  254. package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
  255. package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
  256. package/src/generators/slice/built-in-plan-metadata-files.js +159 -29
  257. package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +2 -0
  258. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +324 -0
  259. package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
  260. package/src/generators/slice/built-in-plan-operations-files.js +585 -97
  261. package/src/generators/slice/built-in-plan-performance-files.d.ts +2 -1
  262. package/src/generators/slice/built-in-plan-performance-files.js +220 -1074
  263. package/src/generators/slice/built-in-plan-project-files.js +141 -135
  264. package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
  265. package/src/generators/slice/built-in-plan-release-files.js +310 -70
  266. package/src/generators/slice/built-in-plan-reliability-files.d.ts +1 -1
  267. package/src/generators/slice/built-in-plan-reliability-files.js +283 -44
  268. package/src/generators/slice/built-in-plan-secret-runtime-files.d.ts +1 -1
  269. package/src/generators/slice/built-in-plan-secret-runtime-files.js +87 -76
  270. package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
  271. package/src/generators/slice/built-in-plan-shared.js +41 -19
  272. package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
  273. package/src/generators/slice/built-in-plan-sql-events.js +276 -0
  274. package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
  275. package/src/generators/slice/built-in-plan-testing-files.js +304 -172
  276. package/src/generators/slice/built-in-plan-testing-persistence-event-files.d.ts +7 -0
  277. package/src/generators/slice/built-in-plan-testing-persistence-event-files.js +487 -0
  278. package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
  279. package/src/generators/slice/built-in-plan-testing-persistence-files.js +180 -0
  280. package/src/generators/slice/built-in-plan-thin-release-files.d.ts +11 -0
  281. package/src/generators/slice/built-in-plan-thin-release-files.js +162 -0
  282. package/src/generators/slice/built-in-plan-verification-files.js +76 -2
  283. package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
  284. package/src/generators/slice/built-in-plan-web-files.js +223 -16
  285. package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
  286. package/src/generators/slice/built-in-plan-workload-role-files.js +143 -279
  287. package/src/generators/slice/built-in-plan.d.ts +11 -1
  288. package/src/generators/slice/built-in-plan.js +83 -30
  289. package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
  290. package/src/generators/slice/data-policy-review-seed.js +22 -0
  291. package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
  292. package/src/generators/slice/deployed-smoke-readiness.js +214 -0
  293. package/src/generators/slice/local-source-identity.d.ts +2 -0
  294. package/src/generators/slice/local-source-identity.js +31 -0
  295. package/src/generators/slice/persistence-contract.d.ts +14 -0
  296. package/src/generators/slice/persistence-contract.js +32 -0
  297. package/src/generators/slice/slice.js +61 -50
  298. package/src/generators/sql/schema.d.ts +7 -0
  299. package/src/generators/sql/schema.json +38 -0
  300. package/src/generators/sql/sql.d.ts +6 -0
  301. package/src/generators/sql/sql.js +53 -0
  302. package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
  303. package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
  304. package/src/generators/upgrade/upgrade.d.ts +15 -1
  305. package/src/generators/upgrade/upgrade.js +435 -44
  306. package/src/generators/workload/frozen-container.d.ts +1 -1
  307. package/src/generators/workload/performance-registration.d.ts +1 -0
  308. package/src/generators/workload/performance-registration.js +9 -11
  309. package/src/generators/workload/service-performance-files.d.ts +1 -0
  310. package/src/generators/workload/service-performance-files.js +27 -7
  311. package/src/generators/workload/workload.d.ts +1 -1
  312. package/src/generators/workload/workload.js +105 -29
  313. package/src/git-policy/action-pins.d.ts +5 -0
  314. package/src/git-policy/action-pins.js +5 -0
  315. package/src/git-policy/github-bootstrap.d.ts +48 -8
  316. package/src/git-policy/github-bootstrap.js +344 -176
  317. package/src/git-policy/routing.d.ts +7 -1
  318. package/src/git-policy/routing.js +62 -1
  319. package/src/index.d.ts +1 -0
  320. package/src/index.js +1 -0
  321. package/src/infrastructure-change/local-capability.d.ts +73 -0
  322. package/src/infrastructure-change/local-capability.js +114 -0
  323. package/src/infrastructure-change/model.d.ts +25 -4
  324. package/src/infrastructure-change/model.js +1 -0
  325. package/src/infrastructure-change/normalize.d.ts +4 -0
  326. package/src/infrastructure-change/normalize.js +47 -7
  327. package/src/infrastructure-change/plan.d.ts +30 -3
  328. package/src/infrastructure-change/plan.js +323 -13
  329. package/src/infrastructure-change/risk.d.ts +3 -1
  330. package/src/infrastructure-change/risk.js +96 -16
  331. package/src/local-dev/browser-verification.d.ts +37 -0
  332. package/src/local-dev/browser-verification.js +281 -0
  333. package/src/local-dev/contracts.d.ts +10 -1
  334. package/src/local-dev/contracts.js +114 -13
  335. package/src/local-dev/dev-command-core.js +24 -5
  336. package/src/local-dev/docker-credential-health.d.ts +14 -0
  337. package/src/local-dev/docker-credential-health.js +94 -0
  338. package/src/local-dev/environment-inspector.d.ts +7 -0
  339. package/src/local-dev/environment-inspector.js +42 -15
  340. package/src/local-dev/environment-state.js +2 -2
  341. package/src/local-dev/errors.d.ts +1 -1
  342. package/src/local-dev/errors.js +2 -0
  343. package/src/local-dev/fleet-client.js +2 -2
  344. package/src/local-dev/fleet-configuration.js +57 -25
  345. package/src/local-dev/fleet-inventory.js +58 -22
  346. package/src/local-dev/fleet-ipc.d.ts +7 -0
  347. package/src/local-dev/fleet-ipc.js +14 -2
  348. package/src/local-dev/fleet-launcher.d.ts +6 -0
  349. package/src/local-dev/fleet-launcher.js +16 -4
  350. package/src/local-dev/fleet-logs.js +50 -22
  351. package/src/local-dev/fleet-process.d.ts +20 -1
  352. package/src/local-dev/fleet-process.js +197 -41
  353. package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
  354. package/src/local-dev/fleet-runner-evidence.js +56 -0
  355. package/src/local-dev/fleet-runtime.js +268 -229
  356. package/src/local-dev/fleet-session.d.ts +2 -0
  357. package/src/local-dev/fleet-session.js +28 -11
  358. package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
  359. package/src/local-dev/fleet-state.d.ts +5 -2
  360. package/src/local-dev/fleet-state.js +25 -4
  361. package/src/local-dev/fleet-supervisor.d.ts +3 -0
  362. package/src/local-dev/fleet-supervisor.js +66 -11
  363. package/src/local-dev/fleet-web-start.d.ts +12 -0
  364. package/src/local-dev/fleet-web-start.js +48 -0
  365. package/src/local-dev/identity.js +3 -14
  366. package/src/local-dev/index.d.ts +1 -0
  367. package/src/local-dev/index.js +1 -0
  368. package/src/local-dev/native-completion.d.ts +9 -0
  369. package/src/local-dev/native-completion.js +130 -0
  370. package/src/local-dev/nx-workspace.d.ts +4 -2
  371. package/src/local-dev/nx-workspace.js +11 -6
  372. package/src/local-dev/personal-stage.d.ts +4 -5
  373. package/src/local-dev/personal-stage.js +6 -54
  374. package/src/local-dev/port-claims.d.ts +13 -0
  375. package/src/local-dev/port-claims.js +46 -0
  376. package/src/local-dev/ports.d.ts +14 -2
  377. package/src/local-dev/ports.js +78 -3
  378. package/src/local-dev/private-state.d.ts +11 -0
  379. package/src/local-dev/private-state.js +146 -40
  380. package/src/local-dev/process-group.d.ts +4 -0
  381. package/src/local-dev/process-group.js +29 -0
  382. package/src/local-dev/process-identity.d.ts +8 -0
  383. package/src/local-dev/process-identity.js +31 -1
  384. package/src/local-dev/proxy.js +11 -12
  385. package/src/local-dev/runtime-paths.js +1 -1
  386. package/src/local-dev/slice-claim.js +1 -1
  387. package/src/local-dev/slice-runner.d.ts +15 -6
  388. package/src/local-dev/slice-runner.js +189 -54
  389. package/src/local-dev/task-attachment.d.ts +17 -0
  390. package/src/local-dev/task-attachment.js +73 -0
  391. package/src/local-dev/task-authority.d.ts +10 -0
  392. package/src/local-dev/task-authority.js +27 -0
  393. package/src/local-dev/task-identity.d.ts +33 -0
  394. package/src/local-dev/task-identity.js +418 -0
  395. package/src/local-dev/task-native-writer.d.ts +18 -0
  396. package/src/local-dev/task-native-writer.js +329 -0
  397. package/src/local-dev/tls.js +8 -2
  398. package/src/local-dev/web-launch.d.ts +9 -0
  399. package/src/local-dev/web-launch.js +130 -0
  400. package/src/ownership/composition.d.ts +2 -1
  401. package/src/ownership/composition.js +1 -0
  402. package/src/performance/cost-collection.d.ts +1 -1
  403. package/src/performance/cost-collection.js +4 -2
  404. package/src/performance/cost-controls.d.ts +8 -4
  405. package/src/performance/cost-controls.js +39 -28
  406. package/src/performance/evidence.d.ts +1 -1
  407. package/src/performance/evidence.js +5 -3
  408. package/src/performance/load-safety.js +5 -3
  409. package/src/performance/model.d.ts +4 -4
  410. package/src/performance/model.js +4 -5
  411. package/src/performance/scenario.d.ts +22 -0
  412. package/src/performance/scenario.js +100 -92
  413. package/src/release/index.d.ts +0 -2
  414. package/src/release/index.js +0 -2
  415. package/src/release/source-authority.d.ts +5 -5
  416. package/src/release/source-authority.js +141 -124
  417. package/src/repository-policy/aurora-preflight.d.ts +1 -1
  418. package/src/repository-policy/aurora-preflight.js +4 -1
  419. package/src/repository-policy/capacity-migration.d.ts +3 -0
  420. package/src/repository-policy/capacity-migration.js +21 -0
  421. package/src/repository-policy/deployment-plan.d.ts +4 -1
  422. package/src/repository-policy/deployment-plan.js +9 -0
  423. package/src/repository-policy/foundation-profile.js +10 -1
  424. package/src/repository-policy/policy.d.ts +57 -3
  425. package/src/repository-policy/policy.js +497 -11
  426. package/src/schemas/blueprint-v1.json +5 -4
  427. package/src/schemas/foundation-requirement-v1.json +5 -4
  428. package/src/schemas/performance-policy-v1.json +3 -3
  429. package/src/schemas/repository-policy-v1.json +130 -6
  430. package/src/schemas/testing-evidence-result-v1.json +1 -1
  431. package/src/secrets/adapters.d.ts +7 -2
  432. package/src/secrets/adapters.js +34 -3
  433. package/src/secrets/aws-control-plane.d.ts +10 -1
  434. package/src/secrets/aws-control-plane.js +67 -0
  435. package/src/secrets/generated-aws-control-plane.d.ts +23 -0
  436. package/src/secrets/generated-aws-control-plane.js +259 -0
  437. package/src/secrets/metadata.js +38 -10
  438. package/src/secrets/model.d.ts +8 -1
  439. package/src/secrets/model.js +24 -3
  440. package/src/secrets/operator.d.ts +91 -3
  441. package/src/secrets/operator.js +463 -13
  442. package/src/secrets/personal-command.d.ts +18 -2
  443. package/src/secrets/personal-command.js +66 -12
  444. package/src/secrets/registry.d.ts +2 -1
  445. package/src/secrets/registry.js +18 -1
  446. package/src/secrets/verification.js +15 -2
  447. package/src/secrets/workload-access.js +10 -2
  448. package/src/sst-environment-source-format.d.ts +6 -0
  449. package/src/sst-environment-source-format.js +199 -0
  450. package/src/supply-chain/action-pins.js +61 -7
  451. package/src/supply-chain/blueprint-trust-git.js +85 -24
  452. package/src/supply-chain/blueprint-verification-authority.js +55 -3
  453. package/src/supply-chain/build-output-bounds.d.ts +2 -0
  454. package/src/supply-chain/build-output-bounds.js +12 -0
  455. package/src/supply-chain/build-output.d.ts +7 -1
  456. package/src/supply-chain/build-output.js +177 -24
  457. package/src/supply-chain/ecr-scanning.d.ts +5 -3
  458. package/src/supply-chain/ecr-scanning.js +11 -7
  459. package/src/supply-chain/ecs-deployed-image.d.ts +5 -3
  460. package/src/supply-chain/ecs-deployed-image.js +6 -4
  461. package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
  462. package/src/supply-chain/generated-command.js +1 -0
  463. package/src/supply-chain/generated-container-release-command.js +1285 -124
  464. package/src/supply-chain/generated-ecr-collector-command.d.ts +0 -1
  465. package/src/supply-chain/generated-ecr-collector-command.js +200 -93
  466. package/src/supply-chain/generated-files.js +25 -14
  467. package/src/supply-chain/generated-scanner-command.js +2 -1
  468. package/src/supply-chain/index.d.ts +1 -1
  469. package/src/supply-chain/index.js +2 -1
  470. package/src/supply-chain/sbom.d.ts +1 -1
  471. package/src/supply-chain/sbom.js +30 -5
  472. package/src/supply-chain/scanner.js +3 -0
  473. package/src/testing-evidence/fixture-scope.d.ts +2 -1
  474. package/src/testing-evidence/fixture-scope.js +4 -2
  475. package/src/testing-evidence/result.d.ts +2 -1
  476. package/src/testing-evidence/result.js +18 -4
  477. package/src/workload-roles/account-baseline.d.ts +11 -0
  478. package/src/workload-roles/account-baseline.js +253 -16
  479. package/src/workload-roles/authority.d.ts +3 -1
  480. package/src/workload-roles/authority.js +48 -2
  481. package/src/workload-roles/aws-s3-state.js +27 -0
  482. package/src/workload-roles/boundary.d.ts +2 -1
  483. package/src/workload-roles/boundary.js +9 -2
  484. package/src/workload-roles/handler.js +52 -24
  485. package/src/workload-roles/index.d.ts +10 -17
  486. package/src/workload-roles/index.js +5 -18
  487. package/src/workload-roles/injection.js +1 -1
  488. package/src/workload-roles/provisioner.js +12 -4
  489. package/src/workload-roles/registration.d.ts +1 -0
  490. package/src/workload-roles/registration.js +5 -0
  491. package/src/workload-roles/stage-boundary.js +1 -1
  492. package/src/workload-roles/standard-slice.js +3 -3
  493. package/src/workspace-deployment/affected-lifecycle.d.ts +53 -0
  494. package/src/workspace-deployment/affected-lifecycle.js +84 -0
  495. package/src/workspace-deployment/identity.d.ts +3 -0
  496. package/src/workspace-deployment/identity.js +22 -0
  497. package/src/workspace-deployment/index.d.ts +4 -0
  498. package/src/workspace-deployment/index.js +8 -0
  499. package/src/workspace-deployment/migration-evidence.d.ts +29 -0
  500. package/src/workspace-deployment/migration-evidence.js +83 -0
  501. package/src/workspace-deployment/migration.d.ts +27 -0
  502. package/src/workspace-deployment/migration.js +109 -0
  503. package/src/workspace-deployment/ownership.d.ts +81 -0
  504. package/src/workspace-deployment/ownership.js +381 -0
  505. package/src/api-contract/baseline-update.js.map +0 -1
  506. package/src/api-contract/compatibility.js.map +0 -1
  507. package/src/api-contract/contract-graph.js.map +0 -1
  508. package/src/api-contract/evidence.js.map +0 -1
  509. package/src/api-contract/index.js.map +0 -1
  510. package/src/api-contract/model.fixtures.d.ts +0 -2
  511. package/src/api-contract/model.fixtures.js +0 -81
  512. package/src/api-contract/model.fixtures.js.map +0 -1
  513. package/src/api-contract/model.js.map +0 -1
  514. package/src/api-contract/rollout.js.map +0 -1
  515. package/src/authorization/compatibility.js.map +0 -1
  516. package/src/authorization/index.js.map +0 -1
  517. package/src/blueprints/execution.js.map +0 -1
  518. package/src/blueprints/external-sandbox.js.map +0 -1
  519. package/src/blueprints/index.js.map +0 -1
  520. package/src/blueprints/inputs.js.map +0 -1
  521. package/src/blueprints/manifest.js.map +0 -1
  522. package/src/blueprints/resolver.js.map +0 -1
  523. package/src/blueprints/transitions.js.map +0 -1
  524. package/src/cli/agent-command.js.map +0 -1
  525. package/src/cli/agent-runtime.js.map +0 -1
  526. package/src/cli/blueprint-authority.js.map +0 -1
  527. package/src/cli/blueprint-command.js.map +0 -1
  528. package/src/cli/bootstrap.js.map +0 -1
  529. package/src/cli/dev-command.js.map +0 -1
  530. package/src/cli/main.js.map +0 -1
  531. package/src/cli/output.js.map +0 -1
  532. package/src/cli/personal-secret-runtime.js.map +0 -1
  533. package/src/cli/secret-terminal.js.map +0 -1
  534. package/src/container-images.js.map +0 -1
  535. package/src/data-lifecycle/index.js.map +0 -1
  536. package/src/data-lifecycle/model.fixtures.d.ts +0 -2
  537. package/src/data-lifecycle/model.fixtures.js +0 -244
  538. package/src/data-lifecycle/model.fixtures.js.map +0 -1
  539. package/src/data-lifecycle/model.js.map +0 -1
  540. package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
  541. package/src/data-lifecycle/validation.js.map +0 -1
  542. package/src/database-retirement/contract.js.map +0 -1
  543. package/src/database-retirement/index.js.map +0 -1
  544. package/src/deterministic-order.js.map +0 -1
  545. package/src/developer-agent/context.js.map +0 -1
  546. package/src/developer-agent/generator-planning.js.map +0 -1
  547. package/src/developer-agent/generator-preview.js.map +0 -1
  548. package/src/developer-agent/git-inspection.js.map +0 -1
  549. package/src/developer-agent/handoff.js.map +0 -1
  550. package/src/developer-agent/index.js.map +0 -1
  551. package/src/developer-agent/model.js.map +0 -1
  552. package/src/developer-agent/operation-registry.js.map +0 -1
  553. package/src/developer-agent/ordering.js.map +0 -1
  554. package/src/developer-agent/planning.js.map +0 -1
  555. package/src/developer-agent/preview-changes.js.map +0 -1
  556. package/src/developer-agent/preview-source.js.map +0 -1
  557. package/src/developer-agent/validation.js.map +0 -1
  558. package/src/developer-agent/workspace-inspection.js.map +0 -1
  559. package/src/developer-agent/workspace-path.js.map +0 -1
  560. package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
  561. package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
  562. package/src/executors/deploy/deploy.js.map +0 -1
  563. package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
  564. package/src/executors/dev/dev.js.map +0 -1
  565. package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
  566. package/src/executors/dev-setup/dev-setup.js.map +0 -1
  567. package/src/executors/developer-context/developer-context.js.map +0 -1
  568. package/src/executors/fleet/fleet.js.map +0 -1
  569. package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
  570. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
  571. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
  572. package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
  573. package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
  574. package/src/executors/refresh/refresh.js.map +0 -1
  575. package/src/executors/remove/remove.js.map +0 -1
  576. package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
  577. package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
  578. package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
  579. package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
  580. package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
  581. package/src/executors/unlock/unlock.js.map +0 -1
  582. package/src/executors/work-markers/work-markers.js.map +0 -1
  583. package/src/foundation/discovery.js.map +0 -1
  584. package/src/foundation/index.js.map +0 -1
  585. package/src/foundation/local-database-contract.js.map +0 -1
  586. package/src/foundation/logging-preflight.js.map +0 -1
  587. package/src/foundation/logging.js.map +0 -1
  588. package/src/foundation/preflight.js.map +0 -1
  589. package/src/foundation/provision-database-bindings.js.map +0 -1
  590. package/src/foundation/provision-logical-database.js.map +0 -1
  591. package/src/foundation/requirements.js.map +0 -1
  592. package/src/foundation/router-origin-proof.js.map +0 -1
  593. package/src/foundation/stages.js.map +0 -1
  594. package/src/frontend-security/index.js.map +0 -1
  595. package/src/frontend-security/security-headers.js.map +0 -1
  596. package/src/generators/feature-registry.js.map +0 -1
  597. package/src/generators/function/function.js.map +0 -1
  598. package/src/generators/job/job.js.map +0 -1
  599. package/src/generators/logging-registry.js.map +0 -1
  600. package/src/generators/post-generation-install.js.map +0 -1
  601. package/src/generators/preset/generator.js.map +0 -1
  602. package/src/generators/preset/tool-versions.js.map +0 -1
  603. package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
  604. package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
  605. package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
  606. package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
  607. package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
  608. package/src/generators/preset/workspace-files.js.map +0 -1
  609. package/src/generators/repository-policy/repository-policy.js.map +0 -1
  610. package/src/generators/service/service.js.map +0 -1
  611. package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
  612. package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
  613. package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
  614. package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
  615. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
  616. package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
  617. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
  618. package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
  619. package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
  620. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
  621. package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
  622. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
  623. package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
  624. package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
  625. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
  626. package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
  627. package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
  628. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
  629. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
  630. package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
  631. package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
  632. package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
  633. package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
  634. package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
  635. package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
  636. package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
  637. package/src/generators/slice/built-in-plan-shared.js.map +0 -1
  638. package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
  639. package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
  640. package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
  641. package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
  642. package/src/generators/slice/built-in-plan.js.map +0 -1
  643. package/src/generators/slice/slice.js.map +0 -1
  644. package/src/generators/upgrade/upgrade.js.map +0 -1
  645. package/src/generators/workload/frozen-container.js.map +0 -1
  646. package/src/generators/workload/performance-registration.js.map +0 -1
  647. package/src/generators/workload/reliability-registration.js.map +0 -1
  648. package/src/generators/workload/service-performance-files.js.map +0 -1
  649. package/src/generators/workload/workload.js.map +0 -1
  650. package/src/git-policy/action-pins.js.map +0 -1
  651. package/src/git-policy/github-bootstrap.js.map +0 -1
  652. package/src/git-policy/index.js.map +0 -1
  653. package/src/git-policy/routing.js.map +0 -1
  654. package/src/index.js.map +0 -1
  655. package/src/infrastructure-change/convergence.js.map +0 -1
  656. package/src/infrastructure-change/drift.js.map +0 -1
  657. package/src/infrastructure-change/index.js.map +0 -1
  658. package/src/infrastructure-change/model.js.map +0 -1
  659. package/src/infrastructure-change/normalize.js.map +0 -1
  660. package/src/infrastructure-change/plan.js.map +0 -1
  661. package/src/infrastructure-change/risk.js.map +0 -1
  662. package/src/infrastructure-change/summary.js.map +0 -1
  663. package/src/local-dev/context-discovery.js.map +0 -1
  664. package/src/local-dev/contract-validation.js.map +0 -1
  665. package/src/local-dev/contracts.js.map +0 -1
  666. package/src/local-dev/control-contract.js.map +0 -1
  667. package/src/local-dev/dev-command-core.js.map +0 -1
  668. package/src/local-dev/effects.js.map +0 -1
  669. package/src/local-dev/environment-inspector.js.map +0 -1
  670. package/src/local-dev/environment-state.js.map +0 -1
  671. package/src/local-dev/errors.js.map +0 -1
  672. package/src/local-dev/fleet-client.js.map +0 -1
  673. package/src/local-dev/fleet-configuration.js.map +0 -1
  674. package/src/local-dev/fleet-inventory.js.map +0 -1
  675. package/src/local-dev/fleet-ipc.js.map +0 -1
  676. package/src/local-dev/fleet-launcher.js.map +0 -1
  677. package/src/local-dev/fleet-lock.js.map +0 -1
  678. package/src/local-dev/fleet-logs.js.map +0 -1
  679. package/src/local-dev/fleet-process.js.map +0 -1
  680. package/src/local-dev/fleet-runtime.js.map +0 -1
  681. package/src/local-dev/fleet-session.js.map +0 -1
  682. package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
  683. package/src/local-dev/fleet-startup.js.map +0 -1
  684. package/src/local-dev/fleet-state.js.map +0 -1
  685. package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
  686. package/src/local-dev/fleet-supervisor.js.map +0 -1
  687. package/src/local-dev/gateway-daemon.js.map +0 -1
  688. package/src/local-dev/gateway.js.map +0 -1
  689. package/src/local-dev/identity.js.map +0 -1
  690. package/src/local-dev/index.js.map +0 -1
  691. package/src/local-dev/local-context.js.map +0 -1
  692. package/src/local-dev/nx-workspace.js.map +0 -1
  693. package/src/local-dev/personal-secret-ledger.js.map +0 -1
  694. package/src/local-dev/personal-stage.js.map +0 -1
  695. package/src/local-dev/portless.js.map +0 -1
  696. package/src/local-dev/ports.js.map +0 -1
  697. package/src/local-dev/private-state.js.map +0 -1
  698. package/src/local-dev/process-identity.js.map +0 -1
  699. package/src/local-dev/proxy.js.map +0 -1
  700. package/src/local-dev/runtime-paths.js.map +0 -1
  701. package/src/local-dev/secret-slice-claim.js.map +0 -1
  702. package/src/local-dev/slice-claim.js.map +0 -1
  703. package/src/local-dev/slice-runner.js.map +0 -1
  704. package/src/local-dev/tls.js.map +0 -1
  705. package/src/ownership/composition.js.map +0 -1
  706. package/src/ownership/foundation-record.js.map +0 -1
  707. package/src/ownership/hash.js.map +0 -1
  708. package/src/ownership/index.js.map +0 -1
  709. package/src/ownership/json-ownership.js.map +0 -1
  710. package/src/ownership/record.js.map +0 -1
  711. package/src/ownership/workspace-record.js.map +0 -1
  712. package/src/performance/cost-collection.js.map +0 -1
  713. package/src/performance/cost-controls.js.map +0 -1
  714. package/src/performance/evidence.js.map +0 -1
  715. package/src/performance/index.js.map +0 -1
  716. package/src/performance/load-safety.js.map +0 -1
  717. package/src/performance/model.js.map +0 -1
  718. package/src/performance/pr-artifact-budget.js.map +0 -1
  719. package/src/performance/runner.js.map +0 -1
  720. package/src/performance/scenario-endpoint.js.map +0 -1
  721. package/src/performance/scenario.js.map +0 -1
  722. package/src/performance/test-fixtures.d.ts +0 -7
  723. package/src/performance/test-fixtures.js +0 -169
  724. package/src/performance/test-fixtures.js.map +0 -1
  725. package/src/performance/unit-cost.js.map +0 -1
  726. package/src/release/index.js.map +0 -1
  727. package/src/release/lifecycle.js.map +0 -1
  728. package/src/release/manifest.js.map +0 -1
  729. package/src/release/rollout.js.map +0 -1
  730. package/src/release/source-authority.js.map +0 -1
  731. package/src/repository-policy/aurora-preflight.js.map +0 -1
  732. package/src/repository-policy/deployment-plan.js.map +0 -1
  733. package/src/repository-policy/foundation-profile.js.map +0 -1
  734. package/src/repository-policy/index.js.map +0 -1
  735. package/src/repository-policy/policy.js.map +0 -1
  736. package/src/secrets/adapters.js.map +0 -1
  737. package/src/secrets/aws-control-plane.js.map +0 -1
  738. package/src/secrets/declaration-verification.js.map +0 -1
  739. package/src/secrets/guardrails.js.map +0 -1
  740. package/src/secrets/index.js.map +0 -1
  741. package/src/secrets/metadata.js.map +0 -1
  742. package/src/secrets/model.js.map +0 -1
  743. package/src/secrets/operator.js.map +0 -1
  744. package/src/secrets/permissions.js.map +0 -1
  745. package/src/secrets/personal-command.js.map +0 -1
  746. package/src/secrets/personal-ledger.js.map +0 -1
  747. package/src/secrets/registry.js.map +0 -1
  748. package/src/secrets/verification.js.map +0 -1
  749. package/src/secrets/workload-access.js.map +0 -1
  750. package/src/supply-chain/action-pins.js.map +0 -1
  751. package/src/supply-chain/blueprint-trust-git.js.map +0 -1
  752. package/src/supply-chain/blueprint-trust-process.js.map +0 -1
  753. package/src/supply-chain/blueprint-trust.js.map +0 -1
  754. package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
  755. package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
  756. package/src/supply-chain/build-output.js.map +0 -1
  757. package/src/supply-chain/common.js.map +0 -1
  758. package/src/supply-chain/container-artifact-contract.js.map +0 -1
  759. package/src/supply-chain/container-release.js.map +0 -1
  760. package/src/supply-chain/ecr-applicability.js.map +0 -1
  761. package/src/supply-chain/ecr-scanning.js.map +0 -1
  762. package/src/supply-chain/ecs-deployed-image.js.map +0 -1
  763. package/src/supply-chain/errors.js.map +0 -1
  764. package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
  765. package/src/supply-chain/generated-command.js.map +0 -1
  766. package/src/supply-chain/generated-container-release-command.js.map +0 -1
  767. package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
  768. package/src/supply-chain/generated-files.js.map +0 -1
  769. package/src/supply-chain/generated-scanner-command.js.map +0 -1
  770. package/src/supply-chain/index.js.map +0 -1
  771. package/src/supply-chain/inventory.js.map +0 -1
  772. package/src/supply-chain/license-expression.js.map +0 -1
  773. package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
  774. package/src/supply-chain/policy.js.map +0 -1
  775. package/src/supply-chain/publication.js.map +0 -1
  776. package/src/supply-chain/sbom.js.map +0 -1
  777. package/src/supply-chain/scanner.js.map +0 -1
  778. package/src/supply-chain/vendored-source.js.map +0 -1
  779. package/src/testing-evidence/fixture-scope.js.map +0 -1
  780. package/src/testing-evidence/index.js.map +0 -1
  781. package/src/testing-evidence/quarantine.js.map +0 -1
  782. package/src/testing-evidence/result.js.map +0 -1
  783. package/src/testing-evidence/runner-adapter.js.map +0 -1
  784. package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
  785. package/src/validation.js.map +0 -1
  786. package/src/work-markers/index.js.map +0 -1
  787. package/src/work-markers/work-markers.js.map +0 -1
  788. package/src/workload-roles/account-baseline.js.map +0 -1
  789. package/src/workload-roles/authority.js.map +0 -1
  790. package/src/workload-roles/aws-adapter.js.map +0 -1
  791. package/src/workload-roles/aws-internal-handler.js.map +0 -1
  792. package/src/workload-roles/aws-s3-state.js.map +0 -1
  793. package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
  794. package/src/workload-roles/boundary.js.map +0 -1
  795. package/src/workload-roles/convergence.js.map +0 -1
  796. package/src/workload-roles/effective-policy.js.map +0 -1
  797. package/src/workload-roles/handler.js.map +0 -1
  798. package/src/workload-roles/history.js.map +0 -1
  799. package/src/workload-roles/index.js.map +0 -1
  800. package/src/workload-roles/injection.js.map +0 -1
  801. package/src/workload-roles/manifest.js.map +0 -1
  802. package/src/workload-roles/provisioner.js.map +0 -1
  803. package/src/workload-roles/registration.js.map +0 -1
  804. package/src/workload-roles/stage-boundary.js.map +0 -1
  805. package/src/workload-roles/standard-slice.js.map +0 -1
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderKeyValueRetentionFiles = renderKeyValueRetentionFiles;
4
+ const built_in_plan_shared_js_1 = require("./built-in-plan-shared.js");
5
+ /** Framework retention control records remain in DynamoDB, including for SQL-enabled Slices. */
6
+ function renderKeyValueRetentionFiles(name, pascalName) {
7
+ const prefix = (0, built_in_plan_shared_js_1.lowerCamelIdentifier)(pascalName);
8
+ return {
9
+ 'data/retention-state.ts': `import { digestApprovalRequest, type ApprovalRequest } from '@empire-builder-kit/runtime/authorization';
10
+ import type { KeyValueChange } from '@empire-builder-kit/runtime/key-value';
11
+ import { createDataLifecyclePseudonymousReference } from '@empire-builder-kit/runtime/data-lifecycle';
12
+ import { ${prefix}AuthorizationPolicy } from '../authorization/policy.js';
13
+ import { canonicalDataRightsNow, plusDataRightsDays } from './data-rights-shared.js';
14
+ import { ${pascalName}DataLifecycleRuntimePolicy } from './runtime-policy.cjs';
15
+ import { dataStore } from './key-value.js';
16
+
17
+ export const RETENTION_ACTION = '${name}:retention-apply';
18
+ export const RETENTION_AUTHORIZATION_POLICY = ${prefix}AuthorizationPolicy.version;
19
+ export const RETENTION_POLICY = ${pascalName}DataLifecycleRuntimePolicy.policyVersion;
20
+ export const RETENTION_DAYS = ${pascalName}DataLifecycleRuntimePolicy.retentionDays;
21
+ export const RETENTION_RUNS = 'data-retention-runs';
22
+ const UUID = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i;
23
+
24
+ export interface ${pascalName}RetentionPlanV1 {
25
+ asOf: string; candidateDigest: string; categoryId: 'product-record'; due: number;
26
+ locationId: 'primary-database'; maxItems: 10000; pageSize: 100;
27
+ policyVersion: string; retentionDays: number; runId: string;
28
+ }
29
+ export interface RetentionRun {
30
+ kind: 'data-retention-run'; schemaVersion: 1; slice: '${name}'; stage: string;
31
+ plan: ${pascalName}RetentionPlanV1;
32
+ approval: ApprovalRequest<typeof RETENTION_ACTION> | null;
33
+ status: 'reported' | 'approval-pending' | 'approval-approved' | 'approval-rejected' |
34
+ 'applying' | 'retry-required' | 'completed' | 'expired';
35
+ createdAt: string; updatedAt: string; expiresAt: string;
36
+ }
37
+ export function retentionStage(): string {
38
+ const stage = process.env.EBK_STAGE;
39
+ if (!stage || !/^[a-z][a-z0-9-]{0,62}$/.test(stage)) throw new Error('Retention requires the exact Slice/task stage.');
40
+ return stage;
41
+ }
42
+ export function retentionRunReference(runId: string): string {
43
+ if (typeof runId !== 'string' || !UUID.test(runId)) throw new Error('Retention run requires an exact UUID.');
44
+ return createDataLifecyclePseudonymousReference({ categoryId: 'lifecycle-control-metadata', slice: '${name}', value: runId });
45
+ }
46
+ /** Retained control metadata is validated against its own policy, never today's deletion authority. */
47
+ export function requireRetainedRetentionPlan(value: ${pascalName}RetentionPlanV1, runId: string): ${pascalName}RetentionPlanV1 {
48
+ retentionRunReference(runId);
49
+ if (!value || value.runId !== runId || typeof value.policyVersion !== 'string' || !value.policyVersion.trim() || value.policyVersion.length > 128 ||
50
+ value.categoryId !== 'product-record' || value.locationId !== 'primary-database' ||
51
+ value.maxItems !== 10000 || value.pageSize !== 100 || !Number.isSafeInteger(value.retentionDays) || value.retentionDays < 1 ||
52
+ !Number.isSafeInteger(value.due) || value.due < 0 || value.due > value.maxItems ||
53
+ typeof value.asOf !== 'string' || typeof value.candidateDigest !== 'string' || !/^sha256:[a-f0-9]{64}$/.test(value.candidateDigest) ||
54
+ Object.keys(value).sort().join(',') !== 'asOf,candidateDigest,categoryId,due,locationId,maxItems,pageSize,policyVersion,retentionDays,runId')
55
+ throw new Error('Retention report plan is invalid.');
56
+ canonicalDataRightsNow(value.asOf);
57
+ return value;
58
+ }
59
+ export function requireRetentionPlan(value: ${pascalName}RetentionPlanV1, runId: string): ${pascalName}RetentionPlanV1 {
60
+ requireRetainedRetentionPlan(value, runId);
61
+ if (value.policyVersion !== RETENTION_POLICY || value.retentionDays !== RETENTION_DAYS)
62
+ throw new Error('Retention report policy changed; create and approve a new report.');
63
+ return value;
64
+ }
65
+ export const retentionApprovalInput = (plan: ${pascalName}RetentionPlanV1) => ({
66
+ action: RETENTION_ACTION, command: plan, resource: { id: plan.runId, type: 'retention-run' },
67
+ } as const);
68
+ export function createReportedRetentionRun(plan: ${pascalName}RetentionPlanV1, now: string): RetentionRun {
69
+ if (typeof now !== 'string') throw new Error('Retention report requires an explicit timestamp.');
70
+ requireRetentionPlan(plan, plan.runId); canonicalDataRightsNow(now);
71
+ if (Date.parse(plan.asOf) > Date.parse(now)) throw new Error('Retention report cannot select future records.');
72
+ return { kind: 'data-retention-run', schemaVersion: 1, slice: '${name}', stage: retentionStage(),
73
+ plan, approval: null, status: 'reported', createdAt: now, updatedAt: now, expiresAt: plusDataRightsDays(now, 400) };
74
+ }
75
+ export function retentionRunChange(run: RetentionRun, expectedVersion: number): KeyValueChange {
76
+ return { action: 'put', collection: RETENTION_RUNS, id: run.plan.runId, expectedVersion, value: run };
77
+ }
78
+ export async function loadRetentionRun(runId: string, now: string) {
79
+ if (typeof now !== 'string') throw new Error('Retention operation requires an explicit timestamp.');
80
+ retentionRunReference(runId); canonicalDataRightsNow(now);
81
+ const row = await dataStore().get('application', RETENTION_RUNS, runId);
82
+ const run = row?.value as RetentionRun | undefined;
83
+ if (!row || !run || run.kind !== 'data-retention-run' || run.schemaVersion !== 1 ||
84
+ run.slice !== '${name}' || run.stage !== retentionStage() ||
85
+ !['reported', 'approval-pending', 'approval-approved', 'approval-rejected', 'applying', 'retry-required', 'completed', 'expired'].includes(run.status))
86
+ throw new Error('The exact retention report was not found or is malformed.');
87
+ requireRetentionPlan(run.plan, runId);
88
+ for (const value of [run.createdAt, run.updatedAt, run.expiresAt]) {
89
+ if (typeof value !== 'string') throw new Error('Retention report time bounds are malformed.');
90
+ canonicalDataRightsNow(value);
91
+ }
92
+ if (Date.parse(run.plan.asOf) > Date.parse(run.createdAt) || Date.parse(run.createdAt) > Date.parse(run.updatedAt) ||
93
+ Date.parse(run.updatedAt) > Date.parse(now) || run.expiresAt !== plusDataRightsDays(run.createdAt, 400) ||
94
+ Date.parse(now) >= Date.parse(run.expiresAt))
95
+ throw new Error('Retention report is expired or its retained time bounds are invalid.');
96
+ const approval = run.approval;
97
+ if (approval !== null) {
98
+ if (!approval || !UUID.test(approval.id) || approval.schemaVersion !== 1 || approval.slice !== '${name}' ||
99
+ approval.action !== RETENTION_ACTION || approval.policyVersion !== RETENTION_AUTHORIZATION_POLICY ||
100
+ approval.resource?.id !== runId || approval.resource.type !== 'retention-run' ||
101
+ !Number.isSafeInteger(approval.revision) || approval.revision < 0 ||
102
+ digestApprovalRequest(retentionApprovalInput(run.plan)) !== approval.requestDigest ||
103
+ approval.author?.authorityMode !== 'direct' || approval.author.subjectType !== 'user' ||
104
+ typeof approval.author.actorId !== 'string' || !approval.author.actorId ||
105
+ approval.author.effectiveHumanId !== approval.author.actorId)
106
+ throw new Error('Retention approval is not bound to the exact report and direct author.');
107
+ if (typeof approval.requestedAt !== 'string' || typeof approval.expiresAt !== 'string')
108
+ throw new Error('Retention approval time bounds are malformed.');
109
+ canonicalDataRightsNow(approval.requestedAt); canonicalDataRightsNow(approval.expiresAt);
110
+ if (Date.parse(approval.requestedAt) < Date.parse(run.createdAt) || Date.parse(approval.requestedAt) > Date.parse(run.updatedAt) ||
111
+ Date.parse(approval.expiresAt) > Date.parse(run.expiresAt) ||
112
+ approval.expiresAt !== plusDataRightsDays(approval.requestedAt, 1))
113
+ throw new Error('Retention approval has invalid time bounds.');
114
+ }
115
+ const expected = { reported: null, 'approval-pending': 'pending', 'approval-approved': 'approved',
116
+ 'approval-rejected': 'rejected', applying: 'executing', 'retry-required': 'executing', completed: 'executed', expired: 'expired' };
117
+ if ((approval?.status ?? null) !== expected[run.status]) throw new Error('Retention report and approval state disagree.');
118
+ return { run, version: row.version };
119
+ }
120
+ `,
121
+ 'data/retention-control.ts': `import {
122
+ assertAuthorizationAllowed, createApprovalRequest, decideApprovalRequest,
123
+ type AuthorizationPrincipal,
124
+ } from '@empire-builder-kit/runtime/authorization';
125
+ import { canonicalDataRightsNow, dataRightsAuditChange, plusDataRightsDays, requireDirectAdmin } from './data-rights-shared.js';
126
+ import { dataStore } from './key-value.js';
127
+ import { loadRetentionRun, retentionApprovalInput, retentionRunChange, retentionRunReference,
128
+ RETENTION_AUTHORIZATION_POLICY, type RetentionRun } from './retention-state.js';
129
+ export type { ${pascalName}RetentionPlanV1 } from './retention-state.js';
130
+
131
+ interface Command { correlationId: string; now: string; principal: AuthorizationPrincipal; runId: string }
132
+ function validate(input: Command) {
133
+ requireDirectAdmin(input.principal);
134
+ if (typeof input.now !== 'string') throw new Error('Retention operation requires an explicit timestamp.');
135
+ canonicalDataRightsNow(input.now); retentionRunReference(input.runId);
136
+ if (typeof input.correlationId !== 'string' || !/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/.test(input.correlationId))
137
+ throw new Error('Retention requires a bounded correlation identifier.');
138
+ }
139
+ async function commit(run: RetentionRun, version: number, input: Command, purposeCode: string) {
140
+ if (!run.approval) throw new Error('Retention approval transition requires an approval.');
141
+ // Report, approval and audit share one native transaction; no independently
142
+ // writable approval file/row can authorize another report or a stale version.
143
+ await dataStore().commit({ tenantId: 'application', changes: [
144
+ retentionRunChange(run, version),
145
+ dataRightsAuditChange({ action: 'retention-apply', approvalRequestId: run.approval.id,
146
+ correlationId: input.correlationId, now: input.now, principal: input.principal,
147
+ resourceReference: retentionRunReference(input.runId), purposeCode,
148
+ outcome: run.status === 'approval-rejected' ? 'rejected' : 'succeeded',
149
+ summary: 'A bounded retention approval transition was committed.' }),
150
+ ] });
151
+ }
152
+ export async function request${pascalName}RetentionApproval(input: Command) {
153
+ validate(input);
154
+ const { run, version } = await loadRetentionRun(input.runId, input.now);
155
+ if (run.status !== 'reported' || run.approval !== null)
156
+ throw new Error('Retention report already has an approval request or is no longer reviewable.');
157
+ const approval = createApprovalRequest({ ...retentionApprovalInput(run.plan), author: input.principal,
158
+ expiresAt: plusDataRightsDays(input.now, 1), now: input.now,
159
+ policyVersion: RETENTION_AUTHORIZATION_POLICY, slice: '${name}' });
160
+ if (Date.parse(approval.expiresAt) > Date.parse(run.expiresAt))
161
+ throw new Error('Retention report expires before its approval; create a new report.');
162
+ await commit({ ...run, approval, status: 'approval-pending', updatedAt: input.now }, version, input, 'approval-pending');
163
+ return { approvalRequestId: approval.id, expiresAt: approval.expiresAt, requestDigest: approval.requestDigest, status: approval.status };
164
+ }
165
+ export async function decide${pascalName}RetentionApproval(input: Command & {
166
+ approvalRequestId: string; expectedRequestDigest: string; outcome: 'approved' | 'rejected'; reasonReference: string;
167
+ }) {
168
+ validate(input);
169
+ if (input.outcome !== 'approved' && input.outcome !== 'rejected') throw new Error('Retention approval outcome is invalid.');
170
+ const { run, version } = await loadRetentionRun(input.runId, input.now);
171
+ if (run.status !== 'approval-pending' || !run.approval || run.approval.id !== input.approvalRequestId)
172
+ throw new Error('Retention approval does not match the pending report.');
173
+ const decision = decideApprovalRequest(run.approval, { approver: input.principal,
174
+ expectedRequestDigest: input.expectedRequestDigest, now: input.now, outcome: input.outcome,
175
+ reasonReference: input.reasonReference, requiredPolicyVersion: RETENTION_AUTHORIZATION_POLICY });
176
+ assertAuthorizationAllowed(decision.decision);
177
+ await commit({ ...run, approval: decision.request, status: input.outcome === 'approved' ? 'approval-approved' : 'approval-rejected',
178
+ updatedAt: input.now }, version, input, 'approval-' + input.outcome);
179
+ return { approvalRequestId: decision.request.id, status: decision.request.status };
180
+ }
181
+ `,
182
+ };
183
+ }
184
+ //# sourceMappingURL=built-in-plan-key-value-retention.js.map
@@ -1,3 +1,3 @@
1
1
  import type { GeneratedOwnershipRecord } from '../../ownership/index.js';
2
2
  /** @internal */
3
- export declare function renderSliceMetadataFiles(name: string, scope: string, pascalName: string, ownership: GeneratedOwnershipRecord): Readonly<Record<string, string>>;
3
+ export declare function renderSliceMetadataFiles(name: string, scope: string, pascalName: string, ownership: GeneratedOwnershipRecord, sql?: boolean): Readonly<Record<string, string>>;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.renderSliceMetadataFiles = renderSliceMetadataFiles;
4
4
  const built_in_plan_shared_js_1 = require("./built-in-plan-shared.js");
5
5
  /** @internal */
6
- function renderSliceMetadataFiles(name, scope, pascalName, ownership) {
6
+ function renderSliceMetadataFiles(name, scope, pascalName, ownership, sql = false) {
7
7
  return {
8
8
  '.ebk/ownership.json': (0, built_in_plan_shared_js_1.json)(ownership),
9
9
  'README.md': `# ${name}
@@ -18,7 +18,8 @@ files from \`packages/foundation/infra\` or from another slice's internals.
18
18
 
19
19
  - Next.js web application with sign-in, refresh, sign-out, callback, and password-reset paths
20
20
  - Lambda HTTP API with health and JWT-protected routes
21
- - stage- and slice-scoped logical Postgres database plus migration history
21
+ - task/stage- and Slice-scoped DynamoDB persistence with durable event intents and inbox handling
22
+ - optional user-feature PostgreSQL/Drizzle backed by Foundation Aurora when SQL is declared
22
23
  - typed EventBridge publisher and SQS/DLQ-backed consumer
23
24
  - Product Slice dashboard and API/DLQ alarms routed through Foundation alerts
24
25
  - Vitest source test and Playwright deployed-smoke path
@@ -26,11 +27,20 @@ files from \`packages/foundation/infra\` or from another slice's internals.
26
27
  rendered accessibility checks, and reviewable visual evidence
27
28
  - versioned SLO, alarm, diagnostic, incident-remediation, and reliability-exercise contracts
28
29
  - performance, capacity, resource-tag, protected-load, and actual-cost evidence contracts
29
- - workspace-lockfile-derived migration and retention container recipes with supply-chain checks
30
+ - supply-chain-checked migration containers only for declared SQL workloads
30
31
 
31
32
  Keep business contracts in \`contracts/\`. Add long-running Services and finite Jobs only when
32
33
  the product needs them.
33
34
 
35
+ Declare a new same-Slice domain event in the seeded \`contracts/events.ts\`
36
+ \`EventContractSchema\` and implement its effect in the seeded \`api/event-consumer.ts\`.
37
+ The existing queue rule subscribes to those declared event types while retaining
38
+ the exact publishing Slice and current stage filters. Keep the built-in event
39
+ declarations; lifecycle events retain their separate declared-source rule.
40
+ Commit domain changes and event intents together through the DynamoDB store,
41
+ and commit consumer effects with the inbox. Do not edit managed routing or
42
+ assume that declaring an event implements its consumer behavior.
43
+
34
44
  Run \`pnpm nx run ${name}:verify\` for the non-deployed Slice checks. The policy files under
35
45
  \`frontend/\`, \`docs/reliability/\`, \`operations/\`, and \`performance/\` are seeded decisions:
36
46
  adopt real owners, journeys, thresholds, targets, and evidence sources before enabling
@@ -43,19 +53,61 @@ Add product dependencies with \`pnpm --filter ${scope}/${name} add <package>\`.
43
53
  its recorded framework keys in this package manifest, so health checks and upgrades preserve
44
54
  dependencies, scripts, and other keys added by the product team.
45
55
 
46
- ## Local database
56
+ ## Develop the DynamoDB-first application
47
57
 
48
- Run \`ebk dev up ${name}\`. The framework derives the current developer's
49
- personal stage, starts Docker Postgres, applies local migrations, and starts
50
- SST live mode through the workspace-pinned Nx task. A caller cannot supply or
51
- persist a stage override. The fleet supervisor allocates the internal Next.js
52
- port and reports the HTTPS readiness URL.
58
+ Run \`ebk dev up ${name}\`. The framework reuses this worktree's persisted opaque
59
+ task identity, starts the selected Slice and declared dependencies, and runs
60
+ SST live mode through the workspace-pinned Nx task. Native persistence uses the
61
+ task's real AWS DynamoDB resources; Docker PostgreSQL starts only for declared
62
+ relational workloads. \`verify\` runs \`test-integration\`, which starts DynamoDB
63
+ Local (and PostgreSQL when declared) in disposable Docker containers, so
64
+ verification needs a running Docker engine. A caller cannot supply or persist a
65
+ stage override. The
66
+ fleet supervisor allocates the internal Next.js port and reports the HTTPS
67
+ readiness URL. Development accepts a dirty tree and requires no production
68
+ confirmation or release artifact.
53
69
 
54
70
  The workspace fleet target discovers this slice through its versioned
55
71
  \`metadata.ebk.localDev\` adapter. It supplies the exact HTTPS fleet origin, secure-cookie
56
72
  signal, callback/logout URLs, and allocated internal port; do not persist a developer port in
57
73
  this project.
58
74
 
75
+ Functions added with \`nx g @empire-builder-kit/nx:function\` use
76
+ \`/${name}/api/functions/<name>\` on this same browser origin. During fleet
77
+ development, generated Next routing forwards only that namespace to this task's
78
+ SST API; handlers keep native SST live execution. This is not deployed-stage
79
+ fallback. Keep user-owned Next API routes local and do not add a manual proxy.
80
+
81
+ Use \`pnpm nx run ${name}:verify-local-browser\` against that owned fleet origin.
82
+ Before its first run, install the pinned browser from this Slice's directory
83
+ with \`pnpm exec playwright install chromium\`. Repeat after a Playwright upgrade
84
+ only when the required browser revision changes. Verification never downloads
85
+ a browser or changes system trust silently. Inspect local failures under
86
+ \`.ebk/evidence/local-browser-artifacts\` in this Slice; keep these diagnostics
87
+ private because they may contain application test data.
88
+ Run affected feature tests, typecheck and lint for ordinary edits; use the
89
+ complete Slice/workspace verification at milestones, not after every hot edit.
90
+ Local fixture tests do not prove cloud routing, Streams, IAM or browser behavior.
91
+ Run \`ebk dev down ${name}\` when finished; cleanup must target only owned task
92
+ resources, and retained local SQL volumes remain available for the next session.
93
+
94
+ ## Add relational storage deliberately
95
+
96
+ SQL is optional for user features that need relational constraints, joins or
97
+ transactions. DynamoDB remains the framework core, including its inbox and
98
+ outbox, when SQL is enabled. Use the Standard Blueprint's \`inputs.sql.reason\`
99
+ at Slice creation, or run
100
+ \`pnpm nx g @empire-builder-kit/nx:sql ${name} --reason="Explain the relational requirement"\`
101
+ to review the later addition, then repeat with \`--apply\`. The generator updates
102
+ the persisted Foundation/Slice declarations and reports resource implications;
103
+ it does not deploy AWS resources. New SQL defaults to \`cost-optimized\` Aurora
104
+ (0–2 ACUs, five-minute auto-pause); an explicit existing capacity choice is
105
+ preserved. Choose \`balanced\` or \`standard\` only when measured latency and
106
+ capacity needs justify a warm floor. Capacity selection does not pause schedules.
107
+
108
+ The commands below apply only after SQL has been declared. No Aurora, Drizzle
109
+ migration target or local PostgreSQL prerequisite is part of the SQL-free path.
110
+
59
111
  \`database/bindings.json\` is the adopter-owned database selection contract. Add a candidate
60
112
  identifier to \`primary.provisioned\` to provision it without moving workload traffic. Every
61
113
  provisioned identifier receives its own AWS-internal bootstrap-and-migration workflow. Run
@@ -67,10 +119,7 @@ databases with Foundation master credentials.
67
119
  The readiness route is framework-managed for local orchestration. Put product-specific
68
120
  dependency and status checks under \`/${name}/api/status\` rather than editing that route.
69
121
 
70
- Run \`ebk dev down ${name}\` when finished. The named volume preserves local
71
- data between sessions.
72
-
73
- For a deployed canonical stage, \`${name}:db-migrate\` does not connect from the
122
+ For a deployed canonical SQL stage, \`${name}:db-migrate\` does not connect from the
74
123
  local or GitHub process. It starts the generated Standard Step Functions
75
124
  workflow, waits for its one-off Fargate task, and reports the execution ARN.
76
125
  The workflow first runs an AWS-internal bootstrap task that converges the
@@ -79,16 +128,22 @@ IAM-authenticated migration task. Neither password resolves in GitHub, SST, or
79
128
  Pulumi state. The authenticated \`GET /database-health\` API route uses the
80
129
  server-only resolver, linked secret, and runtime-embedded AWS RDS global CA
81
130
  bundle to prove the deployed runtime path with hostname-verified TLS.
82
- Staging and production use the existing environment-scoped
83
- \`AWS_DEPLOY_ROLE_ARN\`; no second migration OIDC role or database password is
84
- configured by the adopter. That role needs only \`ssm:GetParameter\` for the
131
+ Staging and production use the canonical stage deployment role
132
+ (\`ebk-<stage>-deploy\`), which the managed Deploy workflow derives from
133
+ committed account, stage and partition policy and exposes to its jobs as
134
+ \`AWS_DEPLOY_ROLE_ARN\`; no GitHub environment role secret, second migration
135
+ OIDC role or database password is configured by the adopter. That role needs only \`ssm:GetParameter\` for the
85
136
  exact generated migration-registration path and \`states:StartExecution\` /
86
137
  \`states:DescribeExecution\` for the exact generated state machine and its
87
138
  execution namespace; it never receives SQL, database-token, or arbitrary ECS
88
- authority.
89
-
90
- Ordinary Slice removal is non-destructive and retains logical databases and
91
- credential containers. The only destructive v1 database path is the protected
139
+ authority. When a user feature changes SQL data and publishes an event, keep
140
+ the SQL change and SQL intent in one transaction, then notify after commit.
141
+ Missed SQL notifications recover on the next hourly reconciliation by default;
142
+ explicit cadence and maintenance pauses remain independent settings. No
143
+ transaction spans SQL and DynamoDB.
144
+
145
+ Ordinary Slice removal retains declared relational databases and their
146
+ credential containers. The generated SQL retirement rehearsal is the protected
92
147
  \`db-retirement-rehearsal\` target for the exact operations-declared
93
148
  \`development\` database named \`retirement_rehearsal\`. It accepts no stage,
94
149
  Slice, database, task, role, image, network, or workflow selection.
@@ -110,12 +165,14 @@ export const ${pascalName}ContractVersion = '1.0.0' as const;
110
165
 
111
166
  ## Boundary
112
167
 
113
- This slice owns its product behavior, routes, app clients, logical databases, event rules,
114
- queues, alarms, dashboards, and runbooks. The Foundation owns shared capacity and policy.
168
+ This Slice owns its product behavior, routes, app clients, DynamoDB tables,
169
+ declared relational databases, event rules, queues, alarms, dashboards and
170
+ runbooks. Foundation owns shared capabilities and policy; Aurora is provisioned
171
+ only for declared relational requirements, not for the DynamoDB framework core.
115
172
 
116
173
  ## Dependencies
117
174
 
118
- - Foundation contract: \`^1\`
175
+ - Foundation discovery follows its versioned capability contract
119
176
  - Canonical stages map to the same Foundation stage; framework-derived personal stages map
120
177
  only to \`development\`
121
178
  - Other slices: contracts-only imports
@@ -137,7 +194,8 @@ Service or Job recovery procedures as those capabilities are added.
137
194
  ## Operator secrets
138
195
 
139
196
  Use \`docs/runbooks/operator-secret-management.md\` for value-free metadata
140
- convergence and the separate, human-only personal-stage value ceremony.
197
+ convergence, which agents may run, and the separate personal-stage value
198
+ ceremony, whose value entry is human-only.
141
199
 
142
200
  ## Performance, capacity, and cost
143
201
 
@@ -146,7 +204,8 @@ before adopting capacity limits, enabling protected load, or collecting actual-c
146
204
 
147
205
  ## Database migration
148
206
 
149
- Protected migration runs from generated immutable bootstrap and migration
207
+ ${sql
208
+ ? `Protected migration runs from generated immutable bootstrap and migration
150
209
  Fargate tasks through one Standard Step Functions workflow per provisioned
151
210
  database identifier. The bootstrap task owns exact master-secret read,
152
211
  runtime-secret read/write, and migrator-connect permissions; it converges the
@@ -157,10 +216,12 @@ receives only exact migrator-connect permission.
157
216
 
158
217
  Retain the workflow execution ARN, both task identities, image identity, source
159
218
  commit, migration checksums, sanitized CloudWatch logs, backup reference, and
160
- verification result. The GitHub job reuses
161
- \`AWS_DEPLOY_ROLE_ARN\` only to start and describe the exact workflow; it must
162
- not have direct SQL, secret-value, \`rds-db:connect\`, or arbitrary
163
- \`ecs:RunTask\` authority.
219
+ verification result. The GitHub job uses the stage deployment role
220
+ (\`AWS_DEPLOY_ROLE_ARN\`) only to start and describe the exact workflow. That
221
+ role has no \`rds-db:connect\` or \`ecs:RunTask\` authority and no secret-value
222
+ access to operator or Slice secret containers; its sole secret-value exception
223
+ is the SST-managed Foundation Aurora credential described in the workspace
224
+ \`docs/stage-deployment-authority.md\`.
164
225
 
165
226
  The default \`db-migrate\` target selects the active \`primary\` database.
166
227
  During replacement, first add the candidate to \`primary.provisioned\`, deploy
@@ -188,10 +249,75 @@ reviewed replacement or forward-compatible design instead of bypassing the
188
249
  transaction. Apply expand/migrate/contract. Repair failures with a forward
189
250
  migration or the documented restore/replacement procedure; do not edit an
190
251
  applied SQL file.
252
+ `
253
+ : `This Slice uses DynamoDB and has no SQL migration or retirement targets.
254
+ For a feature requiring relational integrity or joins, review
255
+ \`pnpm nx g @empire-builder-kit/nx:sql ${name} --reason="Explain the relational requirement"\`,
256
+ then repeat with \`--apply\`. Generation declares the capability; deploy through
257
+ the normal lifecycle. DynamoDB remains the framework core after SQL is added.
258
+ `}
259
+ `,
260
+ 'docs/runbooks/database-recovery.md': `# ${name} persistence recovery
261
+
262
+ Start with the exact Slice, stage, source and alarm dimensions. Keep unrelated
263
+ stages and production protections unchanged. Record bounded diagnostics; do not
264
+ retain record bodies, credentials or raw provider state.
265
+
266
+ ## DynamoDB
267
+
268
+ For \`database-errors\`, inspect both table and PendingEvents index read/write
269
+ throttle metrics. Check hot keys, account/service quotas, retries and backlog;
270
+ do not treat a missing RDS signal as proof that the table is healthy. Check the
271
+ outbox schedule and stream mapping against their deliberate maintenance state.
272
+ Never delete pending intents or completion work to silence an alarm. If delivery
273
+ was interrupted, restore the owning worker's authority/connectivity and allow
274
+ bounded reconciliation to resume. Repeated failures require investigation of
275
+ the retained content-free failure marker and exact original workflow.
276
+ Completion failures retain a bounded attempt counter and exponential retry
277
+ delay (one minute up to one hour). A deferred or earlier-page obligation keeps
278
+ reconciliation partial; it is never expired by TTL. Repair the owning failure,
279
+ then allow the next retry, or retry the original approved deletion command.
280
+ Never invent publication acknowledgement or remove its pending-work binding.
281
+
282
+ Control-metadata holds belong in the seeded \`data/policy.json\` descriptor and
283
+ take effect with its governed deployment. They are checked before every
284
+ maintenance invocation, independent of its retained cursor. Record-hold APIs
285
+ create only product-record holds. Do not insert control holds directly into
286
+ the product hold collection; it is not a global maintenance-authority surface.
287
+
288
+ For restore, use point-in-time recovery into a new, separately identified table.
289
+ Verify record integrity, encryption, access scope and replay/idempotency behavior
290
+ before proposing a reviewed binding change. Do not automatically cut over,
291
+ overwrite the original table, replay expired inbox messages or disable deletion
292
+ protection. Retain measured recovery point/time and the rollback identity.
293
+
294
+ ${sql
295
+ ? `## Declared PostgreSQL
296
+
297
+ The declared Aurora database additionally requires its migration checksums,
298
+ backup identity, retained resource identity and deletion protection to be checked.
299
+ Use the [database migration procedure](../runbooks.md#database-migration).
300
+ Restore into a new resource and verify authorization and migrations before any
301
+ reviewed traffic change; never edit an applied migration or replace production
302
+ as an incidental repair.
303
+ `
304
+ : `SQL is not declared. No Aurora investigation or SQL migration command is
305
+ required for this Slice's DynamoDB recovery.
306
+ `}
191
307
  `,
192
308
  'ebk-globals.d.ts': `import 'sst/resource';
193
309
 
194
310
  declare global {
311
+ type EbkSstOutput<T> = {
312
+ apply<U>(operation: (value: T) => U): EbkSstOutput<U>;
313
+ };
314
+ type EbkSstUnwrap<T> = T extends EbkSstOutput<infer U>
315
+ ? EbkSstUnwrap<U>
316
+ : T extends readonly (infer U)[]
317
+ ? EbkSstUnwrap<U>[]
318
+ : T extends Record<string, unknown>
319
+ ? { [K in keyof T]: EbkSstUnwrap<T[K]> }
320
+ : T;
195
321
  const sst: any;
196
322
  const aws: any;
197
323
  const $app: { name: string; stage: string };
@@ -202,6 +328,10 @@ declare global {
202
328
  ...values: unknown[]
203
329
  ) => unknown;
204
330
  const $jsonStringify: (value: unknown) => unknown;
331
+ const $output: (value: unknown) => any;
332
+ function $resolve<T extends Record<string, any>>(
333
+ value: T,
334
+ ): EbkSstOutput<EbkSstUnwrap<T>>;
205
335
  const $transform: any;
206
336
  const $util: any;
207
337
  }
@@ -0,0 +1,2 @@
1
+ /** @internal */
2
+ export declare function renderStandardSliceNativeRuntimeAuthorityFiles(name: string, workspace: string, sql?: boolean): Readonly<Record<string, string>>;