@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
@@ -39,10 +39,11 @@ install -> upgrade CLI -> plan -> init or migrate -> /liftoff-setup -> validate,
39
39
  | `liftoff update --check` | Reports core maintenance and provisioning without mutation; exits 0 when clean and 2 when actionable |
40
40
  | `liftoff update --force` | Overwrites only exact guarded managed-core conflicts; project-owned files remain unreachable |
41
41
  | `liftoff dev` | Prints workload-appropriate local development commands; it does not execute them |
42
- | `liftoff infra` | Prints OpenTofu guidance for API workloads and reports infrastructure as not applicable for Power Apps |
42
+ | `liftoff infra` | Prints OpenTofu guidance for supported API/GenAI workloads without executing it |
43
43
  | `liftoff patterns` | Lists GenAI patterns |
44
44
  | `liftoff providers` | Lists provider availability |
45
45
  | `liftoff regions` | Lists available regions |
46
+ | `liftoff regions --region <slug-or-alias>` | Resolves one region and filters the output; ambiguous or unknown values fail with guidance |
46
47
  | `liftoff regions search <query>` | Searches region names and slugs |
47
48
  | `liftoff --version` | Prints exactly one version line |
48
49
 
@@ -59,7 +60,7 @@ Node.js 24 LTS, Python 3.14, Go 1.27, OpenTofu 1.12, OpenSpec 1.11, and Spec Kit
59
60
  Common noninteractive inputs include:
60
61
 
61
62
  ```text
62
- --type genai|standard|power-apps-code-app
63
+ --type genai|standard
63
64
  --pattern <genai-pattern>
64
65
  --api python|node|go
65
66
  --cloud azure
@@ -70,7 +71,6 @@ Common noninteractive inputs include:
70
71
  --agents copilot,claude
71
72
  --default-agent copilot|claude
72
73
  --governance single-maintainer-gitflow|none
73
- --code-apps-plugin | --no-code-apps-plugin
74
74
  --copilot-cloud | --no-copilot-cloud
75
75
  --configure-openspec-profile
76
76
  ```
@@ -80,8 +80,9 @@ Interactive initialization presents **I'm not sure yet - Generic GenAI
80
80
  starter** first and accepts it as the default. `liftoff patterns` lists this
81
81
  stable `generic` identifier alongside the eight specialized patterns.
82
82
 
83
- Power Apps rejects API, pattern, cloud, region, frontend, and API environment
84
- options rather than ignoring them.
83
+ Power Apps and Code Apps plugin inputs are retired and rejected, including
84
+ false/negated plugin flags. Existing retired manifests are not reinterpreted as
85
+ supported workloads or ordinary Git repositories.
85
86
 
86
87
  Consent options are documented in [safety and consent](safety-and-consent.md).
87
88
  Repository governance defaults to `single-maintainer-gitflow`. It generates a
@@ -116,11 +117,23 @@ failure with verified evidence.
116
117
 
117
118
  Governance JSON uses versioned objects and includes the complete activation
118
119
  version vector: creating Liftoff version, manifest artifact version 7, policy
119
- version 6, activation-contract version 1, graph/state/evidence/approval/
120
- supersession/credential schema versions, and the phase-graph hash. It never
120
+ version 6, activation-contract version 2, state/evidence-header/approval schema
121
+ versions 2, graph/supersession/credential schema versions 1, and the phase-graph
122
+ hash. Compatibility metadata is version 3. It never
121
123
  emits a setup-skill version. Future identities, unsupported compatibility
122
124
  tuples, and unrecognized graph hashes block without rewriting state; the remedy
123
- names the exact field and required Liftoff upgrade.
125
+ names the exact field and required Liftoff upgrade. Known v1 history is
126
+ diagnostic-only and byte-preserved; a supported successor requires
127
+ `liftoff update --check` and explicit approval, not automatic reconciliation.
128
+
129
+ Status, resume, and verify JSON include `migration` (the validated journal, or
130
+ `null`) and `migrationSummary`. The summary separates `localCommit`, validated
131
+ snapshot/index/successor linkage, recorded `revalidation`, `nextRecordedPhase`,
132
+ and a project-bound fresh-preview remedy. `currentProofRequired` is always
133
+ true: recorded completion is audit history, not current evidence or provider
134
+ authority. Human output presents the same migration progress separately from
135
+ readiness; stale current proof still blocks even when the journal says complete.
136
+ These inspection commands neither advance phases nor create preview receipts.
124
137
 
125
138
  `/liftoff-setup` calls these commands instead of inferring phase completion from
126
139
  prose or task checkboxes.
@@ -144,8 +157,11 @@ liftoff governance assess [project] --live [--json]
144
157
  liftoff governance assess --project "path with spaces" --json
145
158
  ```
146
159
 
147
- Use an optional positional project or `--project`, never both. Nested working
148
- directories resolve to the nearest Liftoff project. Help needs no project or
160
+ Use an optional positional project or `--project`, never both. It can identify
161
+ an ordinary Git repository without a manifest. Nested working directories resolve
162
+ to the nearest applicable Git or Liftoff boundary; invalid or retired inner
163
+ manifests cannot be bypassed. No initialization or slash-command installation is
164
+ required. Help needs no project or
149
165
  credential discovery. Only `assess` accepts `--live`; assessment rejects
150
166
  `--execute` (including `--execute=false`), `--force`, installation, automatic
151
167
  upgrade, and output-file flags before project access.
@@ -228,6 +244,12 @@ version. Liftoff never edits `.npmrc`, embeds registry credentials, forces a
228
244
  canonical bypass around a stale mirror, invokes elevation, installs a
229
245
  prerelease, or performs a downgrade.
230
246
 
247
+ Machine-level `@msn-control:registry` takes precedence over the default
248
+ `registry`, even when the default is canonical. The lookup runs from a neutral
249
+ directory so project `.npmrc` files cannot change upgrade delivery. Canonical
250
+ verification isolates both registry settings without changing persistent
251
+ configuration; actual delivery still honors the configured mirror.
252
+
231
253
  `--check` performs the same origin, target, and parity checks without invoking
232
254
  installation. Apply uses one shell-free exact npm command with lifecycle scripts,
233
255
  audit, and funding prompts disabled, then verifies installed metadata, the
@@ -244,16 +266,28 @@ object.
244
266
  ## Update modes
245
267
 
246
268
  ```bash
269
+ liftoff update --check
247
270
  liftoff update
248
271
  liftoff update --force
249
- liftoff update --json
250
- liftoff update --check
251
272
  liftoff update --check --json
273
+ liftoff update --approve-plan <fingerprint> --json
252
274
  ```
253
275
 
254
- Plain `liftoff update` is imperative and prompt-free. It applies safe new,
255
- missing, untouched-upgrade, clean-move, and recorded-state changes only for
256
- explicit `managed-core` artifacts. For manifest v7 this includes governance
276
+ `liftoff update --check` is the human-first compatibility and migration preview.
277
+ It changes no project bytes, but saves and discloses a project-bound preview
278
+ receipt in user-local storage outside the repository. A receipt is not approval.
279
+ `liftoff update` requires a matching preview, recomputes its effective plan, and
280
+ asks for explicit approval with a negative default. Missing or stale previews
281
+ stop with instructions to rerun check. No-op inspection requires no approval.
282
+
283
+ Noninteractive apply additionally requires the exact full plan fingerprint
284
+ through `--approve-plan`. Check and apply must share the same materialized
285
+ checkout and user-local storage; another runner, worktree, or moved project
286
+ needs a fresh check and approval. `--force`, `--json`, and a generic yes do not
287
+ waive these gates. The force variant has its own preview and fingerprint.
288
+
289
+ Approved apply retains safe new, missing, untouched-upgrade, clean-move, and
290
+ recorded-state changes only for explicit `managed-core` artifacts. For manifest v7 this includes governance
257
291
  policy, context, guide, phase graph, compatibility metadata, credential-policy
258
292
  schema, and selected-agent `/liftoff-setup` integrations. Core conflicts are
259
293
  skipped and core orphans are reported without deletion. During legacy governance
@@ -262,7 +296,7 @@ set local state to `handoff-partial`. Forced update may remove exact retired
262
296
  generated setup-alias entries from older manifests after review.
263
297
 
264
298
  Application source, tests, dependencies and locks, database assets, Docker and
265
- Compose files, environment files, documentation, Power Apps starter files, and
299
+ Compose files, environment files, documentation, and
266
300
  OpenTofu topology are `project` artifacts after generation. Update does not
267
301
  compare them with newer templates, restore deleted paths, or overwrite them
268
302
  under `--force`.
@@ -273,24 +307,77 @@ preflighted together. Absent files are created and byte-identical files are
273
307
  adopted as provenance; any differing destination blocks the group even with
274
308
  `--force`. Disabling or re-enabling a previously provisioned group never
275
309
  recreates or deletes project files.
310
+ New environments also require recorded independent-root infrastructure and safe
311
+ existing shared-module files. Legacy/shared or unknown layout produces a
312
+ component-level migration-required result; other safe managed-core work may
313
+ continue. Force cannot migrate infrastructure state or rewrite shared infrastructure.
314
+ New component provisioning is deferred during activation-v1 migration and needs
315
+ a fresh post-migration preview.
276
316
 
277
317
  Use `--check` whenever no project bytes may change. Human check mode prints
278
318
  managed-core drift, ownership-only manifest v2-v7 migration, activation-identity
279
- compatibility, reconciliation-required state, and authorized provisioning. It
280
- recommends `--force` only for core conflicts. `--check --force` is invalid
281
- because check mode never authorizes writes.
282
-
283
- `--json` selects output format, not safety. `liftoff update --json` applies safe
284
- changes and emits the versioned apply result. `liftoff update --check --json`
285
- is the read-only automation gate.
286
-
287
- Update never installs dependencies. Transaction snapshots restore a failed
288
- core update, but Liftoff retains no backup after a successful core overwrite.
289
- Force cannot bypass the ownership, project-boundary, symlink, structural,
290
- identity, or manifest guards.
291
-
292
- New dependency, runtime, container, database, application, Power Apps starter,
293
- and infrastructure templates apply to newly generated projects. Existing
319
+ compatibility, history preservation, revalidation gaps, and authorized
320
+ provisioning. It recommends `--force` only for eligible owned core conflicts
321
+ and displays the additional exact changes and fingerprint separately.
322
+ `--check --force` remains invalid because check mode never authorizes overwrites.
323
+
324
+ `--json` selects output format, not safety or consent. Update JSON uses schema 3
325
+ with project-update scope and separate core, provisioning, activation-migration,
326
+ and revalidation outcomes. Prompts and progress use stderr; stdout remains one
327
+ JSON result. Check exits 0 for no actionable work, 2 for differences, and 1 for
328
+ errors. Apply exits 0 for completed scope, 2 when migration committed but
329
+ revalidation is incomplete, and 1 for rejected approval or an error.
330
+
331
+ Update never installs dependencies. Ordinary transaction backups are for failure
332
+ recovery; activation migration additionally retains durable original history.
333
+ Force cannot bypass preview, approval, ownership, project-boundary, symlink,
334
+ structural, identity, or manifest guards.
335
+
336
+ ### Preview receipt storage
337
+
338
+ Check reports the exact native receipt path. Receipts and separate transaction
339
+ approval records use user-local storage, never the project or its containing
340
+ repository:
341
+
342
+ | Platform | Receipt directory |
343
+ | --- | --- |
344
+ | Linux | `$XDG_STATE_HOME/liftoff/update-previews` when `XDG_STATE_HOME` is set to an absolute path; otherwise, when unset, `$HOME/.local/state/liftoff/update-previews` |
345
+ | macOS | `~/Library/Application Support/liftoff/update-previews` |
346
+ | Windows | `%LOCALAPPDATA%\liftoff\update-previews` when `LOCALAPPDATA` is set to an absolute drive or UNC path; otherwise, when unset, `%USERPROFILE%\AppData\Local\liftoff\update-previews` |
347
+
348
+ An empty or relative override is an error, not a request to use the fallback.
349
+ Unsafe paths, links/junctions, or storage inside the project or repository also
350
+ block the update; repair the reported storage issue rather than moving a receipt
351
+ into the project. Commands containing spaces or shell metacharacters use literal
352
+ native-shell quoting and retain the selected project path.
353
+
354
+ The immutable history snapshot travels inside the project. Preview receipts and
355
+ approval records do not: another machine, checkout, worktree, or moved project
356
+ needs its own fresh check and approval. A receipt stores digests, not project
357
+ source bodies, and is never portable blanket authorization.
358
+
359
+ ### Reviewed activation-v1 migration
360
+
361
+ An exact supported v1 source can be previewed with `liftoff update --check`.
362
+ Approved update verifies an immutable in-project history snapshot before
363
+ replacing active records, then creates a linked strict v2 activation. Historical
364
+ state, evidence, plans, approvals, and source metadata retain their original
365
+ bytes under the dedicated governance history directory. History is not managed
366
+ core and is never automatically committed, pushed, or cleaned with receipts.
367
+
368
+ Fresh local revalidation does not translate old success flags or approvals.
369
+ It uses only the finite reviewed local operations and stops before provider
370
+ access, dependency installation, publication, or other independently approved
371
+ work. Validation commands execute project-controlled code, not a sandbox;
372
+ unexpected protected-input edits are preserved and reported.
373
+
374
+ A failed local transaction uses bounded recovery. A failure after commit keeps
375
+ v2 blocked and resumable: repair the named cause, rerun check, then approve the
376
+ remaining work. Do not reset state to v1, change identity fields manually, or
377
+ recreate live resources to silence readiness diagnostics.
378
+
379
+ New dependency, runtime, container, database, application, and infrastructure
380
+ templates apply to newly generated projects. Existing
294
381
  production projects adopt them through a separately reviewed project change.
295
382
  The existing `liftoff migrate` command only adopts a non-Liftoff source into a
296
383
  fresh target; it is not an in-place template upgrade.
@@ -314,6 +401,26 @@ All current writes use v7. Supported historical reads are normalized through an
314
401
  explicit compatibility map; future versions, individually known but unsupported
315
402
  tuples, and unknown phase-graph hashes block and report an upgrade or
316
403
  reconciliation remedy instead of downgrading or fabricating evidence.
404
+ Exact known activation-v1 identity remains non-executable. The explicitly
405
+ supported reviewed successor lane preserves that original history while
406
+ establishing new v2 state and fresh proof; merely reading a historical identity
407
+ or updating a core file does not perform or authorize the migration.
408
+
409
+ ## Development and infrastructure helpers
410
+
411
+ `liftoff dev` and `liftoff infra` print commands rather than execute them.
412
+ Infrastructure helpers use recorded layout, not merely new-looking paths.
413
+ For a selected prod environment in the independent layout,
414
+ `liftoff infra init --env prod` targets
415
+ `infrastructure/opentofu/azure/environments/prod`; plan/apply use
416
+ `-var-file=prod.tfvars` in that same root. Operational init uses the configured
417
+ backend, not `-backend=false`. Only the local baseline disables backend
418
+ initialization, separately for every selected root. Recursive formatting remains
419
+ at the Azure parent to include the shared module.
420
+
421
+ The eight explicitly retired flat-root identities remain old provenance, not
422
+ aliases for new roots. See the [exact inventory](azure-deployment.md#explicit-flat-root-identity-retirement)
423
+ and [native runtime recipes](configuration-and-manifests.md#application-runtime-configuration).
317
424
 
318
425
  ## JSON and exit codes
319
426
 
@@ -334,8 +441,9 @@ liftoff update --check --json
334
441
  ```
335
442
 
336
443
  Each JSON object has a top-level numeric `schemaVersion`. Update JSON uses
337
- schema version 2 and includes `scope: "managed-core"`, ownership-migration
338
- state, activation compatibility, and a separate provisioning collection.
444
+ schema version 3 and `scope: "project-update"`, with separate managed-core,
445
+ provisioning, activation-migration, and revalidation outcomes plus preview and
446
+ approval status. A committed migration does not imply governance readiness.
339
447
  Operational warnings, such as a dirty-worktree warning before JSON apply, are
340
448
  written to stderr so stdout remains one parseable JSON object.
341
449
 
@@ -343,8 +451,9 @@ Exit codes:
343
451
 
344
452
  - `0`: success or a clean check.
345
453
  - `1`: invalid input, unsafe state, or command failure.
346
- - `2`: an explicit update check found core maintenance or provisioning, or upgrade check found an
347
- installable CLI release.
454
+ - `2`: update check found differences, update committed a migration but local
455
+ revalidation is incomplete, or upgrade check found an installable CLI release.
456
+ Governance assessment also uses 2 for partial or excepted results.
348
457
 
349
458
  Raw installer, framework, and dependency child stdout and stderr are forwarded
350
459
  unchanged.
@@ -18,11 +18,9 @@ Supported edits are reconciled by `liftoff update`:
18
18
  manifests; replace it with `staging` before validation or update.
19
19
  - Removing or re-enabling a previously provisioned component never deletes,
20
20
  restores, or overwrites its project-owned files.
21
- - Power Apps can change the optional Code Apps plugin preference; only manifest
22
- intent and applicable managed-core context change.
23
21
 
24
- Workload kind, API stack, GenAI pattern, spec workflow, selected agents, and a
25
- user-supplied Power Apps starter source change are not ordinary updates.
22
+ Workload kind, API stack, GenAI pattern, spec workflow, and selected agents are
23
+ not ordinary updates.
26
24
 
27
25
  An undecided GenAI project records an explicit generic identity rather than
28
26
  omitting the pattern:
@@ -46,21 +44,98 @@ omitting the pattern:
46
44
  Changing `generic` to a specialized pattern later is a reviewed project
47
45
  migration because application files are project-owned; it is not an update.
48
46
 
49
- A Power Apps configuration contains only applicable fields:
47
+ The `power-apps-code-app` workload and `codeAppsPlugin` configuration field are
48
+ retired. They are rejected rather than ignored or converted to another workload.
50
49
 
51
- ```json
52
- {
53
- "projectName": "sales-hub",
54
- "projectType": "power-apps-code-app",
55
- "specWorkflow": "openspec",
56
- "agents": ["github-copilot"],
57
- "governanceProfile": "single-maintainer-gitflow",
58
- "codeAppsPlugin": false
59
- }
50
+ ## Application runtime configuration
51
+
52
+ These settings are separate from Liftoff desired state. Each backend resolves
53
+ **process environment > selected local configuration file > nonsecret defaults**
54
+ once per process. Restart after changing configuration; do not shell-source a
55
+ file to make it work.
56
+
57
+ | Backend | Default native file | Selected-file override |
58
+ | --- | --- | --- |
59
+ | Python/FastAPI, including GenAI | Project-root `.env`, resolved from `backend/config/settings.py`, not the working directory | `LIFTOFF_ENV_FILE` names a dotenv file |
60
+ | Node.js/Fastify | Project-root `.env`, resolved from source or compiled configuration location | `LIFTOFF_ENV_FILE` names a dotenv file |
61
+ | Go/Huma | `../runtime.config.json` when launched from `backend/` | `LIFTOFF_ENV_FILE` names a JSON object of string values |
62
+
63
+ Override paths are relative to the startup working directory unless absolute.
64
+ An explicitly selected missing, unreadable, or malformed file fails even when
65
+ process values could otherwise satisfy startup. An absent default file is allowed
66
+ when process values provide the required settings. All stacks need
67
+ `DATABASE_URL` and `REDIS_URL`; model credentials are not required for operational
68
+ endpoints.
69
+
70
+ Python and Node validate dotenv assignments, balanced quotes, UTF-8, and NUL
71
+ input before accepting a file. Use `KEY=value`, optional `export`, comments,
72
+ and single- or double-quoted values. Node uses the runtime dotenv parser and
73
+ rejects escaped quote delimiters that it would otherwise truncate; use the other
74
+ quote style, for example `APP_NAME="Bob's API"`. Go uses `encoding/json`, not a
75
+ dotenv dependency: numbers such as `PORT` must be quoted strings, and null or
76
+ other non-string values are rejected.
77
+
78
+ ### Native development
79
+
80
+ From the project root in a POSIX shell, prepare the documented local settings:
81
+
82
+ ```bash
83
+ cp .env.example .env
84
+ docker compose up -d postgres redis azurite mailpit
60
85
  ```
61
86
 
62
- API, cloud, region, frontend, and environment fields are rejected for this
63
- workload rather than silently ignored.
87
+ Then run **only the selected backend** after its locked dependency preparation:
88
+
89
+ | Backend | Native command |
90
+ | --- | --- |
91
+ | Python | `uv sync --frozen --project backend --extra test`, then `uv run --project backend uvicorn backend.apis.main:app --host 127.0.0.1 --port 8000` |
92
+ | Node.js | `(cd backend && npm ci && npm run build && npm start)` |
93
+ | Go | Copy `runtime.config.example.json` to `runtime.config.json`, then `(cd backend && go mod download && go run ./cmd/api)` |
94
+
95
+ Worker-enabled Python projects add `--extra functions` to frozen synchronization.
96
+ For a Python launch from `backend/`, use
97
+ `uv run uvicorn --app-dir .. backend.apis.main:app --port 8000`; it still reads
98
+ root `.env` without exporting the file's values. PowerShell users can use
99
+ `Copy-Item` and `Set-Location` rather than the POSIX parenthesized commands.
100
+ An explicit selector from `backend/` is `$env:LIFTOFF_ENV_FILE = '..\.env'`
101
+ for Python/Node, or `'..\runtime.config.json'` for Go.
102
+
103
+ Migration tools use the same resolved settings: Python Alembic, Node Drizzle,
104
+ and Go's `make migrate` wrapper around the existing pinned Goose tool. Running
105
+ migrations is a separate database mutation, not part of the startup probes.
106
+
107
+ ### Compose and integration boundaries
108
+
109
+ Compose reads root `.env` for interpolation. Select a different dotenv file with
110
+ `docker compose --env-file environments/<env>/backend.env up --build`, using an
111
+ actually selected environment. Process values take precedence. Compose deliberately
112
+ keeps PostgreSQL, Redis, and blob addresses container-reachable while forwarding
113
+ the applicable model, messaging, CORS, and tracing settings.
114
+
115
+ `/health` and `/ready` are local process/configuration endpoints, not dependency
116
+ connectivity or production-readiness proofs. They make no model/provider request.
117
+ Backend containers listen on 8000; the frontend container serves static files on
118
+ 80, mapped to 5173 by Compose.
119
+
120
+ For GenAI:
121
+
122
+ - `PYDANTIC_AI_MODEL` supports the locked `openai:`, `openai-chat:`, and
123
+ `openai-responses:` providers with `OPENAI_API_KEY` and optional
124
+ `OPENAI_BASE_URL`. Other providers need reviewed dependency/configuration work.
125
+ - Redis Streams publishes to `REDIS_STREAM_NAME` using `REDIS_URL`.
126
+ - `SERVICE_BUS_AUTH_MODE=managed-identity` requires
127
+ `SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE`, `SERVICE_BUS_QUEUE_NAME`, and
128
+ `AZURE_CLIENT_ID`. `connection-string` requires the queue and
129
+ `SERVICE_BUS_CONNECTION_STRING`. Missing sender settings cannot report queued
130
+ ingestion.
131
+ - Both Langfuse keys blank means tracing is disabled; configuring exactly one
132
+ of `LANGFUSE_PUBLIC_KEY` and `LANGFUSE_SECRET_KEY` is an error.
133
+ `LANGFUSE_HOST` is optional.
134
+
135
+ Keep local secrets out of source control and build contexts. Root/frontend
136
+ `.dockerignore` files exclude host dependencies, caches, outputs, VCS metadata,
137
+ state, and secrets; the Function publish context also has `.funcignore`.
138
+ These runtime files remain project-owned, not managed update targets.
64
139
 
65
140
  ## `liftoff.manifest.json`: CLI-owned compatibility record
66
141
 
@@ -71,8 +146,6 @@ workload:
71
146
 
72
147
  - `genai`: API stack, pattern, cloud, region, frontend, and environments.
73
148
  - `standard`: API stack, cloud, region, frontend, and environments.
74
- - `power-apps-code-app`: immutable starter repository, template path, commit,
75
- and Code Apps plugin preference.
76
149
 
77
150
  The manifest also records:
78
151
 
@@ -85,12 +158,14 @@ The manifest also records:
85
158
  authorize update writes.
86
159
  - OS-neutral path-part arrays.
87
160
  - Repository governance profile, policy version 6, activation-contract version
88
- 1, graph/state/evidence/approval/supersession/credential schema versions, the
161
+ 2, state/evidence-header/approval schema versions 2,
162
+ graph/supersession/credential schema versions 1, the
89
163
  exact phase-graph hash, and local `handoff-generated`, `handoff-partial`, or
90
164
  disabled state.
91
165
 
92
- Power Apps source identity uses explicit repository, path, and 40-character
93
- commit fields. It is not inferred from mutable URLs or generated file paths.
166
+ An existing Power Apps manifest is rejected at its retired workload boundary
167
+ before starter metadata or artifact paths are interpreted. Its original files
168
+ remain unchanged.
94
169
 
95
170
  Treat the manifest as CLI-owned. Restore it from version control or regenerate
96
171
  with the matching Liftoff version when validation reports malformed identity,
@@ -98,19 +173,20 @@ paths, or hashes.
98
173
 
99
174
  ## Compatibility
100
175
 
101
- Readers support artifact versions v2, v3, v4, v5, v6, and v7:
176
+ Readers support artifact versions v2, v3, v4, v5, v6, and v7 for API/GenAI projects:
102
177
 
103
178
  - V2 normalizes the legacy flat API identity and records framework state as
104
179
  uncertain without inventing agents.
105
180
  - V3 normalizes flat GenAI or API identity plus framework and agent metadata.
106
- - V4 represents the discriminated workload model, including Power Apps.
181
+ - V4 introduces the discriminated workload model. Its formerly supported Power
182
+ Apps variant is now retired.
107
183
  - V5 adds repository-governance handoff identity without claiming live
108
184
  enforcement.
109
185
  - V6 separates managed-core update authority from project generation
110
186
  provenance.
111
- - V7 adds deterministic setup identity: manifest artifact version 7, policy
112
- version 6, activation-contract version 1, schema-v1 activation artifacts, and
113
- the canonical phase-graph hash. Governance-disabled v7 manifests use the
187
+ - V7 adds deterministic setup identity. Current output uses
188
+ manifest artifact version 7, policy version 6, activation-contract version 2, and the canonical
189
+ phase-graph hash. Governance-disabled v7 manifests use the
114
190
  disabled variant and do not fabricate activation identity.
115
191
 
116
192
  Enabled governance manifests retain their recorded positive-integer policy
@@ -121,20 +197,51 @@ policy, contract, schema, or graph identities remain invalid or blocked without
121
197
  rewrite.
122
198
 
123
199
  `liftoff update --check`, including `--check --json`, leaves an old manifest
124
- byte-for-byte unchanged. A successful plain update writes v7 only after the
200
+ byte-for-byte unchanged while disclosing an external preview receipt. An
201
+ explicitly approved update writes v7 only after the
125
202
  transaction succeeds. V2-v6 backend, frontend, database, dependency, container,
126
- environment, documentation, Power Apps, and infrastructure entries become
203
+ environment, documentation, and infrastructure entries become
127
204
  project provenance without reading or changing current production bytes.
128
205
  Intentionally deleted files remain absent. Only exact current core logical names
129
206
  retain write authority.
130
207
 
131
208
  The compatibility map is explicit; Liftoff does not use numeric less-than
132
- comparisons to infer safety. Supported v7 identity resumes when policy 6,
133
- activation contract 1, schema versions 1, and a recognized graph hash match.
134
- Future identities, individually known versions in unsupported combinations,
135
- unversioned ad hoc governance state, and unknown graph hashes block with an
136
- upgrade, import-mapping, or reconciliation remedy. No reader converts prose,
137
- filenames, or checked tasks into evidence.
209
+ comparisons to infer execution safety.
210
+
211
+ | Contract | Current version |
212
+ | --- | --- |
213
+ | CLI package version | 0.11.2 |
214
+ | Activation package identity | 0.11.0 |
215
+ | Manifest write / supported reads | 7 / 2-7 for API and GenAI |
216
+ | Normative policy | 6 |
217
+ | Activation contract, state, evidence header, approval envelope | 2 |
218
+ | Compatibility metadata / supported historical input | 3 / 2 |
219
+ | Update report | 3 |
220
+ | Preview receipt, transaction approval, history index, migration journal | 1 |
221
+ | Phase graph, supersession, credential policy | 1 |
222
+ | Assessment report and control catalog | 1 |
223
+
224
+ The 0.11.2 CLI patch retains the 0.11.0 activation identity because its phase
225
+ semantics and graph are unchanged. Independent infrastructure provenance
226
+ explicitly recognizes generation versions 0.11.0, 0.11.1, and 0.11.2, including
227
+ mixed component histories; unknown releases are not automatically trusted or
228
+ treated as compatible. The mandatory preview/approval workflow and schema-3
229
+ update reports are breaking CLI behavior despite the patch version.
230
+
231
+ Known activation-v1 history remains **diagnostic-only**, not executable proof.
232
+ Compatibility metadata v3 separately declares the exact history-preserving
233
+ successor lane available through `liftoff update --check` and explicitly
234
+ approved update. Schema-2 metadata remains readable input, not authority to
235
+ invent a migration. Future/mixed tuples, ad hoc state, and unknown graphs remain
236
+ blocked.
237
+
238
+ Migration preserves the original manifest, historical state and evidence, creates
239
+ strict v2 state, and links it through `governance/migration-state.json` to its
240
+ immutable `governance/history` snapshot. No required field is added to manifest
241
+ v7 or the v2 proof schemas. Original generation provenance remains intact.
242
+ A readable historical record never authorizes current provider scope; old
243
+ approvals and checked tasks do not become fresh evidence. Revalidation failure
244
+ after local commit leaves the linked v2 activation blocked and resumable.
138
245
 
139
246
  ## Artifact ownership
140
247
 
@@ -149,6 +256,11 @@ category or filename:
149
256
  | `framework` | Official framework | Validated through framework markers and maintained by that framework |
150
257
  | `seed` | Developer/project | Written once and never reconciled |
151
258
 
259
+ New Spec Kit projects explicitly seed
260
+ `specs/000-liftoff-bootstrap/{spec.md,plan.md,tasks.md}`. These are not framework
261
+ templates or managed-core files. Missing older bundles are an adoption blocker,
262
+ not permission for update or force to create them.
263
+
152
264
  The manifest is a CLI-owned transaction record rather than an ordinary
153
265
  template artifact. Current managed core is limited to the exact repository
154
266
  governance policy, context, guide, phase graph, compatibility metadata,
@@ -174,7 +286,12 @@ those files, but it does not advance, reset, or delete a phase.
174
286
  ## Contract conventions
175
287
 
176
288
  - Writers use `artifactVersion` 7; readers support v2, v3, v4, v5, v6, and v7.
177
- - Artifact logical names and catalog identifiers are append-only.
289
+ - Artifact logical names and catalog identifiers are append-only except for
290
+ explicitly reviewed retirements. In 0.11.0, the eight
291
+ [flat-root OpenTofu identities](azure-deployment.md#explicit-flat-root-identity-retirement)
292
+ are retired from **new scaffold output only**. Their historical paths,
293
+ identities, and generation hashes remain provenance, not aliases or deletion
294
+ authority. Retained tfvars IDs alone do not establish the independent layout.
178
295
  - Rendering is deterministic and does not depend on timestamps, host versions,
179
296
  or network state.
180
297
  - `.liftoff/governance/` contains managed setup definitions; `governance/`
@@ -70,11 +70,16 @@ liftoff update --check
70
70
  liftoff update
71
71
  ```
72
72
 
73
- Use `--check` first when the invocation must be read-only. Plain update applies
74
- safe managed-core changes immediately and preserves core conflicts and orphans.
75
- `--force` can replace only listed core conflicts. Project-owned production
76
- files are not compared and remain unreachable from every update mode. For CI
73
+ Always run `--check` before a write-capable update. Check leaves project bytes
74
+ unchanged and discloses a user-local preview receipt outside the repository.
75
+ Plain update requires a matching preview and explicit approval of the exact
76
+ plan before applying safe managed-core changes; core conflicts and orphans stay
77
+ protected. `--force` requires separate approval of its previewed variant and
78
+ can replace only listed, owned core conflicts. Project-owned production
79
+ files are not compared with new templates or overwritten by update. For CI
77
80
  core-maintenance gates, use `liftoff update --check --json`.
81
+ See [preview receipt storage](cli-reference.md#preview-receipt-storage) for
82
+ platform-specific locations and checkout portability.
78
83
 
79
84
  OpenSpec skills and commands remain framework-owned. To give an existing
80
85
  project all 12 workflows as both skills and commands, run:
@@ -90,8 +95,9 @@ hosted Copilot agent later, update `githubCopilot.cloudAgent` through OpenSpec
90
95
  and run `openspec update`.
91
96
 
92
97
  Projects created before manifest artifact version 7 automatically preview the
93
- default deterministic setup handoff as new named drift. Plain update safely
94
- adopts collision-free policy, context, guide, phase graph, compatibility
98
+ default deterministic setup handoff as new named drift. After a matching check
99
+ and explicit approval, update safely adopts collision-free policy, context,
100
+ guide, phase graph, compatibility
95
101
  metadata, credential-policy schema, and selected-agent setup integrations
96
102
  without rewriting a configuration that omitted `governanceProfile`.
97
103
  Existing different files remain unowned conflicts and the v7 manifest records
@@ -102,12 +108,18 @@ while unrecorded conflicts remain user-owned. No update mode runs an agent or
102
108
  activates GitHub settings.
103
109
 
104
110
  Projects carrying governance policy versions 2 through 5 preview policy version
105
- 6, manifest v7, and activation-contract v1 as managed-core drift. Review the
111
+ 6, manifest v7, and activation-contract v2 as managed-core drift. Review the
106
112
  canonical phase graph, private-runner credential contract, bootstrap-state
107
113
  retention/disposal contract, and active-change reconciliation before
108
114
  replacement. Updating the handoff never provisions Azure or GitHub resources;
109
- any active downstream governance change must acknowledge the supported
110
- activation identity and exact graph hash before applying infrastructure.
115
+ active downstream work must have supported identity and current evidence before
116
+ it can execute. Exact supported activation-v1 migration is previewed through
117
+ `liftoff update --check` and requires approval of that plan. Original state,
118
+ receipts, plans, approvals, and source metadata are retained in in-project
119
+ history before a linked v2 successor is created. Historical records stay
120
+ non-executable; updating a core file does not make them current proof.
121
+ Post-commit revalidation failure leaves v2 blocked and resumable. Unsupported
122
+ source formats and independent infrastructure migrations remain separate blockers.
111
123
 
112
124
  The manifest-v7 transition releases every legacy non-core artifact into project
113
125
  provenance without writing, restoring, moving, or deleting its path.
@@ -118,7 +130,16 @@ Supported readers normalize manifest v2-v6 and write only v7 after all
118
130
  preflights pass. Future versions, unsupported policy/contract/schema tuples,
119
131
  unknown graph hashes, unversioned activation state, or prose-only task history
120
132
  block with explicit upgrade, import-mapping, or reconciliation remedies. Liftoff
121
- never fabricates evidence from old checkboxes.
133
+ never fabricates evidence from old checkboxes. A diagnostic is not a command to
134
+ hand-write mappings, retag receipts, or manufacture missing history.
135
+
136
+ The new infrastructure layout uses shared application modules and independent
137
+ environment roots. Its eight [retired flat-root identities](azure-deployment.md#explicit-flat-root-identity-retirement)
138
+ remain readable as historical provenance, not aliases for new paths. Existing
139
+ files, state, and generation hashes remain untouched. Adding an environment
140
+ requires recorded independent-root provenance and safe existing module files;
141
+ legacy or unknown layouts need separately reviewed migration. Core context
142
+ updates cannot claim that this migration happened.
122
143
 
123
144
  Major supported-stack releases apply to new scaffolds. Existing projects adopt
124
145
  runtime, lock, Docker, provider, framework, and application changes through a
@@ -146,5 +167,20 @@ framework pipeline, including separate global OpenSpec profile authorization,
146
167
  and leaves the source byte-for-byte unchanged. `--force` does not permit a
147
168
  non-empty migration target.
148
169
 
149
- Arbitrary existing Power Apps application migration is not currently
150
- supported.
170
+ The scan reads dependency declarations rather than comments or example text.
171
+ Python setup/test configuration and non-workflow `.github` files remain
172
+ explicit inventory items; dynamic or malformed declarations produce review
173
+ diagnostics rather than invented stack defaults. Source configuration code is
174
+ never executed to discover dependencies.
175
+
176
+ Explicit workload, API-stack, and frontend choices control the target mapping.
177
+ For example, Go source selected for a Node target receives porting instructions,
178
+ not Go-only destination paths; a declined frontend remains a placement decision.
179
+
180
+ Complete the mapped work and run the backend tests, `liftoff validate`, and
181
+ `liftoff doctor` before deleting `migration/legacy/`. OpenSpec archival follows
182
+ the completed change; a Spec Kit migration checklist is finalized locally
183
+ without an invented archive command.
184
+
185
+ Power Apps creation, maintenance, and migration are retired. Existing Power Apps
186
+ manifests are rejected without modifying or converting their application files.