@msn-control/liftoff 0.10.1 → 0.10.3

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 (39) hide show
  1. package/DEVELOPER.md +8 -1
  2. package/README.md +11 -0
  3. package/dist/artifact-lifecycle.d.ts +18 -1
  4. package/dist/artifact-lifecycle.js +34 -3
  5. package/dist/artifact-lifecycle.js.map +1 -1
  6. package/dist/commands.js +100 -8
  7. package/dist/commands.js.map +1 -1
  8. package/dist/file-system.js +64 -31
  9. package/dist/file-system.js.map +1 -1
  10. package/dist/governance-activation/commands.js +127 -7
  11. package/dist/governance-activation/commands.js.map +1 -1
  12. package/dist/governance-activation/readiness.d.ts +1 -0
  13. package/dist/governance-activation/readiness.js +74 -11
  14. package/dist/governance-activation/readiness.js.map +1 -1
  15. package/dist/governance-activation/seed-lifecycle.d.ts +18 -0
  16. package/dist/governance-activation/seed-lifecycle.js +111 -4
  17. package/dist/governance-activation/seed-lifecycle.js.map +1 -1
  18. package/dist/governance-activation/transitions.d.ts +1 -0
  19. package/dist/governance-activation/transitions.js +25 -3
  20. package/dist/governance-activation/transitions.js.map +1 -1
  21. package/dist/power-apps-templates.js +1 -1
  22. package/dist/power-apps-templates.js.map +1 -1
  23. package/dist/reconcile.d.ts +1 -1
  24. package/dist/reconcile.js +42 -0
  25. package/dist/reconcile.js.map +1 -1
  26. package/dist/repository-governance.d.ts +0 -4
  27. package/dist/repository-governance.js +19 -55
  28. package/dist/repository-governance.js.map +1 -1
  29. package/dist/templates.js +28 -6
  30. package/dist/templates.js.map +1 -1
  31. package/docs/cli-reference.md +10 -8
  32. package/docs/configuration-and-manifests.md +3 -2
  33. package/docs/existing-repositories.md +2 -2
  34. package/docs/project-structure.md +4 -6
  35. package/docs/repository-governance.md +16 -9
  36. package/docs/safety-and-consent.md +6 -5
  37. package/docs/troubleshooting.md +3 -2
  38. package/docs/workloads.md +2 -2
  39. package/package.json +1 -1
@@ -30,7 +30,7 @@ install -> upgrade CLI -> plan -> init or migrate -> /liftoff-setup -> validate,
30
30
  | `liftoff governance plan [project]` | Previews ready and blocked phase transitions, required evidence, approval gates, permitted mutations, and cost-envelope impact without writes |
31
31
  | `liftoff governance apply-next [project]` | Previews the next graph-ready transition; add `--execute` to execute at most one approved mutation |
32
32
  | `liftoff governance resume [project]` | Rechecks external blockers and readiness descendants without rerunning verified operations |
33
- | `liftoff governance verify [project]` | Read-only validation of graph, state, evidence, task projection, policy identity, active-change identity, and live readback |
33
+ | `liftoff governance verify [project]` | Read-only validation of graph, state, evidence, task projection, policy identity, active-change identity, and live readback; reports consistency separately from setup completion and reports completion as indeterminate when inspection fails |
34
34
  | `liftoff upgrade` | Replaces a verified global npm installation with the exact canonical stable release exposed by the configured registry |
35
35
  | `liftoff upgrade --check` | Checks installation origin and registry parity without installing; exits 2 when an installable update exists |
36
36
  | `liftoff update [project]` | Applies safe managed-core maintenance and authorized create-only component provisioning |
@@ -112,9 +112,8 @@ emits a setup-skill version. Future identities, unsupported compatibility
112
112
  tuples, and unrecognized graph hashes block without rewriting state; the remedy
113
113
  names the exact field and required Liftoff upgrade.
114
114
 
115
- `/liftoff-setup` and the compatibility alias `/liftoff-repository-governance`
116
- call these commands instead of inferring phase completion from prose or task
117
- checkboxes.
115
+ `/liftoff-setup` calls these commands instead of inferring phase completion from
116
+ prose or task checkboxes.
118
117
 
119
118
  OpenSpec projects use all 12 OpenSpec 1.11 workflows with both skills and
120
119
  commands. `--copilot-cloud` opts into the GitHub-hosted coding-agent workflow and
@@ -176,10 +175,11 @@ Plain `liftoff update` is imperative and prompt-free. It applies safe new,
176
175
  missing, untouched-upgrade, clean-move, and recorded-state changes only for
177
176
  explicit `managed-core` artifacts. For manifest v7 this includes governance
178
177
  policy, context, guide, phase graph, compatibility metadata, credential-policy
179
- schema, setup integrations, and selected-agent compatibility aliases. Core
180
- conflicts are skipped and core orphans are reported without deletion. During
181
- legacy governance adoption, preserved unrecorded conflicts remain outside
182
- managed ownership and set local state to `handoff-partial`.
178
+ schema, and selected-agent `/liftoff-setup` integrations. Core conflicts are
179
+ skipped and core orphans are reported without deletion. During legacy governance
180
+ adoption, preserved unrecorded conflicts remain outside managed ownership and
181
+ set local state to `handoff-partial`. Forced update may remove exact retired
182
+ generated setup-alias entries from older manifests after review.
183
183
 
184
184
  Application source, tests, dependencies and locks, database assets, Docker and
185
185
  Compose files, environment files, documentation, Power Apps starter files, and
@@ -244,6 +244,8 @@ liftoff validate --json
244
244
  liftoff doctor --json
245
245
  liftoff governance status --json
246
246
  liftoff governance plan --json
247
+ liftoff governance apply-next --json
248
+ liftoff governance apply-next --json --execute
247
249
  liftoff governance verify --json
248
250
  liftoff upgrade --json
249
251
  liftoff upgrade --check --json
@@ -152,8 +152,9 @@ category or filename:
152
152
  The manifest is a CLI-owned transaction record rather than an ordinary
153
153
  template artifact. Current managed core is limited to the exact repository
154
154
  governance policy, context, guide, phase graph, compatibility metadata,
155
- credential-policy schema, `/liftoff-setup` integrations, and selected-agent
156
- compatibility aliases. A name such as `config.go`, a `configuration` category,
155
+ credential-policy schema, and selected-agent `/liftoff-setup` integrations.
156
+ Forced update may remove exact retired generated setup-alias entries from older
157
+ manifests after review. A name such as `config.go`, a `configuration` category,
157
158
  or a path under `.github` does not grant update authority.
158
159
 
159
160
  User-owned governance artifacts are deliberately excluded from managed-core
@@ -92,8 +92,8 @@ and run `openspec update`.
92
92
  Projects created before manifest artifact version 7 automatically preview the
93
93
  default deterministic setup handoff as new named drift. Plain update safely
94
94
  adopts collision-free policy, context, guide, phase graph, compatibility
95
- metadata, credential-policy schema, setup integrations, and selected-agent
96
- aliases without rewriting a configuration that omitted `governanceProfile`.
95
+ metadata, credential-policy schema, and selected-agent setup integrations
96
+ without rewriting a configuration that omitted `governanceProfile`.
97
97
  Existing different files remain unowned conflicts and the v7 manifest records
98
98
  `handoff-partial`.
99
99
  Resolving every conflict promotes a later update to `handoff-generated`.
@@ -52,9 +52,7 @@ project/
52
52
  |-- .github/workflows/copilot-setup-steps.yml # optional hosted agent
53
53
  |-- .github/agents/openspec.agent.md # optional hosted agent
54
54
  |-- .github/prompts/liftoff-setup.prompt.md
55
- |-- .github/prompts/liftoff-repository-governance.prompt.md # compatibility alias
56
55
  | or .claude/commands/liftoff-setup.md
57
- | and .claude/commands/liftoff-repository-governance.md
58
56
  |-- frontend/ # only when selected
59
57
  |-- functions/<worker-name>/ # only for worker-enabled GenAI patterns
60
58
  `-- migration/legacy/ # only after liftoff migrate
@@ -89,8 +87,7 @@ project/
89
87
  generated only after explicit opt-in.
90
88
  - `/liftoff-setup` is generated when repository governance is enabled. It calls
91
89
  `liftoff governance status|plan|apply-next|resume|verify` and has no model
92
- selection or separate setup-skill version. `/liftoff-repository-governance` is
93
- a compatibility alias for the same state.
90
+ selection or separate setup-skill version.
94
91
 
95
92
  ### Conditional areas
96
93
 
@@ -148,8 +145,9 @@ Liftoff intentionally does not generate `backend/`, `database/`,
148
145
 
149
146
  `liftoff.manifest.json` v7 records managed-core hashes for the governance policy,
150
147
  context, guide, phase graph, compatibility metadata, credential-policy schema,
151
- setup integrations, and compatibility aliases. `liftoff update` may reconcile
152
- only those managed-core paths. It preserves user-owned activation state,
148
+ and setup integrations. `liftoff update` may reconcile only those managed-core
149
+ paths. Forced update may remove exact retired generated setup-alias ownership
150
+ from older manifests after review. It preserves user-owned activation state,
153
151
  immutable evidence, approvals, credential policies, active OpenSpec changes, and
154
152
  project source.
155
153
 
@@ -15,9 +15,8 @@ cd my-project
15
15
  ```
16
16
 
17
17
  `/liftoff-setup` completes the generated bootstrap seed, then enters the
18
- deterministic Liftoff governance engine and its read-only Phase 0 discovery. The older
19
- `/liftoff-repository-governance` launcher is a compatibility alias for the same
20
- engine and user-owned activation state; it is not a separate activation path.
18
+ deterministic Liftoff governance engine, user-owned activation state, and
19
+ read-only Phase 0 discovery.
21
20
 
22
21
  ## Managed files and user-owned state
23
22
 
@@ -31,11 +30,13 @@ Enabled governance adds managed-core files:
31
30
  .liftoff/governance/compatibility.json
32
31
  .liftoff/governance/credential-policy.schema.json
33
32
  .github/prompts/liftoff-setup.prompt.md # Copilot selected
34
- .github/prompts/liftoff-repository-governance.prompt.md # compatibility alias
35
33
  .claude/commands/liftoff-setup.md # Claude selected
36
- .claude/commands/liftoff-repository-governance.md # compatibility alias
37
34
  ```
38
35
 
36
+ Older generated setup aliases are retired. Use `liftoff update --force` after
37
+ review to remove exact modified retired alias entries from older manifests; do
38
+ not invoke them as commands.
39
+
39
40
  User-owned execution state is separate and is never advanced by
40
41
  `liftoff update`:
41
42
 
@@ -170,8 +171,9 @@ seed blocks Phase 0. Exactly one compatible active governance change is resumed.
170
171
  Multiple overlapping changes require a schema-valid supersession or archive
171
172
  record before any phase advances.
172
173
 
173
- Managed updates install new policy, graph, schema, compatibility metadata, setup
174
- integrations, and aliases without touching user-owned state. When a policy,
174
+ Managed updates install new policy, graph, schema, compatibility metadata, and
175
+ setup integrations without touching user-owned state. Forced update can remove
176
+ exact retired generated setup-alias entries from older manifests. When a policy,
175
177
  activation-contract, schema, or graph-hash change affects active work, status
176
178
  reports `reconciliation-required`, invalidates only affected descendants, and
177
179
  waits for explicit acknowledgement of the current compatible identity and exact
@@ -204,6 +206,7 @@ The generated setup integrations call only strict, project-aware CLI commands:
204
206
  ```bash
205
207
  liftoff governance status --json
206
208
  liftoff governance plan --json
209
+ liftoff governance apply-next --json
207
210
  liftoff governance apply-next --json --execute
208
211
  liftoff governance resume --json
209
212
  liftoff governance verify --json
@@ -211,8 +214,12 @@ liftoff governance verify --json
211
214
 
212
215
  `status`, `plan`, and `verify` are read-only. `apply-next` previews mutations
213
216
  unless `--execute` is supplied, and even then executes at most one graph-ready,
214
- evidence-ready, approved phase. Unknown subcommands, flags, or extra positionals
215
- fail before project discovery or mutation.
217
+ evidence-ready, approved phase. Here, approved means its approval status is
218
+ `not-required` or `reused`. Unknown subcommands, flags, or extra positionals
219
+ fail before project discovery or mutation. Verification reports consistency
220
+ separately from setup completion: a valid not-started or in-progress state may
221
+ have `ok: true` and `verificationStatus: "consistent"` while `complete` remains
222
+ false.
216
223
 
217
224
  ## Existing projects
218
225
 
@@ -98,11 +98,12 @@ are committed only after the other mutations succeed.
98
98
 
99
99
  Managed update may install manifest v7, policy v6, activation-contract v1,
100
100
  phase graph, compatibility metadata, credential-policy schema, setup
101
- integrations, and compatibility aliases. It preserves user-owned activation
102
- state, approvals, immutable evidence, credential policies, active OpenSpec
103
- changes, and bootstrap retention/disposal records. If the current activation
104
- identity is future, unsupported, or graph-incompatible, update and setup block
105
- with a remedy instead of downgrading or rewriting state.
101
+ integrations, and forced removal of exact retired generated setup-alias entries
102
+ from older manifests. It preserves user-owned activation state, approvals,
103
+ immutable evidence, credential policies, active OpenSpec changes, and bootstrap
104
+ retention/disposal records. If the current activation identity is future,
105
+ unsupported, or graph-incompatible, update and setup block with a remedy instead
106
+ of downgrading or rewriting state.
106
107
 
107
108
  If automatic rollback itself cannot safely restore a path because another
108
109
  process changed it, Liftoff reports the incomplete rollback rather than
@@ -193,8 +193,9 @@ completes, syncs, and archives the generated bootstrap seed with local baseline
193
193
  checks, then stops at explicit authority gates for commit/push, credentials,
194
194
  billed infrastructure or exceptions, final enforcement, destructive cleanup, or
195
195
  external blockers. Rerun `/liftoff-setup` to resume; verified phases are not
196
- repeated. `/liftoff-repository-governance` is only a compatibility alias for the
197
- same engine and state.
196
+ repeated. Older generated setup aliases are retired; after review,
197
+ `liftoff update --force` removes exact modified retired alias entries from older
198
+ manifests.
198
199
 
199
200
  Missing licenses, runner-provisioning authority, a private Staging assignment or
200
201
  reachable network path, alert routes, parallel deployment, or sufficient canary
package/docs/workloads.md CHANGED
@@ -40,7 +40,7 @@ Automation can select the neutral starting point explicitly with
40
40
  - Docker Compose and Azure OpenTofu.
41
41
  - Optional Vue frontend and pattern-specific Azure Functions workers.
42
42
  - Versioned repository-governance policy, workload context, guide, and
43
- selected-agent launcher unless `none` is selected.
43
+ selected-agent `/liftoff-setup` integration unless `none` is selected.
44
44
 
45
45
  ### Deferred actions
46
46
 
@@ -107,7 +107,7 @@ environment, API frontend, Docker, or OpenTofu selection.
107
107
  - `liftoff.config.json`, manifest-v7 `liftoff.manifest.json`, starter provenance,
108
108
  and third-party attribution.
109
109
  - Official OpenSpec or Spec Kit output and every selected agent marker.
110
- - The common local governance policy and selected-agent launcher, with backend,
110
+ - The common local governance policy and selected-agent `/liftoff-setup` integration, with backend,
111
111
  container, OpenTofu, custom deployment, and API DAST controls marked
112
112
  inapplicable.
113
113
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@msn-control/liftoff",
3
- "version": "0.10.1",
3
+ "version": "0.10.3",
4
4
  "description": "Interactive CLI for governed GenAI, API, and Power Apps code app projects.",
5
5
  "type": "module",
6
6
  "license": "GPL-3.0-only",