@msn-control/liftoff 0.10.4 → 0.11.2

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 (700) hide show
  1. package/DEVELOPER.md +238 -77
  2. package/README.md +38 -33
  3. package/assets/supported-stack.json +3 -136
  4. package/dist/adapters/azure/governance-assessment.d.ts +2 -0
  5. package/dist/adapters/azure/governance-assessment.js +21 -0
  6. package/dist/adapters/azure/governance-assessment.js.map +1 -0
  7. package/dist/adapters/filesystem/atomic-write.d.ts +2 -0
  8. package/dist/adapters/filesystem/atomic-write.js +74 -0
  9. package/dist/adapters/filesystem/atomic-write.js.map +1 -0
  10. package/dist/adapters/filesystem/errors.d.ts +2 -0
  11. package/dist/adapters/filesystem/errors.js +8 -0
  12. package/dist/adapters/filesystem/errors.js.map +1 -0
  13. package/dist/adapters/filesystem/manifest-file.d.ts +1 -0
  14. package/dist/adapters/filesystem/manifest-file.js +21 -0
  15. package/dist/adapters/filesystem/manifest-file.js.map +1 -0
  16. package/dist/adapters/filesystem/project-config.d.ts +4 -0
  17. package/dist/adapters/filesystem/project-config.js +157 -0
  18. package/dist/adapters/filesystem/project-config.js.map +1 -0
  19. package/dist/adapters/filesystem/project-discovery.d.ts +2 -0
  20. package/dist/adapters/filesystem/project-discovery.js +30 -0
  21. package/dist/adapters/filesystem/project-discovery.js.map +1 -0
  22. package/dist/adapters/filesystem/project-files.d.ts +6 -0
  23. package/dist/adapters/filesystem/project-files.js +68 -0
  24. package/dist/adapters/filesystem/project-files.js.map +1 -0
  25. package/dist/adapters/filesystem/project-lock.d.ts +8 -0
  26. package/dist/adapters/filesystem/project-lock.js +164 -0
  27. package/dist/adapters/filesystem/project-lock.js.map +1 -0
  28. package/dist/adapters/filesystem/project-paths.d.ts +2 -0
  29. package/dist/adapters/filesystem/project-paths.js +60 -0
  30. package/dist/adapters/filesystem/project-paths.js.map +1 -0
  31. package/dist/adapters/filesystem/project-transaction.d.ts +24 -0
  32. package/dist/adapters/filesystem/project-transaction.js +177 -0
  33. package/dist/adapters/filesystem/project-transaction.js.map +1 -0
  34. package/dist/adapters/filesystem/reviewed-update-transaction.d.ts +53 -0
  35. package/dist/adapters/filesystem/reviewed-update-transaction.js +864 -0
  36. package/dist/adapters/filesystem/reviewed-update-transaction.js.map +1 -0
  37. package/dist/adapters/filesystem/update-previews.d.ts +50 -0
  38. package/dist/adapters/filesystem/update-previews.js +613 -0
  39. package/dist/adapters/filesystem/update-previews.js.map +1 -0
  40. package/dist/adapters/git/governance-assessment.d.ts +22 -0
  41. package/dist/adapters/git/governance-assessment.js +161 -0
  42. package/dist/adapters/git/governance-assessment.js.map +1 -0
  43. package/dist/adapters/github/governance-assessment.d.ts +2 -0
  44. package/dist/adapters/github/governance-assessment.js +18 -0
  45. package/dist/adapters/github/governance-assessment.js.map +1 -0
  46. package/dist/adapters/packaged-assets/package-root.d.ts +3 -0
  47. package/dist/adapters/packaged-assets/package-root.js +21 -0
  48. package/dist/adapters/packaged-assets/package-root.js.map +1 -0
  49. package/dist/adapters/packaged-assets/supported-stack.d.ts +4 -0
  50. package/dist/adapters/packaged-assets/supported-stack.js +18 -0
  51. package/dist/adapters/packaged-assets/supported-stack.js.map +1 -0
  52. package/dist/adapters/packaged-assets/template-assets.d.ts +23 -0
  53. package/dist/adapters/packaged-assets/template-assets.js +36 -0
  54. package/dist/adapters/packaged-assets/template-assets.js.map +1 -0
  55. package/dist/adapters/process/shell-command.d.ts +6 -0
  56. package/dist/adapters/process/shell-command.js +27 -0
  57. package/dist/adapters/process/shell-command.js.map +1 -0
  58. package/dist/application/context.d.ts +25 -0
  59. package/dist/application/context.js +2 -0
  60. package/dist/application/context.js.map +1 -0
  61. package/dist/application/diagnose/doctor.d.ts +21 -0
  62. package/dist/application/diagnose/doctor.js +580 -0
  63. package/dist/application/diagnose/doctor.js.map +1 -0
  64. package/dist/application/diagnose/generated-project.d.ts +1 -0
  65. package/dist/application/diagnose/generated-project.js +105 -0
  66. package/dist/application/diagnose/generated-project.js.map +1 -0
  67. package/dist/application/diagnose/validate.d.ts +6 -0
  68. package/dist/application/diagnose/validate.js +27 -0
  69. package/dist/application/diagnose/validate.js.map +1 -0
  70. package/dist/application/initialize/fixture.d.ts +2 -0
  71. package/dist/application/initialize/fixture.js +39 -0
  72. package/dist/application/initialize/fixture.js.map +1 -0
  73. package/dist/application/initialize/inputs.d.ts +3 -0
  74. package/dist/application/initialize/inputs.js +35 -0
  75. package/dist/application/initialize/inputs.js.map +1 -0
  76. package/dist/application/initialize/use-case.d.ts +23 -0
  77. package/dist/application/initialize/use-case.js +360 -0
  78. package/dist/application/initialize/use-case.js.map +1 -0
  79. package/dist/application/migrate/use-case.d.ts +7 -0
  80. package/dist/application/migrate/use-case.js +378 -0
  81. package/dist/application/migrate/use-case.js.map +1 -0
  82. package/dist/application/project/catalog.d.ts +46 -0
  83. package/dist/application/project/catalog.js +12 -0
  84. package/dist/application/project/catalog.js.map +1 -0
  85. package/dist/application/project/manifest.d.ts +2 -0
  86. package/dist/application/project/manifest.js +29 -0
  87. package/dist/application/project/manifest.js.map +1 -0
  88. package/dist/application/project/planning.d.ts +6 -0
  89. package/dist/application/project/planning.js +12 -0
  90. package/dist/application/project/planning.js.map +1 -0
  91. package/dist/application/update/approval.d.ts +39 -0
  92. package/dist/application/update/approval.js +54 -0
  93. package/dist/application/update/approval.js.map +1 -0
  94. package/dist/application/update/command-guidance.d.ts +2 -0
  95. package/dist/application/update/command-guidance.js +14 -0
  96. package/dist/application/update/command-guidance.js.map +1 -0
  97. package/dist/application/update/inspection.d.ts +37 -0
  98. package/dist/application/update/inspection.js +235 -0
  99. package/dist/application/update/inspection.js.map +1 -0
  100. package/dist/application/update/migration-runtime.d.ts +14 -0
  101. package/dist/application/update/migration-runtime.js +178 -0
  102. package/dist/application/update/migration-runtime.js.map +1 -0
  103. package/dist/application/update/output.d.ts +134 -0
  104. package/dist/application/update/output.js +182 -0
  105. package/dist/application/update/output.js.map +1 -0
  106. package/dist/application/update/planning.d.ts +40 -0
  107. package/dist/application/update/planning.js +293 -0
  108. package/dist/application/update/planning.js.map +1 -0
  109. package/dist/application/update/preview.d.ts +49 -0
  110. package/dist/application/update/preview.js +220 -0
  111. package/dist/application/update/preview.js.map +1 -0
  112. package/dist/application/update/protected-source.d.ts +25 -0
  113. package/dist/application/update/protected-source.js +81 -0
  114. package/dist/application/update/protected-source.js.map +1 -0
  115. package/dist/application/update/reporting.d.ts +42 -0
  116. package/dist/application/update/reporting.js +326 -0
  117. package/dist/application/update/reporting.js.map +1 -0
  118. package/dist/application/update/revalidation-plan.d.ts +22 -0
  119. package/dist/application/update/revalidation-plan.js +108 -0
  120. package/dist/application/update/revalidation-plan.js.map +1 -0
  121. package/dist/application/update/revalidation.d.ts +70 -0
  122. package/dist/application/update/revalidation.js +337 -0
  123. package/dist/application/update/revalidation.js.map +1 -0
  124. package/dist/application/update/review-plan.d.ts +25 -0
  125. package/dist/application/update/review-plan.js +89 -0
  126. package/dist/application/update/review-plan.js.map +1 -0
  127. package/dist/application/update/transaction-approval.d.ts +29 -0
  128. package/dist/application/update/transaction-approval.js +82 -0
  129. package/dist/application/update/transaction-approval.js.map +1 -0
  130. package/dist/application/update/use-case.d.ts +9 -0
  131. package/dist/application/update/use-case.js +271 -0
  132. package/dist/application/update/use-case.js.map +1 -0
  133. package/dist/application/update/write-plan.d.ts +15 -0
  134. package/dist/application/update/write-plan.js +115 -0
  135. package/dist/application/update/write-plan.js.map +1 -0
  136. package/dist/application/upgrade/use-case.d.ts +6 -0
  137. package/dist/application/upgrade/use-case.js +82 -0
  138. package/dist/application/upgrade/use-case.js.map +1 -0
  139. package/dist/args.d.ts +5 -65
  140. package/dist/args.js +4 -472
  141. package/dist/args.js.map +1 -1
  142. package/dist/artifact-lifecycle.d.ts +1 -21
  143. package/dist/artifact-lifecycle.js +1 -75
  144. package/dist/artifact-lifecycle.js.map +1 -1
  145. package/dist/catalogs.d.ts +1 -50
  146. package/dist/catalogs.js +1 -472
  147. package/dist/catalogs.js.map +1 -1
  148. package/dist/cli/args/contracts.d.ts +51 -0
  149. package/dist/cli/args/contracts.js +2 -0
  150. package/dist/cli/args/contracts.js.map +1 -0
  151. package/dist/cli/args/definitions.d.ts +6 -0
  152. package/dist/cli/args/definitions.js +188 -0
  153. package/dist/cli/args/definitions.js.map +1 -0
  154. package/dist/cli/args/help.d.ts +5 -0
  155. package/dist/cli/args/help.js +142 -0
  156. package/dist/cli/args/help.js.map +1 -0
  157. package/dist/cli/args/parser.d.ts +5 -0
  158. package/dist/cli/args/parser.js +160 -0
  159. package/dist/cli/args/parser.js.map +1 -0
  160. package/dist/cli/args/readers.d.ts +4 -0
  161. package/dist/cli/args/readers.js +19 -0
  162. package/dist/cli/args/readers.js.map +1 -0
  163. package/dist/cli/commands/diagnose.d.ts +4 -0
  164. package/dist/cli/commands/diagnose.js +12 -0
  165. package/dist/cli/commands/diagnose.js.map +1 -0
  166. package/dist/cli/commands/dispatch.d.ts +3 -0
  167. package/dist/cli/commands/dispatch.js +94 -0
  168. package/dist/cli/commands/dispatch.js.map +1 -0
  169. package/dist/cli/commands/help.d.ts +3 -0
  170. package/dist/cli/commands/help.js +32 -0
  171. package/dist/cli/commands/help.js.map +1 -0
  172. package/dist/cli/commands/helpers.d.ts +8 -0
  173. package/dist/cli/commands/helpers.js +97 -0
  174. package/dist/cli/commands/helpers.js.map +1 -0
  175. package/dist/cli/commands/initialize.d.ts +3 -0
  176. package/dist/cli/commands/initialize.js +7 -0
  177. package/dist/cli/commands/initialize.js.map +1 -0
  178. package/dist/cli/commands/migrate.d.ts +3 -0
  179. package/dist/cli/commands/migrate.js +8 -0
  180. package/dist/cli/commands/migrate.js.map +1 -0
  181. package/dist/cli/commands/plan.d.ts +3 -0
  182. package/dist/cli/commands/plan.js +34 -0
  183. package/dist/cli/commands/plan.js.map +1 -0
  184. package/dist/cli/commands/reference.d.ts +5 -0
  185. package/dist/cli/commands/reference.js +43 -0
  186. package/dist/cli/commands/reference.js.map +1 -0
  187. package/dist/cli/commands/update.d.ts +3 -0
  188. package/dist/cli/commands/update.js +10 -0
  189. package/dist/cli/commands/update.js.map +1 -0
  190. package/dist/cli/commands/upgrade.d.ts +3 -0
  191. package/dist/cli/commands/upgrade.js +7 -0
  192. package/dist/cli/commands/upgrade.js.map +1 -0
  193. package/dist/cli/context.d.ts +1 -0
  194. package/dist/cli/context.js +2 -0
  195. package/dist/cli/context.js.map +1 -0
  196. package/dist/cli/project-options.d.ts +3 -0
  197. package/dist/cli/project-options.js +41 -0
  198. package/dist/cli/project-options.js.map +1 -0
  199. package/dist/cli.d.ts +3 -3
  200. package/dist/cli.js +2 -2
  201. package/dist/cli.js.map +1 -1
  202. package/dist/commands.d.ts +4 -35
  203. package/dist/commands.js +3 -2969
  204. package/dist/commands.js.map +1 -1
  205. package/dist/container-validation.d.ts +1 -1
  206. package/dist/domain/governance/activation/approvals.d.ts +351 -0
  207. package/dist/domain/governance/activation/approvals.js +528 -0
  208. package/dist/domain/governance/activation/approvals.js.map +1 -0
  209. package/dist/domain/governance/activation/canonical-json.d.ts +4 -0
  210. package/dist/domain/governance/activation/canonical-json.js +39 -0
  211. package/dist/domain/governance/activation/canonical-json.js.map +1 -0
  212. package/dist/domain/governance/activation/capabilities.d.ts +7 -0
  213. package/dist/domain/governance/activation/capabilities.js +33 -0
  214. package/dist/domain/governance/activation/capabilities.js.map +1 -0
  215. package/dist/domain/governance/activation/evidence.d.ts +63 -0
  216. package/dist/domain/governance/activation/evidence.js +444 -0
  217. package/dist/domain/governance/activation/evidence.js.map +1 -0
  218. package/dist/domain/governance/activation/graph.d.ts +397 -0
  219. package/dist/domain/governance/activation/graph.js +441 -0
  220. package/dist/domain/governance/activation/graph.js.map +1 -0
  221. package/dist/domain/governance/activation/inputs.d.ts +25 -0
  222. package/dist/domain/governance/activation/inputs.js +63 -0
  223. package/dist/domain/governance/activation/inputs.js.map +1 -0
  224. package/dist/domain/governance/activation/operations.d.ts +19 -0
  225. package/dist/domain/governance/activation/operations.js +181 -0
  226. package/dist/domain/governance/activation/operations.js.map +1 -0
  227. package/dist/domain/governance/activation/readiness.d.ts +27 -0
  228. package/dist/domain/governance/activation/readiness.js +269 -0
  229. package/dist/domain/governance/activation/readiness.js.map +1 -0
  230. package/dist/domain/governance/activation/types.d.ts +399 -0
  231. package/dist/domain/governance/activation/types.js +109 -0
  232. package/dist/domain/governance/activation/types.js.map +1 -0
  233. package/dist/domain/governance/activation/validators.d.ts +22 -0
  234. package/dist/domain/governance/activation/validators.js +1347 -0
  235. package/dist/domain/governance/activation/validators.js.map +1 -0
  236. package/dist/domain/governance/assessment/catalog.d.ts +14 -0
  237. package/dist/domain/governance/assessment/catalog.js +105 -0
  238. package/dist/domain/governance/assessment/catalog.js.map +1 -0
  239. package/dist/domain/governance/assessment/errors.d.ts +10 -0
  240. package/dist/domain/governance/assessment/errors.js +22 -0
  241. package/dist/domain/governance/assessment/errors.js.map +1 -0
  242. package/dist/domain/governance/assessment/index.d.ts +8 -0
  243. package/dist/domain/governance/assessment/index.js +9 -0
  244. package/dist/domain/governance/assessment/index.js.map +1 -0
  245. package/dist/domain/governance/assessment/live-normalize.d.ts +19 -0
  246. package/dist/domain/governance/assessment/live-normalize.js +403 -0
  247. package/dist/domain/governance/assessment/live-normalize.js.map +1 -0
  248. package/dist/domain/governance/assessment/predicates.d.ts +36 -0
  249. package/dist/domain/governance/assessment/predicates.js +545 -0
  250. package/dist/domain/governance/assessment/predicates.js.map +1 -0
  251. package/dist/domain/governance/assessment/report.d.ts +23 -0
  252. package/dist/domain/governance/assessment/report.js +266 -0
  253. package/dist/domain/governance/assessment/report.js.map +1 -0
  254. package/dist/domain/governance/assessment/sanitize.d.ts +8 -0
  255. package/dist/domain/governance/assessment/sanitize.js +60 -0
  256. package/dist/domain/governance/assessment/sanitize.js.map +1 -0
  257. package/dist/domain/governance/assessment/types.d.ts +174 -0
  258. package/dist/domain/governance/assessment/types.js +13 -0
  259. package/dist/domain/governance/assessment/types.js.map +1 -0
  260. package/dist/domain/governance/assessment/yaml.d.ts +6 -0
  261. package/dist/domain/governance/assessment/yaml.js +30 -0
  262. package/dist/domain/governance/assessment/yaml.js.map +1 -0
  263. package/dist/domain/governance/policy/identity.d.ts +64 -0
  264. package/dist/domain/governance/policy/identity.js +112 -0
  265. package/dist/domain/governance/policy/identity.js.map +1 -0
  266. package/dist/domain/migration/dependencies.d.ts +7 -0
  267. package/dist/domain/migration/dependencies.js +221 -0
  268. package/dist/domain/migration/dependencies.js.map +1 -0
  269. package/dist/domain/migration/inventory.d.ts +3 -0
  270. package/dist/domain/migration/inventory.js +15 -0
  271. package/dist/domain/migration/inventory.js.map +1 -0
  272. package/dist/domain/project/artifact-lifecycle.d.ts +69 -0
  273. package/dist/domain/project/artifact-lifecycle.js +137 -0
  274. package/dist/domain/project/artifact-lifecycle.js.map +1 -0
  275. package/dist/domain/project/catalog.d.ts +48 -0
  276. package/dist/domain/project/catalog.js +507 -0
  277. package/dist/domain/project/catalog.js.map +1 -0
  278. package/dist/domain/project/contracts.d.ts +247 -0
  279. package/dist/domain/project/contracts.js +2 -0
  280. package/dist/domain/project/contracts.js.map +1 -0
  281. package/dist/domain/project/errors.d.ts +3 -0
  282. package/dist/domain/project/errors.js +7 -0
  283. package/dist/domain/project/errors.js.map +1 -0
  284. package/dist/domain/project/infrastructure-layout.d.ts +26 -0
  285. package/dist/domain/project/infrastructure-layout.js +125 -0
  286. package/dist/domain/project/infrastructure-layout.js.map +1 -0
  287. package/dist/domain/project/inputs.d.ts +21 -0
  288. package/dist/domain/project/inputs.js +41 -0
  289. package/dist/domain/project/inputs.js.map +1 -0
  290. package/dist/domain/project/manifest/artifacts.d.ts +8 -0
  291. package/dist/domain/project/manifest/artifacts.js +150 -0
  292. package/dist/domain/project/manifest/artifacts.js.map +1 -0
  293. package/dist/domain/project/manifest/context.d.ts +13 -0
  294. package/dist/domain/project/manifest/context.js +2 -0
  295. package/dist/domain/project/manifest/context.js.map +1 -0
  296. package/dist/domain/project/manifest/fields.d.ts +6 -0
  297. package/dist/domain/project/manifest/fields.js +36 -0
  298. package/dist/domain/project/manifest/fields.js.map +1 -0
  299. package/dist/domain/project/manifest/governance.d.ts +8 -0
  300. package/dist/domain/project/manifest/governance.js +161 -0
  301. package/dist/domain/project/manifest/governance.js.map +1 -0
  302. package/dist/domain/project/manifest/project-identity.d.ts +6 -0
  303. package/dist/domain/project/manifest/project-identity.js +273 -0
  304. package/dist/domain/project/manifest/project-identity.js.map +1 -0
  305. package/dist/domain/project/manifest/reader.d.ts +9 -0
  306. package/dist/domain/project/manifest/reader.js +141 -0
  307. package/dist/domain/project/manifest/reader.js.map +1 -0
  308. package/dist/domain/project/paths.d.ts +2 -0
  309. package/dist/domain/project/paths.js +29 -0
  310. package/dist/domain/project/paths.js.map +1 -0
  311. package/dist/domain/project/planning.d.ts +19 -0
  312. package/dist/domain/project/planning.js +329 -0
  313. package/dist/domain/project/planning.js.map +1 -0
  314. package/dist/domain/project/retired-workload.d.ts +4 -0
  315. package/dist/domain/project/retired-workload.js +18 -0
  316. package/dist/domain/project/retired-workload.js.map +1 -0
  317. package/dist/domain/project/reviewed-update-artifacts.d.ts +2 -0
  318. package/dist/domain/project/reviewed-update-artifacts.js +3 -0
  319. package/dist/domain/project/reviewed-update-artifacts.js.map +1 -0
  320. package/dist/domain/project/supported-stack.d.ts +113 -0
  321. package/dist/domain/project/supported-stack.js +426 -0
  322. package/dist/domain/project/supported-stack.js.map +1 -0
  323. package/dist/domain/workstation/constraints.d.ts +6 -0
  324. package/dist/domain/workstation/constraints.js +8 -0
  325. package/dist/domain/workstation/constraints.js.map +1 -0
  326. package/dist/file-system.d.ts +10 -44
  327. package/dist/file-system.js +9 -1245
  328. package/dist/file-system.js.map +1 -1
  329. package/dist/framework-adapters.d.ts +1 -1
  330. package/dist/framework-validation.d.ts +1 -1
  331. package/dist/framework-validation.js +1 -1
  332. package/dist/framework-validation.js.map +1 -1
  333. package/dist/genai-templates.d.ts +2 -9
  334. package/dist/genai-templates.js +4 -5
  335. package/dist/genai-templates.js.map +1 -1
  336. package/dist/generators/common/artifacts.d.ts +6 -0
  337. package/dist/generators/common/artifacts.js +30 -0
  338. package/dist/generators/common/artifacts.js.map +1 -0
  339. package/dist/generators/common/base.d.ts +17 -0
  340. package/dist/generators/common/base.js +425 -0
  341. package/dist/generators/common/base.js.map +1 -0
  342. package/dist/generators/common/dotenv-validation.d.ts +2 -0
  343. package/dist/generators/common/dotenv-validation.js +80 -0
  344. package/dist/generators/common/dotenv-validation.js.map +1 -0
  345. package/dist/generators/common/environments.d.ts +3 -0
  346. package/dist/generators/common/environments.js +15 -0
  347. package/dist/generators/common/environments.js.map +1 -0
  348. package/dist/generators/common/frontend.d.ts +15 -0
  349. package/dist/generators/common/frontend.js +166 -0
  350. package/dist/generators/common/frontend.js.map +1 -0
  351. package/dist/generators/common/python-settings.d.ts +2 -0
  352. package/dist/generators/common/python-settings.js +70 -0
  353. package/dist/generators/common/python-settings.js.map +1 -0
  354. package/dist/generators/common/spec-workflow.d.ts +28 -0
  355. package/dist/generators/common/spec-workflow.js +567 -0
  356. package/dist/generators/common/spec-workflow.js.map +1 -0
  357. package/dist/generators/common/values.d.ts +13 -0
  358. package/dist/generators/common/values.js +16 -0
  359. package/dist/generators/common/values.js.map +1 -0
  360. package/dist/generators/containers/compose.d.ts +7 -0
  361. package/dist/generators/containers/compose.js +196 -0
  362. package/dist/generators/containers/compose.js.map +1 -0
  363. package/dist/generators/containers/context.d.ts +1 -0
  364. package/dist/generators/containers/context.js +43 -0
  365. package/dist/generators/containers/context.js.map +1 -0
  366. package/dist/generators/containers/images.d.ts +7 -0
  367. package/dist/generators/containers/images.js +119 -0
  368. package/dist/generators/containers/images.js.map +1 -0
  369. package/dist/generators/context.d.ts +42 -0
  370. package/dist/generators/context.js +38 -0
  371. package/dist/generators/context.js.map +1 -0
  372. package/dist/generators/genai/backend.d.ts +20 -0
  373. package/dist/generators/genai/backend.js +667 -0
  374. package/dist/generators/genai/backend.js.map +1 -0
  375. package/dist/generators/genai/configuration.d.ts +3 -0
  376. package/dist/generators/genai/configuration.js +43 -0
  377. package/dist/generators/genai/configuration.js.map +1 -0
  378. package/dist/generators/genai/database.d.ts +7 -0
  379. package/dist/generators/genai/database.js +71 -0
  380. package/dist/generators/genai/database.js.map +1 -0
  381. package/dist/generators/genai/functions.d.ts +15 -0
  382. package/dist/generators/genai/functions.js +156 -0
  383. package/dist/generators/genai/functions.js.map +1 -0
  384. package/dist/generators/genai/index.d.ts +8 -0
  385. package/dist/generators/genai/index.js +11 -0
  386. package/dist/generators/genai/index.js.map +1 -0
  387. package/dist/generators/genai/patterns.d.ts +9 -0
  388. package/dist/generators/genai/patterns.js +309 -0
  389. package/dist/generators/genai/patterns.js.map +1 -0
  390. package/dist/generators/infrastructure/azure.d.ts +18 -0
  391. package/dist/generators/infrastructure/azure.js +655 -0
  392. package/dist/generators/infrastructure/azure.js.map +1 -0
  393. package/dist/generators/infrastructure/names.d.ts +23 -0
  394. package/dist/generators/infrastructure/names.js +51 -0
  395. package/dist/generators/infrastructure/names.js.map +1 -0
  396. package/dist/generators/standard/configuration.d.ts +3 -0
  397. package/dist/generators/standard/configuration.js +26 -0
  398. package/dist/generators/standard/configuration.js.map +1 -0
  399. package/dist/generators/standard/go.d.ts +17 -0
  400. package/dist/generators/standard/go.js +338 -0
  401. package/dist/generators/standard/go.js.map +1 -0
  402. package/dist/generators/standard/index.d.ts +12 -0
  403. package/dist/generators/standard/index.js +12 -0
  404. package/dist/generators/standard/index.js.map +1 -0
  405. package/dist/generators/standard/node.d.ts +20 -0
  406. package/dist/generators/standard/node.js +314 -0
  407. package/dist/generators/standard/node.js.map +1 -0
  408. package/dist/generators/standard/python.d.ts +18 -0
  409. package/dist/generators/standard/python.js +191 -0
  410. package/dist/generators/standard/python.js.map +1 -0
  411. package/dist/go-template-assets.js +3 -3
  412. package/dist/go-template-assets.js.map +1 -1
  413. package/dist/governance-activation/activation-state.d.ts +1 -1
  414. package/dist/governance-activation/activation-state.js +49 -9
  415. package/dist/governance-activation/activation-state.js.map +1 -1
  416. package/dist/governance-activation/approvals.d.ts +1 -188
  417. package/dist/governance-activation/approvals.js +1 -507
  418. package/dist/governance-activation/approvals.js.map +1 -1
  419. package/dist/governance-activation/canonical-json.d.ts +1 -3
  420. package/dist/governance-activation/canonical-json.js +1 -35
  421. package/dist/governance-activation/canonical-json.js.map +1 -1
  422. package/dist/governance-activation/commands.d.ts +6 -1
  423. package/dist/governance-activation/commands.js +135 -107
  424. package/dist/governance-activation/commands.js.map +1 -1
  425. package/dist/governance-activation/compatibility.d.ts +30 -5
  426. package/dist/governance-activation/compatibility.js +74 -8
  427. package/dist/governance-activation/compatibility.js.map +1 -1
  428. package/dist/governance-activation/credentials.d.ts +3 -3
  429. package/dist/governance-activation/credentials.js +5 -5
  430. package/dist/governance-activation/credentials.js.map +1 -1
  431. package/dist/governance-activation/doctor.d.ts +1 -1
  432. package/dist/governance-activation/doctor.js +59 -100
  433. package/dist/governance-activation/doctor.js.map +1 -1
  434. package/dist/governance-activation/evidence.d.ts +1 -49
  435. package/dist/governance-activation/evidence.js +1 -245
  436. package/dist/governance-activation/evidence.js.map +1 -1
  437. package/dist/governance-activation/git-ignore.d.ts +9 -0
  438. package/dist/governance-activation/git-ignore.js +76 -0
  439. package/dist/governance-activation/git-ignore.js.map +1 -0
  440. package/dist/governance-activation/graph.d.ts +1 -397
  441. package/dist/governance-activation/graph.js +1 -440
  442. package/dist/governance-activation/graph.js.map +1 -1
  443. package/dist/governance-activation/historical-state.d.ts +81 -0
  444. package/dist/governance-activation/historical-state.js +817 -0
  445. package/dist/governance-activation/historical-state.js.map +1 -0
  446. package/dist/governance-activation/history-contracts.d.ts +109 -0
  447. package/dist/governance-activation/history-contracts.js +303 -0
  448. package/dist/governance-activation/history-contracts.js.map +1 -0
  449. package/dist/governance-activation/identity.d.ts +1 -35
  450. package/dist/governance-activation/identity.js +1 -88
  451. package/dist/governance-activation/identity.js.map +1 -1
  452. package/dist/governance-activation/index.d.ts +3 -0
  453. package/dist/governance-activation/index.js +3 -0
  454. package/dist/governance-activation/index.js.map +1 -1
  455. package/dist/governance-activation/inputs.d.ts +10 -0
  456. package/dist/governance-activation/inputs.js +158 -0
  457. package/dist/governance-activation/inputs.js.map +1 -0
  458. package/dist/governance-activation/migration-history.d.ts +97 -0
  459. package/dist/governance-activation/migration-history.js +388 -0
  460. package/dist/governance-activation/migration-history.js.map +1 -0
  461. package/dist/governance-activation/migration.d.ts +4 -3
  462. package/dist/governance-activation/migration.js +14 -6
  463. package/dist/governance-activation/migration.js.map +1 -1
  464. package/dist/governance-activation/phase-bootstrap-state.d.ts +3 -0
  465. package/dist/governance-activation/phase-bootstrap-state.js +128 -0
  466. package/dist/governance-activation/phase-bootstrap-state.js.map +1 -0
  467. package/dist/governance-activation/phase-discovery.d.ts +2 -0
  468. package/dist/governance-activation/phase-discovery.js +88 -0
  469. package/dist/governance-activation/phase-discovery.js.map +1 -0
  470. package/dist/governance-activation/phase-governance.d.ts +4 -0
  471. package/dist/governance-activation/phase-governance.js +141 -0
  472. package/dist/governance-activation/phase-governance.js.map +1 -0
  473. package/dist/governance-activation/phase-publication.d.ts +8 -0
  474. package/dist/governance-activation/phase-publication.js +318 -0
  475. package/dist/governance-activation/phase-publication.js.map +1 -0
  476. package/dist/governance-activation/proof-records.d.ts +3 -0
  477. package/dist/governance-activation/proof-records.js +78 -0
  478. package/dist/governance-activation/proof-records.js.map +1 -0
  479. package/dist/governance-activation/read-only.d.ts +30 -0
  480. package/dist/governance-activation/read-only.js +33 -0
  481. package/dist/governance-activation/read-only.js.map +1 -0
  482. package/dist/governance-activation/readiness.d.ts +1 -25
  483. package/dist/governance-activation/readiness.js +1 -222
  484. package/dist/governance-activation/readiness.js.map +1 -1
  485. package/dist/governance-activation/reconciliation.d.ts +1 -1
  486. package/dist/governance-activation/reconciliation.js +3 -3
  487. package/dist/governance-activation/reconciliation.js.map +1 -1
  488. package/dist/governance-activation/release-integrity.d.ts +1 -1
  489. package/dist/governance-activation/release-integrity.js +2 -2
  490. package/dist/governance-activation/release-integrity.js.map +1 -1
  491. package/dist/governance-activation/seed-lifecycle.d.ts +36 -6
  492. package/dist/governance-activation/seed-lifecycle.js +444 -77
  493. package/dist/governance-activation/seed-lifecycle.js.map +1 -1
  494. package/dist/governance-activation/source-of-truth.d.ts +5 -3
  495. package/dist/governance-activation/source-of-truth.js +32 -52
  496. package/dist/governance-activation/source-of-truth.js.map +1 -1
  497. package/dist/governance-activation/spec-kit-seed.d.ts +9 -0
  498. package/dist/governance-activation/spec-kit-seed.js +43 -0
  499. package/dist/governance-activation/spec-kit-seed.js.map +1 -0
  500. package/dist/governance-activation/task-projection.d.ts +1 -1
  501. package/dist/governance-activation/transition-planning.d.ts +17 -0
  502. package/dist/governance-activation/transition-planning.js +259 -0
  503. package/dist/governance-activation/transition-planning.js.map +1 -0
  504. package/dist/governance-activation/transition-ports.d.ts +150 -0
  505. package/dist/governance-activation/transition-ports.js +2 -0
  506. package/dist/governance-activation/transition-ports.js.map +1 -0
  507. package/dist/governance-activation/transition-process.d.ts +7 -0
  508. package/dist/governance-activation/transition-process.js +21 -0
  509. package/dist/governance-activation/transition-process.js.map +1 -0
  510. package/dist/governance-activation/transition-records.d.ts +56 -0
  511. package/dist/governance-activation/transition-records.js +208 -0
  512. package/dist/governance-activation/transition-records.js.map +1 -0
  513. package/dist/governance-activation/transitions.d.ts +14 -167
  514. package/dist/governance-activation/transitions.js +173 -2061
  515. package/dist/governance-activation/transitions.js.map +1 -1
  516. package/dist/governance-activation/types.d.ts +1 -390
  517. package/dist/governance-activation/types.js +1 -107
  518. package/dist/governance-activation/types.js.map +1 -1
  519. package/dist/governance-activation/validators.d.ts +1 -17
  520. package/dist/governance-activation/validators.js +1 -1304
  521. package/dist/governance-activation/validators.js.map +1 -1
  522. package/dist/governance-assessment/catalog.d.ts +1 -2
  523. package/dist/governance-assessment/catalog.js +18 -85
  524. package/dist/governance-assessment/catalog.js.map +1 -1
  525. package/dist/governance-assessment/command.d.ts +1 -1
  526. package/dist/governance-assessment/command.js +8 -12
  527. package/dist/governance-assessment/command.js.map +1 -1
  528. package/dist/governance-assessment/engine.d.ts +6 -11
  529. package/dist/governance-assessment/engine.js +490 -114
  530. package/dist/governance-assessment/engine.js.map +1 -1
  531. package/dist/governance-assessment/live-normalize.d.ts +1 -19
  532. package/dist/governance-assessment/live-normalize.js +1 -402
  533. package/dist/governance-assessment/live-normalize.js.map +1 -1
  534. package/dist/governance-assessment/live-transport.d.ts +2 -6
  535. package/dist/governance-assessment/live-transport.js +10 -22
  536. package/dist/governance-assessment/live-transport.js.map +1 -1
  537. package/dist/governance-assessment/live.js +55 -5
  538. package/dist/governance-assessment/live.js.map +1 -1
  539. package/dist/governance-assessment/predicates.d.ts +1 -27
  540. package/dist/governance-assessment/predicates.js +1 -329
  541. package/dist/governance-assessment/predicates.js.map +1 -1
  542. package/dist/governance-assessment/project.d.ts +20 -17
  543. package/dist/governance-assessment/project.js +101 -151
  544. package/dist/governance-assessment/project.js.map +1 -1
  545. package/dist/governance-assessment/readers.d.ts +1 -5
  546. package/dist/governance-assessment/readers.js +5 -13
  547. package/dist/governance-assessment/readers.js.map +1 -1
  548. package/dist/governance-assessment/report.d.ts +1 -23
  549. package/dist/governance-assessment/report.js +1 -265
  550. package/dist/governance-assessment/report.js.map +1 -1
  551. package/dist/governance-assessment/sanitize.d.ts +1 -8
  552. package/dist/governance-assessment/sanitize.js +1 -56
  553. package/dist/governance-assessment/sanitize.js.map +1 -1
  554. package/dist/governance-assessment/types.d.ts +1 -173
  555. package/dist/governance-assessment/types.js +1 -12
  556. package/dist/governance-assessment/types.js.map +1 -1
  557. package/dist/governance-assessment/yaml.d.ts +1 -6
  558. package/dist/governance-assessment/yaml.js +1 -29
  559. package/dist/governance-assessment/yaml.js.map +1 -1
  560. package/dist/init-filesystem.d.ts +1 -1
  561. package/dist/init-filesystem.js +126 -174
  562. package/dist/init-filesystem.js.map +1 -1
  563. package/dist/interactive.d.ts +2 -2
  564. package/dist/interactive.js +42 -41
  565. package/dist/interactive.js.map +1 -1
  566. package/dist/migrate-plan.d.ts +1 -1
  567. package/dist/migrate-plan.js +14 -8
  568. package/dist/migrate-plan.js.map +1 -1
  569. package/dist/npm-template-assets.js +5 -4
  570. package/dist/npm-template-assets.js.map +1 -1
  571. package/dist/openspec-profile.d.ts +1 -1
  572. package/dist/opentofu-template-assets.js +3 -3
  573. package/dist/opentofu-template-assets.js.map +1 -1
  574. package/dist/package-identity.d.ts +3 -0
  575. package/dist/package-identity.js +13 -2
  576. package/dist/package-identity.js.map +1 -1
  577. package/dist/planner.d.ts +1 -19
  578. package/dist/planner.js +1 -565
  579. package/dist/planner.js.map +1 -1
  580. package/dist/process-runner.d.ts +1 -1
  581. package/dist/project-dependencies.d.ts +5 -3
  582. package/dist/project-dependencies.js +74 -63
  583. package/dist/project-dependencies.js.map +1 -1
  584. package/dist/published-verifier.js +61 -30
  585. package/dist/published-verifier.js.map +1 -1
  586. package/dist/python-template-assets.js +6 -9
  587. package/dist/python-template-assets.js.map +1 -1
  588. package/dist/reconcile.d.ts +1 -1
  589. package/dist/reconcile.js +2 -2
  590. package/dist/reconcile.js.map +1 -1
  591. package/dist/repository-governance.d.ts +5 -2
  592. package/dist/repository-governance.js +140 -113
  593. package/dist/repository-governance.js.map +1 -1
  594. package/dist/runtime.js +1 -1
  595. package/dist/runtime.js.map +1 -1
  596. package/dist/scan.d.ts +6 -2
  597. package/dist/scan.js +78 -30
  598. package/dist/scan.js.map +1 -1
  599. package/dist/self-upgrade.d.ts +1 -1
  600. package/dist/self-upgrade.js +20 -7
  601. package/dist/self-upgrade.js.map +1 -1
  602. package/dist/stable-release.js +7 -1
  603. package/dist/stable-release.js.map +1 -1
  604. package/dist/standard-templates.d.ts +2 -2
  605. package/dist/standard-templates.js +6 -841
  606. package/dist/standard-templates.js.map +1 -1
  607. package/dist/supported-stack.d.ts +3 -115
  608. package/dist/supported-stack.js +4 -438
  609. package/dist/supported-stack.js.map +1 -1
  610. package/dist/telemetry/index.d.ts +1 -1
  611. package/dist/templates.d.ts +10 -20
  612. package/dist/templates.js +52 -3261
  613. package/dist/templates.js.map +1 -1
  614. package/dist/types.d.ts +1 -263
  615. package/dist/types.js +1 -1
  616. package/dist/types.js.map +1 -1
  617. package/dist/version.js +2 -6
  618. package/dist/version.js.map +1 -1
  619. package/dist/workstation-catalog.d.ts +5 -2
  620. package/dist/workstation-catalog.js +33 -2
  621. package/dist/workstation-catalog.js.map +1 -1
  622. package/dist/workstation.d.ts +4 -3
  623. package/dist/workstation.js +86 -32
  624. package/dist/workstation.js.map +1 -1
  625. package/docs/assets/liftoff-terminal.svg +3 -3
  626. package/docs/azure-deployment.md +107 -10
  627. package/docs/cli-reference.md +144 -35
  628. package/docs/configuration-and-manifests.md +152 -35
  629. package/docs/existing-repositories.md +48 -12
  630. package/docs/getting-started.md +44 -31
  631. package/docs/prerequisites.md +34 -35
  632. package/docs/project-structure.md +39 -46
  633. package/docs/repository-governance.md +96 -26
  634. package/docs/safety-and-consent.md +90 -28
  635. package/docs/spec-workflows-and-agents.md +31 -28
  636. package/docs/supported-stack.md +11 -9
  637. package/docs/troubleshooting.md +114 -54
  638. package/docs/workloads.md +52 -67
  639. package/package.json +4 -7
  640. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/UPSTREAM_LICENSE.txt +0 -21
  641. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/catalog.json +0 -520
  642. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/packaged/gitignore +0 -27
  643. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/README.md +0 -25
  644. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/components.json +0 -22
  645. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/eslint.config.js +0 -23
  646. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/index.html +0 -13
  647. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package-lock.json +0 -6156
  648. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package.json +0 -60
  649. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/public/power-apps.svg +0 -55
  650. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/App.tsx +0 -17
  651. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/assets/react.svg +0 -1
  652. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/mode-toggle.tsx +0 -37
  653. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/badge.tsx +0 -46
  654. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/button.tsx +0 -60
  655. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/calendar.tsx +0 -211
  656. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/card.tsx +0 -92
  657. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/chart.tsx +0 -355
  658. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/checkbox.tsx +0 -32
  659. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/command.tsx +0 -184
  660. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dialog.tsx +0 -141
  661. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dropdown-menu.tsx +0 -257
  662. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/input.tsx +0 -21
  663. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/label.tsx +0 -22
  664. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/popover.tsx +0 -46
  665. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/progress.tsx +0 -29
  666. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/select.tsx +0 -185
  667. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/separator.tsx +0 -26
  668. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/skeleton.tsx +0 -13
  669. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/table.tsx +0 -114
  670. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tabs.tsx +0 -66
  671. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/textarea.tsx +0 -18
  672. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tooltip.tsx +0 -61
  673. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/hooks/use-theme.ts +0 -11
  674. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/index.css +0 -131
  675. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/lib/utils.ts +0 -6
  676. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/main.tsx +0 -10
  677. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/_layout.tsx +0 -31
  678. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/home.tsx +0 -59
  679. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/not-found.tsx +0 -14
  680. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/query-provider.tsx +0 -26
  681. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/sonner-provider.tsx +0 -23
  682. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/theme-provider.tsx +0 -64
  683. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/router.tsx +0 -24
  684. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.app.json +0 -34
  685. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.json +0 -13
  686. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.node.json +0 -26
  687. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/vite.config.ts +0 -19
  688. package/assets/power-apps-code-app/README.md +0 -27
  689. package/dist/code-apps-plugin.d.ts +0 -13
  690. package/dist/code-apps-plugin.js +0 -69
  691. package/dist/code-apps-plugin.js.map +0 -1
  692. package/dist/power-apps-assets.d.ts +0 -30
  693. package/dist/power-apps-assets.js +0 -131
  694. package/dist/power-apps-assets.js.map +0 -1
  695. package/dist/power-apps-templates.d.ts +0 -3
  696. package/dist/power-apps-templates.js +0 -177
  697. package/dist/power-apps-templates.js.map +0 -1
  698. package/dist/power-apps-validation.d.ts +0 -1
  699. package/dist/power-apps-validation.js +0 -79
  700. package/dist/power-apps-validation.js.map +0 -1
@@ -1,18 +1,19 @@
1
1
  # Getting started
2
2
 
3
- Liftoff is an interactive project initializer for governed GenAI applications,
4
- standard APIs, and Power Apps code apps.
3
+ Liftoff is an interactive project initializer for governed GenAI applications
4
+ and standard APIs.
5
5
 
6
6
  ## 1. Install the CLI
7
7
 
8
- Liftoff and generated Node.js workloads require Node.js 24.20 or newer.
9
- Python workloads use Python 3.14 with frozen `uv` dependency locks.
8
+ Workstation readiness requires stable Node.js 24 LTS at 24.20.0 or newer within
9
+ that line, plus npm 12.x at 12.0.2 or newer when selected tools need it.
10
+ Python workloads use Python 3.14.x with frozen `uv` dependency locks.
10
11
 
11
12
  The canonical release registry is `https://registry.npmjs.org`:
12
13
 
13
14
  ```bash
14
- npm view @msn-control/liftoff@latest version --registry=https://registry.npmjs.org
15
- npm install -g @msn-control/liftoff@latest --registry=https://registry.npmjs.org
15
+ npm view @msn-control/liftoff@latest version --registry=https://registry.npmjs.org --@msn-control:registry=https://registry.npmjs.org
16
+ npm install -g @msn-control/liftoff@latest
16
17
  liftoff --version
17
18
  ```
18
19
 
@@ -22,6 +23,10 @@ If your organization requires a managed npm registry, query
22
23
  canonical npm. Stop if the mirror is older or rejects the explicit current
23
24
  version; ask the mirror owner to synchronize or approve the release. Liftoff
24
25
  does not modify `.npmrc` or bypass registry policy.
26
+ The read-only canonical query isolates both default and scoped registry
27
+ overrides. Installation intentionally honors the configured
28
+ `@msn-control:registry` before the default registry; do not force a canonical
29
+ download around an organization's delivery policy.
25
30
 
26
31
  Versions predating the self-upgrade command require that manual global install
27
32
  once. After a capable version is installed globally with npm, use:
@@ -50,7 +55,7 @@ cd my-project
50
55
 
51
56
  The guided flow asks for:
52
57
 
53
- 1. Project identity and workload: GenAI, API, or Power Apps code app.
58
+ 1. Project identity and workload: GenAI or API.
54
59
  2. Only the architecture choices applicable to that workload.
55
60
  For GenAI, **I'm not sure yet - Generic GenAI starter** is the safe default
56
61
  when no specialization has been selected.
@@ -62,8 +67,7 @@ The guided flow asks for:
62
67
  6. Whether to configure the default-off GitHub-hosted Copilot coding agent when
63
68
  OpenSpec and GitHub Copilot are selected.
64
69
  7. A Spec Kit default agent when both agents are selected.
65
- 8. The optional Preview Code Apps plugin preference for Power Apps projects.
66
- 9. Plan confirmation, workstation readiness, and any separate install or
70
+ 8. Plan confirmation, workstation readiness, and any separate install or
67
71
  overwrite permissions that are needed.
68
72
 
69
73
  Liftoff renders into temporary staging, runs the official framework initializer
@@ -74,12 +78,12 @@ and asks separately before staging.
74
78
 
75
79
  When governance is enabled, `/liftoff-setup` is the next selected-agent action.
76
80
  It has no model-selection requirement: safety comes from the Liftoff CLI phase
77
- graph, local evidence, approval envelopes, and readback. Setup first completes,
78
- syncs, and archives the generated `bootstrap-<project>` seed. Only then does it
79
- reach explicit authority gates for repository commit/push, credentials, billed
80
- infrastructure or policy exceptions, final enforcement, destructive cleanup, and
81
- external blockers. Commit and push are never implicit in `liftoff init`, `--yes`,
82
- or read-only checks.
81
+ graph, local evidence, approval envelopes, and readback. OpenSpec setup completes,
82
+ syncs, and archives `bootstrap-<project>`; Spec Kit validates and finalizes
83
+ `specs/000-liftoff-bootstrap/` locally. Neither workflow invents completed product
84
+ work. Missing approval-persistence, credential-enrollment, and production phase
85
+ executors remain specific blockers. Commit and push are never implicit in
86
+ `liftoff init`, `--yes`, or read-only checks.
83
87
 
84
88
  For deterministic generic generation, use `--type genai --pattern generic`.
85
89
 
@@ -97,26 +101,35 @@ non-empty target.
97
101
 
98
102
  ## 4. Local baseline setup verifies
99
103
 
100
- `/liftoff-setup` runs only local, project-applicable baseline checks before it
101
- archives the seed:
104
+ `/liftoff-setup` runs only local, project-applicable baseline checks before
105
+ archiving the OpenSpec seed or finalizing the Spec Kit bundle. Commands run in
106
+ their declared component directories, not all from an arbitrary working directory:
102
107
 
103
108
  ```bash
104
109
  liftoff validate
105
110
  # backend tests from the generated README when a backend exists
106
111
  # frontend build from the generated README when a frontend exists
107
112
  docker compose config -q
113
+ # From infrastructure/opentofu/azure/:
108
114
  tofu fmt -check -recursive
115
+ # Within each selected environments/<environment>/ infrastructure root:
109
116
  tofu init -backend=false
110
117
  tofu validate
111
- openspec validate --strict
118
+ # OpenSpec only, from the project root (replace the generated change name):
119
+ openspec validate bootstrap-my-project --strict
112
120
  ```
113
121
 
114
- Absent components are inapplicable: a Power Apps project does not fabricate
115
- backend, Docker, or OpenTofu success, and an API project without a frontend skips
116
- frontend build evidence. The baseline does not run `tofu plan`, `tofu apply`,
122
+ Absent optional components are inapplicable: an API project without a frontend
123
+ skips frontend build evidence. The baseline does not run `tofu plan`, `tofu apply`,
117
124
  start containers, deploy, mutate GitHub, or require cloud credentials. If a check
118
- fails, the seed remains active and `/liftoff-setup` resumes idempotently after
119
- you fix the blocker; verified phases are not repeated.
125
+ fails, the seed remains unfinished. After repair, explicit execution can retry
126
+ the local baseline; read-only `resume` does not run it. Current unchanged proof
127
+ can be reused, while changed inputs require new evidence.
128
+ Dependencies must already be usable, or separately installed with explicit
129
+ consent; passing a baseline does not prove that installation or consent happened.
130
+ Spec Kit's B001–B006 projection is finalized only after its checks pass.
131
+ Legacy/shared or unknown infrastructure layouts block baseline execution with a
132
+ migration-required result rather than omitting those checks.
120
133
 
121
134
  You can run read-only maintenance at any time:
122
135
 
@@ -132,14 +145,14 @@ liftoff governance verify --json
132
145
  adds read-only workstation, runtime, authentication, dependency,
133
146
  workload-specific, and governance-state diagnostics.
134
147
 
135
- After setup archives the seed and you explicitly approve repository publication,
136
- normal development follows your selected workflow:
148
+ After the local bootstrap handoff, normal development follows your selected
149
+ workflow. Repository publication and production activation remain separate:
137
150
 
138
151
  - GenAI and API projects: copy `.env.example` to `.env`, install the generated
139
152
  stack dependencies, then use `liftoff dev` and `liftoff infra` to print local
140
- development and infrastructure commands.
141
- - Power Apps projects: run `npm ci`, then `npm run dev`. Environment binding,
142
- connector addition, and `power-apps push` are deliberately deferred.
153
+ development and infrastructure commands. Native Go also copies
154
+ `runtime.config.example.json` to `runtime.config.json`; see the
155
+ [stack-specific configuration recipes](configuration-and-manifests.md#application-runtime-configuration).
143
156
  - OpenSpec or Spec Kit changes drive normal feature work; release and hotfix
144
157
  flows follow the governed GitFlow plan after activation evidence is green.
145
158
 
@@ -151,7 +164,7 @@ Use `liftoff plan` to resolve choices and preview requirements without writing
151
164
  files or running installers:
152
165
 
153
166
  ```bash
154
- liftoff plan --type power-apps-code-app --spec openspec --agents copilot
167
+ liftoff plan --type standard --api node --spec openspec --agents copilot
155
168
  ```
156
169
 
157
170
  Automation can pass the same options to `liftoff init`. Use `--yes` for project
@@ -176,5 +189,5 @@ source remains byte-for-byte unchanged.
176
189
  liftoff migrate ../legacy-app --region eastus --agents copilot,claude --yes
177
190
  ```
178
191
 
179
- Power Apps migration from an arbitrary existing application is not part of the
180
- current workload contract.
192
+ Power Apps support is retired, including existing-project maintenance. Retired
193
+ inputs are rejected without converting or deleting the original application.
@@ -1,18 +1,26 @@
1
1
  # Prerequisites
2
2
 
3
3
  Liftoff derives workstation and project requirements from the complete resolved
4
- plan. A Power Apps project is not asked to install API or infrastructure tools,
5
- and a Go API is not asked to install Python.
4
+ plan. A Go API does not inherit Python backend dependencies, although a selected
5
+ framework such as Spec Kit can require Python for its own tooling.
6
6
 
7
7
  ## Baseline
8
8
 
9
- - Liftoff CLI and generated Node.js workloads: Node.js 24.20 or newer.
10
- - Python projects: Python 3.14 and `uv` 0.12.7 or newer.
11
- - Go projects: Go 1.27 or newer.
12
- - Generated Azure infrastructure: OpenTofu 1.12.6 or newer.
9
+ - Workstation Node.js: stable Node.js 24 LTS, version 24.20.0 or newer within 24.x.
10
+ - npm-dependent stacks or OpenSpec: stable npm 12.x, version 12.0.2 or newer.
11
+ - Python projects: stable Python 3.14.x and `uv` 0.12.x at version 0.12.7 or newer.
12
+ - Go projects: stable Go 1.27.x.
13
+ - Generated Azure infrastructure: stable OpenTofu 1.12.x at version 1.12.6 or newer.
13
14
  - Selected framework: OpenSpec 1.11.0 or Spec Kit 1.0.1 exactly.
14
15
  - Selected agents: GitHub Copilot, Claude Code, or both.
15
16
 
17
+ Minimum versions do not authorize a different, untested release line. Release
18
+ candidates and other prereleases do not satisfy stable floors or exact framework
19
+ pins. A working Node.js executable does not establish npm readiness: when npm is
20
+ required, it is probed separately before destination writes. A missing npm
21
+ executable requires a separately reviewed machine-level repair; Liftoff does not
22
+ try to run the missing executable or reinstall Node.js on its behalf.
23
+
16
24
  Automatic `liftoff upgrade` additionally requires that the running canonical
17
25
  `@msn-control/liftoff` package is a normal global npm installation beneath
18
26
  `npm root --global`. Local dependencies, `npx` cache copies, linked checkouts,
@@ -27,6 +35,8 @@ runtime. GenAI uses Python 3.14 and the Python/FastAPI/PydanticAI stack.
27
35
  Blocking checks must be ready before initialization can safely complete:
28
36
 
29
37
  - Required runtime and minimum version.
38
+ - Required package managers, including npm for Node.js dependencies, a frontend,
39
+ or OpenSpec.
30
40
  - Selected spec framework CLI.
31
41
  - Every selected coding agent.
32
42
  - For OpenSpec, global profile `custom`, delivery `both`, and all 12 workflows.
@@ -36,7 +46,6 @@ Advisory checks describe useful but deferrable capabilities:
36
46
  - Docker CLI and daemon health for API workloads.
37
47
  - OpenTofu for generated Azure infrastructure.
38
48
  - Azure CLI and observable authentication health.
39
- - Optional Code Apps plugin state for Power Apps.
40
49
 
41
50
  Authentication checks are read-only. Liftoff never stores credentials or signs
42
51
  in to a cloud or agent on your behalf.
@@ -63,7 +72,7 @@ can register each missing namespace explicitly before dependent resources.
63
72
  without writing files or running installers:
64
73
 
65
74
  ```bash
66
- liftoff plan --type power-apps-code-app --spec openspec --agents copilot,claude
75
+ liftoff plan --type standard --api node --spec openspec --agents copilot,claude
67
76
  ```
68
77
 
69
78
  ## Tool installation consent
@@ -103,19 +112,22 @@ Project-local dependency setup is separate from workstation tools and requires
103
112
  `--install-dependencies` or interactive approval after a successful project
104
113
  merge.
105
114
 
106
- For Power Apps, Liftoff runs only the root locked install:
107
-
108
- ```bash
109
- npm ci
110
- ```
111
-
112
- The generated `package.json` and `package-lock.json` are validated before
113
- installation and protected from installer mutation. If dependency setup is
114
- skipped or fails, Liftoff prints the exact resume command rather than claiming
115
- the project is ready.
116
-
117
115
  GenAI and API projects use their generated stack-native locked dependency
118
- commands.
116
+ commands. If dependency setup is skipped or fails, Liftoff prints the exact
117
+ resume command rather than claiming the project is ready.
118
+
119
+ Recovery output identifies its shell: POSIX shell on macOS/Linux and PowerShell
120
+ on Windows. Copy the command into that shell; directory names and arguments are
121
+ quoted literally rather than expanded as environment variables.
122
+
123
+ If protected metadata changes during dependency setup, Liftoff stops and lists
124
+ the changed paths. It preserves those edits instead of assuming the installer
125
+ caused them and restoring older bytes over concurrent work. Review and repair
126
+ the metadata before retrying. Dependency scripts can also change other project
127
+ files; this check is not a script sandbox.
128
+ Dependencies that are already installed and usable do not need a new install
129
+ merely to satisfy a bootstrap checkbox. Local checks prove usability, not that
130
+ an installation or its consent occurred.
119
131
 
120
132
  Python projects use the generated lock without resolving new versions:
121
133
 
@@ -130,24 +142,11 @@ Liftoff's npm locks are generated with npm 12.0.2 and verified in the supported
130
142
  compatibility lanes. Do not replace a committed lock with an install from
131
143
  open-ended manifest ranges.
132
144
 
133
- ## Power Apps local CLI
134
-
135
- The Power Apps CLI is supplied by the generated project dependency graph.
136
- Liftoff checks it without downloading another package:
137
-
138
- ```bash
139
- npx --no-install power-apps --version
140
- ```
141
-
142
- If `node_modules` is absent, run `npm ci` first. Environment binding and cloud
143
- authentication remain separate later actions.
144
-
145
145
  ## Agent detection
146
146
 
147
147
  Copilot can be detected through its CLI or supported VS Code extensions.
148
148
  Claude Code is checked with its version and doctor commands. When both are
149
149
  selected, both must be ready.
150
150
 
151
- The optional Code Apps plugin uses independent, read-only probes for each
152
- selected agent. A missing executable, timeout, or unsupported plugin-list
153
- result is reported as not observable rather than silently treated as missing.
151
+ Power Apps and Code Apps plugin preparation are retired. Their inputs are
152
+ rejected before selecting or installing a former workload-specific tool set.
@@ -17,7 +17,9 @@ project/
17
17
  |-- liftoff.config.json
18
18
  |-- liftoff.manifest.json
19
19
  |-- .env.example
20
+ |-- runtime.config.example.json # Go native configuration only
20
21
  |-- Dockerfile
22
+ |-- .dockerignore
21
23
  |-- docker-compose.yml
22
24
  |-- .liftoff/
23
25
  | `-- governance/ # managed-core local handoff when enabled
@@ -45,8 +47,10 @@ project/
45
47
  |-- infrastructure/
46
48
  | `-- opentofu/
47
49
  | `-- azure/
48
- | `-- .terraform.lock.hcl
50
+ | |-- modules/application/
51
+ | `-- environments/<env>/ # independent root, <env>.tfvars and provider lock
49
52
  |-- openspec/ or .specify/
53
+ |-- specs/000-liftoff-bootstrap/ # Spec Kit only: one-time spec.md, plan.md, tasks.md
50
54
  |-- .github/skills/openspec-*/ and .github/prompts/opsx-* # OpenSpec + Copilot
51
55
  |-- .claude/skills/openspec-*/ and .claude/commands/opsx/ # OpenSpec + Claude
52
56
  |-- .github/workflows/copilot-setup-steps.yml # optional hosted agent
@@ -64,7 +68,9 @@ project/
64
68
 
65
69
  - `backend` contains the selected API stack and Scalar/OpenAPI wiring. Python
66
70
  uses `backend/apis`, Node.js uses `backend/src`, and Go uses
67
- `backend/cmd/api` plus `backend/internal`.
71
+ `backend/cmd/api` plus `backend/internal`. Node includes an explicit
72
+ `backend/vitest.config.ts`; Go's `backend/cmd/migrate/main.go` passes resolved
73
+ configuration to the existing pinned Goose migration tool.
68
74
  - `backend/orchestration` appears only in GenAI projects and contains
69
75
  PydanticAI agents, prompts, model configuration, and integration boundaries.
70
76
  The generic pattern creates `generic_agent.py`, `generic.md`, and the neutral
@@ -80,8 +86,12 @@ project/
80
86
  - Python Docker builds export the committed `uv.lock` in frozen mode and install
81
87
  only hash-verified requirements. `UV_DEFAULT_INDEX` can select a
82
88
  credential-free managed mirror without changing the lock.
83
- - `infrastructure/opentofu/azure` contains modules, environment tfvars, local
84
- state configuration, and a remote-state example.
89
+ - `infrastructure/opentofu/azure/modules/application` contains the shared module.
90
+ Each selected `infrastructure/opentofu/azure/environments/<env>` root owns its
91
+ named tfvars, provider lock, and independent local/remote state configuration.
92
+ Existing shared-state projects are not relocated by update or force.
93
+ The eight [retired flat-root identities](azure-deployment.md#explicit-flat-root-identity-retirement)
94
+ remain historical provenance; new root-looking files do not establish eligibility.
85
95
  - `openspec` is created for OpenSpec. `.specify` and `specs` are created for
86
96
  Spec Kit.
87
97
  - OpenSpec projects receive all 12 pinned workflows as both skills and commands
@@ -104,47 +114,30 @@ project/
104
114
  separate from Azure Functions runtime files.
105
115
  - `migration/legacy` contains the filtered source copy created by migration.
106
116
 
107
- ## Power Apps code app
117
+ ### Runtime configuration and image boundaries
108
118
 
109
- ```text
110
- project/
111
- |-- README.md
112
- |-- THIRD_PARTY_NOTICES.md
113
- |-- liftoff.config.json
114
- |-- liftoff.manifest.json
115
- |-- package.json
116
- |-- package-lock.json
117
- |-- index.html
118
- |-- vite.config.ts
119
- |-- eslint.config.js
120
- |-- tsconfig.json
121
- |-- public/
122
- |-- src/
123
- | |-- App.tsx
124
- | |-- main.tsx
125
- | |-- router.tsx
126
- | |-- components/
127
- | |-- hooks/
128
- | |-- pages/
129
- | `-- providers/
130
- |-- .liftoff/governance/ # managed-core setup files when enabled
131
- |-- governance/ # user-owned activation state after setup starts
132
- `-- openspec/ or .specify/
133
- ```
119
+ Python and Node.js native startup read the project-root `.env`; process
120
+ environment values take precedence over file-backed settings and nonsecret
121
+ defaults. Go native startup from `backend/` reads `../runtime.config.json`;
122
+ copy `runtime.config.example.json` to that path or select explicit JSON with
123
+ `LIFTOFF_ENV_FILE`. It does not shell-source `.env`. Configuration is resolved
124
+ once per process; restart after editing the selected file.
125
+ Explicit missing, unreadable, or malformed selected files fail before fallback.
126
+ See [configuration syntax and native commands](configuration-and-manifests.md#application-runtime-configuration)
127
+ for strict dotenv quoting and Go's string-valued JSON contract.
134
128
 
135
- The exact selected-agent setup and assessment launchers are generated only when the
136
- repository-governance profile is enabled. They are Liftoff-owned; neighboring
137
- framework files remain framework-owned. Agent-created governance changes and
138
- `governance/activation-state.json`, approvals, evidence, credentials, and
139
- supersession records remain user-owned and are not listed as managed artifacts.
129
+ Compose passes applicable runtime settings explicitly while keeping PostgreSQL,
130
+ Redis, and other generated service addresses container-reachable. Root and
131
+ frontend `.dockerignore` files exclude host virtual environments, `node_modules`,
132
+ build outputs, VCS metadata, state, and local secrets. Installing dependencies
133
+ locally must not copy a host environment over dependencies installed in an image.
140
134
 
141
- This root follows the pinned official Microsoft starter. It includes the
142
- Power Apps SDK, Vite plugin, and project-local CLI through locked npm
143
- dependencies.
135
+ ## Retired project layouts
144
136
 
145
- Liftoff intentionally does not generate `backend/`, `database/`,
146
- `docker-compose.yml`, `environments/`, `infrastructure/`, or
147
- `power.config.json` for this workload.
137
+ Power Apps code app generation and maintenance are retired. An existing
138
+ Power Apps manifest is rejected without converting its root layout or modifying
139
+ application, framework, dependency, or governance files. The remaining generated
140
+ layouts are the API and GenAI layouts above.
148
141
 
149
142
  ## Managed versus user-owned governance artifacts
150
143
 
@@ -169,12 +162,12 @@ success-shaped placeholders:
169
162
  invocation fails clearly.
170
163
  - Redis Streams uses `REDIS_URL` and `REDIS_STREAM_NAME`.
171
164
  - Azure Service Bus uses `SERVICE_BUS_QUEUE_NAME` and either
172
- `SERVICE_BUS_CONNECTION_STRING` or
173
- `SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE`; `AZURE_CLIENT_ID` selects a
174
- user-assigned managed identity.
165
+ `SERVICE_BUS_AUTH_MODE=connection-string` with `SERVICE_BUS_CONNECTION_STRING`,
166
+ or `managed-identity` with `SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE` and
167
+ `AZURE_CLIENT_ID` for the selected user-assigned identity.
175
168
  - Langfuse requires both `LANGFUSE_PUBLIC_KEY` and
176
- `LANGFUSE_SECRET_KEY`, with optional `LANGFUSE_HOST`. Without both keys,
177
- tracing is explicitly disabled.
169
+ `LANGFUSE_SECRET_KEY`, with optional `LANGFUSE_HOST`. Both blank disables
170
+ tracing; only one configured key is an error.
178
171
  - Frontends read `VITE_API_BASE_URL`, call the route selected by the pattern or
179
172
  API stack, and expose loading, response, and failure states.
180
173
  - Backends allow the local frontend origin by default.
@@ -14,9 +14,10 @@ cd my-project
14
14
  /liftoff-setup
15
15
  ```
16
16
 
17
- `/liftoff-setup` completes the generated bootstrap seed, then enters the
18
- deterministic Liftoff governance engine, user-owned activation state, and
19
- read-only Phase 0 discovery.
17
+ `/liftoff-setup` uses the deterministic Liftoff governance engine to complete
18
+ the workflow-specific local bootstrap, then encounters the separately authorized
19
+ publication and read-only Phase 0 boundaries. The user-owned activation state records
20
+ execution, not an agent's claim of completion.
20
21
 
21
22
  **Current activation limits:** local bootstrap is implemented, but the CLI does
22
23
  not yet wire every production phase executor or expose approval persistence
@@ -72,6 +73,18 @@ runs assessment. It needs no commit, push, activation, or cloud credentials:
72
73
  liftoff governance assess --json
73
74
  ```
74
75
 
76
+ The same CLI command works in an ordinary Git repository without initialization,
77
+ a manifest, or generated slash commands. An explicit path is authoritative;
78
+ otherwise the nearest applicable Git or Liftoff boundary is used, including
79
+ linked worktrees and unborn repositories. A malformed, unreadable, symlinked,
80
+ dangling, or retired inner manifest blocks fallback to an outer project or Git
81
+ repository. Assessment never installs agent wrappers into unrelated repositories.
82
+
83
+ For ordinary Git repositories the installed single-maintainer policy is the
84
+ displayed target, not a policy inferred from existing branches. Recorded Liftoff
85
+ identity stays nullable, and missing baseline, ownership, or evidence stays
86
+ `not-observed`. It is not the same as a valid Liftoff governance opt-out.
87
+
75
88
  The pinned target is the **installed CLI** and its packaged policy, activation
76
89
  identity, phase graph, and assessment control catalog, never registry latest.
77
90
  The report compares four distinct layers: target, recorded project baseline,
@@ -103,8 +116,10 @@ enrolls credentials, expands permissions, registers providers, reads state blobs
103
116
  executes project code, runs scanners or infrastructure tools, or changes local
104
117
  or remote configuration.
105
118
  Azure scope and evidence-backed applicability require a current active-baseline
106
- and referenced, validated saved-plan/evidence receipts. Placeholder digests,
107
- future-dated approvals, and inferred bindings cannot establish proof. Missing
119
+ and referenced, validated saved-plan/evidence receipts. Current receipts bind
120
+ their canonical payload and live readback through `bodyDigest`; a header hash
121
+ alone cannot authorize changed runner IDs or Azure resources. Placeholder digests,
122
+ historical v1 receipts, future-dated approvals, and inferred bindings cannot establish proof. Missing
108
123
  bindings remain `not-observed`. Do not fabricate or hand-edit activation state,
109
124
  baselines, receipts, or evidence to manufacture alignment; use separately
110
125
  approved setup or governance work to obtain trustworthy proof.
@@ -127,6 +142,21 @@ zero-required-reviewer policy rather than generic peer-review advice.
127
142
  Approved exceptions remain differences; free-form or expired claims cannot
128
143
  waive controls or hide coverage gaps.
129
144
 
145
+ Collection failures do not erase independent facts. For example, denied GitHub
146
+ access cannot invalidate an unchanged local workflow, and a denied Azure resource
147
+ cannot hide a proven violation on another resource. Effective/classic/inherited
148
+ branch protection, release/hotfix check bindings, transitive required-job
149
+ dependencies, and complete runner restrictions are evaluated separately.
150
+ Rejected exception claims retain diagnostics instead of disappearing.
151
+ Required checks bind both their names and application identities. A passing
152
+ aggregator cannot hide a required scanner with `continue-on-error`; unresolved
153
+ reusable-workflow, matrix, or dynamic semantics stay unobserved. Runner checks
154
+ include repository/group restrictions, not only matching IDs or labels.
155
+
156
+ The catalog retains 30 controls across 17 families, including 10 unsupported
157
+ evaluators. Available evaluators are not completed proof; always-applicable
158
+ unsupported controls keep enabled assessments partial even with live access.
159
+
130
160
  Human and schema-v1 JSON reports share `readOnly: true`, target and project
131
161
  identities, findings, diagnostics, provenance, and coverage. Exit **0** means
132
162
  fully observed `aligned` or explicitly disabled `not-applicable` governance
@@ -194,22 +224,38 @@ remote import can satisfy `remote-ready`.
194
224
 
195
225
  ## Bootstrap seed and local baseline
196
226
 
197
- Before commit/push or Phase 0, setup completes, syncs, and archives the generated
198
- `bootstrap-<project>` OpenSpec seed. It runs only local, applicable checks:
227
+ Before commit/push or Phase 0, OpenSpec setup completes, syncs, and archives the
228
+ generated `bootstrap-<project>` seed. Spec Kit setup instead validates the real
229
+ `specs/000-liftoff-bootstrap/{spec.md,plan.md,tasks.md}` bundle and official
230
+ framework markers, then finalizes the local bootstrap handoff. It never creates
231
+ an OpenSpec tree, invents an archive, or creates a Git branch. Older Spec Kit
232
+ projects without the bundle need separately reviewed seed adoption.
233
+
234
+ The bundle's exact identity is `000-liftoff-bootstrap`, with B001–B006 each
235
+ appearing once. It is not an active governance change. Dependencies may already
236
+ be installed; installing them requires separate consent, which passing tests
237
+ alone cannot prove. Successful explicit execution commits the checked projection
238
+ with body/full-plan-bound baseline evidence; failed checks leave tasks unchanged.
239
+
240
+ Both adapters run only local, applicable checks in the declared component roots:
199
241
 
200
242
  - `liftoff validate`
201
243
  - backend tests from the generated README
202
244
  - frontend build when a frontend exists
203
245
  - `docker compose config -q` when Compose exists
204
- - `tofu fmt -check -recursive`
205
- - `tofu init -backend=false`
206
- - `tofu validate`
207
- - strict OpenSpec validation
246
+ - `tofu fmt -check -recursive` at `infrastructure/opentofu/azure`, covering modules and roots
247
+ - `tofu init -backend=false` in each selected independent environment root
248
+ - `tofu validate` in each selected independent environment root
249
+ - strict OpenSpec validation, or validation of the real Spec Kit bootstrap bundle
208
250
 
209
251
  Absent components are recorded as inapplicable. The baseline never starts
210
252
  containers, runs a live `tofu plan` or `tofu apply`, deploys, mutates GitHub, or
211
- requires cloud credentials. A failed check keeps the seed active; rerun
212
- `/liftoff-setup` after remediation and verified phases are not repeated.
253
+ requires cloud credentials. A failed local check remains unfinished; only
254
+ explicit execution retries it after repair. Read-only status, resume, and
255
+ verification do not advance tasks or rerun checks. Unchanged current proof can
256
+ be reused; changed relevant inputs require fresh evidence.
257
+ Recorded legacy-shared or unknown infrastructure layouts block this baseline
258
+ with migration-required and no commands, even if new-looking directories exist.
213
259
 
214
260
  If the seed was already archived before setup began, it stays archived.
215
261
  Setup still runs the entire applicable local baseline, but strict OpenSpec
@@ -236,6 +282,10 @@ types, destinations, permissions, cost ceiling, destructive scope, policy
236
282
  exceptions, expiry, and baseline SHA. Retries inside the same envelope do not
237
283
  ask again; expanded resources, destinations, permissions, cost, exceptions, or
238
284
  destructive effects require a new approval.
285
+ Its time window must satisfy `approvedAt <= now < expiresAt` and have a valid
286
+ start/end interval. A future, reversed, or expired envelope cannot authorize
287
+ execution. The contract does not imply a public approval-persistence workflow
288
+ exists; an unavailable entry capability remains a blocker.
239
289
 
240
290
  ## Credentials for runner preflight
241
291
 
@@ -243,7 +293,8 @@ When `GITHUB_TOKEN` cannot read required hosted-runner metadata, setup first
243
293
  prefers an existing verified selected-repository GitHub App installation with the
244
294
  required read permissions. Liftoff does not install or broaden an App.
245
295
 
246
- If no approved App is available, setup guides one fine-grained PAT with exactly:
296
+ If no approved App is available, the normative policy describes this
297
+ fine-grained PAT fallback, not an implemented enrollment command:
247
298
 
248
299
  | Field | Value |
249
300
  | --- | --- |
@@ -256,10 +307,12 @@ If no approved App is available, setup guides one fine-grained PAT with exactly:
256
307
  | Writes | none |
257
308
  | Workflow/job allowlist | `.github/workflows/bootstrap-import-preflight.yml` job `bootstrap-import-preflight`; `.github/workflows/private-dast-preflight.yml` job `private-dast-preflight` |
258
309
 
259
- Enter the value only through Liftoff's masked input. Never paste or show the
260
- value in chat, argv, command arguments, logs, evidence, files, or screenshots. A value
261
- that appears in any of those places is compromised and must be manually revoked
262
- and rotated before setup can continue.
310
+ This release has no public masked credential-enrollment channel. Stop at the
311
+ reported capability blocker rather than creating a credential or hand-writing
312
+ state to make the phase pass.
313
+ Never paste or show the value in chat, argv, command arguments,
314
+ logs, evidence, files, or screenshots. A disclosed value is
315
+ compromised and must be revoked and rotated through its owner-controlled system.
263
316
 
264
317
  The recorded credential policy is payload-free: it stores auth kind, display
265
318
  name, secret name, owner, repository, expiry, rotation lead, permissions,
@@ -270,25 +323,42 @@ secret value.
270
323
 
271
324
  Task checkboxes are a projection of phase state, not authority. Evidence
272
325
  documents carry repository identity, activation version vector, graph hash, phase
273
- contract digest, input digest, baseline SHA, phase ID, timestamp, producer, and
274
- result. Setup and `liftoff governance verify` reject missing, stale,
275
- contradictory, future-version, or graph-incompatible evidence.
326
+ contract digest, real input/baseline digests, body commitment, phase ID, timestamp,
327
+ producer, and result. The local execution anchor is separate from a verified
328
+ remote repository binding; Phase 0 does not replace the anchor beneath earlier
329
+ local receipts. Digests prove consistency, not an independent signature or
330
+ permission grant. Current valid proof may coexist with informational stale
331
+ history, but equally authoritative contradictory records block execution.
332
+ The current context includes reviewed immutable plans and state evidence
333
+ references. Payload `planDigest` binds semantic plan inputs; `savedPlanDigest`
334
+ binds the full saved plan, including clocks. `bodyDigest` covers the payload and
335
+ normalized readbacks. Consumers use the validated selected payload, not another
336
+ raw record that happens to reuse an ID. Repository publication binds the actual
337
+ reviewed push destination; Phase 0 cannot invalidate earlier local/publication
338
+ receipts by replacing the local anchor.
276
339
 
277
340
  There may be only one active governance source of truth. An unfinished bootstrap
278
341
  seed blocks Phase 0. Exactly one compatible active governance change is resumed.
279
342
  Multiple overlapping changes require a schema-valid supersession or archive
280
343
  record before any phase advances.
281
344
 
282
- Managed updates install new policy, graph, schema, compatibility metadata, and
283
- setup and assessment integrations without touching user-owned state. Forced update can remove
345
+ Reviewed managed updates install new policy, graph, schema, compatibility metadata,
346
+ and setup/assessment integrations without acquiring general state ownership.
347
+ Forced update can remove
284
348
  exact retired generated setup-alias entries from older manifests. When a policy,
285
349
  activation-contract, schema, or graph-hash change affects active work, status
286
- reports `reconciliation-required`, invalidates only affected descendants, and
287
- waits for explicit acknowledgement of the current compatible identity and exact
288
- graph hash.
350
+ reports `reconciliation-required` and identifies affected descendants. Historical
351
+ activation-v1 state and evidence remain byte-preserved and non-executable.
352
+ `liftoff update --check` can preview an exact supported successor migration;
353
+ explicitly approved apply preserves original history and creates linked v2 state.
354
+ Fresh local revalidation stops at unsupported or independently authorized work.
355
+ Failure after commit leaves v2 blocked/resumable, not reset to v1. Never
356
+ acknowledge an identity by editing JSON or treat old approvals as current consent.
289
357
 
290
358
  ## Private staging and bootstrap retention
291
359
 
360
+ These are policy requirements for separately implemented production adapters,
361
+ not a claim that this CLI can provision the complete platform.
292
362
  Private Staging DAST uses an ephemeral GitHub-hosted larger runner with Azure
293
363
  VNet injection only when genuinely applicable. Phase 0 discovers repository,
294
364
  subscription, authority, billing, network, DNS, cost, teardown, and capability