@empire-builder-kit/nx 1.0.0-rc.38 → 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 +3 -1
  169. package/src/generators/slice/built-in-plan-shared.js +40 -18
  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 +191 -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
@@ -4,6 +4,11 @@ exports.STANDARD_LOCAL_DEV_ADAPTER = exports.PRODUCT_PACKAGE_MANAGED_JSON_POINTE
4
4
  exports.isBuiltInSliceFormatSensitivePath = isBuiltInSliceFormatSensitivePath;
5
5
  exports.createBuiltInSlicePlan = createBuiltInSlicePlan;
6
6
  const deterministic_order_js_1 = require("../../deterministic-order.js");
7
+ const capability_plan_js_1 = require("../../foundation/capability-plan.js");
8
+ const persistence_contract_js_1 = require("./persistence-contract.js");
9
+ const built_in_plan_key_value_files_js_1 = require("./built-in-plan-key-value-files.js");
10
+ const built_in_plan_key_value_infrastructure_js_1 = require("./built-in-plan-key-value-infrastructure.js");
11
+ const built_in_plan_sql_events_js_1 = require("./built-in-plan-sql-events.js");
7
12
  const index_js_1 = require("../../ownership/index.js");
8
13
  const built_in_plan_api_contract_files_js_1 = require("./built-in-plan-api-contract-files.js");
9
14
  const built_in_plan_api_files_js_1 = require("./built-in-plan-api-files.js");
@@ -61,7 +66,7 @@ function composeDisjointFileGroups(groups) {
61
66
  }
62
67
  return files;
63
68
  }
64
- function renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyReviewedAt, deploymentProfile) {
69
+ function renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyReviewedAt, deploymentProfile, persistence) {
65
70
  const pascalName = name
66
71
  .split('-')
67
72
  .map((segment) => segment[0]?.toUpperCase() + segment.slice(1))
@@ -69,33 +74,47 @@ function renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyRevi
69
74
  const protectedRuntimeStages = deploymentProfile === 'starter'
70
75
  ? ['development', 'production']
71
76
  : ['staging', 'production'];
77
+ const sql = ownership.foundation.capabilities.includes('postgres');
72
78
  return composeDisjointFileGroups([
73
- ['background work', (0, built_in_plan_background_work_files_js_1.renderBackgroundWorkFiles)(deploymentProfile)],
79
+ [
80
+ 'persistence declaration',
81
+ { 'data/persistence.json': JSON.stringify(persistence, null, 2) + '\n' },
82
+ ],
83
+ ['key-value runtime', (0, built_in_plan_key_value_files_js_1.renderKeyValueRuntimeFiles)(name)],
84
+ [
85
+ 'key-value infrastructure',
86
+ (0, built_in_plan_key_value_infrastructure_js_1.renderKeyValueInfrastructureFiles)(name, pascalName),
87
+ ],
88
+ ['background work', (0, built_in_plan_background_work_files_js_1.renderBackgroundWorkFiles)(deploymentProfile, sql)],
89
+ ['SQL events', sql ? (0, built_in_plan_sql_events_js_1.renderSqlEventFiles)(name) : {}],
74
90
  [
75
91
  'Slice metadata',
76
- (0, built_in_plan_metadata_files_js_1.renderSliceMetadataFiles)(name, scope, pascalName, ownership),
92
+ (0, built_in_plan_metadata_files_js_1.renderSliceMetadataFiles)(name, scope, pascalName, ownership, sql),
93
+ ],
94
+ [
95
+ 'Foundation wiring',
96
+ (0, built_in_plan_foundation_files_js_1.renderSliceFoundationFiles)(name, pascalName, ownership.foundation.capabilities),
77
97
  ],
78
- ['Foundation wiring', (0, built_in_plan_foundation_files_js_1.renderSliceFoundationFiles)(name, pascalName)],
79
98
  [
80
99
  'project configuration',
81
100
  (0, built_in_plan_project_files_js_1.renderSliceProjectFiles)(name, scope, runtimeVersion, ownership),
82
101
  ],
83
102
  [
84
103
  'operations',
85
- (0, built_in_plan_operations_files_js_1.renderSliceOperationsFiles)(name, scope.slice(1), runtimeVersion),
104
+ (0, built_in_plan_operations_files_js_1.renderSliceOperationsFiles)(name, scope.slice(1), runtimeVersion, sql),
86
105
  ],
87
- ['database lifecycle', (0, built_in_plan_database_lifecycle_files_js_1.renderDatabaseLifecycleFiles)(name)],
106
+ ['database lifecycle', sql ? (0, built_in_plan_database_lifecycle_files_js_1.renderDatabaseLifecycleFiles)(name) : {}],
88
107
  [
89
108
  'database retirement rehearsal',
90
- (0, built_in_plan_database_retirement_rehearsal_files_js_1.renderDatabaseRetirementRehearsalFiles)(name),
109
+ sql ? (0, built_in_plan_database_retirement_rehearsal_files_js_1.renderDatabaseRetirementRehearsalFiles)(name) : {},
91
110
  ],
92
111
  [
93
112
  'native runtime authority',
94
- (0, built_in_plan_native_runtime_authority_files_js_1.renderStandardSliceNativeRuntimeAuthorityFiles)(name, scope.slice(1)),
113
+ (0, built_in_plan_native_runtime_authority_files_js_1.renderStandardSliceNativeRuntimeAuthorityFiles)(name, scope.slice(1), sql),
95
114
  ],
96
115
  [
97
116
  'data contracts',
98
- (0, built_in_plan_data_files_js_1.renderProductDataFiles)(name, pascalName, protectedRuntimeStages),
117
+ (0, built_in_plan_data_files_js_1.renderProductDataFiles)(name, pascalName, protectedRuntimeStages, sql),
99
118
  ],
100
119
  [
101
120
  'data deletion',
@@ -127,14 +146,14 @@ function renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyRevi
127
146
  'authorization infrastructure',
128
147
  (0, built_in_plan_authorization_infrastructure_files_js_1.renderStandardSliceAuthorizationInfrastructureFiles)(name, pascalName),
129
148
  ],
130
- ['API', (0, built_in_plan_api_files_js_1.renderProductApiFiles)(name, pascalName, scope.slice(1))],
149
+ ['API', (0, built_in_plan_api_files_js_1.renderProductApiFiles)(name, pascalName, scope.slice(1), sql)],
131
150
  [
132
151
  'reliability and incident response',
133
152
  (0, built_in_plan_reliability_files_js_1.renderProductReliabilityFiles)(name, pascalName, dataPolicyReviewedAt),
134
153
  ],
135
154
  [
136
155
  'product infrastructure',
137
- (0, built_in_plan_infrastructure_files_js_1.renderProductInfrastructureFiles)(name, pascalName, scope.slice(1), protectedRuntimeStages),
156
+ (0, built_in_plan_infrastructure_files_js_1.renderProductInfrastructureFiles)(name, pascalName, scope.slice(1), protectedRuntimeStages, sql, ownership.foundation.capabilities.includes('network')),
138
157
  ],
139
158
  [
140
159
  'performance, capacity, and cost',
@@ -142,18 +161,18 @@ function renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyRevi
142
161
  ],
143
162
  [
144
163
  'release and configuration',
145
- (0, built_in_plan_thin_release_files_js_1.renderProductThinReleaseFiles)(name, dataPolicyReviewedAt, deploymentProfile),
164
+ (0, built_in_plan_thin_release_files_js_1.renderProductThinReleaseFiles)(name, dataPolicyReviewedAt, deploymentProfile, sql),
146
165
  ],
147
166
  [
148
167
  'frontend contract and evidence',
149
168
  (0, built_in_plan_frontend_files_js_1.renderProductFrontendFiles)(name, pascalName),
150
169
  ],
151
- ['web', (0, built_in_plan_web_files_js_1.renderProductWebFiles)(name, pascalName, scope.slice(1))],
152
- ['testing', (0, built_in_plan_testing_files_js_1.renderProductTestingFiles)(name, pascalName)],
170
+ ['web', (0, built_in_plan_web_files_js_1.renderProductWebFiles)(name, pascalName, scope.slice(1), sql)],
171
+ ['testing', (0, built_in_plan_testing_files_js_1.renderProductTestingFiles)(name, pascalName, sql)],
153
172
  ['verification', (0, built_in_plan_verification_files_js_1.renderProductVerificationFiles)(name, pascalName)],
154
173
  ]);
155
174
  }
156
- function classifyPaths(files) {
175
+ function classifyPaths(files, sql) {
157
176
  const seededPaths = new Set([
158
177
  'operations/background-work.json',
159
178
  'README.md',
@@ -175,6 +194,7 @@ function classifyPaths(files) {
175
194
  'data/record-correction.ts',
176
195
  'data/record-export.ts',
177
196
  'data/record-holds.ts',
197
+ 'data/records.ts',
178
198
  'data/restore-adapter.ts',
179
199
  'docs/reliability/exclusions.md',
180
200
  'docs/reliability/slo.json',
@@ -221,11 +241,15 @@ function classifyPaths(files) {
221
241
  'authorization/machine-authorization-proof.ts',
222
242
  'authorization/machine-client-provisioner.py',
223
243
  'authorization/runtime.ts',
244
+ 'authorization/record-store.ts',
245
+ 'authorization/groups.mjs',
246
+ 'authorization/groups.d.mts',
224
247
  'data/runtime-policy.cts',
225
248
  'jobs/data-export-cleanup.ts',
226
249
  'jobs/data-retention-maintenance-launcher.ts',
227
250
  'testing/quarantine-runtime.mjs',
228
251
  'testing/strict-json-reporter.mjs',
252
+ 'testing/local-key-value.ts',
229
253
  'e2e/frontend-accessibility.spec.ts',
230
254
  ]);
231
255
  for (const path of built_in_plan_performance_files_js_1.PRODUCT_PERFORMANCE_SEEDED_PATHS)
@@ -240,7 +264,7 @@ function classifyPaths(files) {
240
264
  ? 'seeded'
241
265
  : 'managed';
242
266
  const managedJsonPointers = path === 'package.json'
243
- ? [...built_in_plan_shared_js_1.PRODUCT_PACKAGE_MANAGED_JSON_POINTERS]
267
+ ? (0, built_in_plan_shared_js_1.standardPackageManagedJsonPointers)(sql)
244
268
  : undefined;
245
269
  if (managedJsonPointers) {
246
270
  (0, index_js_1.assertManagedJsonPointersExist)(contents, managedJsonPointers, `Built-in Standard Blueprint ${path}`);
@@ -255,7 +279,11 @@ function classifyPaths(files) {
255
279
  })
256
280
  .sort((left, right) => (0, deterministic_order_js_1.compareUtf16)(left.path, right.path));
257
281
  }
258
- function createBuiltInSlicePlan(name, scope, runtimeVersion, manifest, inputs, dataPolicyReviewedAt = '2026-07-27T00:00:00.000Z', deploymentProfile = 'starter') {
282
+ function createBuiltInSlicePlan(name, scope, runtimeVersion, manifest, inputs, dataPolicyReviewedAt = '2026-07-27T00:00:00.000Z', deploymentProfile = 'starter', persistenceSource = {}) {
283
+ const persistence = (0, persistence_contract_js_1.standardPersistenceContract)({
284
+ inputs,
285
+ ...persistenceSource,
286
+ });
259
287
  const provisionalOwnership = {
260
288
  blueprint: { name: manifest.name, version: manifest.version },
261
289
  compositions: [],
@@ -266,7 +294,7 @@ function createBuiltInSlicePlan(name, scope, runtimeVersion, manifest, inputs, d
266
294
  `${scope}/${name}/contracts`,
267
295
  ],
268
296
  },
269
- foundation: manifest.foundation,
297
+ foundation: (0, capability_plan_js_1.standardPersistenceRequirement)(inputs, persistenceSource.compositions),
270
298
  inputs,
271
299
  paths: [],
272
300
  projects: [name, `@${name}/job-data-retention`],
@@ -274,13 +302,13 @@ function createBuiltInSlicePlan(name, scope, runtimeVersion, manifest, inputs, d
274
302
  slice: name,
275
303
  verification: manifest.verification,
276
304
  };
277
- const provisionalFiles = renderSliceFiles(name, scope, runtimeVersion, provisionalOwnership, dataPolicyReviewedAt, deploymentProfile);
305
+ const provisionalFiles = renderSliceFiles(name, scope, runtimeVersion, provisionalOwnership, dataPolicyReviewedAt, deploymentProfile, persistence);
278
306
  const ownership = {
279
307
  ...provisionalOwnership,
280
- paths: classifyPaths(provisionalFiles),
308
+ paths: classifyPaths(provisionalFiles, provisionalOwnership.foundation.capabilities.includes('postgres')),
281
309
  };
282
310
  return {
283
- files: renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyReviewedAt, deploymentProfile),
311
+ files: renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyReviewedAt, deploymentProfile, persistence),
284
312
  ownership,
285
313
  };
286
314
  }
@@ -0,0 +1,2 @@
1
+ import type { Tree } from '@nx/devkit';
2
+ export declare function dataPolicyReviewSeed(tree: Tree, root: string): string;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dataPolicyReviewSeed = dataPolicyReviewSeed;
4
+ const node_path_1 = require("node:path");
5
+ function dataPolicyReviewSeed(tree, root) {
6
+ const path = node_path_1.posix.join(root, 'data/policy.json');
7
+ const existing = tree.read(path, 'utf8');
8
+ if (existing !== null) {
9
+ try {
10
+ const reviewedAt = JSON.parse(existing).governance?.reviewedAt;
11
+ if (typeof reviewedAt === 'string' &&
12
+ new Date(reviewedAt).toISOString() === reviewedAt) {
13
+ return reviewedAt;
14
+ }
15
+ }
16
+ catch {
17
+ // The generated ownership/reconciliation path reports malformed policy.
18
+ }
19
+ }
20
+ return new Date().toISOString();
21
+ }
22
+ //# sourceMappingURL=data-policy-review-seed.js.map
@@ -0,0 +1,2 @@
1
+ /** Managed post-deployment prerequisite, not a replacement for browser proof. */
2
+ export declare const deployedSmokeReadinessScript: string;
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deployedSmokeReadinessScript = void 0;
4
+ /** Managed post-deployment prerequisite, not a replacement for browser proof. */
5
+ exports.deployedSmokeReadinessScript = String.raw `import { performance } from 'node:perf_hooks';
6
+ import { setTimeout as delay } from 'node:timers/promises';
7
+
8
+ const totalLimitMs = 30_000;
9
+ // Only a CloudFront-generated Router fallthrough extends readiness. The pinned
10
+ // SST Router reads routing from an eventually consistent CloudFront
11
+ // KeyValueStore; until a new Slice's route is visible at the serving edge the
12
+ // request reaches the placeholder origin. Every other failure keeps the
13
+ // thirty-second bound above.
14
+ const edgeRouteLimitMs = 300_000;
15
+ const requestLimitMs = 5_000;
16
+ const retryDelayMs = 2_000;
17
+ // Edge hosts within one POP converge on new routing at different times. Admit
18
+ // browser setup only after consecutive healthy rounds, each on a fresh
19
+ // connection, span a sustained window; any fallthrough restarts the window.
20
+ const confirmationWindowMs = 30_000;
21
+ const confirmationDelayMs = 1_000;
22
+ const confirmationLimitMs = confirmationWindowMs + 10_000;
23
+ // Every round sleeps at least the shorter delay, so this cap is reached only
24
+ // by a stalled fixture or clock, never before the time bounds below.
25
+ const roundLimit = Math.ceil((edgeRouteLimitMs + confirmationLimitMs) / Math.min(retryDelayMs, confirmationDelayMs)) + 1;
26
+ const bodyLimitBytes = 4_096;
27
+ const transientStatuses = new Set([502, 503, 504]);
28
+ const transientNetworkCodes = new Set([
29
+ 'EAI_AGAIN', 'ECONNREFUSED', 'ECONNRESET', 'ETIMEDOUT',
30
+ 'UND_ERR_CONNECT_TIMEOUT', 'UND_ERR_SOCKET',
31
+ ]);
32
+
33
+ function endpoint(value, path) {
34
+ const url = new URL(value);
35
+ if (url.protocol !== 'https:' || url.username || url.password || url.search || url.hash || url.pathname.replace(/\/$/, '') !== path) {
36
+ throw new Error('invalid-output');
37
+ }
38
+ return url;
39
+ }
40
+
41
+ function responseCorrelation(response) {
42
+ const requestId = response.headers.get('x-amz-cf-id');
43
+ const pop = response.headers.get('x-amz-cf-pop');
44
+ const cache = /^(Hit|Miss|RefreshHit|Error) from cloudfront$/i.exec(response.headers.get('x-cache') ?? '');
45
+ return {
46
+ ...(typeof requestId === 'string' && /^[A-Za-z0-9_+=/-]{20,128}$/.test(requestId) ? { cloudfrontRequestId: requestId } : {}),
47
+ ...(typeof pop === 'string' && /^[A-Z]{3}[0-9]{1,3}-[A-Z][0-9]{1,3}$/.test(pop) ? { cloudfrontPop: pop } : {}),
48
+ ...(cache ? { cloudfrontCache: cache[1].toLowerCase() } : {}),
49
+ };
50
+ }
51
+
52
+ async function boundedBytes(response) {
53
+ const reader = response.body?.getReader();
54
+ if (!reader) throw new Error('invalid-health');
55
+ const chunks = [];
56
+ let length = 0;
57
+ try {
58
+ for (;;) {
59
+ const chunk = await reader.read();
60
+ if (chunk.done) break;
61
+ length += chunk.value.byteLength;
62
+ if (length > bodyLimitBytes) throw new Error('invalid-health');
63
+ chunks.push(chunk.value);
64
+ }
65
+ const bytes = new Uint8Array(length);
66
+ let offset = 0;
67
+ for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.byteLength; }
68
+ return bytes;
69
+ } finally {
70
+ await reader.cancel().catch(() => {});
71
+ reader.releaseLock();
72
+ }
73
+ }
74
+
75
+ async function boundedJson(response) {
76
+ return JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(await boundedBytes(response)));
77
+ }
78
+
79
+ // The Router answers a request it could not route with CloudFront's own error
80
+ // page. Only that page is classified; origin-returned gateway errors are not.
81
+ async function edgeRouteUnavailable(response) {
82
+ if (!/^Error from cloudfront$/i.test(response.headers.get('x-cache') ?? '')) return undefined;
83
+ if (!/^text\/html\b/i.test(response.headers.get('content-type') ?? '')) return undefined;
84
+ let page;
85
+ try { page = new TextDecoder('latin1').decode(await boundedBytes(response)); }
86
+ catch { return undefined; }
87
+ if (!/<title>\s*ERROR: The request could not be satisfied\s*<\/title>/i.test(page)) return undefined;
88
+ return { edgeRouting: 'unavailable', originDnsPage: /resolve the origin domain name/i.test(page) };
89
+ }
90
+
91
+ // Dependency injection is internal fixture support; the generated runner has
92
+ // no environment/CLI override for endpoints, TLS, policy or timing.
93
+ export async function waitForDeployedSmokeReadiness(input, runtime = {}) {
94
+ const request = runtime.fetch ?? globalThis.fetch;
95
+ const now = runtime.now ?? (() => performance.now());
96
+ const sleep = runtime.sleep ?? ((ms, signal) => delay(ms, undefined, { signal }));
97
+ const started = now();
98
+ const standardDeadline = started + totalLimitMs;
99
+ const edgeDeadline = started + edgeRouteLimitMs;
100
+ const observations = [];
101
+ let edgePending = false;
102
+ let edgeObservations = 0;
103
+ let consecutive = 0;
104
+ let confirmationDeadline = 0;
105
+ let firstReadyAt = 0;
106
+ let firstReadyMs;
107
+ const elapsed = () => Math.max(0, Math.round(now() - started));
108
+ const deadline = () => Math.max(
109
+ edgePending ? edgeDeadline : standardDeadline,
110
+ consecutive > 0 ? confirmationDeadline : 0,
111
+ );
112
+ const failed = (classification, summary) => ({
113
+ outcome: 'failed', classification, summary, elapsedMs: elapsed(), observations,
114
+ });
115
+ let targets;
116
+ try {
117
+ if (!/^[a-z][a-z0-9-]*$/.test(input.service) || !/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(input.sourceCommit) || !['development', 'staging', 'production'].includes(input.stage)) throw new Error('invalid-identity');
118
+ const api = endpoint(input.apiUrl, '');
119
+ const web = endpoint(input.webUrl, '/' + input.service);
120
+ targets = [
121
+ { name: 'api', url: new URL('/health', api).href, service: input.service },
122
+ { name: 'web', url: new URL('/' + input.service + '/api/health', web.origin).href, service: input.service + '-web' },
123
+ ];
124
+ } catch {
125
+ return failed('environment-drift', 'Deployed readiness requires exact credential-free HTTPS outputs and service/stage/build identity.');
126
+ }
127
+ // The round cap also bounds receipts if a fixture or monotonic clock stalls.
128
+ for (let round = 0; round < roundLimit && now() < deadline(); round += 1) {
129
+ if (input.signal?.aborted) return failed('infrastructure-unavailable', 'Deployed readiness was interrupted before smoke setup.');
130
+ let ready = true;
131
+ for (const target of targets) {
132
+ if (input.signal?.aborted) return failed('infrastructure-unavailable', 'Deployed readiness was interrupted before smoke setup.');
133
+ const remaining = deadline() - now();
134
+ if (remaining <= 0) { ready = false; break; }
135
+ const timeout = AbortSignal.timeout(Math.max(1, Math.min(requestLimitMs, Math.ceil(remaining))));
136
+ const signal = input.signal ? AbortSignal.any([input.signal, timeout]) : timeout;
137
+ const startedAt = new Date().toISOString();
138
+ const requestStarted = now();
139
+ const timing = () => ({ startedAt, durationMs: Math.max(0, Math.round(now() - requestStarted)), elapsedMs: elapsed() });
140
+ let response;
141
+ let observation;
142
+ try {
143
+ // A fresh connection per request samples more than one edge host.
144
+ response = await request(target.url, {
145
+ method: 'GET', redirect: 'manual', credentials: 'omit', cache: 'no-store',
146
+ headers: { accept: 'application/json', connection: 'close' }, signal,
147
+ });
148
+ observation = { endpoint: target.name, status: response.status, ...timing(), ...responseCorrelation(response) };
149
+ observations.push(observation);
150
+ if (response.status !== 200) {
151
+ if (!transientStatuses.has(response.status)) {
152
+ await response.body?.cancel();
153
+ return failed('infrastructure-unavailable', 'Deployed ' + target.name + ' readiness refused HTTP ' + response.status + '; verify the native deployment and exact output before retrying.');
154
+ }
155
+ const edge = target.name === 'web' && response.status === 502 ? await edgeRouteUnavailable(response) : undefined;
156
+ if (edge) { Object.assign(observation, edge); edgeObservations += 1; }
157
+ else await response.body?.cancel().catch(() => {});
158
+ edgePending = Boolean(edge);
159
+ consecutive = 0;
160
+ ready = false;
161
+ break;
162
+ }
163
+ let payload;
164
+ try { payload = await boundedJson(response); }
165
+ catch (error) { if (signal.aborted) throw error; return failed('environment-drift', 'Deployed ' + target.name + ' health is malformed or exceeds its bounded contract.'); }
166
+ const health = target.name === 'api' ? payload?.data : payload;
167
+ if (!health || health.service !== target.service || health.stage !== input.stage || health.sourceCommit !== input.sourceCommit || health.status !== 'ok') {
168
+ return failed('environment-drift', 'Deployed ' + target.name + ' health differs from the expected service/stage/build; reconcile source and deployed outputs.');
169
+ }
170
+ } catch (error) {
171
+ if (input.signal?.aborted) return failed('infrastructure-unavailable', 'Deployed readiness was interrupted before smoke setup.');
172
+ const transient = signal.aborted || transientNetworkCodes.has(error?.cause?.code ?? error?.code);
173
+ // One row per request: a body failure after headers annotates that row.
174
+ if (observation) observation.body = signal.aborted ? 'timeout' : 'network-error';
175
+ else observations.push({ endpoint: target.name, status: signal.aborted ? 'timeout' : 'network-error', ...timing() });
176
+ if (!transient) return failed('infrastructure-unavailable', 'Deployed readiness transport failed; verify endpoint and certificate configuration before retrying.');
177
+ edgePending = false;
178
+ consecutive = 0;
179
+ ready = false;
180
+ break;
181
+ }
182
+ }
183
+ if (input.signal?.aborted) return failed('infrastructure-unavailable', 'Deployed readiness was interrupted before smoke setup.');
184
+ if (ready && now() < deadline()) {
185
+ edgePending = false;
186
+ consecutive += 1;
187
+ if (consecutive === 1) {
188
+ firstReadyAt = now();
189
+ firstReadyMs = elapsed();
190
+ confirmationDeadline = firstReadyAt + confirmationLimitMs;
191
+ }
192
+ if (consecutive > 1 && now() - firstReadyAt >= confirmationWindowMs) {
193
+ return {
194
+ outcome: 'ready', elapsedMs: elapsed(), observations,
195
+ confirmation: { windowMs: confirmationWindowMs, rounds: consecutive, firstReadyMs },
196
+ edgeRouting: { unavailableObservations: edgeObservations, limitMs: edgeRouteLimitMs },
197
+ };
198
+ }
199
+ }
200
+ const remaining = deadline() - now();
201
+ if (remaining <= 0) break;
202
+ try { await sleep(Math.min(consecutive > 0 ? confirmationDelayMs : retryDelayMs, remaining), input.signal); }
203
+ catch { return failed('infrastructure-unavailable', 'Deployed readiness was interrupted before smoke setup.'); }
204
+ }
205
+ if (now() < deadline()) {
206
+ return failed('infrastructure-unavailable', 'Deployed readiness reached its bounded attempt count before its time bound; inspect the readiness clock and native diagnostics before another governed attempt.');
207
+ }
208
+ if (edgePending) {
209
+ return failed('infrastructure-unavailable', 'The deployed web route was not served by the Router within 300 seconds: CloudFront answered with its own error page because routing fell through to the placeholder origin. Inspect Router KeyValueStore propagation before another governed attempt.');
210
+ }
211
+ return failed('infrastructure-unavailable', 'The expected deployed API and web build did not become ready within the 30-second bound for unavailability other than Router edge propagation; inspect native diagnostics before another governed attempt.');
212
+ }
213
+ `;
214
+ //# sourceMappingURL=deployed-smoke-readiness.js.map
@@ -0,0 +1,2 @@
1
+ /** Local checks may run before the first commit; deployment evidence may not. */
2
+ export declare const localSourceCommitFunction = "function localSourceCommit() {\n const supplied = process.env.EBK_SOURCE_COMMIT;\n if (supplied !== undefined) {\n if (!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(supplied)) {\n throw new Error('EBK_SOURCE_COMMIT must be a full commit SHA.');\n }\n return supplied;\n }\n const git = (args) => spawnSync('git', args, {\n cwd: workspaceRoot,\n encoding: 'utf8',\n shell: false,\n windowsHide: true,\n });\n const head = git(['rev-parse', '--verify', 'HEAD^{commit}']);\n if (!head.error && head.status === 0) return head.stdout.trim();\n const worktree = git(['rev-parse', '--is-inside-work-tree']);\n const symbolic = git(['symbolic-ref', '--quiet', 'HEAD']);\n if (!worktree.error && worktree.status === 0 &&\n worktree.stdout.trim() === 'true' && !symbolic.error &&\n symbolic.status === 0 && symbolic.stdout.trim().startsWith('refs/heads/')) {\n const branch = git(['show-ref', '--verify', '--quiet', symbolic.stdout.trim()]);\n if (!branch.error && branch.status === 1) return null;\n }\n throw new Error('Local source identity requires a readable Git worktree or a full EBK_SOURCE_COMMIT.');\n}";
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.localSourceCommitFunction = void 0;
4
+ /** Local checks may run before the first commit; deployment evidence may not. */
5
+ exports.localSourceCommitFunction = `function localSourceCommit() {
6
+ const supplied = process.env.EBK_SOURCE_COMMIT;
7
+ if (supplied !== undefined) {
8
+ if (!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(supplied)) {
9
+ throw new Error('EBK_SOURCE_COMMIT must be a full commit SHA.');
10
+ }
11
+ return supplied;
12
+ }
13
+ const git = (args) => spawnSync('git', args, {
14
+ cwd: workspaceRoot,
15
+ encoding: 'utf8',
16
+ shell: false,
17
+ windowsHide: true,
18
+ });
19
+ const head = git(['rev-parse', '--verify', 'HEAD^{commit}']);
20
+ if (!head.error && head.status === 0) return head.stdout.trim();
21
+ const worktree = git(['rev-parse', '--is-inside-work-tree']);
22
+ const symbolic = git(['symbolic-ref', '--quiet', 'HEAD']);
23
+ if (!worktree.error && worktree.status === 0 &&
24
+ worktree.stdout.trim() === 'true' && !symbolic.error &&
25
+ symbolic.status === 0 && symbolic.stdout.trim().startsWith('refs/heads/')) {
26
+ const branch = git(['show-ref', '--verify', '--quiet', symbolic.stdout.trim()]);
27
+ if (!branch.error && branch.status === 1) return null;
28
+ }
29
+ throw new Error('Local source identity requires a readable Git worktree or a full EBK_SOURCE_COMMIT.');
30
+ }`;
31
+ //# sourceMappingURL=local-source-identity.js.map
@@ -0,0 +1,14 @@
1
+ export declare const STANDARD_PERSISTENCE_PATH = "data/persistence.json";
2
+ export interface StandardPersistenceContract {
3
+ kind: 'ebk-standard-persistence';
4
+ schemaVersion: 1;
5
+ defaultStore: 'dynamodb';
6
+ }
7
+ /** The framework core is DynamoDB. SQL is additive, never an alternate core. */
8
+ export declare function standardPersistenceContract(options: {
9
+ inputs: Record<string, unknown>;
10
+ current?: unknown;
11
+ existingStandardRequirement?: {
12
+ capabilities: readonly string[];
13
+ };
14
+ }): StandardPersistenceContract;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STANDARD_PERSISTENCE_PATH = void 0;
4
+ exports.standardPersistenceContract = standardPersistenceContract;
5
+ const validation_js_1 = require("../../validation.js");
6
+ const capability_plan_js_1 = require("../../foundation/capability-plan.js");
7
+ exports.STANDARD_PERSISTENCE_PATH = 'data/persistence.json';
8
+ /** The framework core is DynamoDB. SQL is additive, never an alternate core. */
9
+ function standardPersistenceContract(options) {
10
+ (0, capability_plan_js_1.readStandardSqlDeclaration)(options.inputs);
11
+ if (options.current !== undefined) {
12
+ const current = options.current;
13
+ if (!(0, validation_js_1.isRecord)(current) ||
14
+ current.kind !== 'ebk-standard-persistence' ||
15
+ current.schemaVersion !== 1 ||
16
+ (current.defaultStore !== 'dynamodb' &&
17
+ current.defaultStore !== 'postgres') ||
18
+ Object.keys(current).some((key) => !['kind', 'schemaVersion', 'defaultStore'].includes(key)))
19
+ throw new Error('Standard persistence declaration is invalid; no store may be inferred or reassigned.');
20
+ if (current.defaultStore === 'postgres')
21
+ throw new Error('This prerelease Standard Slice uses a PostgreSQL-backed framework core. Automatic upgrade is unsupported. Preserve its data and infrastructure, then complete an explicit repository-owned migration or rebuild before adopting the DynamoDB core. No files have been changed.');
22
+ }
23
+ else if (options.existingStandardRequirement) {
24
+ throw new Error('Existing Standard Slice is missing its persisted storage declaration. Automatic prerelease conversion is unsupported; preserve its data and infrastructure and complete an explicit repository-owned migration or rebuild. No files have been changed.');
25
+ }
26
+ return {
27
+ kind: 'ebk-standard-persistence',
28
+ schemaVersion: 1,
29
+ defaultStore: 'dynamodb',
30
+ };
31
+ }
32
+ //# sourceMappingURL=persistence-contract.js.map
@@ -8,6 +8,9 @@ const node_path_1 = require("node:path");
8
8
  const node_util_1 = require("node:util");
9
9
  const index_js_1 = require("../../blueprints/index.js");
10
10
  const index_js_2 = require("../../foundation/index.js");
11
+ const capability_plan_js_1 = require("../../foundation/capability-plan.js");
12
+ const preview_changes_js_1 = require("../../developer-agent/preview-changes.js");
13
+ const upgrade_js_1 = require("../upgrade/upgrade.js");
11
14
  const index_js_3 = require("../../ownership/index.js");
12
15
  const index_js_4 = require("../../repository-policy/index.js");
13
16
  const blueprint_verification_authority_js_1 = require("../../supply-chain/blueprint-verification-authority.js");
@@ -16,6 +19,7 @@ const post_generation_install_js_1 = require("../post-generation-install.js");
16
19
  const formatting_js_1 = require("../formatting.js");
17
20
  const workspace_files_js_1 = require("../preset/workspace-files.js");
18
21
  const built_in_plan_js_1 = require("./built-in-plan.js");
22
+ const data_policy_review_seed_js_1 = require("./data-policy-review-seed.js");
19
23
  const tree_policy_js_1 = require("../repository-policy/tree-policy.js");
20
24
  var built_in_plan_js_2 = require("./built-in-plan.js");
21
25
  Object.defineProperty(exports, "PRODUCT_PACKAGE_MANAGED_JSON_POINTERS", { enumerable: true, get: function () { return built_in_plan_js_2.PRODUCT_PACKAGE_MANAGED_JSON_POINTERS; } });
@@ -53,6 +57,10 @@ function json(value) {
53
57
  async function formatSliceBeforeOwnershipRestamp(tree, root, preserveBuiltInFormatSensitiveFiles) {
54
58
  const prefix = `${root}/`;
55
59
  const restoreProtectedFiles = (0, formatting_js_1.createTreeFileRestorer)(tree, (path) => {
60
+ // Paired Foundation generation has already formatted and hashed its own
61
+ // output. A Slice formatter must not invalidate that completed ownership.
62
+ if (!path.startsWith(prefix))
63
+ return true;
56
64
  if ((0, workspace_files_js_1.isRawWorkspaceAuthorityPath)(path))
57
65
  return true;
58
66
  return (preserveBuiltInFormatSensitiveFiles &&
@@ -120,23 +128,6 @@ function assertExternalBlueprintVerificationProgram(input) {
120
128
  targets: rootProject.targets,
121
129
  });
122
130
  }
123
- function dataPolicyReviewSeed(tree, root) {
124
- const path = node_path_1.posix.join(root, 'data/policy.json');
125
- const existing = tree.read(path, 'utf8');
126
- if (existing !== null) {
127
- try {
128
- const reviewedAt = JSON.parse(existing).governance?.reviewedAt;
129
- if (typeof reviewedAt === 'string' &&
130
- new Date(reviewedAt).toISOString() === reviewedAt) {
131
- return reviewedAt;
132
- }
133
- }
134
- catch {
135
- // The generated ownership/reconciliation path reports malformed policy.
136
- }
137
- }
138
- return new Date().toISOString();
139
- }
140
131
  function reportSlicePolicyPosture(tree, name) {
141
132
  const contents = tree.read(index_js_4.REPOSITORY_POLICY_FILE, 'utf8');
142
133
  if (contents === null) {
@@ -233,7 +224,15 @@ async function sliceGenerator(tree, options) {
233
224
  .join('\n')}`);
234
225
  }
235
226
  const foundationDescriptor = readJson(tree, 'packages/foundation/contracts/foundation.json', 'Standard Foundation descriptor');
236
- const compatibility = (0, index_js_2.validateFoundationCompatibility)(blueprint.manifest.foundation, foundationDescriptor);
227
+ const foundationRequirement = blueprint.source === 'built-in'
228
+ ? (0, capability_plan_js_1.standardPersistenceRequirement)(inputResult.value)
229
+ : blueprint.manifest.foundation;
230
+ const compatibility = (0, index_js_2.validateFoundationCompatibility)(foundationRequirement, blueprint.source === 'built-in'
231
+ ? (0, capability_plan_js_1.planFoundationCapabilities)({
232
+ current: foundationDescriptor,
233
+ requirements: [foundationRequirement],
234
+ }).descriptor
235
+ : foundationDescriptor);
237
236
  if (!compatibility.valid) {
238
237
  throw new Error(`Standard Foundation is incompatible with this Blueprint:\n${compatibility.issues
239
238
  .map((issue) => `- ${issue.path}: ${issue.message}`)
@@ -242,7 +241,7 @@ async function sliceGenerator(tree, options) {
242
241
  const installScope = {
243
242
  exactPaths: ['package.json'],
244
243
  requiredPaths: [node_path_1.posix.join(root, '.ebk/ownership.json')],
245
- roots: [root],
244
+ roots: blueprint.source === 'built-in' ? [root, 'packages/foundation'] : [root],
246
245
  };
247
246
  const installState = options.skipInstall
248
247
  ? undefined
@@ -352,21 +351,27 @@ async function sliceGenerator(tree, options) {
352
351
  if (!runtimeVersion) {
353
352
  throw new Error('Workspace package.json must depend on @empire-builder-kit/runtime before generating a Product Slice.');
354
353
  }
355
- const plan = (0, built_in_plan_js_1.createBuiltInSlicePlan)(name, scope, runtimeVersion, blueprint.manifest, inputResult.value, dataPolicyReviewSeed(tree, root), requireRepositoryDeploymentProfile(tree));
354
+ const plan = (0, built_in_plan_js_1.createBuiltInSlicePlan)(name, scope, runtimeVersion, blueprint.manifest, inputResult.value, (0, data_policy_review_seed_js_1.dataPolicyReviewSeed)(tree, root), requireRepositoryDeploymentProfile(tree));
356
355
  const ownershipValidation = (0, index_js_3.validateGeneratedOwnershipRecord)(plan.ownership);
357
356
  if (!ownershipValidation.valid) {
358
357
  throw new Error(`Generated ownership metadata is invalid:\n${ownershipValidation.issues
359
358
  .map((issue) => `- ${issue.path}: ${issue.message}`)
360
359
  .join('\n')}`);
361
360
  }
361
+ // Foundation capability growth and Slice creation are one ownership-preserving
362
+ // source operation. A later validation/formatting failure must not leave half
363
+ // of a relational declaration applied to the caller's tree.
364
+ const deferred = new preview_changes_js_1.DeferredDeveloperAgentTree(tree);
365
+ await (0, upgrade_js_1.upgradeFoundationForRequirements)(deferred, [foundationRequirement], true);
362
366
  for (const [relativePath, contents] of Object.entries(plan.files)) {
363
- tree.write(node_path_1.posix.join(root, relativePath), contents);
367
+ deferred.write(node_path_1.posix.join(root, relativePath), contents);
364
368
  }
365
369
  if (!options.skipFormat)
366
- await formatSliceBeforeOwnershipRestamp(tree, root, true);
367
- (0, index_js_3.restampProductSliceOwnership)(tree, name);
370
+ await formatSliceBeforeOwnershipRestamp(deferred, root, true);
371
+ (0, index_js_3.restampProductSliceOwnership)(deferred, name);
368
372
  if (!options.skipFormat)
369
- await formatSliceOwnership(tree, root);
373
+ await formatSliceOwnership(deferred, root);
374
+ deferred.apply();
370
375
  reportSlicePolicyPosture(tree, name);
371
376
  if (options.skipInstall)
372
377
  return undefined;
@@ -0,0 +1,7 @@
1
+ export interface SqlGeneratorSchema {
2
+ name: string;
3
+ reason: string;
4
+ apply?: boolean;
5
+ skipFormat?: boolean;
6
+ skipInstall?: boolean;
7
+ }