@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
@@ -6,6 +6,7 @@ Run `liftoff help` or command-specific help for the authoritative syntax:
6
6
  liftoff init --help
7
7
  liftoff migrate --help
8
8
  liftoff governance --help
9
+ liftoff governance assess --help
9
10
  liftoff upgrade --help
10
11
  liftoff update --help
11
12
  ```
@@ -31,16 +32,18 @@ install -> upgrade CLI -> plan -> init or migrate -> /liftoff-setup -> validate,
31
32
  | `liftoff governance apply-next [project]` | Previews the next graph-ready transition; add `--execute` to execute at most one approved mutation |
32
33
  | `liftoff governance resume [project]` | Rechecks external blockers and readiness descendants without rerunning verified operations |
33
34
  | `liftoff governance verify [project]` | Read-only validation of graph, state, evidence, task projection, policy identity, active-change identity, and live readback; reports consistency separately from setup completion and reports completion as indeterminate when inspection fails |
35
+ | `liftoff governance assess [project]` | Read-only comparison against the installed CLI's packaged governance target; local-only unless `--live` is explicitly requested |
34
36
  | `liftoff upgrade` | Replaces a verified global npm installation with the exact canonical stable release exposed by the configured registry |
35
37
  | `liftoff upgrade --check` | Checks installation origin and registry parity without installing; exits 2 when an installable update exists |
36
38
  | `liftoff update [project]` | Applies safe managed-core maintenance and authorized create-only component provisioning |
37
39
  | `liftoff update --check` | Reports core maintenance and provisioning without mutation; exits 0 when clean and 2 when actionable |
38
40
  | `liftoff update --force` | Overwrites only exact guarded managed-core conflicts; project-owned files remain unreachable |
39
41
  | `liftoff dev` | Prints workload-appropriate local development commands; it does not execute them |
40
- | `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 |
41
43
  | `liftoff patterns` | Lists GenAI patterns |
42
44
  | `liftoff providers` | Lists provider availability |
43
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 |
44
47
  | `liftoff regions search <query>` | Searches region names and slugs |
45
48
  | `liftoff --version` | Prints exactly one version line |
46
49
 
@@ -57,7 +60,7 @@ Node.js 24 LTS, Python 3.14, Go 1.27, OpenTofu 1.12, OpenSpec 1.11, and Spec Kit
57
60
  Common noninteractive inputs include:
58
61
 
59
62
  ```text
60
- --type genai|standard|power-apps-code-app
63
+ --type genai|standard
61
64
  --pattern <genai-pattern>
62
65
  --api python|node|go
63
66
  --cloud azure
@@ -68,7 +71,6 @@ Common noninteractive inputs include:
68
71
  --agents copilot,claude
69
72
  --default-agent copilot|claude
70
73
  --governance single-maintainer-gitflow|none
71
- --code-apps-plugin | --no-code-apps-plugin
72
74
  --copilot-cloud | --no-copilot-cloud
73
75
  --configure-openspec-profile
74
76
  ```
@@ -78,8 +80,9 @@ Interactive initialization presents **I'm not sure yet - Generic GenAI
78
80
  starter** first and accepts it as the default. `liftoff patterns` lists this
79
81
  stable `generic` identifier alongside the eight specialized patterns.
80
82
 
81
- Power Apps rejects API, pattern, cloud, region, frontend, and API environment
82
- 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.
83
86
 
84
87
  Consent options are documented in [safety and consent](safety-and-consent.md).
85
88
  Repository governance defaults to `single-maintainer-gitflow`. It generates a
@@ -104,13 +107,23 @@ reviewed plan and execute at most one phase whose dependencies, evidence, and
104
107
  approval envelope are satisfied. `resume` rechecks blockers and downstream
105
108
  readiness without repeating verified operations.
106
109
 
110
+ Apply-next JSON names the attempted phase in `selectedPhase` and reports
111
+ `executedPhase` on execution (`null` on failure). For compatibility its existing
112
+ `nextReadyPhase` field can refer to the phase just attempted, not the next
113
+ post-transition phase. Read `nextReadyPhase` from the subsequent `status` or
114
+ `verify` result. Status/resume preserve `storedState` and `storedBlockers` when
115
+ an archived baseline is `retryable`; only explicit execution may replace that
116
+ failure with verified evidence.
117
+
107
118
  Governance JSON uses versioned objects and includes the complete activation
108
119
  version vector: creating Liftoff version, manifest artifact version 7, policy
109
- version 6, activation-contract version 1, graph/state/evidence/approval/
110
- 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 2. It never
111
123
  emits a setup-skill version. Future identities, unsupported compatibility
112
124
  tuples, and unrecognized graph hashes block without rewriting state; the remedy
113
- 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; no automatic reconciliation command exists.
114
127
 
115
128
  `/liftoff-setup` calls these commands instead of inferring phase completion from
116
129
  prose or task checkboxes.
@@ -126,6 +139,79 @@ consent. Noninteractive `init` and `migrate` require
126
139
  `openspec config set` commands. The flag has no effect during `plan`, which
127
140
  never inspects or changes machine configuration.
128
141
 
142
+ ## Read-only governance assessment
143
+
144
+ ```bash
145
+ liftoff governance assess [project] [--json]
146
+ liftoff governance assess [project] --live [--json]
147
+ liftoff governance assess --project "path with spaces" --json
148
+ ```
149
+
150
+ Use an optional positional project or `--project`, never both. It can identify
151
+ an ordinary Git repository without a manifest. Nested working directories resolve
152
+ to the nearest applicable Git or Liftoff boundary; invalid or retired inner
153
+ manifests cannot be bypassed. No initialization or slash-command installation is
154
+ required. Help needs no project or
155
+ credential discovery. Only `assess` accepts `--live`; assessment rejects
156
+ `--execute` (including `--execute=false`), `--force`, installation, automatic
157
+ upgrade, and output-file flags before project access.
158
+
159
+ The pinned target is the **installed CLI**, including its packaged policy
160
+ version/content digest, activation identity, phase-graph hash, and control
161
+ catalog schema/digest. It never resolves registry latest or upgrades anything.
162
+ The schema-v1 report (`readOnly: true`) separates target, recorded baseline,
163
+ declared configuration, and observed enforcement, with expected/observed values,
164
+ scope, provenance, impact, diagnostics, and advisory recommendations.
165
+ It shows the project policy version when available. JSON observations may retain
166
+ optional normalized `facts` alongside evaluator predicate values; these are
167
+ sanitized details rather than raw provider payloads.
168
+
169
+ The default is **local-only with no network access**, registry lookup, project
170
+ script execution, or GitHub/Azure credential requirement. Assessment works
171
+ before commit, push, or activation. Every assessment invocation, including
172
+ `--live` and `--help`, skips telemetry and disclosure entirely. Local Git reads
173
+ use only repository root, HEAD, and origin metadata, never `git status`, which
174
+ can execute clean filters. `--live` opts into bounded read-only metadata
175
+ access using existing permissions and verified repository/environment/resource
176
+ bindings. It does not log in, enroll credentials, broaden permissions, register
177
+ providers, download state blobs, or mutate GitHub or Azure.
178
+ Azure scope and evidence-backed applicability require a current active-baseline
179
+ and referenced, validated saved-plan/evidence receipts, not placeholder digests,
180
+ future-dated approvals, or inferred bindings. Missing bindings remain
181
+ `not-observed`. Do not fabricate or hand-edit state, baselines, receipts, or
182
+ evidence as remediation; missing proof requires separately approved setup or
183
+ governance work.
184
+
185
+ Findings are `aligned`, `outdated`, `missing`, `conflicting`,
186
+ `approved-exception`, `inapplicable`, or `not-observed`. Coverage preserves
187
+ unknown applicability, stale or unavailable proof, and unsupported evaluators.
188
+ Denied access, masked 404s, or incomplete collection are not proof of absence.
189
+ Local matches do not prove live enforcement; local-only reports normally have
190
+ partial coverage. See [finding meanings](repository-governance.md#read-only-governance-assessment).
191
+
192
+ | Outcome | Exit | Meaning |
193
+ | --- | --- | --- |
194
+ | `aligned` | 0 | Every applicable catalog control has fresh required proof and matches |
195
+ | `not-applicable` | 0 | Governance is explicitly disabled; not an alignment claim |
196
+ | `partial` | 2 | Applicability or required proof is unknown; known differences remain visible |
197
+ | `differences` | 2 | Complete observation found differences, including approved exceptions |
198
+ | `error` | 1 | Invalid invocation/input, unsafe paths, malformed required artifacts, or an invalid catalog prevent a trustworthy report |
199
+
200
+ Human and JSON output derive from the same report, emitted only to stdout.
201
+ Exit 2 is advisory, not proof that governance is broken or authorization to
202
+ repair it. Neither assessment mode changes project files, Git, state,
203
+ approvals, evidence, or remotes, or runs recommendations. A report cannot
204
+ complete Phase 0 or advance activation.
205
+
206
+ `/liftoff-governance-assess` is a selected-agent explanation wrapper, not a setup
207
+ alias; `/liftoff-setup` remains the primary post-init path. Compatible older
208
+ projects install the integration through normal `liftoff update --check` and
209
+ guarded `liftoff update`. Unowned collisions remain protected even with
210
+ `--force`. Unsupported activation mappings may be diagnosed without migration;
211
+ force cannot bypass compatibility or overwrite project-owned files. A future
212
+ governance upgrade requires fresh observations, its own reviewed plan, and
213
+ separate authority.
214
+
129
215
  ## CLI upgrade modes
130
216
 
131
217
  ```bash
@@ -148,6 +234,12 @@ version. Liftoff never edits `.npmrc`, embeds registry credentials, forces a
148
234
  canonical bypass around a stale mirror, invokes elevation, installs a
149
235
  prerelease, or performs a downgrade.
150
236
 
237
+ Machine-level `@msn-control:registry` takes precedence over the default
238
+ `registry`, even when the default is canonical. The lookup runs from a neutral
239
+ directory so project `.npmrc` files cannot change upgrade delivery. Canonical
240
+ verification isolates both registry settings without changing persistent
241
+ configuration; actual delivery still honors the configured mirror.
242
+
151
243
  `--check` performs the same origin, target, and parity checks without invoking
152
244
  installation. Apply uses one shell-free exact npm command with lifecycle scripts,
153
245
  audit, and funding prompts disabled, then verifies installed metadata, the
@@ -182,7 +274,7 @@ set local state to `handoff-partial`. Forced update may remove exact retired
182
274
  generated setup-alias entries from older manifests after review.
183
275
 
184
276
  Application source, tests, dependencies and locks, database assets, Docker and
185
- Compose files, environment files, documentation, Power Apps starter files, and
277
+ Compose files, environment files, documentation, and
186
278
  OpenTofu topology are `project` artifacts after generation. Update does not
187
279
  compare them with newer templates, restore deleted paths, or overwrite them
188
280
  under `--force`.
@@ -193,6 +285,10 @@ preflighted together. Absent files are created and byte-identical files are
193
285
  adopted as provenance; any differing destination blocks the group even with
194
286
  `--force`. Disabling or re-enabling a previously provisioned group never
195
287
  recreates or deletes project files.
288
+ New environments also require recorded independent-root infrastructure and safe
289
+ existing shared-module files. Legacy/shared or unknown layout produces a
290
+ component-level migration-required result; other safe managed-core work may
291
+ continue. Force cannot migrate state or rewrite shared infrastructure.
196
292
 
197
293
  Use `--check` whenever no project bytes may change. Human check mode prints
198
294
  managed-core drift, ownership-only manifest v2-v7 migration, activation-identity
@@ -209,8 +305,8 @@ core update, but Liftoff retains no backup after a successful core overwrite.
209
305
  Force cannot bypass the ownership, project-boundary, symlink, structural,
210
306
  identity, or manifest guards.
211
307
 
212
- New dependency, runtime, container, database, application, Power Apps starter,
213
- and infrastructure templates apply to newly generated projects. Existing
308
+ New dependency, runtime, container, database, application, and infrastructure
309
+ templates apply to newly generated projects. Existing
214
310
  production projects adopt them through a separately reviewed project change.
215
311
  The existing `liftoff migrate` command only adopts a non-Liftoff source into a
216
312
  fresh target; it is not an in-place template upgrade.
@@ -234,6 +330,26 @@ All current writes use v7. Supported historical reads are normalized through an
234
330
  explicit compatibility map; future versions, individually known but unsupported
235
331
  tuples, and unknown phase-graph hashes block and report an upgrade or
236
332
  reconciliation remedy instead of downgrading or fabricating evidence.
333
+ Exact known activation-v1 identity is readable for diagnostics. A
334
+ `diagnosticOnly` historical-state result can coexist with managed-core maintenance,
335
+ which preserves the historical identity, state, and receipts and does not make
336
+ them executable.
337
+
338
+ ## Development and infrastructure helpers
339
+
340
+ `liftoff dev` and `liftoff infra` print commands rather than execute them.
341
+ Infrastructure helpers use recorded layout, not merely new-looking paths.
342
+ For a selected prod environment in the independent layout,
343
+ `liftoff infra init --env prod` targets
344
+ `infrastructure/opentofu/azure/environments/prod`; plan/apply use
345
+ `-var-file=prod.tfvars` in that same root. Operational init uses the configured
346
+ backend, not `-backend=false`. Only the local baseline disables backend
347
+ initialization, separately for every selected root. Recursive formatting remains
348
+ at the Azure parent to include the shared module.
349
+
350
+ The eight explicitly retired flat-root identities remain old provenance, not
351
+ aliases for new roots. See the [exact inventory](azure-deployment.md#explicit-flat-root-identity-retirement)
352
+ and [native runtime recipes](configuration-and-manifests.md#application-runtime-configuration).
237
353
 
238
354
  ## JSON and exit codes
239
355
 
@@ -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
@@ -123,18 +199,37 @@ rewrite.
123
199
  `liftoff update --check`, including `--check --json`, leaves an old manifest
124
200
  byte-for-byte unchanged. A successful plain update writes v7 only after the
125
201
  transaction succeeds. V2-v6 backend, frontend, database, dependency, container,
126
- environment, documentation, Power Apps, and infrastructure entries become
202
+ environment, documentation, and infrastructure entries become
127
203
  project provenance without reading or changing current production bytes.
128
204
  Intentionally deleted files remain absent. Only exact current core logical names
129
205
  retain write authority.
130
206
 
131
207
  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.
208
+ comparisons to infer execution safety.
209
+
210
+ | Contract | Current version |
211
+ | --- | --- |
212
+ | CLI package version | 0.11.1 |
213
+ | Activation package identity | 0.11.0 |
214
+ | Manifest write / supported reads | 7 / 2-7 for API and GenAI |
215
+ | Normative policy | 6 |
216
+ | Activation contract, state, evidence header, approval envelope, compatibility metadata | 2 |
217
+ | Phase graph, supersession, credential policy | 1 |
218
+ | Assessment report and control catalog | 1 |
219
+
220
+ The 0.11.1 CLI patch retains the 0.11.0 activation identity because its phase
221
+ semantics and graph are unchanged. Independent infrastructure provenance
222
+ explicitly recognizes both generation versions; unknown releases are not
223
+ automatically trusted or treated as compatible.
224
+
225
+ Known activation-v1 history remains readable but **diagnostic-only**, not
226
+ executable proof. Managed-core maintenance can continue without rewriting user-owned
227
+ historical identity, state, or receipts. A readable historical manifest cannot
228
+ bootstrap current activation or authorize provider scope, even when no state
229
+ file exists or a separate current state is supplied. No automatic conversion, reset, or public
230
+ historical reconciliation workflow is provided. Future/mixed tuples, ad hoc
231
+ state, and unknown graph hashes remain blocked. No reader converts prose,
232
+ filenames, checked tasks, or old placeholder digests into current evidence.
138
233
 
139
234
  ## Artifact ownership
140
235
 
@@ -149,10 +244,23 @@ category or filename:
149
244
  | `framework` | Official framework | Validated through framework markers and maintained by that framework |
150
245
  | `seed` | Developer/project | Written once and never reconciled |
151
246
 
247
+ New Spec Kit projects explicitly seed
248
+ `specs/000-liftoff-bootstrap/{spec.md,plan.md,tasks.md}`. These are not framework
249
+ templates or managed-core files. Missing older bundles are an adoption blocker,
250
+ not permission for update or force to create them.
251
+
152
252
  The manifest is a CLI-owned transaction record rather than an ordinary
153
253
  template artifact. Current managed core is limited to the exact repository
154
254
  governance policy, context, guide, phase graph, compatibility metadata,
155
255
  credential-policy schema, and selected-agent `/liftoff-setup` integrations.
256
+ Enabled projects also own only the exact assessment integrations:
257
+ `liftoff-governance-assess-copilot` at
258
+ `.github/prompts/liftoff-governance-assess.prompt.md` and
259
+ `liftoff-governance-assess-claude` at
260
+ `.claude/commands/liftoff-governance-assess.md`, for selected agents only.
261
+ Older supported inventories without these entries remain readable and expose
262
+ safe managed-core update drift. Unowned collisions stay outside ownership even
263
+ with force; assessment never grants write authority for files it reads.
156
264
  Forced update may remove exact retired generated setup-alias entries from older
157
265
  manifests after review. A name such as `config.go`, a `configuration` category,
158
266
  or a path under `.github` does not grant update authority.
@@ -166,14 +274,21 @@ those files, but it does not advance, reset, or delete a phase.
166
274
  ## Contract conventions
167
275
 
168
276
  - Writers use `artifactVersion` 7; readers support v2, v3, v4, v5, v6, and v7.
169
- - Artifact logical names and catalog identifiers are append-only.
277
+ - Artifact logical names and catalog identifiers are append-only except for
278
+ explicitly reviewed retirements. In 0.11.0, the eight
279
+ [flat-root OpenTofu identities](azure-deployment.md#explicit-flat-root-identity-retirement)
280
+ are retired from **new scaffold output only**. Their historical paths,
281
+ identities, and generation hashes remain provenance, not aliases or deletion
282
+ authority. Retained tfvars IDs alone do not establish the independent layout.
170
283
  - Rendering is deterministic and does not depend on timestamps, host versions,
171
284
  or network state.
172
285
  - `.liftoff/governance/` contains managed setup definitions; `governance/`
173
286
  contains user-owned activation state.
174
287
  - Machine-readable paths are path-part arrays, never platform-joined strings.
175
288
  - Exit codes are 0 for success or clean, 1 for failure, and 2 for detected
176
- drift in check mode.
289
+ drift in check mode. Assessment also uses 2 for partial coverage or differences
290
+ including approved exceptions; disabled governance exits 0 as not-applicable,
291
+ never as an alignment claim.
177
292
  - JSON outputs carry a numeric top-level `schemaVersion`.
178
293
 
179
294
  See [safety and consent](safety-and-consent.md) for reconciliation and rollback
@@ -102,12 +102,15 @@ while unrecorded conflicts remain user-owned. No update mode runs an agent or
102
102
  activates GitHub settings.
103
103
 
104
104
  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
105
+ 6, manifest v7, and activation-contract v2 as managed-core drift. Review the
106
106
  canonical phase graph, private-runner credential contract, bootstrap-state
107
107
  retention/disposal contract, and active-change reconciliation before
108
108
  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.
109
+ active downstream work must have supported identity and current evidence before
110
+ it can execute. The CLI provides no public identity-acknowledgment or historical
111
+ reconciliation workflow.
112
+ Historical activation-v1 state and receipts are diagnostic-only, not
113
+ automatically migrated or made executable by updating core files.
111
114
 
112
115
  The manifest-v7 transition releases every legacy non-core artifact into project
113
116
  provenance without writing, restoring, moving, or deleting its path.
@@ -118,7 +121,16 @@ Supported readers normalize manifest v2-v6 and write only v7 after all
118
121
  preflights pass. Future versions, unsupported policy/contract/schema tuples,
119
122
  unknown graph hashes, unversioned activation state, or prose-only task history
120
123
  block with explicit upgrade, import-mapping, or reconciliation remedies. Liftoff
121
- never fabricates evidence from old checkboxes.
124
+ never fabricates evidence from old checkboxes. A diagnostic is not a command to
125
+ hand-write mappings, retag receipts, or manufacture missing history.
126
+
127
+ The new infrastructure layout uses shared application modules and independent
128
+ environment roots. Its eight [retired flat-root identities](azure-deployment.md#explicit-flat-root-identity-retirement)
129
+ remain readable as historical provenance, not aliases for new paths. Existing
130
+ files, state, and generation hashes remain untouched. Adding an environment
131
+ requires recorded independent-root provenance and safe existing module files;
132
+ legacy or unknown layouts need separately reviewed migration. Core context
133
+ updates cannot claim that this migration happened.
122
134
 
123
135
  Major supported-stack releases apply to new scaffolds. Existing projects adopt
124
136
  runtime, lock, Docker, provider, framework, and application changes through a
@@ -146,5 +158,20 @@ framework pipeline, including separate global OpenSpec profile authorization,
146
158
  and leaves the source byte-for-byte unchanged. `--force` does not permit a
147
159
  non-empty migration target.
148
160
 
149
- Arbitrary existing Power Apps application migration is not currently
150
- supported.
161
+ The scan reads dependency declarations rather than comments or example text.
162
+ Python setup/test configuration and non-workflow `.github` files remain
163
+ explicit inventory items; dynamic or malformed declarations produce review
164
+ diagnostics rather than invented stack defaults. Source configuration code is
165
+ never executed to discover dependencies.
166
+
167
+ Explicit workload, API-stack, and frontend choices control the target mapping.
168
+ For example, Go source selected for a Node target receives porting instructions,
169
+ not Go-only destination paths; a declined frontend remains a placement decision.
170
+
171
+ Complete the mapped work and run the backend tests, `liftoff validate`, and
172
+ `liftoff doctor` before deleting `migration/legacy/`. OpenSpec archival follows
173
+ the completed change; a Spec Kit migration checklist is finalized locally
174
+ without an invented archive command.
175
+
176
+ Power Apps creation, maintenance, and migration are retired. Existing Power Apps
177
+ manifests are rejected without modifying or converting their application files.