@msn-control/liftoff 0.10.3 → 0.11.1

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 (656) hide show
  1. package/DEVELOPER.md +364 -20
  2. package/README.md +29 -29
  3. package/assets/governance/single-maintainer-gitflow/assessment-controls.json +39 -0
  4. package/assets/supported-stack.json +7 -138
  5. package/dist/adapters/azure/governance-assessment.d.ts +2 -0
  6. package/dist/adapters/azure/governance-assessment.js +21 -0
  7. package/dist/adapters/azure/governance-assessment.js.map +1 -0
  8. package/dist/adapters/filesystem/atomic-write.d.ts +2 -0
  9. package/dist/adapters/filesystem/atomic-write.js +74 -0
  10. package/dist/adapters/filesystem/atomic-write.js.map +1 -0
  11. package/dist/adapters/filesystem/errors.d.ts +2 -0
  12. package/dist/adapters/filesystem/errors.js +8 -0
  13. package/dist/adapters/filesystem/errors.js.map +1 -0
  14. package/dist/adapters/filesystem/manifest-file.d.ts +1 -0
  15. package/dist/adapters/filesystem/manifest-file.js +21 -0
  16. package/dist/adapters/filesystem/manifest-file.js.map +1 -0
  17. package/dist/adapters/filesystem/project-config.d.ts +4 -0
  18. package/dist/adapters/filesystem/project-config.js +157 -0
  19. package/dist/adapters/filesystem/project-config.js.map +1 -0
  20. package/dist/adapters/filesystem/project-discovery.d.ts +2 -0
  21. package/dist/adapters/filesystem/project-discovery.js +30 -0
  22. package/dist/adapters/filesystem/project-discovery.js.map +1 -0
  23. package/dist/adapters/filesystem/project-files.d.ts +6 -0
  24. package/dist/adapters/filesystem/project-files.js +68 -0
  25. package/dist/adapters/filesystem/project-files.js.map +1 -0
  26. package/dist/adapters/filesystem/project-lock.d.ts +8 -0
  27. package/dist/adapters/filesystem/project-lock.js +164 -0
  28. package/dist/adapters/filesystem/project-lock.js.map +1 -0
  29. package/dist/adapters/filesystem/project-paths.d.ts +2 -0
  30. package/dist/adapters/filesystem/project-paths.js +60 -0
  31. package/dist/adapters/filesystem/project-paths.js.map +1 -0
  32. package/dist/adapters/filesystem/project-transaction.d.ts +23 -0
  33. package/dist/adapters/filesystem/project-transaction.js +158 -0
  34. package/dist/adapters/filesystem/project-transaction.js.map +1 -0
  35. package/dist/adapters/git/governance-assessment.d.ts +22 -0
  36. package/dist/adapters/git/governance-assessment.js +161 -0
  37. package/dist/adapters/git/governance-assessment.js.map +1 -0
  38. package/dist/adapters/github/governance-assessment.d.ts +2 -0
  39. package/dist/adapters/github/governance-assessment.js +18 -0
  40. package/dist/adapters/github/governance-assessment.js.map +1 -0
  41. package/dist/adapters/packaged-assets/package-root.d.ts +3 -0
  42. package/dist/adapters/packaged-assets/package-root.js +21 -0
  43. package/dist/adapters/packaged-assets/package-root.js.map +1 -0
  44. package/dist/adapters/packaged-assets/supported-stack.d.ts +4 -0
  45. package/dist/adapters/packaged-assets/supported-stack.js +18 -0
  46. package/dist/adapters/packaged-assets/supported-stack.js.map +1 -0
  47. package/dist/adapters/packaged-assets/template-assets.d.ts +23 -0
  48. package/dist/adapters/packaged-assets/template-assets.js +36 -0
  49. package/dist/adapters/packaged-assets/template-assets.js.map +1 -0
  50. package/dist/adapters/process/shell-command.d.ts +5 -0
  51. package/dist/adapters/process/shell-command.js +21 -0
  52. package/dist/adapters/process/shell-command.js.map +1 -0
  53. package/dist/application/context.d.ts +20 -0
  54. package/dist/application/context.js +2 -0
  55. package/dist/application/context.js.map +1 -0
  56. package/dist/application/diagnose/doctor.d.ts +21 -0
  57. package/dist/application/diagnose/doctor.js +586 -0
  58. package/dist/application/diagnose/doctor.js.map +1 -0
  59. package/dist/application/diagnose/generated-project.d.ts +1 -0
  60. package/dist/application/diagnose/generated-project.js +105 -0
  61. package/dist/application/diagnose/generated-project.js.map +1 -0
  62. package/dist/application/diagnose/validate.d.ts +6 -0
  63. package/dist/application/diagnose/validate.js +27 -0
  64. package/dist/application/diagnose/validate.js.map +1 -0
  65. package/dist/application/initialize/fixture.d.ts +2 -0
  66. package/dist/application/initialize/fixture.js +39 -0
  67. package/dist/application/initialize/fixture.js.map +1 -0
  68. package/dist/application/initialize/inputs.d.ts +3 -0
  69. package/dist/application/initialize/inputs.js +35 -0
  70. package/dist/application/initialize/inputs.js.map +1 -0
  71. package/dist/application/initialize/use-case.d.ts +23 -0
  72. package/dist/application/initialize/use-case.js +360 -0
  73. package/dist/application/initialize/use-case.js.map +1 -0
  74. package/dist/application/migrate/use-case.d.ts +7 -0
  75. package/dist/application/migrate/use-case.js +378 -0
  76. package/dist/application/migrate/use-case.js.map +1 -0
  77. package/dist/application/project/catalog.d.ts +46 -0
  78. package/dist/application/project/catalog.js +12 -0
  79. package/dist/application/project/catalog.js.map +1 -0
  80. package/dist/application/project/manifest.d.ts +2 -0
  81. package/dist/application/project/manifest.js +29 -0
  82. package/dist/application/project/manifest.js.map +1 -0
  83. package/dist/application/project/planning.d.ts +6 -0
  84. package/dist/application/project/planning.js +12 -0
  85. package/dist/application/project/planning.js.map +1 -0
  86. package/dist/application/update/planning.d.ts +40 -0
  87. package/dist/application/update/planning.js +293 -0
  88. package/dist/application/update/planning.js.map +1 -0
  89. package/dist/application/update/reporting.d.ts +42 -0
  90. package/dist/application/update/reporting.js +325 -0
  91. package/dist/application/update/reporting.js.map +1 -0
  92. package/dist/application/update/use-case.d.ts +8 -0
  93. package/dist/application/update/use-case.js +600 -0
  94. package/dist/application/update/use-case.js.map +1 -0
  95. package/dist/application/upgrade/use-case.d.ts +6 -0
  96. package/dist/application/upgrade/use-case.js +82 -0
  97. package/dist/application/upgrade/use-case.js.map +1 -0
  98. package/dist/args.d.ts +5 -65
  99. package/dist/args.js +4 -441
  100. package/dist/args.js.map +1 -1
  101. package/dist/artifact-lifecycle.d.ts +1 -21
  102. package/dist/artifact-lifecycle.js +1 -73
  103. package/dist/artifact-lifecycle.js.map +1 -1
  104. package/dist/catalogs.d.ts +1 -50
  105. package/dist/catalogs.js +1 -472
  106. package/dist/catalogs.js.map +1 -1
  107. package/dist/cli/args/contracts.d.ts +51 -0
  108. package/dist/cli/args/contracts.js +2 -0
  109. package/dist/cli/args/contracts.js.map +1 -0
  110. package/dist/cli/args/definitions.d.ts +6 -0
  111. package/dist/cli/args/definitions.js +187 -0
  112. package/dist/cli/args/definitions.js.map +1 -0
  113. package/dist/cli/args/help.d.ts +5 -0
  114. package/dist/cli/args/help.js +130 -0
  115. package/dist/cli/args/help.js.map +1 -0
  116. package/dist/cli/args/parser.d.ts +5 -0
  117. package/dist/cli/args/parser.js +145 -0
  118. package/dist/cli/args/parser.js.map +1 -0
  119. package/dist/cli/args/readers.d.ts +4 -0
  120. package/dist/cli/args/readers.js +19 -0
  121. package/dist/cli/args/readers.js.map +1 -0
  122. package/dist/cli/commands/diagnose.d.ts +4 -0
  123. package/dist/cli/commands/diagnose.js +12 -0
  124. package/dist/cli/commands/diagnose.js.map +1 -0
  125. package/dist/cli/commands/dispatch.d.ts +3 -0
  126. package/dist/cli/commands/dispatch.js +94 -0
  127. package/dist/cli/commands/dispatch.js.map +1 -0
  128. package/dist/cli/commands/help.d.ts +3 -0
  129. package/dist/cli/commands/help.js +32 -0
  130. package/dist/cli/commands/help.js.map +1 -0
  131. package/dist/cli/commands/helpers.d.ts +8 -0
  132. package/dist/cli/commands/helpers.js +97 -0
  133. package/dist/cli/commands/helpers.js.map +1 -0
  134. package/dist/cli/commands/initialize.d.ts +3 -0
  135. package/dist/cli/commands/initialize.js +7 -0
  136. package/dist/cli/commands/initialize.js.map +1 -0
  137. package/dist/cli/commands/migrate.d.ts +3 -0
  138. package/dist/cli/commands/migrate.js +8 -0
  139. package/dist/cli/commands/migrate.js.map +1 -0
  140. package/dist/cli/commands/plan.d.ts +3 -0
  141. package/dist/cli/commands/plan.js +34 -0
  142. package/dist/cli/commands/plan.js.map +1 -0
  143. package/dist/cli/commands/reference.d.ts +5 -0
  144. package/dist/cli/commands/reference.js +43 -0
  145. package/dist/cli/commands/reference.js.map +1 -0
  146. package/dist/cli/commands/update.d.ts +3 -0
  147. package/dist/cli/commands/update.js +9 -0
  148. package/dist/cli/commands/update.js.map +1 -0
  149. package/dist/cli/commands/upgrade.d.ts +3 -0
  150. package/dist/cli/commands/upgrade.js +7 -0
  151. package/dist/cli/commands/upgrade.js.map +1 -0
  152. package/dist/cli/context.d.ts +1 -0
  153. package/dist/cli/context.js +2 -0
  154. package/dist/cli/context.js.map +1 -0
  155. package/dist/cli/project-options.d.ts +3 -0
  156. package/dist/cli/project-options.js +41 -0
  157. package/dist/cli/project-options.js.map +1 -0
  158. package/dist/cli.d.ts +3 -3
  159. package/dist/cli.js +4 -3
  160. package/dist/cli.js.map +1 -1
  161. package/dist/commands.d.ts +4 -35
  162. package/dist/commands.js +3 -2812
  163. package/dist/commands.js.map +1 -1
  164. package/dist/container-validation.d.ts +1 -1
  165. package/dist/domain/governance/activation/approvals.d.ts +351 -0
  166. package/dist/domain/governance/activation/approvals.js +528 -0
  167. package/dist/domain/governance/activation/approvals.js.map +1 -0
  168. package/dist/domain/governance/activation/canonical-json.d.ts +4 -0
  169. package/dist/domain/governance/activation/canonical-json.js +39 -0
  170. package/dist/domain/governance/activation/canonical-json.js.map +1 -0
  171. package/dist/domain/governance/activation/capabilities.d.ts +7 -0
  172. package/dist/domain/governance/activation/capabilities.js +33 -0
  173. package/dist/domain/governance/activation/capabilities.js.map +1 -0
  174. package/dist/domain/governance/activation/evidence.d.ts +63 -0
  175. package/dist/domain/governance/activation/evidence.js +444 -0
  176. package/dist/domain/governance/activation/evidence.js.map +1 -0
  177. package/dist/domain/governance/activation/graph.d.ts +397 -0
  178. package/dist/domain/governance/activation/graph.js +441 -0
  179. package/dist/domain/governance/activation/graph.js.map +1 -0
  180. package/dist/domain/governance/activation/inputs.d.ts +25 -0
  181. package/dist/domain/governance/activation/inputs.js +63 -0
  182. package/dist/domain/governance/activation/inputs.js.map +1 -0
  183. package/dist/domain/governance/activation/operations.d.ts +19 -0
  184. package/dist/domain/governance/activation/operations.js +181 -0
  185. package/dist/domain/governance/activation/operations.js.map +1 -0
  186. package/dist/domain/governance/activation/readiness.d.ts +27 -0
  187. package/dist/domain/governance/activation/readiness.js +269 -0
  188. package/dist/domain/governance/activation/readiness.js.map +1 -0
  189. package/dist/domain/governance/activation/types.d.ts +399 -0
  190. package/dist/domain/governance/activation/types.js +109 -0
  191. package/dist/domain/governance/activation/types.js.map +1 -0
  192. package/dist/domain/governance/activation/validators.d.ts +22 -0
  193. package/dist/domain/governance/activation/validators.js +1347 -0
  194. package/dist/domain/governance/activation/validators.js.map +1 -0
  195. package/dist/domain/governance/assessment/catalog.d.ts +14 -0
  196. package/dist/domain/governance/assessment/catalog.js +105 -0
  197. package/dist/domain/governance/assessment/catalog.js.map +1 -0
  198. package/dist/domain/governance/assessment/errors.d.ts +10 -0
  199. package/dist/domain/governance/assessment/errors.js +22 -0
  200. package/dist/domain/governance/assessment/errors.js.map +1 -0
  201. package/dist/domain/governance/assessment/index.d.ts +8 -0
  202. package/dist/domain/governance/assessment/index.js +9 -0
  203. package/dist/domain/governance/assessment/index.js.map +1 -0
  204. package/dist/domain/governance/assessment/live-normalize.d.ts +19 -0
  205. package/dist/domain/governance/assessment/live-normalize.js +403 -0
  206. package/dist/domain/governance/assessment/live-normalize.js.map +1 -0
  207. package/dist/domain/governance/assessment/predicates.d.ts +36 -0
  208. package/dist/domain/governance/assessment/predicates.js +545 -0
  209. package/dist/domain/governance/assessment/predicates.js.map +1 -0
  210. package/dist/domain/governance/assessment/report.d.ts +23 -0
  211. package/dist/domain/governance/assessment/report.js +266 -0
  212. package/dist/domain/governance/assessment/report.js.map +1 -0
  213. package/dist/domain/governance/assessment/sanitize.d.ts +8 -0
  214. package/dist/domain/governance/assessment/sanitize.js +60 -0
  215. package/dist/domain/governance/assessment/sanitize.js.map +1 -0
  216. package/dist/domain/governance/assessment/types.d.ts +174 -0
  217. package/dist/domain/governance/assessment/types.js +13 -0
  218. package/dist/domain/governance/assessment/types.js.map +1 -0
  219. package/dist/domain/governance/assessment/yaml.d.ts +6 -0
  220. package/dist/domain/governance/assessment/yaml.js +30 -0
  221. package/dist/domain/governance/assessment/yaml.js.map +1 -0
  222. package/dist/domain/governance/policy/identity.d.ts +64 -0
  223. package/dist/domain/governance/policy/identity.js +112 -0
  224. package/dist/domain/governance/policy/identity.js.map +1 -0
  225. package/dist/domain/migration/dependencies.d.ts +7 -0
  226. package/dist/domain/migration/dependencies.js +221 -0
  227. package/dist/domain/migration/dependencies.js.map +1 -0
  228. package/dist/domain/migration/inventory.d.ts +3 -0
  229. package/dist/domain/migration/inventory.js +15 -0
  230. package/dist/domain/migration/inventory.js.map +1 -0
  231. package/dist/domain/project/artifact-lifecycle.d.ts +69 -0
  232. package/dist/domain/project/artifact-lifecycle.js +137 -0
  233. package/dist/domain/project/artifact-lifecycle.js.map +1 -0
  234. package/dist/domain/project/catalog.d.ts +48 -0
  235. package/dist/domain/project/catalog.js +507 -0
  236. package/dist/domain/project/catalog.js.map +1 -0
  237. package/dist/domain/project/contracts.d.ts +247 -0
  238. package/dist/domain/project/contracts.js +2 -0
  239. package/dist/domain/project/contracts.js.map +1 -0
  240. package/dist/domain/project/errors.d.ts +3 -0
  241. package/dist/domain/project/errors.js +7 -0
  242. package/dist/domain/project/errors.js.map +1 -0
  243. package/dist/domain/project/infrastructure-layout.d.ts +26 -0
  244. package/dist/domain/project/infrastructure-layout.js +124 -0
  245. package/dist/domain/project/infrastructure-layout.js.map +1 -0
  246. package/dist/domain/project/inputs.d.ts +21 -0
  247. package/dist/domain/project/inputs.js +41 -0
  248. package/dist/domain/project/inputs.js.map +1 -0
  249. package/dist/domain/project/manifest/artifacts.d.ts +8 -0
  250. package/dist/domain/project/manifest/artifacts.js +150 -0
  251. package/dist/domain/project/manifest/artifacts.js.map +1 -0
  252. package/dist/domain/project/manifest/context.d.ts +13 -0
  253. package/dist/domain/project/manifest/context.js +2 -0
  254. package/dist/domain/project/manifest/context.js.map +1 -0
  255. package/dist/domain/project/manifest/fields.d.ts +6 -0
  256. package/dist/domain/project/manifest/fields.js +36 -0
  257. package/dist/domain/project/manifest/fields.js.map +1 -0
  258. package/dist/domain/project/manifest/governance.d.ts +8 -0
  259. package/dist/domain/project/manifest/governance.js +161 -0
  260. package/dist/domain/project/manifest/governance.js.map +1 -0
  261. package/dist/domain/project/manifest/project-identity.d.ts +6 -0
  262. package/dist/domain/project/manifest/project-identity.js +273 -0
  263. package/dist/domain/project/manifest/project-identity.js.map +1 -0
  264. package/dist/domain/project/manifest/reader.d.ts +9 -0
  265. package/dist/domain/project/manifest/reader.js +141 -0
  266. package/dist/domain/project/manifest/reader.js.map +1 -0
  267. package/dist/domain/project/paths.d.ts +2 -0
  268. package/dist/domain/project/paths.js +29 -0
  269. package/dist/domain/project/paths.js.map +1 -0
  270. package/dist/domain/project/planning.d.ts +19 -0
  271. package/dist/domain/project/planning.js +329 -0
  272. package/dist/domain/project/planning.js.map +1 -0
  273. package/dist/domain/project/retired-workload.d.ts +4 -0
  274. package/dist/domain/project/retired-workload.js +18 -0
  275. package/dist/domain/project/retired-workload.js.map +1 -0
  276. package/dist/domain/project/supported-stack.d.ts +113 -0
  277. package/dist/domain/project/supported-stack.js +426 -0
  278. package/dist/domain/project/supported-stack.js.map +1 -0
  279. package/dist/domain/workstation/constraints.d.ts +6 -0
  280. package/dist/domain/workstation/constraints.js +8 -0
  281. package/dist/domain/workstation/constraints.js.map +1 -0
  282. package/dist/file-system.d.ts +10 -41
  283. package/dist/file-system.js +9 -1204
  284. package/dist/file-system.js.map +1 -1
  285. package/dist/framework-adapters.d.ts +1 -1
  286. package/dist/framework-validation.d.ts +1 -1
  287. package/dist/framework-validation.js +1 -1
  288. package/dist/framework-validation.js.map +1 -1
  289. package/dist/genai-templates.d.ts +2 -9
  290. package/dist/genai-templates.js +4 -5
  291. package/dist/genai-templates.js.map +1 -1
  292. package/dist/generators/common/artifacts.d.ts +6 -0
  293. package/dist/generators/common/artifacts.js +30 -0
  294. package/dist/generators/common/artifacts.js.map +1 -0
  295. package/dist/generators/common/base.d.ts +17 -0
  296. package/dist/generators/common/base.js +421 -0
  297. package/dist/generators/common/base.js.map +1 -0
  298. package/dist/generators/common/dotenv-validation.d.ts +2 -0
  299. package/dist/generators/common/dotenv-validation.js +80 -0
  300. package/dist/generators/common/dotenv-validation.js.map +1 -0
  301. package/dist/generators/common/environments.d.ts +3 -0
  302. package/dist/generators/common/environments.js +15 -0
  303. package/dist/generators/common/environments.js.map +1 -0
  304. package/dist/generators/common/frontend.d.ts +15 -0
  305. package/dist/generators/common/frontend.js +166 -0
  306. package/dist/generators/common/frontend.js.map +1 -0
  307. package/dist/generators/common/python-settings.d.ts +2 -0
  308. package/dist/generators/common/python-settings.js +70 -0
  309. package/dist/generators/common/python-settings.js.map +1 -0
  310. package/dist/generators/common/spec-workflow.d.ts +28 -0
  311. package/dist/generators/common/spec-workflow.js +567 -0
  312. package/dist/generators/common/spec-workflow.js.map +1 -0
  313. package/dist/generators/common/values.d.ts +13 -0
  314. package/dist/generators/common/values.js +16 -0
  315. package/dist/generators/common/values.js.map +1 -0
  316. package/dist/generators/containers/compose.d.ts +7 -0
  317. package/dist/generators/containers/compose.js +196 -0
  318. package/dist/generators/containers/compose.js.map +1 -0
  319. package/dist/generators/containers/context.d.ts +1 -0
  320. package/dist/generators/containers/context.js +43 -0
  321. package/dist/generators/containers/context.js.map +1 -0
  322. package/dist/generators/containers/images.d.ts +7 -0
  323. package/dist/generators/containers/images.js +119 -0
  324. package/dist/generators/containers/images.js.map +1 -0
  325. package/dist/generators/context.d.ts +42 -0
  326. package/dist/generators/context.js +38 -0
  327. package/dist/generators/context.js.map +1 -0
  328. package/dist/generators/genai/backend.d.ts +20 -0
  329. package/dist/generators/genai/backend.js +667 -0
  330. package/dist/generators/genai/backend.js.map +1 -0
  331. package/dist/generators/genai/configuration.d.ts +3 -0
  332. package/dist/generators/genai/configuration.js +43 -0
  333. package/dist/generators/genai/configuration.js.map +1 -0
  334. package/dist/generators/genai/database.d.ts +7 -0
  335. package/dist/generators/genai/database.js +71 -0
  336. package/dist/generators/genai/database.js.map +1 -0
  337. package/dist/generators/genai/functions.d.ts +15 -0
  338. package/dist/generators/genai/functions.js +156 -0
  339. package/dist/generators/genai/functions.js.map +1 -0
  340. package/dist/generators/genai/index.d.ts +8 -0
  341. package/dist/generators/genai/index.js +11 -0
  342. package/dist/generators/genai/index.js.map +1 -0
  343. package/dist/generators/genai/patterns.d.ts +9 -0
  344. package/dist/generators/genai/patterns.js +309 -0
  345. package/dist/generators/genai/patterns.js.map +1 -0
  346. package/dist/generators/infrastructure/azure.d.ts +18 -0
  347. package/dist/generators/infrastructure/azure.js +655 -0
  348. package/dist/generators/infrastructure/azure.js.map +1 -0
  349. package/dist/generators/infrastructure/names.d.ts +23 -0
  350. package/dist/generators/infrastructure/names.js +51 -0
  351. package/dist/generators/infrastructure/names.js.map +1 -0
  352. package/dist/generators/standard/configuration.d.ts +3 -0
  353. package/dist/generators/standard/configuration.js +26 -0
  354. package/dist/generators/standard/configuration.js.map +1 -0
  355. package/dist/generators/standard/go.d.ts +17 -0
  356. package/dist/generators/standard/go.js +338 -0
  357. package/dist/generators/standard/go.js.map +1 -0
  358. package/dist/generators/standard/index.d.ts +12 -0
  359. package/dist/generators/standard/index.js +12 -0
  360. package/dist/generators/standard/index.js.map +1 -0
  361. package/dist/generators/standard/node.d.ts +20 -0
  362. package/dist/generators/standard/node.js +314 -0
  363. package/dist/generators/standard/node.js.map +1 -0
  364. package/dist/generators/standard/python.d.ts +18 -0
  365. package/dist/generators/standard/python.js +191 -0
  366. package/dist/generators/standard/python.js.map +1 -0
  367. package/dist/go-template-assets.js +3 -3
  368. package/dist/go-template-assets.js.map +1 -1
  369. package/dist/governance-activation/activation-state.d.ts +1 -1
  370. package/dist/governance-activation/activation-state.js +46 -9
  371. package/dist/governance-activation/activation-state.js.map +1 -1
  372. package/dist/governance-activation/approvals.d.ts +1 -188
  373. package/dist/governance-activation/approvals.js +1 -507
  374. package/dist/governance-activation/approvals.js.map +1 -1
  375. package/dist/governance-activation/canonical-json.d.ts +1 -3
  376. package/dist/governance-activation/canonical-json.js +1 -35
  377. package/dist/governance-activation/canonical-json.js.map +1 -1
  378. package/dist/governance-activation/commands.d.ts +1 -1
  379. package/dist/governance-activation/commands.js +107 -103
  380. package/dist/governance-activation/commands.js.map +1 -1
  381. package/dist/governance-activation/compatibility.d.ts +11 -3
  382. package/dist/governance-activation/compatibility.js +31 -4
  383. package/dist/governance-activation/compatibility.js.map +1 -1
  384. package/dist/governance-activation/credentials.d.ts +3 -3
  385. package/dist/governance-activation/credentials.js +5 -5
  386. package/dist/governance-activation/credentials.js.map +1 -1
  387. package/dist/governance-activation/doctor.d.ts +1 -1
  388. package/dist/governance-activation/doctor.js +28 -96
  389. package/dist/governance-activation/doctor.js.map +1 -1
  390. package/dist/governance-activation/evidence.d.ts +1 -49
  391. package/dist/governance-activation/evidence.js +1 -245
  392. package/dist/governance-activation/evidence.js.map +1 -1
  393. package/dist/governance-activation/git-ignore.d.ts +9 -0
  394. package/dist/governance-activation/git-ignore.js +76 -0
  395. package/dist/governance-activation/git-ignore.js.map +1 -0
  396. package/dist/governance-activation/graph.d.ts +1 -397
  397. package/dist/governance-activation/graph.js +1 -440
  398. package/dist/governance-activation/graph.js.map +1 -1
  399. package/dist/governance-activation/identity.d.ts +1 -35
  400. package/dist/governance-activation/identity.js +1 -88
  401. package/dist/governance-activation/identity.js.map +1 -1
  402. package/dist/governance-activation/index.d.ts +3 -0
  403. package/dist/governance-activation/index.js +3 -0
  404. package/dist/governance-activation/index.js.map +1 -1
  405. package/dist/governance-activation/inputs.d.ts +8 -0
  406. package/dist/governance-activation/inputs.js +146 -0
  407. package/dist/governance-activation/inputs.js.map +1 -0
  408. package/dist/governance-activation/migration.d.ts +4 -3
  409. package/dist/governance-activation/migration.js +14 -6
  410. package/dist/governance-activation/migration.js.map +1 -1
  411. package/dist/governance-activation/phase-bootstrap-state.d.ts +3 -0
  412. package/dist/governance-activation/phase-bootstrap-state.js +128 -0
  413. package/dist/governance-activation/phase-bootstrap-state.js.map +1 -0
  414. package/dist/governance-activation/phase-discovery.d.ts +2 -0
  415. package/dist/governance-activation/phase-discovery.js +88 -0
  416. package/dist/governance-activation/phase-discovery.js.map +1 -0
  417. package/dist/governance-activation/phase-governance.d.ts +4 -0
  418. package/dist/governance-activation/phase-governance.js +141 -0
  419. package/dist/governance-activation/phase-governance.js.map +1 -0
  420. package/dist/governance-activation/phase-publication.d.ts +8 -0
  421. package/dist/governance-activation/phase-publication.js +318 -0
  422. package/dist/governance-activation/phase-publication.js.map +1 -0
  423. package/dist/governance-activation/read-only.d.ts +30 -0
  424. package/dist/governance-activation/read-only.js +93 -0
  425. package/dist/governance-activation/read-only.js.map +1 -0
  426. package/dist/governance-activation/readiness.d.ts +1 -24
  427. package/dist/governance-activation/readiness.js +1 -220
  428. package/dist/governance-activation/readiness.js.map +1 -1
  429. package/dist/governance-activation/reconciliation.d.ts +1 -1
  430. package/dist/governance-activation/reconciliation.js +3 -3
  431. package/dist/governance-activation/reconciliation.js.map +1 -1
  432. package/dist/governance-activation/release-integrity.d.ts +1 -1
  433. package/dist/governance-activation/release-integrity.js +2 -2
  434. package/dist/governance-activation/release-integrity.js.map +1 -1
  435. package/dist/governance-activation/seed-lifecycle.d.ts +10 -2
  436. package/dist/governance-activation/seed-lifecycle.js +244 -66
  437. package/dist/governance-activation/seed-lifecycle.js.map +1 -1
  438. package/dist/governance-activation/source-of-truth.d.ts +5 -3
  439. package/dist/governance-activation/source-of-truth.js +32 -52
  440. package/dist/governance-activation/source-of-truth.js.map +1 -1
  441. package/dist/governance-activation/spec-kit-seed.d.ts +9 -0
  442. package/dist/governance-activation/spec-kit-seed.js +43 -0
  443. package/dist/governance-activation/spec-kit-seed.js.map +1 -0
  444. package/dist/governance-activation/task-projection.d.ts +1 -1
  445. package/dist/governance-activation/transition-planning.d.ts +15 -0
  446. package/dist/governance-activation/transition-planning.js +250 -0
  447. package/dist/governance-activation/transition-planning.js.map +1 -0
  448. package/dist/governance-activation/transition-ports.d.ts +150 -0
  449. package/dist/governance-activation/transition-ports.js +2 -0
  450. package/dist/governance-activation/transition-ports.js.map +1 -0
  451. package/dist/governance-activation/transition-process.d.ts +7 -0
  452. package/dist/governance-activation/transition-process.js +21 -0
  453. package/dist/governance-activation/transition-process.js.map +1 -0
  454. package/dist/governance-activation/transition-records.d.ts +56 -0
  455. package/dist/governance-activation/transition-records.js +208 -0
  456. package/dist/governance-activation/transition-records.js.map +1 -0
  457. package/dist/governance-activation/transitions.d.ts +6 -157
  458. package/dist/governance-activation/transitions.js +143 -2045
  459. package/dist/governance-activation/transitions.js.map +1 -1
  460. package/dist/governance-activation/types.d.ts +1 -390
  461. package/dist/governance-activation/types.js +1 -107
  462. package/dist/governance-activation/types.js.map +1 -1
  463. package/dist/governance-activation/validators.d.ts +1 -17
  464. package/dist/governance-activation/validators.js +1 -1304
  465. package/dist/governance-activation/validators.js.map +1 -1
  466. package/dist/governance-assessment/catalog.d.ts +7 -0
  467. package/dist/governance-assessment/catalog.js +31 -0
  468. package/dist/governance-assessment/catalog.js.map +1 -0
  469. package/dist/governance-assessment/command.d.ts +10 -0
  470. package/dist/governance-assessment/command.js +77 -0
  471. package/dist/governance-assessment/command.js.map +1 -0
  472. package/dist/governance-assessment/engine.d.ts +14 -0
  473. package/dist/governance-assessment/engine.js +935 -0
  474. package/dist/governance-assessment/engine.js.map +1 -0
  475. package/dist/governance-assessment/index.d.ts +5 -0
  476. package/dist/governance-assessment/index.js +6 -0
  477. package/dist/governance-assessment/index.js.map +1 -0
  478. package/dist/governance-assessment/live-normalize.d.ts +1 -0
  479. package/dist/governance-assessment/live-normalize.js +2 -0
  480. package/dist/governance-assessment/live-normalize.js.map +1 -0
  481. package/dist/governance-assessment/live-transport.d.ts +34 -0
  482. package/dist/governance-assessment/live-transport.js +455 -0
  483. package/dist/governance-assessment/live-transport.js.map +1 -0
  484. package/dist/governance-assessment/live.d.ts +2 -0
  485. package/dist/governance-assessment/live.js +689 -0
  486. package/dist/governance-assessment/live.js.map +1 -0
  487. package/dist/governance-assessment/predicates.d.ts +1 -0
  488. package/dist/governance-assessment/predicates.js +2 -0
  489. package/dist/governance-assessment/predicates.js.map +1 -0
  490. package/dist/governance-assessment/project.d.ts +33 -0
  491. package/dist/governance-assessment/project.js +178 -0
  492. package/dist/governance-assessment/project.js.map +1 -0
  493. package/dist/governance-assessment/readers.d.ts +14 -0
  494. package/dist/governance-assessment/readers.js +122 -0
  495. package/dist/governance-assessment/readers.js.map +1 -0
  496. package/dist/governance-assessment/report.d.ts +1 -0
  497. package/dist/governance-assessment/report.js +2 -0
  498. package/dist/governance-assessment/report.js.map +1 -0
  499. package/dist/governance-assessment/sanitize.d.ts +1 -0
  500. package/dist/governance-assessment/sanitize.js +2 -0
  501. package/dist/governance-assessment/sanitize.js.map +1 -0
  502. package/dist/governance-assessment/types.d.ts +6 -0
  503. package/dist/governance-assessment/types.js +2 -0
  504. package/dist/governance-assessment/types.js.map +1 -0
  505. package/dist/governance-assessment/yaml.d.ts +1 -0
  506. package/dist/governance-assessment/yaml.js +2 -0
  507. package/dist/governance-assessment/yaml.js.map +1 -0
  508. package/dist/init-filesystem.d.ts +1 -1
  509. package/dist/init-filesystem.js +126 -174
  510. package/dist/init-filesystem.js.map +1 -1
  511. package/dist/interactive.d.ts +2 -2
  512. package/dist/interactive.js +42 -41
  513. package/dist/interactive.js.map +1 -1
  514. package/dist/migrate-plan.d.ts +5 -1
  515. package/dist/migrate-plan.js +87 -10
  516. package/dist/migrate-plan.js.map +1 -1
  517. package/dist/npm-template-assets.js +5 -4
  518. package/dist/npm-template-assets.js.map +1 -1
  519. package/dist/openspec-profile.d.ts +1 -1
  520. package/dist/opentofu-template-assets.js +3 -3
  521. package/dist/opentofu-template-assets.js.map +1 -1
  522. package/dist/package-identity.d.ts +3 -0
  523. package/dist/package-identity.js +13 -2
  524. package/dist/package-identity.js.map +1 -1
  525. package/dist/planner.d.ts +1 -19
  526. package/dist/planner.js +1 -565
  527. package/dist/planner.js.map +1 -1
  528. package/dist/process-runner.d.ts +5 -1
  529. package/dist/process-runner.js +164 -8
  530. package/dist/process-runner.js.map +1 -1
  531. package/dist/project-dependencies.d.ts +5 -3
  532. package/dist/project-dependencies.js +74 -63
  533. package/dist/project-dependencies.js.map +1 -1
  534. package/dist/published-verifier.js +67 -30
  535. package/dist/published-verifier.js.map +1 -1
  536. package/dist/python-template-assets.js +6 -9
  537. package/dist/python-template-assets.js.map +1 -1
  538. package/dist/reconcile.d.ts +1 -1
  539. package/dist/reconcile.js +2 -2
  540. package/dist/reconcile.js.map +1 -1
  541. package/dist/release-identity.js +19 -0
  542. package/dist/release-identity.js.map +1 -1
  543. package/dist/repository-governance.d.ts +10 -2
  544. package/dist/repository-governance.js +240 -99
  545. package/dist/repository-governance.js.map +1 -1
  546. package/dist/runtime.js +1 -1
  547. package/dist/runtime.js.map +1 -1
  548. package/dist/scan.d.ts +6 -2
  549. package/dist/scan.js +78 -30
  550. package/dist/scan.js.map +1 -1
  551. package/dist/self-upgrade.d.ts +1 -1
  552. package/dist/self-upgrade.js +20 -7
  553. package/dist/self-upgrade.js.map +1 -1
  554. package/dist/stable-release.js +7 -1
  555. package/dist/stable-release.js.map +1 -1
  556. package/dist/standard-templates.d.ts +2 -2
  557. package/dist/standard-templates.js +6 -841
  558. package/dist/standard-templates.js.map +1 -1
  559. package/dist/supported-stack.d.ts +3 -115
  560. package/dist/supported-stack.js +4 -438
  561. package/dist/supported-stack.js.map +1 -1
  562. package/dist/telemetry/contract.d.ts +2 -0
  563. package/dist/telemetry/contract.js +7 -0
  564. package/dist/telemetry/contract.js.map +1 -1
  565. package/dist/telemetry/index.d.ts +1 -1
  566. package/dist/templates.d.ts +10 -20
  567. package/dist/templates.js +52 -3238
  568. package/dist/templates.js.map +1 -1
  569. package/dist/types.d.ts +1 -263
  570. package/dist/types.js +1 -1
  571. package/dist/types.js.map +1 -1
  572. package/dist/version.js +2 -6
  573. package/dist/version.js.map +1 -1
  574. package/dist/workstation-catalog.d.ts +5 -2
  575. package/dist/workstation-catalog.js +33 -2
  576. package/dist/workstation-catalog.js.map +1 -1
  577. package/dist/workstation.d.ts +4 -3
  578. package/dist/workstation.js +86 -32
  579. package/dist/workstation.js.map +1 -1
  580. package/docs/assets/liftoff-terminal.svg +3 -3
  581. package/docs/azure-deployment.md +107 -10
  582. package/docs/cli-reference.md +127 -11
  583. package/docs/configuration-and-manifests.md +150 -35
  584. package/docs/existing-repositories.md +33 -6
  585. package/docs/getting-started.md +44 -31
  586. package/docs/prerequisites.md +34 -35
  587. package/docs/project-structure.md +45 -47
  588. package/docs/repository-governance.md +207 -24
  589. package/docs/safety-and-consent.md +65 -12
  590. package/docs/spec-workflows-and-agents.md +31 -28
  591. package/docs/supported-stack.md +11 -9
  592. package/docs/telemetry.md +9 -3
  593. package/docs/troubleshooting.md +107 -49
  594. package/docs/workloads.md +53 -62
  595. package/package.json +6 -8
  596. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/UPSTREAM_LICENSE.txt +0 -21
  597. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/catalog.json +0 -520
  598. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/packaged/gitignore +0 -27
  599. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/README.md +0 -25
  600. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/components.json +0 -22
  601. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/eslint.config.js +0 -23
  602. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/index.html +0 -13
  603. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package-lock.json +0 -6156
  604. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package.json +0 -60
  605. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/public/power-apps.svg +0 -55
  606. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/App.tsx +0 -17
  607. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/assets/react.svg +0 -1
  608. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/mode-toggle.tsx +0 -37
  609. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/badge.tsx +0 -46
  610. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/button.tsx +0 -60
  611. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/calendar.tsx +0 -211
  612. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/card.tsx +0 -92
  613. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/chart.tsx +0 -355
  614. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/checkbox.tsx +0 -32
  615. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/command.tsx +0 -184
  616. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dialog.tsx +0 -141
  617. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dropdown-menu.tsx +0 -257
  618. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/input.tsx +0 -21
  619. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/label.tsx +0 -22
  620. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/popover.tsx +0 -46
  621. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/progress.tsx +0 -29
  622. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/select.tsx +0 -185
  623. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/separator.tsx +0 -26
  624. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/skeleton.tsx +0 -13
  625. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/table.tsx +0 -114
  626. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tabs.tsx +0 -66
  627. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/textarea.tsx +0 -18
  628. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tooltip.tsx +0 -61
  629. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/hooks/use-theme.ts +0 -11
  630. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/index.css +0 -131
  631. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/lib/utils.ts +0 -6
  632. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/main.tsx +0 -10
  633. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/_layout.tsx +0 -31
  634. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/home.tsx +0 -59
  635. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/not-found.tsx +0 -14
  636. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/query-provider.tsx +0 -26
  637. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/sonner-provider.tsx +0 -23
  638. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/theme-provider.tsx +0 -64
  639. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/router.tsx +0 -24
  640. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.app.json +0 -34
  641. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.json +0 -13
  642. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.node.json +0 -26
  643. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/vite.config.ts +0 -19
  644. package/assets/power-apps-code-app/README.md +0 -27
  645. package/dist/code-apps-plugin.d.ts +0 -13
  646. package/dist/code-apps-plugin.js +0 -69
  647. package/dist/code-apps-plugin.js.map +0 -1
  648. package/dist/power-apps-assets.d.ts +0 -30
  649. package/dist/power-apps-assets.js +0 -131
  650. package/dist/power-apps-assets.js.map +0 -1
  651. package/dist/power-apps-templates.d.ts +0 -3
  652. package/dist/power-apps-templates.js +0 -173
  653. package/dist/power-apps-templates.js.map +0 -1
  654. package/dist/power-apps-validation.d.ts +0 -1
  655. package/dist/power-apps-validation.js +0 -79
  656. 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,14 +47,18 @@ 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
53
57
  |-- .github/agents/openspec.agent.md # optional hosted agent
54
58
  |-- .github/prompts/liftoff-setup.prompt.md
55
59
  | or .claude/commands/liftoff-setup.md
60
+ |-- .github/prompts/liftoff-governance-assess.prompt.md
61
+ | or .claude/commands/liftoff-governance-assess.md
56
62
  |-- frontend/ # only when selected
57
63
  |-- functions/<worker-name>/ # only for worker-enabled GenAI patterns
58
64
  `-- migration/legacy/ # only after liftoff migrate
@@ -62,7 +68,9 @@ project/
62
68
 
63
69
  - `backend` contains the selected API stack and Scalar/OpenAPI wiring. Python
64
70
  uses `backend/apis`, Node.js uses `backend/src`, and Go uses
65
- `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.
66
74
  - `backend/orchestration` appears only in GenAI projects and contains
67
75
  PydanticAI agents, prompts, model configuration, and integration boundaries.
68
76
  The generic pattern creates `generic_agent.py`, `generic.md`, and the neutral
@@ -78,8 +86,12 @@ project/
78
86
  - Python Docker builds export the committed `uv.lock` in frozen mode and install
79
87
  only hash-verified requirements. `UV_DEFAULT_INDEX` can select a
80
88
  credential-free managed mirror without changing the lock.
81
- - `infrastructure/opentofu/azure` contains modules, environment tfvars, local
82
- 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.
83
95
  - `openspec` is created for OpenSpec. `.specify` and `specs` are created for
84
96
  Spec Kit.
85
97
  - OpenSpec projects receive all 12 pinned workflows as both skills and commands
@@ -88,6 +100,9 @@ project/
88
100
  - `/liftoff-setup` is generated when repository governance is enabled. It calls
89
101
  `liftoff governance status|plan|apply-next|resume|verify` and has no model
90
102
  selection or separate setup-skill version.
103
+ - `/liftoff-governance-assess` is a separate selected-agent, read-only wrapper
104
+ around `liftoff governance assess --json`. It is local-only unless live reads
105
+ are explicitly requested; it never runs automatically or replaces setup.
91
106
 
92
107
  ### Conditional areas
93
108
 
@@ -99,53 +114,36 @@ project/
99
114
  separate from Azure Functions runtime files.
100
115
  - `migration/legacy` contains the filtered source copy created by migration.
101
116
 
102
- ## Power Apps code app
117
+ ### Runtime configuration and image boundaries
103
118
 
104
- ```text
105
- project/
106
- |-- README.md
107
- |-- THIRD_PARTY_NOTICES.md
108
- |-- liftoff.config.json
109
- |-- liftoff.manifest.json
110
- |-- package.json
111
- |-- package-lock.json
112
- |-- index.html
113
- |-- vite.config.ts
114
- |-- eslint.config.js
115
- |-- tsconfig.json
116
- |-- public/
117
- |-- src/
118
- | |-- App.tsx
119
- | |-- main.tsx
120
- | |-- router.tsx
121
- | |-- components/
122
- | |-- hooks/
123
- | |-- pages/
124
- | `-- providers/
125
- |-- .liftoff/governance/ # managed-core setup files when enabled
126
- |-- governance/ # user-owned activation state after setup starts
127
- `-- openspec/ or .specify/
128
- ```
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.
129
128
 
130
- The exact selected-agent governance launcher is generated only when the
131
- repository-governance profile is enabled. It is Liftoff-owned; neighboring
132
- framework files remain framework-owned. Agent-created governance changes and
133
- `governance/activation-state.json`, approvals, evidence, credentials, and
134
- 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.
135
134
 
136
- This root follows the pinned official Microsoft starter. It includes the
137
- Power Apps SDK, Vite plugin, and project-local CLI through locked npm
138
- dependencies.
135
+ ## Retired project layouts
139
136
 
140
- Liftoff intentionally does not generate `backend/`, `database/`,
141
- `docker-compose.yml`, `environments/`, `infrastructure/`, or
142
- `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.
143
141
 
144
142
  ## Managed versus user-owned governance artifacts
145
143
 
146
144
  `liftoff.manifest.json` v7 records managed-core hashes for the governance policy,
147
145
  context, guide, phase graph, compatibility metadata, credential-policy schema,
148
- and setup integrations. `liftoff update` may reconcile only those managed-core
146
+ and setup and assessment integrations. `liftoff update` may reconcile only those managed-core
149
147
  paths. Forced update may remove exact retired generated setup-alias ownership
150
148
  from older manifests after review. It preserves user-owned activation state,
151
149
  immutable evidence, approvals, credential policies, active OpenSpec changes, and
@@ -164,12 +162,12 @@ success-shaped placeholders:
164
162
  invocation fails clearly.
165
163
  - Redis Streams uses `REDIS_URL` and `REDIS_STREAM_NAME`.
166
164
  - Azure Service Bus uses `SERVICE_BUS_QUEUE_NAME` and either
167
- `SERVICE_BUS_CONNECTION_STRING` or
168
- `SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE`; `AZURE_CLIENT_ID` selects a
169
- 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.
170
168
  - Langfuse requires both `LANGFUSE_PUBLIC_KEY` and
171
- `LANGFUSE_SECRET_KEY`, with optional `LANGFUSE_HOST`. Without both keys,
172
- tracing is explicitly disabled.
169
+ `LANGFUSE_SECRET_KEY`, with optional `LANGFUSE_HOST`. Both blank disables
170
+ tracing; only one configured key is an error.
173
171
  - Frontends read `VITE_API_BASE_URL`, call the route selected by the pattern or
174
172
  API stack, and expose loading, response, and failure states.
175
173
  - Backends allow the local frontend origin by default.