@msn-control/liftoff 0.11.2 → 0.11.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 (36) hide show
  1. package/DEVELOPER.md +9 -8
  2. package/dist/adapters/filesystem/update-previews.js +1 -2
  3. package/dist/adapters/filesystem/update-previews.js.map +1 -1
  4. package/dist/adapters/process/shell-command.d.ts +1 -0
  5. package/dist/adapters/process/shell-command.js +5 -2
  6. package/dist/adapters/process/shell-command.js.map +1 -1
  7. package/dist/application/update/command-guidance.d.ts +19 -2
  8. package/dist/application/update/command-guidance.js +20 -6
  9. package/dist/application/update/command-guidance.js.map +1 -1
  10. package/dist/application/update/guidance-context.d.ts +2 -0
  11. package/dist/application/update/guidance-context.js +35 -0
  12. package/dist/application/update/guidance-context.js.map +1 -0
  13. package/dist/application/update/inspection.d.ts +5 -2
  14. package/dist/application/update/inspection.js +12 -6
  15. package/dist/application/update/inspection.js.map +1 -1
  16. package/dist/application/update/migration-runtime.js +1 -2
  17. package/dist/application/update/migration-runtime.js.map +1 -1
  18. package/dist/application/update/output.d.ts +2 -1
  19. package/dist/application/update/output.js +3 -3
  20. package/dist/application/update/output.js.map +1 -1
  21. package/dist/application/update/preview.d.ts +10 -1
  22. package/dist/application/update/preview.js +26 -4
  23. package/dist/application/update/preview.js.map +1 -1
  24. package/dist/application/update/revalidation-plan.js +2 -3
  25. package/dist/application/update/revalidation-plan.js.map +1 -1
  26. package/dist/application/update/revalidation.js +2 -2
  27. package/dist/application/update/revalidation.js.map +1 -1
  28. package/dist/application/update/use-case.js +26 -13
  29. package/dist/application/update/use-case.js.map +1 -1
  30. package/dist/domain/project/infrastructure-layout.d.ts +1 -1
  31. package/dist/domain/project/infrastructure-layout.js +2 -1
  32. package/dist/domain/project/infrastructure-layout.js.map +1 -1
  33. package/docs/cli-reference.md +35 -2
  34. package/docs/configuration-and-manifests.md +6 -6
  35. package/docs/troubleshooting.md +28 -0
  36. package/package.json +1 -1
@@ -273,6 +273,20 @@ liftoff update --check --json
273
273
  liftoff update --approve-plan <fingerprint> --json
274
274
  ```
275
275
 
276
+ Run update from the project root or a subdirectory: Liftoff finds the nearest
277
+ `liftoff.manifest.json`, so `--project` is not required for that project.
278
+ Human follow-ups omit `--project` when discovery from the invocation directory
279
+ selects the same target, and identify the selected project separately.
280
+ When a positional path or `--project` selects a different project, follow-ups
281
+ keep its explicit absolute target. An inner project never substitutes for an
282
+ explicitly selected outer project. JSON remedies remain explicitly targeted so
283
+ they can be used outside the originating shell.
284
+
285
+ After apply, the recommended validation sequence omits a directory change when
286
+ already at the project root. From other directories, including project
287
+ subdirectories, it retains the change to that root. Validate must succeed before
288
+ doctor runs; Liftoff prints these instructions without executing them.
289
+
276
290
  `liftoff update --check` is the human-first compatibility and migration preview.
277
291
  It changes no project bytes, but saves and discloses a project-bound preview
278
292
  receipt in user-local storage outside the repository. A receipt is not approval.
@@ -280,6 +294,10 @@ receipt in user-local storage outside the repository. A receipt is not approval.
280
294
  asks for explicit approval with a negative default. Missing or stale previews
281
295
  stop with instructions to rerun check. No-op inspection requires no approval.
282
296
 
297
+ Run check and apply as separate commands; do not join check and apply with `&&`.
298
+ Check returns exit code 2 for an actionable preview, so a success-only shell
299
+ chain would skip apply even though the preview was created successfully.
300
+
283
301
  Noninteractive apply additionally requires the exact full plan fingerprint
284
302
  through `--approve-plan`. Check and apply must share the same materialized
285
303
  checkout and user-local storage; another runner, worktree, or moved project
@@ -348,8 +366,23 @@ repository:
348
366
  An empty or relative override is an error, not a request to use the fallback.
349
367
  Unsafe paths, links/junctions, or storage inside the project or repository also
350
368
  block the update; repair the reported storage issue rather than moving a receipt
351
- into the project. Commands containing spaces or shell metacharacters use literal
352
- native-shell quoting and retain the selected project path.
369
+ into the project. When an explicit target is needed, commands containing spaces
370
+ or shell metacharacters use literal native-shell quoting and retain the selected
371
+ project path.
372
+
373
+ `preview-missing` means no saved preview was found for the selected project.
374
+ It does not mean project discovery failed or that storage is damaged. A receipt
375
+ may have been consumed or may be absent from this user-local store; run a fresh
376
+ check, review it, then approve the matching apply plan. `preview-mismatch` also
377
+ requires a fresh check because the saved preview no longer matches the current
378
+ plan. Repeating the project argument does not satisfy either prerequisite.
379
+
380
+ Other preview failures retain their specific diagnosis: `preview-storage` names
381
+ a storage operation or path to repair, `preview-invalid` identifies an invalid
382
+ receipt, `preview-unsupported` reports a format incompatibility, and
383
+ `preview-busy` reports concurrent access. Follow the named remedy rather than
384
+ treating every failure as a missing preview. Do not remove an active lock or
385
+ change project files to repair preview metadata.
353
386
 
354
387
  The immutable history snapshot travels inside the project. Preview receipts and
355
388
  approval records do not: another machine, checkout, worktree, or moved project
@@ -210,7 +210,7 @@ comparisons to infer execution safety.
210
210
 
211
211
  | Contract | Current version |
212
212
  | --- | --- |
213
- | CLI package version | 0.11.2 |
213
+ | CLI package version | 0.11.3 |
214
214
  | Activation package identity | 0.11.0 |
215
215
  | Manifest write / supported reads | 7 / 2-7 for API and GenAI |
216
216
  | Normative policy | 6 |
@@ -221,12 +221,12 @@ comparisons to infer execution safety.
221
221
  | Phase graph, supersession, credential policy | 1 |
222
222
  | Assessment report and control catalog | 1 |
223
223
 
224
- The 0.11.2 CLI patch retains the 0.11.0 activation identity because its phase
224
+ The 0.11.3 CLI patch retains the 0.11.0 activation identity because its phase
225
225
  semantics and graph are unchanged. Independent infrastructure provenance
226
- explicitly recognizes generation versions 0.11.0, 0.11.1, and 0.11.2, including
227
- mixed component histories; unknown releases are not automatically trusted or
228
- treated as compatible. The mandatory preview/approval workflow and schema-3
229
- update reports are breaking CLI behavior despite the patch version.
226
+ explicitly recognizes generation versions 0.11.0, 0.11.1, 0.11.2, and 0.11.3,
227
+ including mixed component histories; unknown releases are not automatically
228
+ trusted or treated as compatible. The mandatory preview/approval workflow and
229
+ schema-3 update reports remain unchanged by this patch.
230
230
 
231
231
  Known activation-v1 history remains **diagnostic-only**, not executable proof.
232
232
  Compatibility metadata v3 separately declares the exact history-preserving
@@ -146,6 +146,34 @@ Restore `liftoff.manifest.json` from version control or regenerate the project
146
146
  with the matching Liftoff version. Do not weaken path validation or retain a
147
147
  hand-edited unsafe path.
148
148
 
149
+ ## Update reports a missing preview
150
+
151
+ `preview-missing` means Liftoff found the project but has no saved update preview
152
+ for it in the current user-local store. It is not a requirement to repeat the
153
+ project folder or evidence of a storage fault. From inside the project, run
154
+ these commands separately:
155
+
156
+ ```bash
157
+ liftoff update --check
158
+ liftoff update
159
+ ```
160
+
161
+ Review the preview before approving apply. Check exits 2 when it finds actionable
162
+ work, so joining check and apply with `&&` would skip the second command.
163
+ A previously saved preview may have been consumed; run a fresh check rather than
164
+ assuming the earlier check is still available.
165
+
166
+ Human follow-ups omit a redundant `--project` when the current directory resolves
167
+ to the selected project. They retain an explicit target when operating on another
168
+ project or when the caller's context cannot be established. JSON remedies keep
169
+ explicit targets. Completion omits a redundant directory change only when
170
+ already at the project root.
171
+
172
+ A stale preview (`preview-mismatch`) also needs a fresh check and approval.
173
+ Storage, invalid-receipt, unsupported-format, and busy-operation failures have
174
+ their own remedies; repair the named condition instead of changing the project
175
+ argument or deleting an active lock.
176
+
149
177
  ## Update reports managed-core conflicts or orphans
150
178
 
151
179
  Run `liftoff update --check` before apply. `liftoff update` requires the matching
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@msn-control/liftoff",
3
- "version": "0.11.2",
3
+ "version": "0.11.3",
4
4
  "description": "Interactive CLI for governed GenAI applications and APIs.",
5
5
  "type": "module",
6
6
  "license": "GPL-3.0-only",