@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,33 +1,7 @@
1
+ import { OPEN_SPEC_AGENT_SURFACES, OPEN_SPEC_SKILL_NAMES, OPEN_SPEC_WORKFLOW_IDS } from './domain/project/catalog.js';
2
+ export { OPEN_SPEC_AGENT_SURFACES, OPEN_SPEC_WORKFLOW_IDS };
1
3
  export const OPEN_SPEC_PROFILE = 'custom';
2
4
  export const OPEN_SPEC_DELIVERY = 'both';
3
- export const OPEN_SPEC_WORKFLOW_IDS = [
4
- 'propose',
5
- 'explore',
6
- 'new',
7
- 'continue',
8
- 'apply',
9
- 'update',
10
- 'ff',
11
- 'sync',
12
- 'archive',
13
- 'bulk-archive',
14
- 'verify',
15
- 'onboard'
16
- ];
17
- const OPEN_SPEC_SKILL_NAMES = {
18
- propose: 'openspec-propose',
19
- explore: 'openspec-explore',
20
- new: 'openspec-new-change',
21
- continue: 'openspec-continue-change',
22
- apply: 'openspec-apply-change',
23
- update: 'openspec-update-change',
24
- ff: 'openspec-ff-change',
25
- sync: 'openspec-sync-specs',
26
- archive: 'openspec-archive-change',
27
- 'bulk-archive': 'openspec-bulk-archive-change',
28
- verify: 'openspec-verify-change',
29
- onboard: 'openspec-onboard'
30
- };
31
5
  export const OPEN_SPEC_COPILOT_CLOUD_PATHS = [
32
6
  ['.github', 'workflows', 'copilot-setup-steps.yml'],
33
7
  ['.github', 'agents', 'openspec.agent.md']
@@ -154,19 +128,15 @@ export async function configureOpenSpecProfile(executable, runner, options = {})
154
128
  return inspection;
155
129
  }
156
130
  export function openSpecIntegrationPaths(agent) {
157
- if (agent === 'github-copilot') {
158
- return OPEN_SPEC_WORKFLOW_IDS.flatMap((workflow) => [
159
- ['.github', 'skills', OPEN_SPEC_SKILL_NAMES[workflow], 'SKILL.md'],
160
- ['.github', 'prompts', `opsx-${workflow}.prompt.md`]
161
- ]);
162
- }
163
- if (agent === 'claude') {
164
- return OPEN_SPEC_WORKFLOW_IDS.flatMap((workflow) => [
165
- ['.claude', 'skills', OPEN_SPEC_SKILL_NAMES[workflow], 'SKILL.md'],
166
- ['.claude', 'commands', 'opsx', `${workflow}.md`]
167
- ]);
131
+ const surface = OPEN_SPEC_AGENT_SURFACES[agent];
132
+ if (!surface) {
133
+ throw new OpenSpecProfileError(`Unsupported OpenSpec agent: ${agent}`);
168
134
  }
169
- const unsupported = agent;
170
- throw new OpenSpecProfileError(`Unsupported OpenSpec agent: ${unsupported}`);
135
+ return OPEN_SPEC_WORKFLOW_IDS.flatMap((workflow) => [
136
+ [...surface.skillsRoot, OPEN_SPEC_SKILL_NAMES[workflow], 'SKILL.md'],
137
+ ...(surface.commands
138
+ ? [[...surface.commands.root, `${surface.commands.prefix}${workflow}${surface.commands.suffix}`]]
139
+ : [])
140
+ ]);
171
141
  }
172
142
  //# sourceMappingURL=openspec-profile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openspec-profile.js","sourceRoot":"","sources":["../src/openspec-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openspec-profile.js","sourceRoot":"","sources":["../src/openspec-profile.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
+ import { governanceAgentIntegrations } from './domain/project/catalog.js';
2
+ export { governanceAgentIntegrations };
1
3
  import type { GeneratedArtifact, ProjectPlan } from './domain/project/contracts.js';
2
4
  export declare const governancePolicySchemaVersion: 1;
3
5
  export declare const governancePolicyVersion: '6';
4
6
  export declare const governanceContextSchemaVersion: 1;
7
+ export declare function governanceInvocationGuide(plan: Pick<ProjectPlan, 'agents'>, operation?: 'setup' | 'assessment'): string;
5
8
  export declare const governanceArtifactPaths: {
6
9
  readonly policy: readonly ['.liftoff', 'governance', 'policy.md'];
7
10
  readonly context: readonly ['.liftoff', 'governance', 'context.json'];
@@ -10,12 +13,14 @@ export declare const governanceArtifactPaths: {
10
13
  readonly compatibility: readonly ['.liftoff', 'governance', 'compatibility.json'];
11
14
  readonly credentialPolicySchema: readonly ['.liftoff', 'governance', 'credential-policy.schema.json'];
12
15
  readonly setup: {
13
- readonly 'github-copilot': readonly ['.github', 'prompts', 'liftoff-setup.prompt.md'];
14
- readonly claude: readonly ['.claude', 'commands', 'liftoff-setup.md'];
16
+ readonly 'github-copilot': readonly [".github", "prompts", "liftoff-setup.prompt.md"];
17
+ readonly claude: readonly [".claude", "commands", "liftoff-setup.md"];
18
+ readonly codex: readonly [".agents", "skills", "liftoff-setup", "SKILL.md"];
15
19
  };
16
20
  readonly assessment: {
17
- readonly 'github-copilot': readonly ['.github', 'prompts', 'liftoff-governance-assess.prompt.md'];
18
- readonly claude: readonly ['.claude', 'commands', 'liftoff-governance-assess.md'];
21
+ readonly 'github-copilot': readonly [".github", "prompts", "liftoff-governance-assess.prompt.md"];
22
+ readonly claude: readonly [".claude", "commands", "liftoff-governance-assess.md"];
23
+ readonly codex: readonly [".agents", "skills", "liftoff-governance-assess", "SKILL.md"];
19
24
  };
20
25
  };
21
26
  export declare function renderCanonicalGovernancePolicy(): string;
@@ -27,5 +32,5 @@ export interface GovernanceContextOptions {
27
32
  }
28
33
  export declare function validateGovernanceContext(value: unknown): void;
29
34
  export declare function renderGovernanceContext(plan: ProjectPlan, options?: GovernanceContextOptions): string;
30
- export declare function renderGovernanceAssessmentGuide(): string;
35
+ export declare function renderGovernanceAssessmentGuide(plan?: Pick<ProjectPlan, 'agents'>): string;
31
36
  export declare function buildRepositoryGovernanceArtifacts(plan: ProjectPlan): GeneratedArtifact[];
@@ -1,4 +1,7 @@
1
1
  import { readFileSync } from 'node:fs';
2
+ import { governanceAgentIntegrations } from './domain/project/catalog.js';
3
+ import { managedCoreLogicalNames } from './domain/project/artifact-lifecycle.js';
4
+ export { governanceAgentIntegrations };
2
5
  import { packagedSupportedStack as supportedStack } from './adapters/packaged-assets/supported-stack.js';
3
6
  import { resolvePackageFileUrl } from './adapters/packaged-assets/package-root.js';
4
7
  import { canonicalJson } from './governance-activation/canonical-json.js';
@@ -9,18 +12,14 @@ import { runnerPreflightDisplayNameTemplate, runnerPreflightOrganizationPermissi
9
12
  export const governancePolicySchemaVersion = 1;
10
13
  export const governancePolicyVersion = '6';
11
14
  export const governanceContextSchemaVersion = 1;
12
- const governanceManagedCoreLogicalNames = [
13
- 'repository-governance-policy',
14
- 'repository-governance-context',
15
- 'repository-governance-guide',
16
- 'repository-governance-phase-graph',
17
- 'repository-governance-compatibility',
18
- 'repository-governance-credential-policy-schema',
19
- 'liftoff-setup-copilot',
20
- 'liftoff-setup-claude',
21
- 'liftoff-governance-assess-copilot',
22
- 'liftoff-governance-assess-claude'
23
- ];
15
+ const governanceManagedCoreLogicalNames = managedCoreLogicalNames;
16
+ export function governanceInvocationGuide(plan, operation = 'setup') {
17
+ if (plan.agents.length === 0) {
18
+ const name = operation === 'setup' ? 'liftoff-setup' : 'liftoff-governance-assess';
19
+ return `No native \`${name}\` integration is recorded.`;
20
+ }
21
+ return plan.agents.map((agent) => `${agent.label}: \`${governanceAgentIntegrations[agent.id][operation].invocation}\``).join('; ');
22
+ }
24
23
  export const governanceArtifactPaths = {
25
24
  policy: ['.liftoff', 'governance', 'policy.md'],
26
25
  context: ['.liftoff', 'governance', 'context.json'],
@@ -29,12 +28,14 @@ export const governanceArtifactPaths = {
29
28
  compatibility: ['.liftoff', 'governance', 'compatibility.json'],
30
29
  credentialPolicySchema: ['.liftoff', 'governance', 'credential-policy.schema.json'],
31
30
  setup: {
32
- 'github-copilot': ['.github', 'prompts', 'liftoff-setup.prompt.md'],
33
- claude: ['.claude', 'commands', 'liftoff-setup.md']
31
+ 'github-copilot': governanceAgentIntegrations['github-copilot'].setup.pathParts,
32
+ claude: governanceAgentIntegrations.claude.setup.pathParts,
33
+ codex: governanceAgentIntegrations.codex.setup.pathParts
34
34
  },
35
35
  assessment: {
36
- 'github-copilot': ['.github', 'prompts', 'liftoff-governance-assess.prompt.md'],
37
- claude: ['.claude', 'commands', 'liftoff-governance-assess.md']
36
+ 'github-copilot': governanceAgentIntegrations['github-copilot'].assessment.pathParts,
37
+ claude: governanceAgentIntegrations.claude.assessment.pathParts,
38
+ codex: governanceAgentIntegrations.codex.assessment.pathParts
38
39
  }
39
40
  };
40
41
  const suppliedPolicy = readFileSync(resolvePackageFileUrl('assets', 'governance', 'single-maintainer-gitflow', 'policy.md'), 'utf8').replace(/\r\n/g, '\n').trimEnd();
@@ -714,38 +715,71 @@ export function renderGovernanceContext(plan, options = {}) {
714
715
  return rendered;
715
716
  }
716
717
  function renderGovernanceGuide(plan) {
717
- const launchers = plan.agents.map((agent) => agent.id === 'github-copilot'
718
- ? '- GitHub Copilot: `/liftoff-setup`.'
719
- : '- Claude Code: `/liftoff-setup`.').join('\n');
718
+ const launchers = plan.agents.map((agent) => `- ${agent.label}: \`${governanceAgentIntegrations[agent.id].setup.invocation}\`.`).join('\n');
719
+ const primaryAgent = plan.agents.find((agent) => agent.id === plan.defaultAgent?.id) ?? plan.agents[0];
720
+ const primary = primaryAgent ? governanceAgentIntegrations[primaryAgent.id] : undefined;
721
+ const nextAction = primary ? `## Next action after init
722
+
723
+ From this project, enter the native setup invocation in a selected coding agent,
724
+ not in a shell. Do not reinitialize the application.
725
+
726
+ \`\`\`text
727
+ ${primary.setup.invocation}
728
+ \`\`\`
729
+
730
+ Use the generated setup integration from any selected agent:
731
+
732
+ ${launchers}` : `## Legacy project handoff
733
+
734
+ No native setup integration is recorded for this legacy project. This managed-core
735
+ update does not initialize the framework or install coding-agent integrations.
736
+ Inspect the current local boundary without executing setup:
737
+
738
+ \`\`\`bash
739
+ liftoff governance status --scope local --json
740
+ \`\`\`
741
+
742
+ Review the CLI's supported diagnostics and separately approved framework adoption
743
+ requirements. The journey below applies only after the required framework and
744
+ native integration are established; no agent or prior completion is inferred.`;
720
745
  return `# Liftoff deterministic setup
721
746
 
722
- State: **managed setup generated; live enforcement is not active**.
747
+ State: **${primary ? 'managed setup generated' : 'managed handoff generated; no native integration recorded'}; live enforcement is not active**.
723
748
 
724
749
  Liftoff generated deterministic policy and workload context only. It did not
725
750
  create or change branches, commits, tags, remotes, pull requests, releases,
726
751
  rulesets, GitHub settings, security features, environments, runners, cloud
727
752
  resources, deployments, monitoring, alerts, or Slack routes.
728
753
 
729
- ## Next command after init
730
-
731
- \`\`\`text
732
- liftoff init ${plan.safeProjectName}
733
- cd ${plan.safeProjectName}
734
- /liftoff-setup
735
- \`\`\`
736
-
737
- Use the generated setup integration from any selected agent:
738
-
739
- ${launchers}
754
+ ${nextAction}
740
755
 
741
756
  ## What setup does
742
757
 
743
- \`/liftoff-setup\` delegates every transition to
744
- \`liftoff governance status|plan|apply-next|resume|verify\`. The CLI resolves
758
+ \`liftoff-setup\` delegates every transition to the Liftoff CLI, beginning with
759
+ \`liftoff governance status --scope local --json\`. The CLI resolves
745
760
  the project root, loads \`phase-graph.json\`, validates policy ${governancePolicyVersion},
746
- and records no separate setup-integration version.
761
+ and uses activation contract ${activationContractVersion} from package
762
+ ${liftoffActivationPackageVersion}. Native integration changes use managed content
763
+ hashes, not an independent version.
764
+
765
+ Prefer the CLI's supported \`nextActions\`: preserve each \`command.executable\`,
766
+ argument array, \`cwd\`, \`scope\`, and \`approvalRequired\`. A
767
+ \`nextPlannablePhase\` can be previewed before approval; execution uses only a
768
+ currently ready action with its required authority. Never invent flags or edit
769
+ approval/state JSON.
770
+ Unscoped governance commands default to activation; local inspection, execution,
771
+ and verification must retain \`--scope local\`. Supported scopes are \`local\`,
772
+ \`activation\`, and \`lifecycle\`.
773
+ \`governance plan\` saves a disclosed external preview, not approval, and does not
774
+ execute its proposed effects. \`apply-next\` without \`--execute\` is strictly
775
+ read-only. When public planning inputs are requested, follow the reported
776
+ \`--inputs <public-json-file>\` action and its documented public schema; never
777
+ put credentials or invented approval/state records in that file.
778
+ ${plan.agents.some((agent) => agent.id === 'codex')
779
+ ? 'Codex skills use their dollar-prefixed names or the `/skills` picker, not global custom prompts.\n'
780
+ : ''}
747
781
 
748
- Before any live governance work, setup completes the deterministic baseline seed:
782
+ Before publication and activation, setup verifies the deterministic baseline seed:
749
783
  \`liftoff validate\`, applicable backend tests, frontend build,
750
784
  \`docker compose config -q\`, \`tofu fmt -check -recursive\`,
751
785
  \`tofu init -backend=false\`, \`tofu validate\`, and strict ${plan.specWorkflow.label}
@@ -755,22 +789,47 @@ ${plan.specWorkflow.id === 'openspec'
755
789
  ? 'OpenSpec bootstrap seed was synchronized and archived.'
756
790
  : 'real Spec Kit bundle at `specs/000-liftoff-bootstrap/` was finalized locally, without an OpenSpec archive or new Git branch.'}
757
791
  It does not mean product behavior, infrastructure, or enforcement exists.
792
+ Local-ready is a milestone, not the end of a requested full journey. After local
793
+ verification, present \`liftoff governance plan --scope activation --json\` and
794
+ continue only through separately approved actions. A local-only request or
795
+ declined later authority preserves local completion without publication or
796
+ provider effects.
758
797
  An older Spec Kit project without that bundle needs separately reviewed seed
759
798
  adoption; update, force, and assessment never create it or infer completion.
799
+ If stateful repair is required to reach local conformance, offer its distinct
800
+ approved migration branch. It is not local-only work and cannot run under local
801
+ repair approval.
760
802
 
761
- Questions are limited to repository publication, credentials, billed resources
762
- or policy exceptions, final enforcement, destructive cleanup, and external
763
- blockers. Only explicit execution retries repaired local failures; status,
803
+ Questions are limited to exact repair/migration plans, state-read authority,
804
+ independent tool/dependency/global-profile permissions, repository publication,
805
+ credentials, billed resources or policy exceptions, final enforcement,
806
+ destructive recovery/cleanup, and external blockers.
807
+ Use the CLI-provided repair preview and eligibility actions, never a fresh
808
+ starter copied over the project or fabricated machine metadata. Local repair
809
+ approval does not authorize sensitive-state reads, backend writes, or resources.
810
+ Unknown or unsupported transformations stay plan-only.
811
+ Only explicit execution retries repaired local failures; status,
764
812
  resume, and verify remain read-only. Current unchanged proof may be reused.
765
- Unavailable production executors and public approval/credential entry points
766
- remain capability blockers; the phase graph does not claim they are implemented.
813
+ Do not repeat an unchanged failure or ineffective installer. Actual missing
814
+ capabilities, permissions, quota, or execution paths remain resumable blockers.
815
+
816
+ Schema-2 results distinguish \`scope\`, \`localSetup\`, \`activation\`,
817
+ \`migration\`, and \`lifecycle\`. Verification exits 0 for a consistent complete
818
+ selected scope, 2 for consistent incomplete progress, and 1 for inconsistency or
819
+ inspection failure. Status, plan, and resume can exit 0 while work remains.
820
+ \`selectedPhase\` identifies the attempt; \`executedPhase\` records success;
821
+ \`nextReadyPhase\` comes from post-operation inspection. If an operation committed
822
+ but inspection failed, retain that partial outcome and indeterminate readiness.
823
+ Use only the reported reviewed recovery action, never a blind retry or assumed
824
+ rollback of remote effects.
767
825
 
768
826
  For an older supported activation, use \`liftoff update --check\` to review the
769
827
  exact history-preserving migration. The check changes no project bytes but
770
828
  discloses an external preview receipt. Explicitly approved update creates a
771
- linked v2 successor; old state, plans, evidence, and approvals remain historical,
772
- not current authorization. Failed local revalidation retains blocked, resumable
773
- v2. Repair the named cause and approve a fresh preview rather than reset history.
829
+ linked v${activationContractVersion} successor from a declared v1/v2 source. Old state, plans,
830
+ evidence, and approvals remain historical, not current authorization.
831
+ Failed local revalidation retains blocked, resumable
832
+ v${activationContractVersion}. Repair the named cause and approve a fresh preview rather than reset history.
774
833
  Only the named local revalidation is automatic; no provider, commit, or push is
775
834
  authorized by the migration plan. \`--json\` is optional formatting, and CI
776
835
  approval uses \`--approve-plan <fingerprint>\`. Force cannot bypass these gates.
@@ -781,23 +840,40 @@ fine-grained PAT is required, use display name
781
840
  \`${runnerPreflightDisplayNameTemplate}\`, secret
782
841
  \`${runnerPreflightSecretName}\`, 30-day lifetime, current repository only,
783
842
  repository metadata read, organization hosted-runner and network-configuration
784
- read, no writes, and the recorded workflow/job allowlist. This is a policy
785
- contract, not a public enrollment command. No masked credential-input channel
786
- is exposed by this release. Never paste or show a credential in chat, argv,
787
- command arguments, logs, evidence, files, or screenshots. A leaked value must be
843
+ read, no writes, and the recorded workflow/job allowlist.
844
+ Use the CLI-provided \`liftoff governance approve --plan <fingerprint>\` only
845
+ after the developer explicitly approves the exact displayed plan; never
846
+ automatically approve it. Approval persists authority but does not execute.
847
+ Credential enrollment uses \`liftoff governance credential-enroll --plan <fingerprint>\`
848
+ through the private operator channel. Automation must explicitly select
849
+ \`--protected-stdin\` and supply the value through an operator-controlled protected
850
+ channel, never chat or argv. Observe actual permitted use/readback,
851
+ not just a secret name. Never paste or show a credential in chat, argv,
852
+ command arguments, logs, evidence, source files, or screenshots. A leaked value must be
788
853
  revoked and rotated through its owner-controlled system, not fabricated state.
789
854
 
790
855
  Live status must be proven from user-owned activation evidence and GitHub
791
856
  read-back, never inferred from these local files.
857
+ Full immediate setup is complete only when requested migration and actual
858
+ deployment, qualification, and matching live enforcement are verified.
859
+ Future retained-state disposal and other \`lifecycle\` obligations stay visible
860
+ separately; activation does not wait for a retention deadline.
792
861
 
793
- ${renderGovernanceAssessmentGuide()}
862
+ ${renderGovernanceAssessmentGuide(plan)}
794
863
  `;
795
864
  }
796
- export function renderGovernanceAssessmentGuide() {
865
+ export function renderGovernanceAssessmentGuide(plan) {
866
+ const setup = plan ? governanceInvocationGuide(plan) : 'Copilot/Claude: `/liftoff-setup`; Codex: `$liftoff-setup`';
867
+ const assessment = plan ? governanceInvocationGuide(plan, 'assessment') : 'Copilot/Claude: `/liftoff-governance-assess`; Codex: `$liftoff-governance-assess`';
868
+ const entryPoint = plan?.agents.length === 0
869
+ ? `No native setup or assessment integration is recorded for this legacy project.
870
+ Managed-core maintenance does not initialize the framework or install integrations.
871
+ For a read-only comparison, use the CLI directly:`
872
+ : `Native setup (${setup}) remains the primary post-init path. For a separate
873
+ comparison, use ${assessment}, or run:`;
797
874
  return `## Read-only governance assessment
798
875
 
799
- \`/liftoff-setup\` remains the primary post-init path. For a separate comparison,
800
- use \`/liftoff-governance-assess\` in a selected agent or run:
876
+ ${entryPoint}
801
877
 
802
878
  \`\`\`bash
803
879
  liftoff governance assess --json
@@ -835,7 +911,7 @@ stale evidence, and unsupported evaluators remain visible coverage gaps, not
835
911
  proof of absence or alignment.
836
912
  Azure scope and evidence-backed applicability require a current active-baseline
837
913
  and referenced, validated saved-plan/evidence receipts that bind their canonical
838
- payload and readback body to current inputs. Placeholder digests, historical v1
914
+ payload and readback body to current inputs. Placeholder digests, historical v1/v2
839
915
  receipts, future-dated approvals, and inferred bindings cannot establish proof. Missing
840
916
  bindings stay \`not-observed\`; do not fabricate or hand-edit activation state,
841
917
  baselines, receipts, or evidence to make assessment pass. Collect missing proof
@@ -864,9 +940,11 @@ Exit 2 is advisory, not permission to repair anything.
864
940
  Assessment writes reports to stdout only. It never updates or upgrades anything,
865
941
  changes project files, Git, activation state, approvals, or evidence, or runs
866
942
  recommendations. Reports cannot complete Phase 0 or any other phase.
867
- For compatible older inventories, install the new selected-agent integration
943
+ For compatible older inventories, restore an already selected Liftoff integration
868
944
  through \`liftoff update --check\`, then \`liftoff update\` with explicit approval
869
945
  of the matching plan. Check discloses its external preview receipt; it is not approval.
946
+ Adding another agent instead requires \`liftoff repair --check --add-agents codex\`
947
+ and its own exact-plan approval; ordinary update does not install framework integrations.
870
948
  Unowned collisions stay unowned even with \`--force\`; modified managed entries
871
949
  retain the existing reviewed force rules. Neither installation nor assessment
872
950
  activates governance. Unsupported mappings remain diagnostic: no migration is
@@ -875,36 +953,50 @@ or overwrite project-owned configuration. A future governance upgrade needs
875
953
  fresh observations, its own reviewed plan, and separate approval.
876
954
  `;
877
955
  }
878
- function renderSetupIntegration() {
879
- return `# /liftoff-setup
880
-
881
- Use the Liftoff governance engine.
956
+ function nativeIntegrationHeader(agent, operation) {
957
+ const integration = governanceAgentIntegrations[agent];
958
+ const skillName = operation === 'setup' ? 'liftoff-setup' : 'liftoff-governance-assess';
959
+ const description = operation === 'setup'
960
+ ? 'Guide local readiness and the separately approved Liftoff repair, migration, and activation journey.'
961
+ : 'Explain the Liftoff governance assessment without executing repairs, activation, or other mutations.';
962
+ const metadata = integration.kind === 'skill'
963
+ ? `---\nname: ${skillName}\ndescription: ${JSON.stringify(description)}\n---\n\n`
964
+ : '';
965
+ return `${metadata}# ${integration[operation].invocation}\n`;
966
+ }
967
+ function renderSetupIntegration(agent) {
968
+ return `${nativeIntegrationHeader(agent, 'setup')}
969
+ Use the Liftoff governance engine for the requested end-to-end journey.
970
+ Read \`.liftoff/governance/policy.md\`, \`.liftoff/governance/context.json\`,
971
+ and \`.liftoff/governance/README.md\`; the managed phase graph determines readiness.
882
972
 
883
- 1. Work from the current directory; the CLI resolves the root.
884
- 2. Invoke only: \`liftoff governance status --json\`,
885
- \`liftoff governance plan --json\`, \`liftoff governance apply-next --json\`,
886
- \`liftoff governance apply-next --json --execute\`,
887
- \`liftoff governance resume --json\`, and \`liftoff governance verify --json\`.
888
- 3. Explain reported blockers and approvals. Inspection never executes work.
889
- 4. Use \`liftoff governance apply-next --json\` only to preview operations.
890
- If ready and its approval status is \`not-required\` or \`reused\`, run
891
- \`liftoff governance apply-next --json --execute\`, then verify.
892
- \`selectedPhase\` is attempted; \`executedPhase\` succeeded.
893
- Reinspect: \`nextReadyPhase\` is not post-transition readiness.
894
- 5. Stop on failure. Retry only on request after repair;
895
- do not repeatedly retry an unchanged failure.
896
- 6. For supported historical migration, propose \`liftoff update --check\`.
897
- It preserves project bytes and saves an external receipt, not approval.
898
- \`liftoff update\` needs explicit matching-plan approval; never run it
899
- implicitly from setup.
900
- 7. Tasks and prose are not proof. Missing executors or authorization stay blocked.
901
- Never invent commands, write evidence/state manually, or collect credentials
902
- in chat to bypass a gate.
973
+ 1. Work from the current directory. Start with \`liftoff governance status --scope local --json\`.
974
+ Unscoped governance defaults to activation: \`liftoff governance status --json\`.
975
+ 2. Follow schema-2 \`nextActions\` (\`command.executable\`, \`command.args\`, \`cwd\`, \`scope\`, \`approvalRequired\`).
976
+ Track post-operation readiness through \`nextReadyPhase\`; \`nextPlannablePhase\` is not execution readiness.
977
+ Follow the four scopes: \`localSetup\`, \`migration\`, \`activation\`, and \`lifecycle\`.
978
+ 3. Inspect \`liftoff governance plan --scope local --json\` and \`liftoff governance apply-next --scope local --json\`
979
+ only to preview an approval-free local action (\`selectedPhase\` is attempted; \`executedPhase\` succeeded).
980
+ Only for a reported ready, approval-free local action, apply with
981
+ \`liftoff governance apply-next --scope local --json --execute\`.
982
+ Plan saves a disclosed external preview, not approval.
983
+ Apply-next without \`--execute\` is strictly read-only.
984
+ 4. Report local completion as a milestone. Respect a local-only request or declined later authority without claiming deployment.
985
+ 5. Continue with \`liftoff governance plan --scope activation --json\`.
986
+ If requested, use \`--inputs <public-json-file>\`.
987
+ Never automatically approve a plan; approval does not execute.
988
+ Only after explicit developer approval, use \`liftoff governance approve --plan <fingerprint>\`.
989
+ 6. For \`liftoff governance credential-enroll --plan <fingerprint>\`, automation must select
990
+ \`--protected-stdin\` through an operator-controlled protected channel (private operator channel).
991
+ 7. Re-inspect with \`liftoff governance verify --scope local --json\` or \`liftoff governance verify --scope activation --json\` (\`liftoff governance verify --json\`).
992
+ Verify exit 0 is complete; exit 2 means consistent but
993
+ incomplete (indeterminate readiness).
994
+ 8. Do not repeat an unchanged failure. Use \`liftoff governance recover --plan <fingerprint> --execute\` after approval.
995
+ 9. Full completion requires actual deployment, matching live enforcement, and readback; deferred retention is not failed activation (future lifecycle work remains pending until due).
903
996
  `;
904
997
  }
905
- function renderAssessmentIntegration() {
906
- return `# /liftoff-governance-assess
907
-
998
+ function renderAssessmentIntegration(agent) {
999
+ return `${nativeIntegrationHeader(agent, 'assessment')}
908
1000
  Explain a read-only governance assessment, not setup or an upgrade.
909
1001
  The installed CLI is the target authority. In a Liftoff project, recorded context
910
1002
  also includes \`.liftoff/governance/policy.md\`,
@@ -930,9 +1022,9 @@ Contract:
930
1022
  partial coverage or differences including approved exceptions, and exit 1 as
931
1023
  an error. A report is not activation evidence and does not complete any phase.
932
1024
  6. Stop after explaining the report. Never execute its recommendations or shell
933
- instructions, update, upgrade, activation, remediation, Git/GitHub/Azure
1025
+ instructions, update, upgrade, repair, migration, activation, remediation, Git/GitHub/Azure
934
1026
  mutations, project scripts, or writes to project files, state, or evidence.
935
- Keep \`/liftoff-setup\` as the separate primary post-init setup path.
1027
+ Keep \`${governanceAgentIntegrations[agent].setup.invocation}\` as the separate primary post-init setup path.
936
1028
  `;
937
1029
  }
938
1030
  function managedCompatibilityInventory(artifacts) {
@@ -953,8 +1045,6 @@ export function buildRepositoryGovernanceArtifacts(plan) {
953
1045
  const policy = renderCanonicalGovernancePolicy();
954
1046
  const context = renderGovernanceContext(plan);
955
1047
  const guide = `${renderGovernanceGuide(plan).trimEnd()}\n`;
956
- const setupIntegration = `${renderSetupIntegration().trimEnd()}\n`;
957
- const assessmentIntegration = `${renderAssessmentIntegration().trimEnd()}\n`;
958
1048
  const artifacts = [
959
1049
  {
960
1050
  logicalName: 'repository-governance-policy',
@@ -999,22 +1089,18 @@ export function buildRepositoryGovernanceArtifacts(plan) {
999
1089
  content: renderCredentialPolicySchema()
1000
1090
  },
1001
1091
  ...plan.agents.map((agent) => ({
1002
- logicalName: agent.id === 'github-copilot'
1003
- ? 'liftoff-setup-copilot'
1004
- : 'liftoff-setup-claude',
1092
+ logicalName: governanceAgentIntegrations[agent.id].setup.logicalName,
1005
1093
  category: 'governance',
1006
1094
  lifecycle: 'managed-core',
1007
1095
  pathParts: [...governanceArtifactPaths.setup[agent.id]],
1008
- content: setupIntegration
1096
+ content: `${renderSetupIntegration(agent.id).trimEnd()}\n`
1009
1097
  })),
1010
1098
  ...plan.agents.map((agent) => ({
1011
- logicalName: agent.id === 'github-copilot'
1012
- ? 'liftoff-governance-assess-copilot'
1013
- : 'liftoff-governance-assess-claude',
1099
+ logicalName: governanceAgentIntegrations[agent.id].assessment.logicalName,
1014
1100
  category: 'governance',
1015
1101
  lifecycle: 'managed-core',
1016
1102
  pathParts: [...governanceArtifactPaths.assessment[agent.id]],
1017
- content: assessmentIntegration
1103
+ content: `${renderAssessmentIntegration(agent.id).trimEnd()}\n`
1018
1104
  }))
1019
1105
  ];
1020
1106
  const compatibility = artifacts.find((artifact) => artifact.logicalName === 'repository-governance-compatibility');