@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
@@ -12,7 +12,7 @@ const validation_js_1 = require("../validation.js");
12
12
  const common_js_1 = require("./common.js");
13
13
  const errors_js_1 = require("./errors.js");
14
14
  const license_expression_js_1 = require("./license-expression.js");
15
- exports.CYCLONEDX_SPEC_VERSION = '1.6';
15
+ exports.CYCLONEDX_SPEC_VERSION = '1.7';
16
16
  exports.SUPPLY_CHAIN_SBOM_SCHEMA_VERSION = 1;
17
17
  exports.SUPPLY_CHAIN_RELEASE_BINDING_KIND = 'ebk-supply-chain-release-binding';
18
18
  exports.CYCLONEDX_INVENTORY_SCOPES = [
@@ -181,6 +181,29 @@ function uuidFromDigest(digest) {
181
181
  function canonicalClone(value) {
182
182
  return JSON.parse((0, common_js_1.canonicalizeSupplyChainValue)(value));
183
183
  }
184
+ function isVersionlessSyftFileComponent(candidate) {
185
+ const hashes = candidate.hashes;
186
+ if (candidate.type !== 'file' ||
187
+ candidate.version !== undefined ||
188
+ candidate.purl !== undefined ||
189
+ typeof candidate.name !== 'string' ||
190
+ !candidate.name.startsWith('/') ||
191
+ candidate.name.length > 4_096 ||
192
+ !Array.isArray(hashes) ||
193
+ hashes.length !== 2) {
194
+ return false;
195
+ }
196
+ const sha1 = hashes[0];
197
+ const sha256 = hashes[1];
198
+ return ((0, validation_js_1.isRecord)(sha1) &&
199
+ sha1.alg === 'SHA-1' &&
200
+ typeof sha1.content === 'string' &&
201
+ /^[a-f0-9]{40}$/.test(sha1.content) &&
202
+ (0, validation_js_1.isRecord)(sha256) &&
203
+ sha256.alg === 'SHA-256' &&
204
+ typeof sha256.content === 'string' &&
205
+ common_js_1.SUPPLY_CHAIN_SHA256.test(sha256.content));
206
+ }
184
207
  /**
185
208
  * Create one deterministic CycloneDX inventory for a multi-architecture OCI
186
209
  * index from the independently scanned child manifests.
@@ -244,7 +267,7 @@ function createCycloneDxPlatformSbomUnion(input) {
244
267
  sbom.components.length === 0 ||
245
268
  !Array.isArray(sbom.dependencies) ||
246
269
  !(0, validation_js_1.isRecord)(sbom.metadata)) {
247
- throw new errors_js_1.SupplyChainError('supply-chain-sbom-invalid', path, 'must be complete CycloneDX 1.6 child-manifest evidence');
270
+ throw new errors_js_1.SupplyChainError('supply-chain-sbom-invalid', path, 'must be complete CycloneDX 1.7 child-manifest evidence');
248
271
  }
249
272
  const seenChildRefs = new Set();
250
273
  const npmComponents = [];
@@ -263,8 +286,9 @@ function createCycloneDxPlatformSbomUnion(input) {
263
286
  candidate.name.length === 0 ||
264
287
  typeof candidate.type !== 'string' ||
265
288
  candidate.type.length === 0 ||
266
- typeof candidate.version !== 'string' ||
267
- candidate.version.length === 0) {
289
+ !((typeof candidate.version === 'string' &&
290
+ candidate.version.length > 0) ||
291
+ isVersionlessSyftFileComponent(candidate))) {
268
292
  throw new errors_js_1.SupplyChainError('supply-chain-sbom-invalid', `${path}.components[${componentIndex}]`, 'must have one unique bounded component identity');
269
293
  }
270
294
  seenChildRefs.add(ref);
@@ -277,7 +301,8 @@ function createCycloneDxPlatformSbomUnion(input) {
277
301
  }
278
302
  componentByRef.set(ref, component);
279
303
  if (typeof candidate.purl === 'string' &&
280
- candidate.purl.startsWith('pkg:npm/')) {
304
+ candidate.purl.startsWith('pkg:npm/') &&
305
+ typeof candidate.version === 'string') {
281
306
  npmComponents.push({
282
307
  name: candidate.name,
283
308
  purl: candidate.purl,
@@ -277,6 +277,9 @@ function severity(value) {
277
277
  const candidate = (0, validation_js_1.isRecord)(value) && typeof value.severity === 'string'
278
278
  ? value.severity.toLowerCase()
279
279
  : '';
280
+ // GitHub's GraphQL/advisory data uses MODERATE for the REST medium tier.
281
+ if (candidate === 'moderate')
282
+ return 'medium';
280
283
  return ['critical', 'high', 'medium', 'low'].includes(candidate)
281
284
  ? candidate
282
285
  : 'unknown';
@@ -8,7 +8,8 @@ export interface LocalTestIsolationCapabilities {
8
8
  }
9
9
  export interface LocalTestScopeIdentity {
10
10
  attempt: number;
11
- commit: string;
11
+ /** Null is an unborn local development worktree, not a deployed identity. */
12
+ commit: string | null;
12
13
  runId: string;
13
14
  seed: string;
14
15
  stage: string;
@@ -30,7 +30,9 @@ function isCanonicalTimestamp(value) {
30
30
  function requireIdentity(value) {
31
31
  if (!slugPattern.test(value.workspace) ||
32
32
  !slugPattern.test(value.stage) ||
33
- !commitPattern.test(value.commit) ||
33
+ (value.commit === null
34
+ ? value.stage !== 'development'
35
+ : !commitPattern.test(value.commit)) ||
34
36
  !seedPattern.test(value.runId) ||
35
37
  !seedPattern.test(value.seed) ||
36
38
  !Number.isSafeInteger(value.attempt) ||
@@ -59,7 +61,7 @@ function createLocalTestScope(options) {
59
61
  .update([
60
62
  identity.workspace,
61
63
  identity.stage,
62
- identity.commit,
64
+ identity.commit ?? 'unborn-local-worktree',
63
65
  identity.runId,
64
66
  String(identity.attempt),
65
67
  String(identity.worker),
@@ -18,7 +18,8 @@ export interface TestingEvidenceSource {
18
18
  * relationship rather than this result contract.
19
19
  */
20
20
  blueprintCandidates: readonly string[];
21
- commit: string;
21
+ /** Null denotes an unborn local worktree, never committed or deployed proof. */
22
+ commit: string | null;
22
23
  frameworkCandidate: string;
23
24
  }
24
25
  export interface TestingEvidenceOperation {
@@ -170,9 +170,11 @@ function validateSource(value, issues) {
170
170
  if (!source)
171
171
  return undefined;
172
172
  rejectUnknownProperties(source, ['blueprintCandidates', 'commit', 'frameworkCandidate'], 'result.source', issues);
173
- requireBoundedString(source.commit, 'result.source.commit', issues, {
174
- pattern: COMMIT_PATTERN,
175
- });
173
+ if (source.commit !== null) {
174
+ requireBoundedString(source.commit, 'result.source.commit', issues, {
175
+ pattern: COMMIT_PATTERN,
176
+ });
177
+ }
176
178
  requireBoundedString(source.frameworkCandidate, 'result.source.frameworkCandidate', issues);
177
179
  if (!Array.isArray(source.blueprintCandidates)) {
178
180
  addIssue(issues, 'result.source.blueprintCandidates', 'must be an array');
@@ -457,7 +459,7 @@ function validateTestingEvidenceResult(value) {
457
459
  if (!outcome) {
458
460
  addIssue(issues, 'result.outcome', `must equal one of ${exports.TESTING_EVIDENCE_OUTCOMES.join(', ')}`);
459
461
  }
460
- validateSource(result.source, issues);
462
+ const source = validateSource(result.source, issues);
461
463
  const operation = validateOperation(result.operation, issues);
462
464
  validateTiming(result.timing, issues);
463
465
  const counts = validateCounts(result.counts, issues);
@@ -465,6 +467,18 @@ function validateTestingEvidenceResult(value) {
465
467
  const findings = validateFindings(result.findings, issues);
466
468
  validateArtifacts(result.artifacts, issues);
467
469
  const cleanup = validateCleanup(result.cleanup, issues);
470
+ if (source?.commit === null &&
471
+ (environment?.deployed !== false ||
472
+ !['source', 'local-docker'].includes(environment.class) ||
473
+ (environment.stage !== undefined &&
474
+ environment.stage !== 'development') ||
475
+ !operation ||
476
+ !['source', 'contract-compatibility', 'local-integration'].includes(operation.proofLayer) ||
477
+ !Array.isArray(result.artifacts) ||
478
+ result.artifacts.some((artifact) => !(0, validation_js_1.isRecord)(artifact) ||
479
+ !['source-result', 'failure-diagnostics'].includes(String(artifact.retentionClass))))) {
480
+ addIssue(issues, 'result.source.commit', 'must be a full commit SHA outside uncommitted local source or integration checks');
481
+ }
468
482
  if (operation &&
469
483
  environment &&
470
484
  (operation.proofLayer === 'deployed-smoke' ||
@@ -4,6 +4,7 @@ import { type ProvisionedWorkloadRoleRegistrationDocument, type RegisteredWorklo
4
4
  import { type StageWorkloadRoleBoundaryContract } from './stage-boundary.js';
5
5
  export declare const WORKLOAD_ROLE_DEPLOYMENT_POLICY_NAME: "ebk-workload-role-deployment-v1";
6
6
  export declare const WORKLOAD_ROLE_ACCOUNT_BASELINE_SCHEMA_VERSION: 1;
7
+ export declare const WORKLOAD_ROLE_PROVISIONER_MAX_ATTEMPTS: 5;
7
8
  export type WorkloadRoleAccountBaselineFailureClassification = 'account-baseline-input-invalid' | 'account-baseline-project-set-invalid' | 'account-baseline-result-invalid' | 'account-baseline-substitution';
8
9
  export declare class WorkloadRoleAccountBaselineError extends Error {
9
10
  readonly classification: WorkloadRoleAccountBaselineFailureClassification;
@@ -53,6 +54,8 @@ export interface ReviewedPriorWorkloadRoleHistoryExpectation {
53
54
  export interface WorkloadRoleStageDeploymentPromotion {
54
55
  deploymentPolicy: CanonicalIamPolicyDocument;
55
56
  deploymentPolicyName: typeof WORKLOAD_ROLE_DEPLOYMENT_POLICY_NAME;
57
+ deploymentPolicyStackName: string;
58
+ deploymentPolicyTemplate: Readonly<Record<string, unknown>>;
56
59
  projectPromotions: Readonly<Record<string, {
57
60
  provisionedRegistration: ProvisionedWorkloadRoleRegistrationDocument;
58
61
  storageParameterName: string;
@@ -80,6 +83,8 @@ export interface ProtectedWorkloadRolePublisherControlPlane {
80
83
  policy: CanonicalIamPolicyDocument;
81
84
  policyName: string;
82
85
  roleName: string;
86
+ stackName: string;
87
+ template: Readonly<Record<string, unknown>>;
83
88
  }): Promise<void>;
84
89
  putRegisteredDocument(input: {
85
90
  bucketName: string;
@@ -129,4 +134,10 @@ export declare function createWorkloadRoleStageDeploymentPromotion(options: {
129
134
  export declare function publishReviewedStageWorkloadRoleCandidate(options: {
130
135
  controlPlane: ProtectedWorkloadRolePublisherControlPlane;
131
136
  plan: WorkloadRoleStageAccountBaselinePlan;
137
+ waitBeforeProvisionerRetry?: (input: {
138
+ attempt: number;
139
+ delayMs: number;
140
+ maxAttempts: typeof WORKLOAD_ROLE_PROVISIONER_MAX_ATTEMPTS;
141
+ project: string;
142
+ }) => Promise<void>;
132
143
  }): Promise<WorkloadRoleStageDeploymentPromotion['sanitizedResult']>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WorkloadRoleAccountBaselineError = exports.WORKLOAD_ROLE_ACCOUNT_BASELINE_SCHEMA_VERSION = exports.WORKLOAD_ROLE_DEPLOYMENT_POLICY_NAME = void 0;
3
+ exports.WorkloadRoleAccountBaselineError = exports.WORKLOAD_ROLE_PROVISIONER_MAX_ATTEMPTS = exports.WORKLOAD_ROLE_ACCOUNT_BASELINE_SCHEMA_VERSION = exports.WORKLOAD_ROLE_DEPLOYMENT_POLICY_NAME = void 0;
4
4
  exports.workloadRoleProvisionerAliasArn = workloadRoleProvisionerAliasArn;
5
5
  exports.createWorkloadRoleStageAccountBaselinePlan = createWorkloadRoleStageAccountBaselinePlan;
6
6
  exports.createWorkloadRoleStageDeploymentPromotion = createWorkloadRoleStageDeploymentPromotion;
@@ -13,6 +13,27 @@ const registration_js_1 = require("./registration.js");
13
13
  const stage_boundary_js_1 = require("./stage-boundary.js");
14
14
  exports.WORKLOAD_ROLE_DEPLOYMENT_POLICY_NAME = 'ebk-workload-role-deployment-v1';
15
15
  exports.WORKLOAD_ROLE_ACCOUNT_BASELINE_SCHEMA_VERSION = 1;
16
+ exports.WORKLOAD_ROLE_PROVISIONER_MAX_ATTEMPTS = 5;
17
+ const IAM_MANAGED_POLICY_MAX_CHARACTERS = 6_144;
18
+ const IAM_ROLE_MAX_ATTACHED_MANAGED_POLICIES = 10;
19
+ const IAM_DEPLOYMENT_ROLE_MAX_FRAMEWORK_MANAGED_POLICIES = 9;
20
+ const workloadRoleProvisionerRetryDelaysMs = [
21
+ 1_000, 2_000, 4_000, 8_000,
22
+ ];
23
+ const boundedInternalProvisionerFailures = new Set([
24
+ 'fixed-provisioner-convergence-error',
25
+ 'fixed-provisioner-history-load-error',
26
+ 'fixed-provisioner-history-save-error',
27
+ 'fixed-provisioner-internal-error',
28
+ 'fixed-provisioner-registration-save-error',
29
+ 'fixed-provisioner-source-load-error',
30
+ ]);
31
+ const retryableProvisionerFailures = new Set([
32
+ 'fixed-provisioner-convergence-error',
33
+ 'fixed-provisioner-history-load-error',
34
+ 'fixed-provisioner-internal-error',
35
+ 'fixed-provisioner-source-load-error',
36
+ ]);
16
37
  class WorkloadRoleAccountBaselineError extends Error {
17
38
  classification;
18
39
  constructor(classification, message) {
@@ -69,6 +90,9 @@ function stateBucketName(accountId, region, stage) {
69
90
  function stackName(stage) {
70
91
  return stableName(['ebk', stage, 'workload-role-account-baseline'], 128);
71
92
  }
93
+ function deploymentPolicyStackName(stage) {
94
+ return stableName(['ebk', stage, 'workload-role-deployment-policy'], 128);
95
+ }
72
96
  function workloadRoleProvisionerAliasArn(options) {
73
97
  requireMatch(options.accountId, accountPattern, 'Account ID');
74
98
  requireMatch(options.manifestDigest, digestPattern, 'Manifest digest');
@@ -173,6 +197,13 @@ function exactInstanceProfileArns(boundary) {
173
197
  .map(({ roleName }) => `arn:${partition}:iam::${accountId}:instance-profile/${roleName}-profile`))
174
198
  .sort(compareStrings);
175
199
  }
200
+ function exactInstanceProfileRoleArns(boundary) {
201
+ return boundary.documents
202
+ .flatMap(({ accountId, manifest, partition }) => manifest.roles
203
+ .filter(({ surface }) => surface === 'foundation-nat-instance')
204
+ .map(({ roleName }) => `arn:${partition}:iam::${accountId}:role/${roleName}`))
205
+ .sort(compareStrings);
206
+ }
176
207
  function provisionerPolicy(options) {
177
208
  const currentRoleArns = exactRoleArns(options.boundary);
178
209
  const roleArns = [...currentRoleArns, ...options.transitionalRoleArns].sort(compareStrings);
@@ -180,6 +211,7 @@ function provisionerPolicy(options) {
180
211
  ...exactInstanceProfileArns(options.boundary),
181
212
  ...options.transitionalInstanceProfileArns,
182
213
  ].sort(compareStrings);
214
+ const profileRoleArns = exactInstanceProfileRoleArns(options.boundary);
183
215
  return {
184
216
  Statement: [
185
217
  {
@@ -190,6 +222,18 @@ function provisionerPolicy(options) {
190
222
  .sort(compareStrings),
191
223
  Sid: 'WriteProvisionerLogs',
192
224
  },
225
+ {
226
+ Action: ['s3:ListBucket'],
227
+ Condition: {
228
+ NumericLessThanEquals: { 's3:max-keys': '1' },
229
+ StringEquals: {
230
+ 's3:prefix': [...options.readableObjectKeys].sort(compareStrings),
231
+ },
232
+ },
233
+ Effect: 'Allow',
234
+ Resource: [options.stateBucketArn],
235
+ Sid: 'ListExactRegisteredState',
236
+ },
193
237
  {
194
238
  Action: ['s3:GetObject'],
195
239
  Effect: 'Allow',
@@ -234,6 +278,21 @@ function provisionerPolicy(options) {
234
278
  Resource: roleArns,
235
279
  Sid: 'ConvergeExactRegisteredRoles',
236
280
  },
281
+ ...(profileRoleArns.length === 0
282
+ ? []
283
+ : [
284
+ {
285
+ Action: ['iam:PassRole'],
286
+ Condition: {
287
+ StringEquals: {
288
+ 'iam:PassedToService': 'ec2.amazonaws.com',
289
+ },
290
+ },
291
+ Effect: 'Allow',
292
+ Resource: profileRoleArns,
293
+ Sid: 'PassExactNatInstanceProfileRoles',
294
+ },
295
+ ]),
237
296
  ...(profileArns.length === 0
238
297
  ? []
239
298
  : [
@@ -254,6 +313,68 @@ function provisionerPolicy(options) {
254
313
  Version: '2012-10-17',
255
314
  };
256
315
  }
316
+ function policyCharacters(statements) {
317
+ return JSON.stringify({ Statement: statements, Version: '2012-10-17' })
318
+ .length;
319
+ }
320
+ function boundedManagedPolicyStatements(statement, label) {
321
+ if (policyCharacters([statement]) <= IAM_MANAGED_POLICY_MAX_CHARACTERS) {
322
+ return [statement];
323
+ }
324
+ const parts = [];
325
+ let resources = [];
326
+ for (const resource of statement.Resource) {
327
+ const candidate = {
328
+ ...statement,
329
+ Resource: [...resources, resource],
330
+ Sid: `${statement.Sid}Part0001`,
331
+ };
332
+ if (policyCharacters([candidate]) <= IAM_MANAGED_POLICY_MAX_CHARACTERS) {
333
+ resources.push(resource);
334
+ continue;
335
+ }
336
+ if (resources.length === 0) {
337
+ throw new WorkloadRoleAccountBaselineError('account-baseline-input-invalid', `${label} statement ${statement.Sid} cannot fit an IAM managed policy.`);
338
+ }
339
+ parts.push({ ...statement, Resource: resources });
340
+ resources = [resource];
341
+ }
342
+ if (resources.length > 0) {
343
+ parts.push({ ...statement, Resource: resources });
344
+ }
345
+ return parts.map((part, index) => {
346
+ const suffix = `Part${String(index + 1).padStart(4, '0')}`;
347
+ const result = { ...part, Sid: `${statement.Sid}${suffix}` };
348
+ if (policyCharacters([result]) > IAM_MANAGED_POLICY_MAX_CHARACTERS) {
349
+ throw new WorkloadRoleAccountBaselineError('account-baseline-input-invalid', `${label} statement ${statement.Sid} cannot fit an IAM managed policy.`);
350
+ }
351
+ return result;
352
+ });
353
+ }
354
+ function boundedManagedPolicyDocuments(policy, label, maximumDocuments = IAM_ROLE_MAX_ATTACHED_MANAGED_POLICIES) {
355
+ const statements = policy.Statement.flatMap((statement) => boundedManagedPolicyStatements(statement, label));
356
+ const documents = [];
357
+ let current = [];
358
+ for (const statement of statements) {
359
+ const candidate = [...current, statement];
360
+ if (policyCharacters(candidate) <= IAM_MANAGED_POLICY_MAX_CHARACTERS) {
361
+ current = candidate;
362
+ continue;
363
+ }
364
+ if (current.length === 0) {
365
+ throw new WorkloadRoleAccountBaselineError('account-baseline-input-invalid', `${label} statement cannot fit an IAM managed policy.`);
366
+ }
367
+ documents.push({ Statement: current, Version: '2012-10-17' });
368
+ current = [statement];
369
+ }
370
+ if (current.length > 0) {
371
+ documents.push({ Statement: current, Version: '2012-10-17' });
372
+ }
373
+ if (documents.length === 0 || documents.length > maximumDocuments) {
374
+ throw new WorkloadRoleAccountBaselineError('account-baseline-input-invalid', `${label} exceeds the bounded IAM managed-policy attachment count.`);
375
+ }
376
+ return documents;
377
+ }
257
378
  function bucketPolicy(partition, bucketName) {
258
379
  const bucketArn = `arn:${partition}:s3:::${bucketName}`;
259
380
  const objectArn = `${bucketArn}/*`;
@@ -300,7 +421,7 @@ function projectLambdaResources(options) {
300
421
  const aliasId = logicalId(options.plan.project, 'ProvisionerAlias');
301
422
  return {
302
423
  [logId]: {
303
- DeletionPolicy: 'Retain',
424
+ DeletionPolicy: 'RetainExceptOnCreate',
304
425
  Properties: {
305
426
  LogGroupName: `/aws/lambda/${options.plan.functionName}`,
306
427
  RetentionInDays: 30,
@@ -328,7 +449,11 @@ function projectLambdaResources(options) {
328
449
  FunctionName: options.plan.functionName,
329
450
  Handler: 'index.handler',
330
451
  MemorySize: 512,
331
- ReservedConcurrentExecutions: 1,
452
+ // Accounts at Lambda's minimum concurrency quota cannot reserve even
453
+ // one execution because AWS requires ten executions to remain
454
+ // unreserved. The publisher invokes one exact candidate alias at a
455
+ // time and the provisioner converges one digest-bound registration,
456
+ // so quota-dependent reservation is neither required nor portable.
332
457
  Role: {
333
458
  'Fn::GetAtt': [options.provisionerRoleLogicalId, 'Arn'],
334
459
  },
@@ -355,7 +480,10 @@ function projectLambdaResources(options) {
355
480
  };
356
481
  }
357
482
  function cloudFormationTemplate(options) {
358
- const registeredObjectArns = options.projectPlans.map(({ registeredManifestObjectKey }) => `arn:${options.boundary.partition}:s3:::${options.stateBucketName}/${registeredManifestObjectKey}`);
483
+ const stateBucketArn = `arn:${options.boundary.partition}:s3:::${options.stateBucketName}`;
484
+ const registeredObjectKeys = options.projectPlans.map(({ registeredManifestObjectKey }) => registeredManifestObjectKey);
485
+ const historyObjectKeys = options.projectPlans.map(({ project }) => (0, registration_js_1.workloadRoleHistoryObjectKey)(options.boundary.stage, project));
486
+ const registeredObjectArns = registeredObjectKeys.map((key) => `${stateBucketArn}/${key}`);
359
487
  const stateObjectArns = options.projectPlans.flatMap(({ project }) => [
360
488
  `arn:${options.boundary.partition}:s3:::${options.stateBucketName}/${(0, registration_js_1.provisionedWorkloadRoleRegistrationObjectKey)({
361
489
  manifestDigest: options.boundary.manifestDigestsByProject[project],
@@ -369,11 +497,15 @@ function cloudFormationTemplate(options) {
369
497
  const policy = provisionerPolicy({
370
498
  boundary: options.boundary,
371
499
  logGroupArns,
500
+ readableObjectKeys: [...registeredObjectKeys, ...historyObjectKeys].sort(compareStrings),
372
501
  registeredObjectArns,
502
+ stateBucketArn,
373
503
  stateObjectArns,
374
504
  transitionalInstanceProfileArns: options.transitionalInstanceProfileArns,
375
505
  transitionalRoleArns: options.transitionalRoleArns,
376
506
  });
507
+ const policyDocuments = boundedManagedPolicyDocuments(policy, 'Provisioner policy');
508
+ const policyLogicalIds = policyDocuments.map((_, index) => `WorkloadRoleProvisionerPolicy${index + 1}`);
377
509
  const resources = {
378
510
  WorkloadRoleBoundary: {
379
511
  Properties: {
@@ -384,6 +516,24 @@ function cloudFormationTemplate(options) {
384
516
  },
385
517
  Type: 'AWS::IAM::ManagedPolicy',
386
518
  },
519
+ ...Object.fromEntries(policyDocuments.map((document, index) => [
520
+ policyLogicalIds[index],
521
+ {
522
+ Properties: {
523
+ Description: `Exact reviewed authority shard ${index + 1} for the fixed ${options.boundary.stage} workload-role provisioner.`,
524
+ ManagedPolicyName: stableName([
525
+ 'ebk',
526
+ options.boundary.stage,
527
+ 'workload-role-provisioner',
528
+ 'v2',
529
+ `policy-${index + 1}`,
530
+ ], 128),
531
+ Path: options.boundary.path,
532
+ PolicyDocument: document,
533
+ },
534
+ Type: 'AWS::IAM::ManagedPolicy',
535
+ },
536
+ ])),
387
537
  WorkloadRoleProvisionerRole: {
388
538
  Properties: {
389
539
  AssumeRolePolicyDocument: {
@@ -396,12 +546,9 @@ function cloudFormationTemplate(options) {
396
546
  ],
397
547
  Version: '2012-10-17',
398
548
  },
399
- Policies: [
400
- {
401
- PolicyDocument: policy,
402
- PolicyName: 'ebk-fixed-workload-role-provisioner-v1',
403
- },
404
- ],
549
+ ManagedPolicyArns: policyLogicalIds.map((logicalId) => ({
550
+ Ref: logicalId,
551
+ })),
405
552
  RoleName: options.provisionerRoleName,
406
553
  Tags: [
407
554
  { Key: 'ebk:managed-by', Value: 'account-baseline' },
@@ -584,7 +731,10 @@ function requireSuccessResult(plan, value) {
584
731
  Array.isArray(value) ||
585
732
  !('ok' in value) ||
586
733
  value.ok !== true) {
587
- throw new WorkloadRoleAccountBaselineError('account-baseline-result-invalid', `Fixed provisioner for ${plan.project} did not return sanitized success.`);
734
+ const internalClassification = boundedInternalFailureClassification(value);
735
+ throw new WorkloadRoleAccountBaselineError('account-baseline-result-invalid', internalClassification
736
+ ? `Fixed provisioner for ${plan.project} returned ${internalClassification} without sanitized success.`
737
+ : `Fixed provisioner for ${plan.project} did not return sanitized success.`);
588
738
  }
589
739
  const result = value;
590
740
  const allowed = [
@@ -630,6 +780,50 @@ function requireSuccessResult(plan, value) {
630
780
  provisionedRegistration,
631
781
  };
632
782
  }
783
+ function boundedInternalFailureClassification(value) {
784
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
785
+ return undefined;
786
+ }
787
+ const result = value;
788
+ if (Object.keys(result).sort().join(',') ===
789
+ 'classification,ok,protocolVersion,resultSchemaVersion' &&
790
+ typeof result.classification === 'string' &&
791
+ boundedInternalProvisionerFailures.has(result.classification) &&
792
+ result.ok === false &&
793
+ result.protocolVersion ===
794
+ provisioner_js_1.FIXED_WORKLOAD_ROLE_PROVISIONER_PROTOCOL_VERSION &&
795
+ result.resultSchemaVersion ===
796
+ handler_js_1.FIXED_WORKLOAD_ROLE_PROVISIONER_RESULT_SCHEMA_VERSION) {
797
+ return result.classification;
798
+ }
799
+ return undefined;
800
+ }
801
+ function isRetryableProvisionerFailure(value) {
802
+ const classification = boundedInternalFailureClassification(value);
803
+ return (classification !== undefined &&
804
+ retryableProvisionerFailures.has(classification));
805
+ }
806
+ async function invokeQualifiedProvisionerWithRetry(options) {
807
+ for (let attempt = 1; attempt <= exports.WORKLOAD_ROLE_PROVISIONER_MAX_ATTEMPTS; attempt += 1) {
808
+ const result = await options.controlPlane.invokeQualifiedProvisioner(options.plan.provisionerAliasArn, options.plan.provisionerRequest);
809
+ if (!isRetryableProvisionerFailure(result) ||
810
+ attempt === exports.WORKLOAD_ROLE_PROVISIONER_MAX_ATTEMPTS) {
811
+ return result;
812
+ }
813
+ const delayMs = workloadRoleProvisionerRetryDelaysMs[attempt - 1];
814
+ const wait = options.waitBeforeProvisionerRetry ??
815
+ (({ delayMs: boundedDelayMs }) => new Promise((resolve) => {
816
+ setTimeout(resolve, boundedDelayMs);
817
+ }));
818
+ await wait({
819
+ attempt,
820
+ delayMs,
821
+ maxAttempts: exports.WORKLOAD_ROLE_PROVISIONER_MAX_ATTEMPTS,
822
+ project: options.plan.project,
823
+ });
824
+ }
825
+ throw new Error('Unreachable bounded provisioner retry state.');
826
+ }
633
827
  function deploymentStatementSid(project, sid) {
634
828
  const projectDigest = (0, node_crypto_1.createHash)('sha256')
635
829
  .update(project, 'utf8')
@@ -637,6 +831,32 @@ function deploymentStatementSid(project, sid) {
637
831
  .slice(0, 12);
638
832
  return `Project${projectDigest}${sid}`;
639
833
  }
834
+ function deploymentPolicyCloudFormationTemplate(options) {
835
+ const documents = boundedManagedPolicyDocuments(options.deploymentPolicy, 'Deployment policy', IAM_DEPLOYMENT_ROLE_MAX_FRAMEWORK_MANAGED_POLICIES);
836
+ return {
837
+ AWSTemplateFormatVersion: '2010-09-09',
838
+ Description: 'Protected Empire Builder Kit v1 exact stage workload-role deployment authority. Apply only after complete provisioner convergence.',
839
+ Resources: Object.fromEntries(documents.map((document, index) => [
840
+ `WorkloadRoleDeploymentPolicy${index + 1}`,
841
+ {
842
+ Properties: {
843
+ Description: `Exact reviewed authority shard ${index + 1} for the ${options.boundary.stage} deployment role.`,
844
+ ManagedPolicyName: stableName([
845
+ 'ebk',
846
+ options.boundary.stage,
847
+ 'workload-role-deployment',
848
+ 'v2',
849
+ `policy-${index + 1}`,
850
+ ], 128),
851
+ Path: options.boundary.path,
852
+ PolicyDocument: document,
853
+ Roles: [options.deploymentRoleName],
854
+ },
855
+ Type: 'AWS::IAM::ManagedPolicy',
856
+ },
857
+ ])),
858
+ };
859
+ }
640
860
  function createWorkloadRoleStageDeploymentPromotion(options) {
641
861
  const resultProjects = Object.keys(options.provisionerResults).sort(compareStrings);
642
862
  const expectedProjects = options.plan.projectPlans
@@ -682,12 +902,19 @@ function createWorkloadRoleStageDeploymentPromotion(options) {
682
902
  });
683
903
  }
684
904
  deploymentStatements.sort((left, right) => compareStrings(left.Sid, right.Sid));
905
+ const deploymentPolicy = {
906
+ Statement: deploymentStatements,
907
+ Version: '2012-10-17',
908
+ };
685
909
  return {
686
- deploymentPolicy: {
687
- Statement: deploymentStatements,
688
- Version: '2012-10-17',
689
- },
910
+ deploymentPolicy,
690
911
  deploymentPolicyName: exports.WORKLOAD_ROLE_DEPLOYMENT_POLICY_NAME,
912
+ deploymentPolicyStackName: deploymentPolicyStackName(options.plan.stage),
913
+ deploymentPolicyTemplate: deploymentPolicyCloudFormationTemplate({
914
+ boundary: options.plan.boundary,
915
+ deploymentPolicy,
916
+ deploymentRoleName: options.plan.deploymentRoleName,
917
+ }),
691
918
  projectPromotions,
692
919
  sanitizedResult: {
693
920
  candidateIdentity: options.plan.candidateIdentity,
@@ -716,7 +943,15 @@ async function publishReviewedStageWorkloadRoleCandidate(options) {
716
943
  const provisionerResults = {};
717
944
  for (const project of options.plan.projectPlans) {
718
945
  provisionerResults[project.project] =
719
- await options.controlPlane.invokeQualifiedProvisioner(project.provisionerAliasArn, project.provisionerRequest);
946
+ await invokeQualifiedProvisionerWithRetry({
947
+ controlPlane: options.controlPlane,
948
+ plan: project,
949
+ ...(options.waitBeforeProvisionerRetry
950
+ ? {
951
+ waitBeforeProvisionerRetry: options.waitBeforeProvisionerRetry,
952
+ }
953
+ : {}),
954
+ });
720
955
  }
721
956
  const promotion = createWorkloadRoleStageDeploymentPromotion({
722
957
  plan: options.plan,
@@ -727,6 +962,8 @@ async function publishReviewedStageWorkloadRoleCandidate(options) {
727
962
  policy: promotion.deploymentPolicy,
728
963
  policyName: promotion.deploymentPolicyName,
729
964
  roleName: options.plan.deploymentRoleName,
965
+ stackName: promotion.deploymentPolicyStackName,
966
+ template: promotion.deploymentPolicyTemplate,
730
967
  });
731
968
  for (const project of options.plan.projectPlans) {
732
969
  const promoted = promotion.projectPromotions[project.project];
@@ -32,7 +32,9 @@ export interface DeploymentRoleAuthorityValidation {
32
32
  * Stable ordinary deployment-role authority. It can read exact protected
33
33
  * registration objects, invoke and observe only the fixed qualified
34
34
  * provisioner, and pass exact registered roles to their declared AWS services.
35
- * It deliberately exposes no direct IAM role inspection or mutation surface.
35
+ * It exposes only exact read authority needed by Pulumi to import the already
36
+ * provisioned roles and NAT instance profiles. It exposes no direct IAM
37
+ * mutation surface.
36
38
  */
37
39
  export declare function createDeploymentRoleAuthorityPlan(registry: ExactProvisionedWorkloadRoleRegistry, registrationReadScope?: DeploymentRoleRegistrationReadScope): DeploymentRoleAuthorityPlan;
38
40
  export declare function validateDeploymentRoleAuthorityPlan(registry: ExactProvisionedWorkloadRoleRegistry, value: unknown, registrationReadScope?: DeploymentRoleRegistrationReadScope): DeploymentRoleAuthorityValidation;