@msn-control/liftoff 0.11.3 → 0.12.0

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 (326) hide show
  1. package/DEVELOPER.md +19 -18
  2. package/README.md +18 -18
  3. package/assets/governance/single-maintainer-gitflow/activation-v2-graph.json +1583 -0
  4. package/dist/adapters/credentials/github-enrollment.d.ts +51 -0
  5. package/dist/adapters/credentials/github-enrollment.js +226 -0
  6. package/dist/adapters/credentials/github-enrollment.js.map +1 -0
  7. package/dist/adapters/credentials/protected-input.d.ts +7 -0
  8. package/dist/adapters/credentials/protected-input.js +68 -0
  9. package/dist/adapters/credentials/protected-input.js.map +1 -0
  10. package/dist/adapters/filesystem/executables.d.ts +2 -0
  11. package/dist/adapters/filesystem/executables.js +70 -0
  12. package/dist/adapters/filesystem/executables.js.map +1 -0
  13. package/dist/adapters/filesystem/update-previews.d.ts +9 -0
  14. package/dist/adapters/filesystem/update-previews.js +44 -0
  15. package/dist/adapters/filesystem/update-previews.js.map +1 -1
  16. package/dist/adapters/filesystem/workstation-attempts.d.ts +13 -0
  17. package/dist/adapters/filesystem/workstation-attempts.js +78 -0
  18. package/dist/adapters/filesystem/workstation-attempts.js.map +1 -0
  19. package/dist/adapters/github/activation-rest.d.ts +40 -0
  20. package/dist/adapters/github/activation-rest.js +272 -0
  21. package/dist/adapters/github/activation-rest.js.map +1 -0
  22. package/dist/adapters/state/azure-blob.d.ts +43 -0
  23. package/dist/adapters/state/azure-blob.js +335 -0
  24. package/dist/adapters/state/azure-blob.js.map +1 -0
  25. package/dist/adapters/state/darwin-capabilities.d.ts +33 -0
  26. package/dist/adapters/state/darwin-capabilities.js +146 -0
  27. package/dist/adapters/state/darwin-capabilities.js.map +1 -0
  28. package/dist/adapters/state/darwin-native-host.d.ts +32 -0
  29. package/dist/adapters/state/darwin-native-host.js +294 -0
  30. package/dist/adapters/state/darwin-native-host.js.map +1 -0
  31. package/dist/adapters/state/darwin-profile.d.ts +6 -0
  32. package/dist/adapters/state/darwin-profile.js +56 -0
  33. package/dist/adapters/state/darwin-profile.js.map +1 -0
  34. package/dist/adapters/state/darwin-system-program.d.ts +1 -0
  35. package/dist/adapters/state/darwin-system-program.js +94 -0
  36. package/dist/adapters/state/darwin-system-program.js.map +1 -0
  37. package/dist/adapters/state/local-qualification.d.ts +16 -0
  38. package/dist/adapters/state/local-qualification.js +299 -0
  39. package/dist/adapters/state/local-qualification.js.map +1 -0
  40. package/dist/adapters/state/local.d.ts +25 -0
  41. package/dist/adapters/state/local.js +145 -0
  42. package/dist/adapters/state/local.js.map +1 -0
  43. package/dist/adapters/state/native-command.d.ts +21 -0
  44. package/dist/adapters/state/native-command.js +82 -0
  45. package/dist/adapters/state/native-command.js.map +1 -0
  46. package/dist/adapters/state/native-files.d.ts +2 -0
  47. package/dist/adapters/state/native-files.js +47 -0
  48. package/dist/adapters/state/native-files.js.map +1 -0
  49. package/dist/adapters/state/native-system.d.ts +38 -0
  50. package/dist/adapters/state/native-system.js +86 -0
  51. package/dist/adapters/state/native-system.js.map +1 -0
  52. package/dist/adapters/state/opentofu.d.ts +35 -0
  53. package/dist/adapters/state/opentofu.js +350 -0
  54. package/dist/adapters/state/opentofu.js.map +1 -0
  55. package/dist/adapters/state/owned-process.d.ts +43 -0
  56. package/dist/adapters/state/owned-process.js +252 -0
  57. package/dist/adapters/state/owned-process.js.map +1 -0
  58. package/dist/adapters/state/posix-lock-program.d.ts +1 -0
  59. package/dist/adapters/state/posix-lock-program.js +185 -0
  60. package/dist/adapters/state/posix-lock-program.js.map +1 -0
  61. package/dist/adapters/state/posix-native-lock.d.ts +15 -0
  62. package/dist/adapters/state/posix-native-lock.js +145 -0
  63. package/dist/adapters/state/posix-native-lock.js.map +1 -0
  64. package/dist/adapters/state/protected-workspace.d.ts +57 -0
  65. package/dist/adapters/state/protected-workspace.js +412 -0
  66. package/dist/adapters/state/protected-workspace.js.map +1 -0
  67. package/dist/application/context.d.ts +3 -0
  68. package/dist/application/diagnose/doctor.d.ts +5 -0
  69. package/dist/application/diagnose/doctor.js +21 -5
  70. package/dist/application/diagnose/doctor.js.map +1 -1
  71. package/dist/application/diagnose/generated-project.js +2 -7
  72. package/dist/application/diagnose/generated-project.js.map +1 -1
  73. package/dist/application/initialize/fixture.js +8 -1
  74. package/dist/application/initialize/fixture.js.map +1 -1
  75. package/dist/application/initialize/use-case.js +70 -36
  76. package/dist/application/initialize/use-case.js.map +1 -1
  77. package/dist/application/project/manifest.js +5 -4
  78. package/dist/application/project/manifest.js.map +1 -1
  79. package/dist/application/state-migration/execution.d.ts +32 -0
  80. package/dist/application/state-migration/execution.js +440 -0
  81. package/dist/application/state-migration/execution.js.map +1 -0
  82. package/dist/application/state-migration/index.d.ts +22 -0
  83. package/dist/application/state-migration/index.js +17 -0
  84. package/dist/application/state-migration/index.js.map +1 -0
  85. package/dist/application/state-migration/lifecycle.d.ts +3 -0
  86. package/dist/application/state-migration/lifecycle.js +149 -0
  87. package/dist/application/state-migration/lifecycle.js.map +1 -0
  88. package/dist/application/state-migration/planning.d.ts +7 -0
  89. package/dist/application/state-migration/planning.js +150 -0
  90. package/dist/application/state-migration/planning.js.map +1 -0
  91. package/dist/application/state-migration/recovery.d.ts +5 -0
  92. package/dist/application/state-migration/recovery.js +145 -0
  93. package/dist/application/state-migration/recovery.js.map +1 -0
  94. package/dist/application/state-migration/runtime.d.ts +32 -0
  95. package/dist/application/state-migration/runtime.js +188 -0
  96. package/dist/application/state-migration/runtime.js.map +1 -0
  97. package/dist/application/state-migration/service.d.ts +2 -0
  98. package/dist/application/state-migration/service.js +20 -0
  99. package/dist/application/state-migration/service.js.map +1 -0
  100. package/dist/application/update/inspection.d.ts +16 -2
  101. package/dist/application/update/inspection.js +76 -23
  102. package/dist/application/update/inspection.js.map +1 -1
  103. package/dist/application/update/migration-runtime.js +24 -11
  104. package/dist/application/update/migration-runtime.js.map +1 -1
  105. package/dist/application/update/output.d.ts +2 -0
  106. package/dist/application/update/output.js +11 -1
  107. package/dist/application/update/output.js.map +1 -1
  108. package/dist/application/update/revalidation-plan.d.ts +1 -0
  109. package/dist/application/update/revalidation-plan.js +25 -12
  110. package/dist/application/update/revalidation-plan.js.map +1 -1
  111. package/dist/application/update/revalidation.d.ts +4 -1
  112. package/dist/application/update/revalidation.js +62 -21
  113. package/dist/application/update/revalidation.js.map +1 -1
  114. package/dist/application/update/use-case.js +25 -17
  115. package/dist/application/update/use-case.js.map +1 -1
  116. package/dist/cli/args/definitions.js +11 -3
  117. package/dist/cli/args/definitions.js.map +1 -1
  118. package/dist/cli/args/parser.js +29 -3
  119. package/dist/cli/args/parser.js.map +1 -1
  120. package/dist/domain/governance/activation/approvals.d.ts +264 -7
  121. package/dist/domain/governance/activation/approvals.js +166 -23
  122. package/dist/domain/governance/activation/approvals.js.map +1 -1
  123. package/dist/domain/governance/activation/capabilities.js +5 -2
  124. package/dist/domain/governance/activation/capabilities.js.map +1 -1
  125. package/dist/domain/governance/activation/evidence.d.ts +2 -1
  126. package/dist/domain/governance/activation/evidence.js +64 -11
  127. package/dist/domain/governance/activation/evidence.js.map +1 -1
  128. package/dist/domain/governance/activation/graph.d.ts +11 -384
  129. package/dist/domain/governance/activation/graph.js +424 -379
  130. package/dist/domain/governance/activation/graph.js.map +1 -1
  131. package/dist/domain/governance/activation/inputs.d.ts +3 -1
  132. package/dist/domain/governance/activation/inputs.js +47 -6
  133. package/dist/domain/governance/activation/inputs.js.map +1 -1
  134. package/dist/domain/governance/activation/operations.d.ts +4 -1
  135. package/dist/domain/governance/activation/operations.js +110 -22
  136. package/dist/domain/governance/activation/operations.js.map +1 -1
  137. package/dist/domain/governance/activation/readiness.d.ts +10 -0
  138. package/dist/domain/governance/activation/readiness.js +77 -38
  139. package/dist/domain/governance/activation/readiness.js.map +1 -1
  140. package/dist/domain/governance/activation/types.d.ts +151 -9
  141. package/dist/domain/governance/activation/types.js +23 -1
  142. package/dist/domain/governance/activation/types.js.map +1 -1
  143. package/dist/domain/governance/activation/validators.d.ts +4 -1
  144. package/dist/domain/governance/activation/validators.js +419 -26
  145. package/dist/domain/governance/activation/validators.js.map +1 -1
  146. package/dist/domain/governance/policy/identity.d.ts +55 -13
  147. package/dist/domain/governance/policy/identity.js +28 -8
  148. package/dist/domain/governance/policy/identity.js.map +1 -1
  149. package/dist/domain/project/artifact-lifecycle.d.ts +2 -1
  150. package/dist/domain/project/artifact-lifecycle.js +7 -1
  151. package/dist/domain/project/artifact-lifecycle.js.map +1 -1
  152. package/dist/domain/project/catalog.d.ts +50 -1
  153. package/dist/domain/project/catalog.js +104 -4
  154. package/dist/domain/project/catalog.js.map +1 -1
  155. package/dist/domain/project/contracts.d.ts +9 -1
  156. package/dist/domain/project/infrastructure-layout.d.ts +1 -1
  157. package/dist/domain/project/infrastructure-layout.js +2 -1
  158. package/dist/domain/project/infrastructure-layout.js.map +1 -1
  159. package/dist/domain/project/manifest/governance.d.ts +1 -1
  160. package/dist/domain/project/manifest/governance.js +9 -10
  161. package/dist/domain/project/manifest/governance.js.map +1 -1
  162. package/dist/domain/project/planning.js +4 -5
  163. package/dist/domain/project/planning.js.map +1 -1
  164. package/dist/domain/repair/stateful-bounded.d.ts +1 -0
  165. package/dist/domain/repair/stateful-bounded.js +37 -0
  166. package/dist/domain/repair/stateful-bounded.js.map +1 -0
  167. package/dist/domain/repair/stateful-invariants.d.ts +28 -0
  168. package/dist/domain/repair/stateful-invariants.js +278 -0
  169. package/dist/domain/repair/stateful-invariants.js.map +1 -0
  170. package/dist/domain/repair/stateful.d.ts +690 -0
  171. package/dist/domain/repair/stateful.js +26 -0
  172. package/dist/domain/repair/stateful.js.map +1 -0
  173. package/dist/domain/workstation/constraints.d.ts +1 -0
  174. package/dist/domain/workstation/constraints.js.map +1 -1
  175. package/dist/domain/workstation/contracts.d.ts +42 -0
  176. package/dist/domain/workstation/contracts.js +2 -0
  177. package/dist/domain/workstation/contracts.js.map +1 -0
  178. package/dist/domain/workstation/executables.d.ts +19 -0
  179. package/dist/domain/workstation/executables.js +68 -0
  180. package/dist/domain/workstation/executables.js.map +1 -0
  181. package/dist/domain/workstation/versions.d.ts +8 -0
  182. package/dist/domain/workstation/versions.js +145 -0
  183. package/dist/domain/workstation/versions.js.map +1 -0
  184. package/dist/framework-adapters.d.ts +2 -0
  185. package/dist/framework-adapters.js +148 -22
  186. package/dist/framework-adapters.js.map +1 -1
  187. package/dist/framework-validation.d.ts +6 -0
  188. package/dist/framework-validation.js +89 -24
  189. package/dist/framework-validation.js.map +1 -1
  190. package/dist/generators/common/base.js +57 -17
  191. package/dist/generators/common/base.js.map +1 -1
  192. package/dist/governance-activation/activation-state.js +39 -7
  193. package/dist/governance-activation/activation-state.js.map +1 -1
  194. package/dist/governance-activation/authority-records.d.ts +4 -0
  195. package/dist/governance-activation/authority-records.js +24 -0
  196. package/dist/governance-activation/authority-records.js.map +1 -0
  197. package/dist/governance-activation/commands.d.ts +9 -1
  198. package/dist/governance-activation/commands.js +392 -97
  199. package/dist/governance-activation/commands.js.map +1 -1
  200. package/dist/governance-activation/compatibility.d.ts +11 -8
  201. package/dist/governance-activation/compatibility.js +37 -23
  202. package/dist/governance-activation/compatibility.js.map +1 -1
  203. package/dist/governance-activation/doctor.js +40 -16
  204. package/dist/governance-activation/doctor.js.map +1 -1
  205. package/dist/governance-activation/github-config.d.ts +17 -0
  206. package/dist/governance-activation/github-config.js +88 -0
  207. package/dist/governance-activation/github-config.js.map +1 -0
  208. package/dist/governance-activation/github-discovery.d.ts +18 -0
  209. package/dist/governance-activation/github-discovery.js +229 -0
  210. package/dist/governance-activation/github-discovery.js.map +1 -0
  211. package/dist/governance-activation/github-ports.d.ts +12 -0
  212. package/dist/governance-activation/github-ports.js +4 -0
  213. package/dist/governance-activation/github-ports.js.map +1 -0
  214. package/dist/governance-activation/github-publication.d.ts +3 -0
  215. package/dist/governance-activation/github-publication.js +190 -0
  216. package/dist/governance-activation/github-publication.js.map +1 -0
  217. package/dist/governance-activation/historical-common.d.ts +98 -0
  218. package/dist/governance-activation/historical-common.js +269 -0
  219. package/dist/governance-activation/historical-common.js.map +1 -0
  220. package/dist/governance-activation/historical-credential-policy.d.ts +3 -0
  221. package/dist/governance-activation/historical-credential-policy.js +91 -0
  222. package/dist/governance-activation/historical-credential-policy.js.map +1 -0
  223. package/dist/governance-activation/historical-inputs.d.ts +6 -0
  224. package/dist/governance-activation/historical-inputs.js +57 -0
  225. package/dist/governance-activation/historical-inputs.js.map +1 -0
  226. package/dist/governance-activation/historical-safety.d.ts +9 -0
  227. package/dist/governance-activation/historical-safety.js +102 -0
  228. package/dist/governance-activation/historical-safety.js.map +1 -0
  229. package/dist/governance-activation/historical-source-metadata.d.ts +31 -0
  230. package/dist/governance-activation/historical-source-metadata.js +55 -0
  231. package/dist/governance-activation/historical-source-metadata.js.map +1 -0
  232. package/dist/governance-activation/historical-state.d.ts +12 -50
  233. package/dist/governance-activation/historical-state.js +195 -308
  234. package/dist/governance-activation/historical-state.js.map +1 -1
  235. package/dist/governance-activation/historical-v1-auxiliary.d.ts +1 -0
  236. package/dist/governance-activation/historical-v1-auxiliary.js +43 -0
  237. package/dist/governance-activation/historical-v1-auxiliary.js.map +1 -0
  238. package/dist/governance-activation/historical-v1-phase-contracts.d.ts +31 -0
  239. package/dist/governance-activation/historical-v1-phase-contracts.js +46 -0
  240. package/dist/governance-activation/historical-v1-phase-contracts.js.map +1 -0
  241. package/dist/governance-activation/historical-v2.d.ts +53 -0
  242. package/dist/governance-activation/historical-v2.js +313 -0
  243. package/dist/governance-activation/historical-v2.js.map +1 -0
  244. package/dist/governance-activation/history-contracts.d.ts +21 -12
  245. package/dist/governance-activation/history-contracts.js +99 -27
  246. package/dist/governance-activation/history-contracts.js.map +1 -1
  247. package/dist/governance-activation/inputs.d.ts +8 -2
  248. package/dist/governance-activation/inputs.js +41 -6
  249. package/dist/governance-activation/inputs.js.map +1 -1
  250. package/dist/governance-activation/migration-history.d.ts +43 -5
  251. package/dist/governance-activation/migration-history.js +231 -50
  252. package/dist/governance-activation/migration-history.js.map +1 -1
  253. package/dist/governance-activation/migration.d.ts +7 -4
  254. package/dist/governance-activation/migration.js +53 -252
  255. package/dist/governance-activation/migration.js.map +1 -1
  256. package/dist/governance-activation/phase-azure.d.ts +3 -0
  257. package/dist/governance-activation/phase-azure.js +205 -0
  258. package/dist/governance-activation/phase-azure.js.map +1 -0
  259. package/dist/governance-activation/phase-bootstrap-state.js +3 -0
  260. package/dist/governance-activation/phase-bootstrap-state.js.map +1 -1
  261. package/dist/governance-activation/phase-github.d.ts +3 -0
  262. package/dist/governance-activation/phase-github.js +192 -0
  263. package/dist/governance-activation/phase-github.js.map +1 -0
  264. package/dist/governance-activation/phase-governance.js +8 -2
  265. package/dist/governance-activation/phase-governance.js.map +1 -1
  266. package/dist/governance-activation/public-plans.d.ts +36 -0
  267. package/dist/governance-activation/public-plans.js +100 -0
  268. package/dist/governance-activation/public-plans.js.map +1 -0
  269. package/dist/governance-activation/read-only.d.ts +3 -1
  270. package/dist/governance-activation/read-only.js +7 -3
  271. package/dist/governance-activation/read-only.js.map +1 -1
  272. package/dist/governance-activation/reconciliation.js +10 -0
  273. package/dist/governance-activation/reconciliation.js.map +1 -1
  274. package/dist/governance-activation/seed-lifecycle.js +14 -25
  275. package/dist/governance-activation/seed-lifecycle.js.map +1 -1
  276. package/dist/governance-activation/source-of-truth.d.ts +21 -5
  277. package/dist/governance-activation/source-of-truth.js +102 -13
  278. package/dist/governance-activation/source-of-truth.js.map +1 -1
  279. package/dist/governance-activation/task-projection.d.ts +4 -1
  280. package/dist/governance-activation/task-projection.js +32 -3
  281. package/dist/governance-activation/task-projection.js.map +1 -1
  282. package/dist/governance-activation/task-writes.d.ts +42 -0
  283. package/dist/governance-activation/task-writes.js +250 -0
  284. package/dist/governance-activation/task-writes.js.map +1 -0
  285. package/dist/governance-activation/transition-files.d.ts +12 -0
  286. package/dist/governance-activation/transition-files.js +109 -0
  287. package/dist/governance-activation/transition-files.js.map +1 -0
  288. package/dist/governance-activation/transition-planning.d.ts +3 -1
  289. package/dist/governance-activation/transition-planning.js +158 -20
  290. package/dist/governance-activation/transition-planning.js.map +1 -1
  291. package/dist/governance-activation/transition-ports.d.ts +31 -3
  292. package/dist/governance-activation/transition-records.d.ts +11 -1
  293. package/dist/governance-activation/transition-records.js +52 -6
  294. package/dist/governance-activation/transition-records.js.map +1 -1
  295. package/dist/governance-activation/transitions.d.ts +5 -0
  296. package/dist/governance-activation/transitions.js +271 -37
  297. package/dist/governance-activation/transitions.js.map +1 -1
  298. package/dist/governance-assessment/engine.js +22 -15
  299. package/dist/governance-assessment/engine.js.map +1 -1
  300. package/dist/governance-assessment/project.d.ts +2 -0
  301. package/dist/governance-assessment/project.js +2 -1
  302. package/dist/governance-assessment/project.js.map +1 -1
  303. package/dist/interactive.d.ts +0 -1
  304. package/dist/interactive.js +3 -22
  305. package/dist/interactive.js.map +1 -1
  306. package/dist/openspec-profile.d.ts +2 -1
  307. package/dist/openspec-profile.js +11 -41
  308. package/dist/openspec-profile.js.map +1 -1
  309. package/dist/repository-governance.d.ts +10 -5
  310. package/dist/repository-governance.js +178 -92
  311. package/dist/repository-governance.js.map +1 -1
  312. package/dist/telemetry/contract.d.ts +1 -1
  313. package/dist/telemetry/contract.js +3 -0
  314. package/dist/telemetry/contract.js.map +1 -1
  315. package/dist/workstation-catalog.d.ts +13 -1
  316. package/dist/workstation-catalog.js +122 -0
  317. package/dist/workstation-catalog.js.map +1 -1
  318. package/dist/workstation.d.ts +69 -14
  319. package/dist/workstation.js +600 -215
  320. package/dist/workstation.js.map +1 -1
  321. package/docs/cli-reference.md +59 -21
  322. package/docs/configuration-and-manifests.md +9 -8
  323. package/docs/prerequisites.md +93 -18
  324. package/docs/repository-governance.md +68 -40
  325. package/docs/spec-workflows-and-agents.md +132 -13
  326. package/package.json +1 -1
@@ -1,6 +1,8 @@
1
- import { lstat, readFile } from 'node:fs/promises';
1
+ import { lstat, readFile, readdir } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
- import { getFrameworkDefinition } from './application/project/catalog.js';
3
+ import { getCodingAgent, getFrameworkDefinition } from './application/project/catalog.js';
4
+ import { SPEC_KIT_AGENT_SURFACES, SPEC_KIT_WORKFLOW_IDS } from './domain/project/catalog.js';
5
+ import { validateArtifactPathParts } from './domain/project/paths.js';
4
6
  import { OPEN_SPEC_COPILOT_CLOUD_PATHS, openSpecIntegrationPaths } from './openspec-profile.js';
5
7
  function errorCode(error) {
6
8
  return typeof error === 'object' && error !== null && 'code' in error &&
@@ -8,15 +10,29 @@ function errorCode(error) {
8
10
  ? error.code
9
11
  : undefined;
10
12
  }
11
- async function markerIssue(root, pathParts) {
13
+ export async function frameworkMarkerIssue(root, pathParts) {
12
14
  const display = pathParts.join('/');
13
15
  try {
14
- const details = await lstat(path.join(root, ...pathParts));
15
- if (details.isSymbolicLink()) {
16
- return `Framework marker is a forbidden symlink: ${display}`;
17
- }
18
- if (!details.isFile()) {
19
- return `Framework marker is not a regular file: ${display}`;
16
+ validateArtifactPathParts(pathParts, 'Framework marker');
17
+ let parent = root;
18
+ for (const [index, part] of pathParts.entries()) {
19
+ const names = (await readdir(parent)).filter((name) => name.toLowerCase() === part.toLowerCase());
20
+ if (names.some((name) => name !== part)) {
21
+ return `Framework marker has a case collision: ${display}`;
22
+ }
23
+ const current = path.join(parent, part);
24
+ const details = await lstat(current);
25
+ if (details.isSymbolicLink()) {
26
+ return `Framework marker is a forbidden symlink: ${display}`;
27
+ }
28
+ const isLast = index === pathParts.length - 1;
29
+ if (isLast ? !details.isFile() : !details.isDirectory()) {
30
+ return `Framework marker is not a regular file or has a non-directory parent: ${display}`;
31
+ }
32
+ if (isLast && details.size === 0) {
33
+ return `Framework marker is empty: ${display}`;
34
+ }
35
+ parent = current;
20
36
  }
21
37
  return undefined;
22
38
  }
@@ -27,23 +43,43 @@ async function markerIssue(root, pathParts) {
27
43
  return `Unable to inspect framework marker ${display}: ${error instanceof Error ? error.message : String(error)}`;
28
44
  }
29
45
  }
46
+ export function specKitIntegrationPaths(agent) {
47
+ const surface = SPEC_KIT_AGENT_SURFACES[agent];
48
+ return SPEC_KIT_WORKFLOW_IDS.map((workflow) => [
49
+ ...surface.skillsRoot, `speckit-${workflow}`, 'SKILL.md'
50
+ ]);
51
+ }
52
+ export function frameworkIntegrationPaths(workflow, agent) {
53
+ return workflow === 'openspec' ? openSpecIntegrationPaths(agent) : specKitIntegrationPaths(agent);
54
+ }
55
+ export const OPEN_SPEC_CODEX_TARGET_PATH = ['.agents', 'skills', '.openspec-target'];
56
+ export const SPEC_KIT_CODEX_CONFIG_PATH = ['.codex', 'config.toml'];
57
+ export function frameworkOutputPaths(selection) {
58
+ const definition = getFrameworkDefinition(selection.workflow);
59
+ return [
60
+ ...definition.baseMarkers,
61
+ ...selection.agents.flatMap((agent) => frameworkIntegrationPaths(selection.workflow, agent)),
62
+ ...(selection.agents.includes('codex')
63
+ ? [[...(selection.workflow === 'openspec' ? OPEN_SPEC_CODEX_TARGET_PATH : SPEC_KIT_CODEX_CONFIG_PATH)]]
64
+ : [])
65
+ ];
66
+ }
30
67
  async function unexpectedMarkerIssue(root, pathParts) {
31
68
  const display = pathParts.join('/');
32
- try {
33
- await lstat(path.join(root, ...pathParts));
34
- return `Unexpected framework marker: ${display}`;
35
- }
36
- catch (error) {
37
- if (errorCode(error) === 'ENOENT') {
38
- return undefined;
39
- }
40
- return `Unable to inspect framework marker ${display}: ${error instanceof Error ? error.message : String(error)}`;
69
+ const issue = await frameworkMarkerIssue(root, pathParts);
70
+ if (issue?.startsWith('Missing framework marker:')) {
71
+ return undefined;
41
72
  }
73
+ return issue ?? `Unexpected framework marker: ${display}`;
42
74
  }
43
75
  async function validateSpecKitState(root, selection) {
44
76
  const issues = [];
45
77
  let parsed;
46
78
  try {
79
+ const unsafe = await frameworkMarkerIssue(root, ['.specify', 'integration.json']);
80
+ if (unsafe) {
81
+ return [unsafe];
82
+ }
47
83
  parsed = JSON.parse(await readFile(path.join(root, '.specify', 'integration.json'), 'utf8'));
48
84
  }
49
85
  catch (error) {
@@ -53,8 +89,14 @@ async function validateSpecKitState(root, selection) {
53
89
  return ['Spec Kit integration state must be a JSON object.'];
54
90
  }
55
91
  const state = parsed;
56
- const expectedDefault = selection.defaultAgent === 'github-copilot' ? 'copilot' : selection.defaultAgent;
92
+ const expectedDefault = selection.defaultAgent
93
+ ? getCodingAgent(selection.defaultAgent)?.integrationIds['spec-kit']
94
+ : undefined;
57
95
  const defaultIntegration = state.default_integration ?? state.integration;
96
+ if (state.default_integration !== undefined && state.integration !== undefined &&
97
+ state.default_integration !== state.integration) {
98
+ issues.push('Spec Kit integration and default_integration disagree.');
99
+ }
58
100
  if (defaultIntegration !== expectedDefault) {
59
101
  issues.push(`Spec Kit default integration is ${JSON.stringify(defaultIntegration)}; expected ${JSON.stringify(expectedDefault)}.`);
60
102
  }
@@ -63,7 +105,7 @@ async function validateSpecKitState(root, selection) {
63
105
  issues.push('Spec Kit installed_integrations must be a string array.');
64
106
  return issues;
65
107
  }
66
- const expected = selection.agents.map((agent) => agent === 'github-copilot' ? 'copilot' : agent);
108
+ const expected = selection.agents.map((agent) => getCodingAgent(agent).integrationIds['spec-kit']);
67
109
  for (const integration of expected) {
68
110
  if (!installed.includes(integration)) {
69
111
  issues.push(`Spec Kit integration state does not include selected integration ${integration}.`);
@@ -73,12 +115,35 @@ async function validateSpecKitState(root, selection) {
73
115
  }
74
116
  export async function validateFrameworkInstallation(root, selection) {
75
117
  const definition = getFrameworkDefinition(selection.workflow);
118
+ if (selection.agents.length === 0 ||
119
+ new Set(selection.agents).size !== selection.agents.length ||
120
+ selection.agents.some((agent) => getCodingAgent(agent)?.id !== agent)) {
121
+ return ['Framework selection requires nonempty, unique canonical coding-agent IDs.'];
122
+ }
123
+ if (selection.defaultAgent && !selection.agents.includes(selection.defaultAgent)) {
124
+ return ['Framework default agent must be one of the selected agents.'];
125
+ }
126
+ if (selection.workflow === 'openspec' && selection.defaultAgent) {
127
+ return ['OpenSpec framework state cannot record a default agent.'];
128
+ }
76
129
  const markers = [
77
130
  ...definition.baseMarkers,
78
- ...selection.agents.flatMap((agent) => definition.agentMarkers[agent])
131
+ ...selection.agents.flatMap((agent) => agent === 'codex' ? frameworkIntegrationPaths(selection.workflow, agent) : definition.agentMarkers[agent])
79
132
  ];
80
- const issues = (await Promise.all(markers.map((marker) => markerIssue(root, marker))))
133
+ const issues = (await Promise.all(markers.map((marker) => frameworkMarkerIssue(root, marker))))
81
134
  .filter((issue) => issue !== undefined);
135
+ if (selection.workflow === 'openspec' && selection.agents.includes('codex')) {
136
+ const targetIssue = await frameworkMarkerIssue(root, OPEN_SPEC_CODEX_TARGET_PATH);
137
+ if (!targetIssue) {
138
+ const target = await readFile(path.join(root, ...OPEN_SPEC_CODEX_TARGET_PATH), 'utf8');
139
+ if (target.trim() !== 'codex') {
140
+ issues.push('OpenSpec shared skills target does not identify the selected Codex integration.');
141
+ }
142
+ }
143
+ else if (!targetIssue.startsWith('Missing framework marker:')) {
144
+ issues.push(targetIssue);
145
+ }
146
+ }
82
147
  if (selection.workflow === 'spec-kit' && !selection.defaultAgent) {
83
148
  issues.push('Spec Kit framework state is missing its default agent.');
84
149
  }
@@ -93,9 +158,9 @@ export async function validateFrameworkInitialization(root, selection, copilotCl
93
158
  return issues;
94
159
  }
95
160
  const integrationMarkers = selection.agents.flatMap((agent) => openSpecIntegrationPaths(agent));
96
- const integrationIssues = (await Promise.all(integrationMarkers.map((marker) => markerIssue(root, marker)))).filter((issue) => issue !== undefined);
161
+ const integrationIssues = (await Promise.all(integrationMarkers.map((marker) => frameworkMarkerIssue(root, marker)))).filter((issue) => issue !== undefined);
97
162
  const cloudIssues = copilotCloud
98
- ? (await Promise.all(OPEN_SPEC_COPILOT_CLOUD_PATHS.map((marker) => markerIssue(root, [...marker])))).filter((issue) => issue !== undefined)
163
+ ? (await Promise.all(OPEN_SPEC_COPILOT_CLOUD_PATHS.map((marker) => frameworkMarkerIssue(root, marker)))).filter((issue) => issue !== undefined)
99
164
  : (await Promise.all(OPEN_SPEC_COPILOT_CLOUD_PATHS.map((marker) => unexpectedMarkerIssue(root, marker)))).filter((issue) => issue !== undefined);
100
165
  return [...new Set([...issues, ...integrationIssues, ...cloudIssues])];
101
166
  }
@@ -1 +1 @@
1
- {"version":3,"file":"framework-validation.js","sourceRoot":"","sources":["../src/framework-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAS/B,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK;QACnE,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ;QACtD,CAAC,CAAE,KAA0B,CAAC,IAAI;QAClC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,SAAmB;IAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;YAC7B,OAAO,4CAA4C,OAAO,EAAE,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACtB,OAAO,2CAA2C,OAAO,EAAE,CAAC;QAC9D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,6BAA6B,OAAO,EAAE,CAAC;QAChD,CAAC;QACD,OAAO,sCAAsC,OAAO,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACpH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,IAAY,EACZ,SAA4B;IAE5B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;QAC3C,OAAO,gCAAgC,OAAO,EAAE,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,sCAAsC,OAAO,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACpH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,IAAY,EACZ,SAA6B;IAE7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAY,CAAC;IAC1G,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,6CAA6C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjH,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,CAAC,mDAAmD,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,KAAK,GAAG,MAAiC,CAAC;IAChD,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,KAAK,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;IACzG,MAAM,kBAAkB,GAAG,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,WAAW,CAAC;IAC1E,IAAI,kBAAkB,KAAK,eAAe,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACrI,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,sBAAsB,CAAC;IAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC;QACtF,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjG,KAAK,MAAM,WAAW,IAAI,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,oEAAoE,WAAW,GAAG,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,IAAY,EACZ,SAA6B;IAE7B,MAAM,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG;QACd,GAAG,UAAU,CAAC,WAAW;QACzB,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KACvE,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;SACnF,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC3D,IAAI,SAAS,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACxE,CAAC;SAAM,IAAI,SAAS,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,IAAY,EACZ,SAA6B,EAC7B,YAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpE,IAAI,SAAS,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5D,wBAAwB,CAAC,KAAK,CAAC,CAChC,CAAC;IACF,MAAM,iBAAiB,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAC1C,kBAAkB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAC9D,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,YAAY;QAC9B,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAChB,6BAA6B,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAC9E,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;QAC5D,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAChB,6BAA6B,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CACnF,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,iBAAiB,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAiB;IAC1D,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;QAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"framework-validation.js","sourceRoot":"","sources":["../src/framework-validation.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,8 @@ import { OPEN_SPEC_DELIVERY } from '../../openspec-profile.js';
7
7
  import { OPEN_SPEC_PROFILE } from '../../openspec-profile.js';
8
8
  import { OPEN_SPEC_WORKFLOW_IDS } from '../../openspec-profile.js';
9
9
  import { renderBackendDockerfile } from '../containers/images.js';
10
- import { renderGovernanceAssessmentGuide } from '../../repository-governance.js';
10
+ import { governanceInvocationGuide, renderGovernanceAssessmentGuide } from '../../repository-governance.js';
11
+ import { activationContractVersion } from '../../governance-activation/identity.js';
11
12
  import { renderStandardDockerfile } from '../containers/images.js';
12
13
  import { renderStandardEnv } from '../standard/configuration.js';
13
14
  import { renderDockerignore } from '../containers/context.js';
@@ -96,15 +97,34 @@ export function renderDeterministicSetupGuide(plan) {
96
97
  const frontend = plan.includeFrontend
97
98
  ? '- Frontend build: `npm run build` from `frontend/` after `npm ci`.'
98
99
  : '- Frontend build: inapplicable because no frontend was generated.';
100
+ const hasSlashAgents = plan.agents.some((agent) => agent.id === 'github-copilot' || agent.id === 'claude');
101
+ const setupInvocation = hasSlashAgents ? '`/liftoff-setup`' : '`$liftoff-setup`';
99
102
  const governance = plan.governanceProfile.id === 'none'
100
- ? 'Repository governance is disabled, so there is no `/liftoff-setup` integration, managed phase graph, or post-init governance activation path.'
101
- : plan.specWorkflow.id === 'openspec'
102
- ? 'Run `/liftoff-setup` from a selected agent. It verifies, syncs, and archives the generated OpenSpec bootstrap seed, then stops at explicit authority gates. Commit and push require separate approvals.'
103
- : 'Run `/liftoff-setup` from a selected agent. It verifies the real `specs/000-liftoff-bootstrap` bundle and official Spec Kit markers, runs applicable checks, and only then finalizes the local bootstrap projection and receipt. It creates no branch or external archive.';
103
+ ? `Repository governance is disabled, so there is no ${setupInvocation} integration (native ${hasSlashAgents ? '`liftoff-setup`' : '`$liftoff-setup`'} integration), managed phase graph, or post-init governance activation path.`
104
+ : plan.agents.length === 0
105
+ ? `${governanceInvocationGuide(plan)} This legacy handoff does not initialize the framework or install coding-agent integrations. Review \`.liftoff/governance/README.md\` and the CLI's local diagnostics for separately approved adoption requirements.`
106
+ : plan.specWorkflow.id === 'openspec'
107
+ ? `Run ${setupInvocation} from a selected agent (${governanceInvocationGuide(plan)}). It verifies, syncs, and archives the generated OpenSpec bootstrap seed, then guides the requested activation through independent approval gates. Commit and push require separate approvals.`
108
+ : `Run ${setupInvocation} from a selected agent (${governanceInvocationGuide(plan)}). It verifies the real \`specs/000-liftoff-bootstrap\` bundle and official Spec Kit markers, runs applicable checks, and only then finalizes the local bootstrap projection and receipt. Local finalization creates no branch or external archive; the requested activation journey follows through independent approvals.`;
104
109
  return `## Deterministic Setup
105
110
 
106
111
  ${governance}
107
112
 
113
+ ${plan.governanceProfile.id === 'none' ? '' : `Setup begins with \`liftoff governance status --scope local --json\`.
114
+ Local-ready is a milestone, not proof of deployment. Unless you request local-only
115
+ operation or decline later authority, setup presents the activation plan and
116
+ continues through approved repair/migration, publication, deployment, qualification,
117
+ and live enforcement verification. Prefer the CLI's supported \`nextActions\`,
118
+ including their executable, argument array, working directory, scope, and required
119
+ approval. Never fabricate approval/state JSON or provide secrets in chat.
120
+ Keep explicit local scope: unscoped governance defaults to activation.
121
+ Planning saves a disclosed external preview, not approval; apply-next without
122
+ \`--execute\` is strictly read-only. Requested \`--inputs <public-json-file>\`
123
+ must follow the CLI's public schema and contain no credentials.
124
+ Consistent incomplete verification exits 2; it is not a failed or completed journey.
125
+ Future retention/disposal remains separate lifecycle work.
126
+
127
+ `}
108
128
  The local baseline contains only applicable checks:
109
129
 
110
130
  - \`liftoff validate\`
@@ -146,10 +166,10 @@ export function renderAdvisoryReadinessGuide(plan) {
146
166
  }).join('\n');
147
167
  }
148
168
  export function renderSpecWorkflowGuide(plan) {
149
- const agents = plan.agents.map((agent) => `${agent.label}${plan.defaultAgent?.id === agent.id ? ' (default integration)' : ''}`).join(', ');
169
+ const agents = plan.agents.map((agent) => `${agent.label}${plan.defaultAgent?.id === agent.id ? ' (default integration)' : ''}`).join(', ') || 'Not recorded; legacy framework adoption requires separate review';
150
170
  const ownership = plan.specWorkflow.id === 'openspec'
151
171
  ? 'OpenSpec workflow skills, commands, configuration, and optional cloud-agent files'
152
- : 'Spec Kit core files, integration state, and the selected Copilot or Claude skill integrations';
172
+ : 'Spec Kit core files, integration state, and the selected native skill integrations';
153
173
  const openSpecDetails = plan.specWorkflow.id === 'openspec'
154
174
  ? [
155
175
  `- OpenSpec profile: ${OPEN_SPEC_PROFILE}; delivery: ${OPEN_SPEC_DELIVERY}; workflows: ${OPEN_SPEC_WORKFLOW_IDS.join(', ')}`,
@@ -163,6 +183,9 @@ export function renderSpecWorkflowGuide(plan) {
163
183
  - Workflow: ${plan.specWorkflow.label} ${plan.framework.version}
164
184
  - AI coding agents: ${agents}
165
185
  ${openSpecDetails ? `${openSpecDetails}\n` : ''}
186
+ ${plan.agents.some((agent) => agent.id === 'codex')
187
+ ? `- OpenAI Codex: project-local \`.agents/skills\`; invoke \`${plan.specWorkflow.id === 'openspec' ? '$openspec-propose' : '$speckit-specify'}\` or select a skill with \`/skills\`. No deprecated global custom prompts or Copilot/Claude command files are required.\n`
188
+ : ''}
166
189
  - Framework ownership: the official initializer owns ${ownership}. Liftoff validates these files but excludes framework-owned output and one-time seed content from managed-core hashes.
167
190
  - Deferred tools: advisory workstation checks may be deferred. Liftoff never claims they are installed and never installs them without \`--install-tools\`.
168
191
 
@@ -178,6 +201,12 @@ liftoff doctor
178
201
  \`\`\`
179
202
 
180
203
  For an existing OpenSpec project, change workflow delivery with \`openspec config profile\` and refresh framework-owned files with \`openspec update\`. Plain \`liftoff update\` does not regenerate OpenSpec integrations.
204
+ For an additive agent change, preview \`liftoff repair --check --add-agents codex\`
205
+ instead of reinitializing the application. Existing selections and the Spec Kit
206
+ default remain unchanged unless an explicit reviewed default change is requested.
207
+ Machine installation, dependency installation, and global-profile configuration
208
+ remain independently authorized. Compatible official preview coding agents are
209
+ usable with notices; tested runtime and framework pins still apply.
181
210
  `;
182
211
  }
183
212
  export function renderGeneratedConfigurationGuide(plan) {
@@ -237,28 +266,36 @@ Configure only the integrations you use:
237
266
  export function renderGeneratedUpdateGuide(plan) {
238
267
  const governance = plan.governanceProfile.id === 'none'
239
268
  ? 'Repository governance is disabled for this project, so Liftoff does not generate setup integrations, a managed phase graph, credential-policy schema, or post-init setup command.'
240
- : '`single-maintainer-gitflow` repository governance generates deterministic setup artifacts only. Review `.liftoff/governance/README.md`, then run `/liftoff-setup` from a selected agent. Live enforcement requires evidence and explicit approval; it is never inferred from generated files.';
269
+ : plan.agents.length === 0
270
+ ? `${governanceInvocationGuide(plan)} Managed-core maintenance does not initialize a legacy framework or install native integrations. Use the CLI's local diagnostics and \`.liftoff/governance/README.md\` to review supported adoption requirements.`
271
+ : `Initialization generates deterministic setup artifacts only. Review \`.liftoff/governance/README.md\`, then use native setup (${governanceInvocationGuide(plan)}) for local readiness and the requested separately approved activation journey. Live enforcement requires actual verification and explicit approval; it is never inferred from generated files.`;
241
272
  return `## Safe Liftoff Updates
242
273
 
243
274
  \`liftoff upgrade\` replaces a supported global Liftoff CLI installation; it does not inspect or modify this project. Check and apply CLI replacement separately with \`liftoff upgrade --check\` and \`liftoff upgrade\`.
244
275
 
245
276
  ${governance}
246
277
 
247
- \`liftoff update\` maintains explicit Liftoff core files, currently the repository-governance policy, context, guide, phase graph, compatibility metadata, credential-policy schema, and selected-agent \`/liftoff-setup\` and \`/liftoff-governance-assess\` integrations. Start with \`liftoff update --check\` for the human compatibility and migration preview. Check changes no project bytes and discloses a preview receipt stored outside the repository; this receipt is not approval. Plain update requires the matching preview and explicit approval. Automation can use \`liftoff update --check --json\` and approve the exact effective fingerprint with \`liftoff update --approve-plan <fingerprint> --json\`.
278
+ \`liftoff update\` maintains explicit Liftoff core files, currently the repository-governance policy, context, guide, phase graph, compatibility metadata, credential-policy schema, and selected-agent native \`liftoff-setup\` and \`liftoff-governance-assess\` integrations. Start with \`liftoff update --check\` for the human compatibility and migration preview. Check changes no project bytes and discloses a preview receipt stored outside the repository; this receipt is not approval. Plain update requires the matching preview and explicit approval. Automation can use \`liftoff update --check --json\` and approve the exact effective fingerprint with \`liftoff update --approve-plan <fingerprint> --json\`.
248
279
 
249
280
  Application source, tests, dependencies and locks, schemas, containers, environment files, documentation, and infrastructure become project-owned after generation. No update mode, including \`--force\`, can restore or replace them. Enabling a previously absent frontend or environment in \`liftoff.config.json\` may provision that component once at absent destinations; a collision blocks the whole component and cannot be forced.
250
281
 
251
282
  Project template modernization is a separately reviewed production change and is not performed by ordinary update or by the existing non-Liftoff \`migrate\` command. Managed-core conflicts are skipped by default; after reviewing every listed core path, \`liftoff update --force\` may replace only those core conflicts. Managed-core orphans remain on disk, and update never installs dependencies. A failed transaction is rolled back, but Liftoff retains no backup after a successful core overwrite.
252
283
 
253
- Activation migration is a separate explicitly approved write set. A supported v1 source retains original state, evidence, plans, approvals, and source metadata in \`governance/history\` before a linked v2 successor is created. History never becomes managed core or current execution proof. Revalidation uses only the finite reviewed local operations and stops before provider access, publication, or independent authority gates. Failure after migration commits leaves v2 blocked and resumable; repair the named cause, run check again, and approve the remaining work. History is not automatically committed, pushed, or removed with preview receipts. Force never bypasses preview, approval, compatibility, or ownership checks.
284
+ Activation migration is a separate explicitly approved write set. A supported v1/v2 source retains original state, evidence, plans, approvals, and source metadata in \`governance/history\` before a linked v${activationContractVersion} successor is created. History never becomes managed core or current execution proof. Revalidation uses only the finite reviewed local operations and stops before provider access, publication, or independent authority gates. Failure after migration commits leaves v${activationContractVersion} blocked and resumable; repair the named cause, run check again, and approve the remaining work. History is not automatically committed, pushed, or removed with preview receipts. Force never bypasses preview, approval, compatibility, or ownership checks.
285
+
286
+ Project repair is a separate scope: use \`liftoff repair --check\` for its exact
287
+ project-bound preview, or \`liftoff repair --check --add-agents codex\` for additive
288
+ integration work. Apply only the current reviewed fingerprint. Sensitive-state
289
+ inspection, backend migration, credentials, resources, and recovery retain
290
+ independent authorities. Do not reinitialize the project or hand-edit provenance.
254
291
 
255
292
  Update JSON uses schema 3. Exit 0 means clean state or completion of the approved scope, 2 means differences or committed migration with incomplete revalidation, and 1 means a rejected or failed operation. Local migration completion does not establish live governance.
256
293
 
257
294
  Liftoff rejects malformed, traversal, absolute, drive-qualified, UNC, separator-containing, or symlink-escaping manifest paths before artifact access. If the manifest is unsafe or malformed, restore \`liftoff.manifest.json\` from version control or regenerate the project with a matching Liftoff version; do not hand-edit unsafe paths. Run \`liftoff <command> --help\` for command-specific syntax because unknown flags, subcommands, values, and extra arguments fail before any write.
258
295
 
259
296
  ${plan.governanceProfile.id === 'none'
260
- ? 'No `/liftoff-governance-assess` integration is generated while governance is disabled.'
261
- : renderGovernanceAssessmentGuide()}
297
+ ? 'No native `liftoff-governance-assess` integration is generated while governance is disabled.'
298
+ : renderGovernanceAssessmentGuide(plan)}
262
299
  `;
263
300
  }
264
301
  export function renderRootInfrastructureGuide(plan) {
@@ -267,10 +304,11 @@ export function renderRootInfrastructureGuide(plan) {
267
304
  ? ''
268
305
  : `These commands are reference material, not the next setup action. Do not run this
269
306
  sequence until the separately approved \`application-foundation\` governance phase
270
- authorizes the exact infrastructure mutation. \`/liftoff-setup\` can evaluate and
271
- resume managed phases, but it does not imply that every managed phase has an
272
- executable production adapter. An unavailable production adapter remains a
273
- blocker; do not bypass it by running the reference commands directly.
307
+ authorizes the exact infrastructure mutation. ${plan.agents.length === 0
308
+ ? `${governanceInvocationGuide(plan)} Use the CLI's local diagnostics to review the legacy framework boundary, not these deployment commands.`
309
+ : `Use native setup\n(${governanceInvocationGuide(plan)}) and its supported next actions.`}
310
+ An unavailable production adapter remains a blocker; do not bypass it by running
311
+ the reference commands directly.
274
312
 
275
313
  `;
276
314
  return `## Infrastructure
@@ -282,7 +320,9 @@ tofu plan -var-file=${environment}.tfvars
282
320
  tofu apply -var-file=${environment}.tfvars
283
321
  \`\`\`
284
322
 
285
- The first apply uses a public bootstrap image. Follow \`infrastructure/opentofu/azure/README.md\` to build the generated backend in ACR and apply its image.
323
+ ${plan.governanceProfile.id === 'none'
324
+ ? 'The first apply uses a public bootstrap image. Follow `infrastructure/opentofu/azure/README.md` to build the generated backend in ACR and apply its image.'
325
+ : 'Approved activation requires the real source-bound immutable application artifact before deployment. A public bootstrap image or an accepted deployment request never proves application readiness.'}
286
326
  `;
287
327
  }
288
328
  export function renderRootReadme(plan) {
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/generators/common/base.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAG7E,MAAM,UAAU,gBAAgB,CAC9B,GAAgB,EAChB,eAA4B,EAC5B,IAAoB,EAAE,OAAyB;IAE/C,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAC7E,GAAG,CAAC,mBAAmB,EAAE,SAAS,EAAE,CAAC,eAAe,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC7E,eAAe,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;QACnF,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;QAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;QAC1B,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;QACxB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;QACpE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;QAClC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE;KAC7C,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACb,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC;SACzE,UAAU,CAAC,YAAY,EAAE,aAAa,CAAC;SACvC,UAAU,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;SAClD,UAAU,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;SAClD,UAAU,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACxD,GAAG,CACD,oBAAoB,EACpB,SAAS,EACT,CAAC,YAAY,CAAC,EACd,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CACvG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAoB;IAChE,IAAI,eAAuB,CAAC;IAC5B,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,gBAAgB,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC;YACjE,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,EAAE,CAAC;QACP,eAAe,GAAG,kDAAkD,MAAM;2DACnB,CAAC;IAC1D,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,cAAc,EAAE,CAAC;QAC/C,eAAe,GAAG;;;SAGb,CAAC;IACR,CAAC;SAAM,CAAC;QACN,eAAe,GAAG;;cAER,CAAC;IACb,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;;;;;;;;;;CAUjD,CAAC,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;;;;gBAKlE,kBAAkB,CAAC,IAAI,CAAC;;CAEvC,CAAC,CAAC,CAAC,EAAE,CAAC;IACL,OAAO;;;;;EAKP,eAAe;;;EAGf,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAoB;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,gBAAgB;QAChF,CAAC,CAAC,8DAA8D;QAChE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,cAAc;YACnC,CAAC,CAAC,+DAA+D;YACjE,CAAC,CAAC,iCAAiC,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe;QACnC,CAAC,CAAC,oEAAoE;QACtE,CAAC,CAAC,mEAAmE,CAAC;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,MAAM;QACrD,CAAC,CAAC,+IAA+I;QACjJ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,UAAU;YACnC,CAAC,CAAC,yMAAyM;YAC3M,CAAC,CAAC,4QAA4Q,CAAC;IACnR,OAAO;;EAEP,UAAU;;;;;mBAKO,OAAO;EACxB,QAAQ;;;EAGR,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,uDAAuD,EAAE,2DAA2D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAChK,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,2GAA2G;;;;;;;CAOnL,CAAC;AACF,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAAoB;IAC/D,MAAM,QAAQ,GAA+B;QAC3C,QAAQ;QACR,UAAU;QACV,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,WAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC;IACF,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACzB,MAAM,WAAW,GAAG,6BAA6B,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACvC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;QAC1C,MAAM,QAAQ,GAAG;YACf,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,UAAU,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE;SAC9C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,EAAE,KAAK,QAAQ;YAC5B,CAAC,CAAC,iEAAiE;YACnE,CAAC,CAAC,EAAE,KAAK,WAAW;gBAClB,CAAC,CAAC,qEAAqE;gBACvE,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,KAAK,WAAW,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAoB;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACvC,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,CACtF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,UAAU;QACnD,CAAC,CAAC,mFAAmF;QACrF,CAAC,CAAC,+FAA+F,CAAC;IACpG,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,UAAU;QACzD,CAAC,CAAC;YACE,uBAAuB,iBAAiB,eAAe,kBAAkB,gBAAgB,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5H,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,gBAAgB,CAAC;gBAC5D,CAAC,CAAC,CAAC,kGAAkG,CAAC;gBACtG,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,IAAI,CAAC,IAAI,CAAC;QACd,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;;cAEK,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;sBACzC,MAAM;EAC1B,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC,EAAE;uDACQ,SAAS;;;;;EAK9D,4BAA4B,CAAC,IAAI,CAAC;;;;;;;;;;CAUnC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,IAAoB;IACpE,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe;QAChD,CAAC,CAAC,wGAAwG;QAC1G,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,gBAAgB;QACtF,CAAC,CAAC,qFAAqF;QACvF,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,cAAc;YACnC,CAAC,CAAC,4CAA4C;YAC9C,CAAC,CAAC,kCAAkC,CAAC;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,SAAS,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,gBAAgB,CAAC;IAClF,MAAM,QAAQ,GAAG,sDAAsD,EAAE,CAAC,CAAC,CAAC,wFAAwF,CAAC,CAAC,CAAC,EAAE;EACzK,EAAE;QACF,CAAC,CAAC,kJAAkJ;QACpJ,CAAC,CAAC,mHAAmH;+HACQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;;EAEnJ,EAAE;QACF,CAAC,CAAC,oFAAoF;QACtF,CAAC,CAAC,2KAA2K;EAC7K,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC,CAAC,4JAA4J,CAAC,CAAC,CAAC,EAAE;;;;;EAKvO,EAAE,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,EAAE;EAChE,aAAa;;;EAGb,MAAM,CAAC,CAAC,CAAC,yHAAyH,CAAC,CAAC,CAAC,EAAE;mHACtB,qBAAqB,CAAC,IAAI,CAAC;;;CAG7I,CAAC;IACA,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO;;EAET,QAAQ;uOAC6N,qBAAqB;CAC3P,CAAC;IACA,CAAC;IACD,OAAO;;EAEP,QAAQ;;;;;;;sMAO4L,qBAAqB;;CAE1N,CAAC;AACF,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAiB;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,MAAM;QACrD,CAAC,CAAC,mLAAmL;QACrL,CAAC,CAAC,+RAA+R,CAAC;IACpS,OAAO;;;;EAIP,UAAU;;;;;;;;;;;;;;EAcV,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,MAAM;QACpC,CAAC,CAAC,wFAAwF;QAC1F,CAAC,CAAC,+BAA+B,EAAE;CACpC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAoB;IAChE,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,MAAM;QACzD,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;;;;;;;CAOL,CAAC;IACA,OAAO;;EAEP,cAAc;gDACgC,WAAW;;sBAErC,WAAW;uBACV,WAAW;;;;CAIjC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,KAAK,IAAI,CAAC,WAAW;;;;;;;SAOvB,IAAI,CAAC,QAAQ,CAAC,KAAK;sBACN,IAAI,CAAC,QAAQ,CAAC,eAAe;;WAExC,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI;;;;;EAKjD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,EAAE;EAC/D,6BAA6B,CAAC,IAAI,CAAC;;;;;;;;;EASnC,iCAAiC,CAAC,IAAI,CAAC;EACvC,6BAA6B,CAAC,IAAI,CAAC;EACnC,0BAA0B,CAAC,IAAI,CAAC;EAChC,6BAA6B,CAAC,IAAI,CAAC;EACnC,uBAAuB,CAAC,IAAI,CAAC;CAC9B,CAAC;IACA,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,6EAA6E,kBAAkB,CAAC,IAAI,CAAC;CAC3J,CAAC,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;;0DAGK,kBAAkB,CAAC,IAAI,CAAC;CACjF,CAAC,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,cAAc,GAAG,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC;;;;;;CAMnD,CAAC,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,KAAK,IAAI,CAAC,WAAW;;;;;;;aAOjB,OAAO,CAAC,KAAK;sBACJ,OAAO,CAAC,cAAc;0BAClB,OAAO,CAAC,WAAW;WAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI;;gDAEH,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,mEAAmE,CAAC,CAAC,CAAC,EAAE;;;;EAI7I,kBAAkB;EAClB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,EAAE;;;;;;;;;EAS/D,6BAA6B,CAAC,IAAI,CAAC;;;;;;;;;;EAUnC,iCAAiC,CAAC,IAAI,CAAC;EACvC,6BAA6B,CAAC,IAAI,CAAC;EACnC,0BAA0B,CAAC,IAAI,CAAC;EAChC,6BAA6B,CAAC,IAAI,CAAC;EACnC,uBAAuB,CAAC,IAAI,CAAC;EAC7B,gBAAgB;EAChB,cAAc;CACf,CAAC;AACF,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO;;;;;;;;;;;CAWR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO;WACE,IAAI,CAAC,eAAe;gBACf,OAAO,CAAC,EAAE;iBACT,IAAI,CAAC,QAAQ,CAAC,EAAE;eAClB,IAAI,CAAC,MAAM,CAAC,IAAI;oEACqC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;;;yBAIlF,kCAAkC;;;;;;;;;;;;;CAa1D,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/generators/common/base.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,16 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { chmod, mkdir, open, rename, stat, unlink, writeFile } from 'node:fs/promises';
3
3
  import path from 'node:path';
4
- import { canonicalJson, sha256Hex } from '../domain/governance/activation/canonical-json.js';
4
+ import { canonicalJson, isRecord, sha256Hex } from '../domain/governance/activation/canonical-json.js';
5
5
  import { readProjectFile } from '../adapters/filesystem/project-files.js';
6
6
  import { resolveProjectPath } from '../adapters/filesystem/project-paths.js';
7
7
  import { validateArtifactPathParts } from '../domain/project/paths.js';
8
- import { validateUserActivationState } from '../domain/governance/activation/validators.js';
8
+ import { validateUserActivationState, validateEvidenceHeader } from '../domain/governance/activation/validators.js';
9
9
  import { withProjectMutationLock } from '../adapters/filesystem/project-lock.js';
10
10
  import { isHistoricalActivationIdentity } from '../domain/governance/policy/identity.js';
11
- import { inspectActivationMigrationHistory } from './migration-history.js';
11
+ import { activeActivationRecordsWithoutState, inspectActivationMigrationHistory } from './migration-history.js';
12
+ import { validateReadableHistoricalActivationState } from './historical-state.js';
13
+ import { parseHistoryJson } from './history-contracts.js';
12
14
  export class ActivationStateFileError extends Error {
13
15
  constructor(message) {
14
16
  super(message);
@@ -43,21 +45,51 @@ export function activationStateContentHash(content) {
43
45
  export async function loadActivationState(projectRoot) {
44
46
  const bytes = await readProjectFile(projectRoot, activationStatePathParts());
45
47
  if (bytes === undefined) {
48
+ const orphaned = await activeActivationRecordsWithoutState(projectRoot);
49
+ if (orphaned.length > 0) {
50
+ for (const parts of orphaned) {
51
+ if (parts[1] === 'evidence') {
52
+ const raw = await readProjectFile(projectRoot, parts);
53
+ if (raw) {
54
+ try {
55
+ const parsed = JSON.parse(raw.toString('utf8'));
56
+ if (parsed && typeof parsed === 'object') {
57
+ if ('header' in parsed && parsed.header)
58
+ validateEvidenceHeader(parsed.header);
59
+ else if ('extra' in parsed)
60
+ throw new Error('schema validation failed');
61
+ }
62
+ }
63
+ catch (err) {
64
+ throw new ActivationStateFileError(`Invalid ${parts.join('/')}: ${errorMessage(err)}`);
65
+ }
66
+ }
67
+ }
68
+ }
69
+ throw new ActivationStateFileError(`governance/activation-state.json is missing while active execution records remain: ${orphaned.map((parts) => parts.join('/')).join(', ')}.`);
70
+ }
46
71
  await inspectActivationMigrationHistory(projectRoot);
47
72
  return undefined;
48
73
  }
49
74
  const content = bytes.toString('utf8');
50
75
  let parsed;
51
76
  try {
52
- parsed = JSON.parse(content);
77
+ parsed = parseHistoryJson(bytes, 'governance/activation-state.json');
53
78
  }
54
79
  catch (error) {
55
80
  throw new ActivationStateFileError(`Unable to parse governance/activation-state.json: ${errorMessage(error)}`);
56
81
  }
57
82
  let state;
58
- if (typeof parsed === 'object' && parsed !== null && 'schemaVersion' in parsed && parsed.schemaVersion === 1 &&
59
- 'identity' in parsed && isHistoricalActivationIdentity(parsed.identity)) {
60
- throw new ActivationStateFileError('Historical activation v1 state is diagnostic-only. Run liftoff update --check to inspect a supported history-preserving v2 successor; original state and evidence remain untouched until explicit approval. Do not reset, delete, or hand-edit activation history.');
83
+ if (isRecord(parsed) && isHistoricalActivationIdentity(parsed.identity)) {
84
+ try {
85
+ validateReadableHistoricalActivationState(parsed);
86
+ }
87
+ catch (error) {
88
+ throw new ActivationStateFileError(`Invalid historical governance/activation-state.json: ${errorMessage(error)}. Historical activation state is diagnostic-only.`);
89
+ }
90
+ throw new ActivationStateFileError(`Historical activation v${parsed.identity.activationContractVersion} state is diagnostic-only. ` +
91
+ 'Run liftoff update --check to inspect its declared history-preserving v3 successor; original state, evidence, and approvals remain untouched until explicit approval. ' +
92
+ 'Do not reset, delete, relabel, or hand-edit activation history. This is not OpenTofu-state migration.');
61
93
  }
62
94
  try {
63
95
  state = validateUserActivationState(parsed);
@@ -1 +1 @@
1
- {"version":3,"file":"activation-state.js","sourceRoot":"","sources":["../../src/governance-activation/activation-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activation-state.js","sourceRoot":"","sources":["../../src/governance-activation/activation-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type UpdatePreviewOptions } from '../adapters/filesystem/update-previews.js';
2
+ import type { ApprovalEnvelope } from '../domain/governance/activation/types.js';
3
+ export declare function assertGovernanceApprovalIssued(projectRoot: string, envelope: ApprovalEnvelope, storage?: UpdatePreviewOptions): Promise<void>;
4
+ export declare function writeGovernanceApprovalAuthority(projectRoot: string, fingerprint: string, envelope: ApprovalEnvelope, storage?: UpdatePreviewOptions): Promise<void>;
@@ -0,0 +1,24 @@
1
+ import { realpath } from 'node:fs/promises';
2
+ import { createScopedUserLocalRecordStore } from '../adapters/filesystem/update-previews.js';
3
+ import { canonicalSha256, isRecord } from '../domain/governance/activation/canonical-json.js';
4
+ import { canonicalApprovalEnvelopeHash } from '../domain/governance/activation/approvals.js';
5
+ export async function assertGovernanceApprovalIssued(projectRoot, envelope, storage) {
6
+ const hash = canonicalApprovalEnvelopeHash(envelope);
7
+ const record = await createScopedUserLocalRecordStore(projectRoot, 'governance-approval', storage).read(hash);
8
+ if (!record || !isRecord(record.value) || record.value.kind !== 'liftoff-governance-approval' ||
9
+ record.value.schemaVersion !== 1 || record.value.projectRoot !== record.projectRoot ||
10
+ record.value.envelopeHash !== hash || !Object.hasOwn(record.value, 'envelope') ||
11
+ canonicalSha256(record.value.envelope) !== canonicalSha256(envelope)) {
12
+ throw new Error(`Approval ${envelope.id} has no project-bound authority issued by governance approve; imported files are not permission.`);
13
+ }
14
+ }
15
+ export async function writeGovernanceApprovalAuthority(projectRoot, fingerprint, envelope, storage) {
16
+ if (!/^[a-f0-9]{64}$/u.test(fingerprint))
17
+ throw new Error('Approval authority requires the exact governance preview fingerprint.');
18
+ const envelopeHash = canonicalApprovalEnvelopeHash(envelope);
19
+ await createScopedUserLocalRecordStore(projectRoot, 'governance-approval', storage).write(envelopeHash, {
20
+ schemaVersion: 1, kind: 'liftoff-governance-approval', projectRoot: await realpath(projectRoot),
21
+ fingerprint, envelopeHash, envelope
22
+ });
23
+ }
24
+ //# sourceMappingURL=authority-records.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authority-records.js","sourceRoot":"","sources":["../../src/governance-activation/authority-records.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,gCAAgC,EAA6B,MAAM,2CAA2C,CAAC;AACxH,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAG7F,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,WAAmB,EACnB,QAA0B,EAC1B,OAA8B;IAE9B,MAAM,IAAI,GAAG,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC,WAAW,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9G,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,6BAA6B;QAC3F,MAAM,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW;QACnF,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC;QAC9E,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,CAAC,EAAE,kGAAkG,CAAC,CAAC;IAC7I,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,WAAmB,EACnB,WAAmB,EACnB,QAA0B,EAC1B,OAA8B;IAE9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IACnI,MAAM,YAAY,GAAG,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,gCAAgC,CAAC,WAAW,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE;QACtG,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC,WAAW,CAAC;QAC/F,WAAW,EAAE,YAAY,EAAE,QAAQ;KACpC,CAAC,CAAC;AACL,CAAC"}
@@ -2,12 +2,20 @@ import type { PresentationSession } from '../terminal.js';
2
2
  import type { ParsedArgs } from '../domain/project/contracts.js';
3
3
  import type { CommandRunner } from '../process-runner.js';
4
4
  import { type GovernanceTransitionInspection } from './transitions.js';
5
+ import type { PhaseId } from '../domain/governance/activation/types.js';
6
+ import { type GovernanceScope, type ActivationConfiguration } from '../domain/governance/activation/types.js';
5
7
  interface GovernanceCommandContext {
6
8
  cwd: string;
7
9
  presentation: PresentationSession;
8
10
  runner?: CommandRunner;
9
11
  }
10
- export declare function inspectGovernanceTransition(projectRoot: string, options?: {
12
+ interface GovernanceInspectionOptions {
13
+ scope?: GovernanceScope;
14
+ command?: string;
15
+ activationInputs?: ActivationConfiguration;
16
+ recoverPhase?: PhaseId;
17
+ }
18
+ export declare function inspectGovernanceTransition(projectRoot: string, options?: GovernanceInspectionOptions & {
11
19
  runner?: CommandRunner;
12
20
  now?: Date;
13
21
  }): Promise<GovernanceTransitionInspection>;