@msn-control/liftoff 0.11.1 → 0.11.2
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.
- package/DEVELOPER.md +28 -10
- package/README.md +11 -6
- package/dist/adapters/filesystem/project-transaction.d.ts +2 -1
- package/dist/adapters/filesystem/project-transaction.js +25 -6
- package/dist/adapters/filesystem/project-transaction.js.map +1 -1
- package/dist/adapters/filesystem/reviewed-update-transaction.d.ts +53 -0
- package/dist/adapters/filesystem/reviewed-update-transaction.js +864 -0
- package/dist/adapters/filesystem/reviewed-update-transaction.js.map +1 -0
- package/dist/adapters/filesystem/update-previews.d.ts +50 -0
- package/dist/adapters/filesystem/update-previews.js +613 -0
- package/dist/adapters/filesystem/update-previews.js.map +1 -0
- package/dist/adapters/process/shell-command.d.ts +1 -0
- package/dist/adapters/process/shell-command.js +7 -1
- package/dist/adapters/process/shell-command.js.map +1 -1
- package/dist/application/context.d.ts +5 -0
- package/dist/application/diagnose/doctor.js +9 -15
- package/dist/application/diagnose/doctor.js.map +1 -1
- package/dist/application/update/approval.d.ts +39 -0
- package/dist/application/update/approval.js +54 -0
- package/dist/application/update/approval.js.map +1 -0
- package/dist/application/update/command-guidance.d.ts +2 -0
- package/dist/application/update/command-guidance.js +14 -0
- package/dist/application/update/command-guidance.js.map +1 -0
- package/dist/application/update/inspection.d.ts +37 -0
- package/dist/application/update/inspection.js +235 -0
- package/dist/application/update/inspection.js.map +1 -0
- package/dist/application/update/migration-runtime.d.ts +14 -0
- package/dist/application/update/migration-runtime.js +178 -0
- package/dist/application/update/migration-runtime.js.map +1 -0
- package/dist/application/update/output.d.ts +134 -0
- package/dist/application/update/output.js +182 -0
- package/dist/application/update/output.js.map +1 -0
- package/dist/application/update/preview.d.ts +49 -0
- package/dist/application/update/preview.js +220 -0
- package/dist/application/update/preview.js.map +1 -0
- package/dist/application/update/protected-source.d.ts +25 -0
- package/dist/application/update/protected-source.js +81 -0
- package/dist/application/update/protected-source.js.map +1 -0
- package/dist/application/update/reporting.d.ts +4 -4
- package/dist/application/update/reporting.js +14 -13
- package/dist/application/update/reporting.js.map +1 -1
- package/dist/application/update/revalidation-plan.d.ts +22 -0
- package/dist/application/update/revalidation-plan.js +108 -0
- package/dist/application/update/revalidation-plan.js.map +1 -0
- package/dist/application/update/revalidation.d.ts +70 -0
- package/dist/application/update/revalidation.js +337 -0
- package/dist/application/update/revalidation.js.map +1 -0
- package/dist/application/update/review-plan.d.ts +25 -0
- package/dist/application/update/review-plan.js +89 -0
- package/dist/application/update/review-plan.js.map +1 -0
- package/dist/application/update/transaction-approval.d.ts +29 -0
- package/dist/application/update/transaction-approval.js +82 -0
- package/dist/application/update/transaction-approval.js.map +1 -0
- package/dist/application/update/use-case.d.ts +1 -0
- package/dist/application/update/use-case.js +240 -569
- package/dist/application/update/use-case.js.map +1 -1
- package/dist/application/update/write-plan.d.ts +15 -0
- package/dist/application/update/write-plan.js +115 -0
- package/dist/application/update/write-plan.js.map +1 -0
- package/dist/cli/args/definitions.js +5 -4
- package/dist/cli/args/definitions.js.map +1 -1
- package/dist/cli/args/help.js +13 -1
- package/dist/cli/args/help.js.map +1 -1
- package/dist/cli/args/parser.js +22 -7
- package/dist/cli/args/parser.js.map +1 -1
- package/dist/cli/commands/update.js +1 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/domain/governance/policy/identity.d.ts +1 -1
- package/dist/domain/governance/policy/identity.js +2 -2
- package/dist/domain/governance/policy/identity.js.map +1 -1
- package/dist/domain/project/infrastructure-layout.d.ts +1 -1
- package/dist/domain/project/infrastructure-layout.js +2 -1
- package/dist/domain/project/infrastructure-layout.js.map +1 -1
- package/dist/domain/project/reviewed-update-artifacts.d.ts +2 -0
- package/dist/domain/project/reviewed-update-artifacts.js +3 -0
- package/dist/domain/project/reviewed-update-artifacts.js.map +1 -0
- package/dist/generators/common/base.js +5 -1
- package/dist/generators/common/base.js.map +1 -1
- package/dist/governance-activation/activation-state.js +4 -1
- package/dist/governance-activation/activation-state.js.map +1 -1
- package/dist/governance-activation/commands.d.ts +5 -0
- package/dist/governance-activation/commands.js +65 -3
- package/dist/governance-activation/commands.js.map +1 -1
- package/dist/governance-activation/compatibility.d.ts +21 -4
- package/dist/governance-activation/compatibility.js +47 -8
- package/dist/governance-activation/compatibility.js.map +1 -1
- package/dist/governance-activation/doctor.js +32 -5
- package/dist/governance-activation/doctor.js.map +1 -1
- package/dist/governance-activation/historical-state.d.ts +81 -0
- package/dist/governance-activation/historical-state.js +817 -0
- package/dist/governance-activation/historical-state.js.map +1 -0
- package/dist/governance-activation/history-contracts.d.ts +109 -0
- package/dist/governance-activation/history-contracts.js +303 -0
- package/dist/governance-activation/history-contracts.js.map +1 -0
- package/dist/governance-activation/inputs.d.ts +2 -0
- package/dist/governance-activation/inputs.js +13 -1
- package/dist/governance-activation/inputs.js.map +1 -1
- package/dist/governance-activation/migration-history.d.ts +97 -0
- package/dist/governance-activation/migration-history.js +388 -0
- package/dist/governance-activation/migration-history.js.map +1 -0
- package/dist/governance-activation/migration.js +1 -1
- package/dist/governance-activation/migration.js.map +1 -1
- package/dist/governance-activation/proof-records.d.ts +3 -0
- package/dist/governance-activation/proof-records.js +78 -0
- package/dist/governance-activation/proof-records.js.map +1 -0
- package/dist/governance-activation/read-only.d.ts +4 -4
- package/dist/governance-activation/read-only.js +9 -69
- package/dist/governance-activation/read-only.js.map +1 -1
- package/dist/governance-activation/seed-lifecycle.d.ts +28 -6
- package/dist/governance-activation/seed-lifecycle.js +258 -25
- package/dist/governance-activation/seed-lifecycle.js.map +1 -1
- package/dist/governance-activation/transition-planning.d.ts +2 -0
- package/dist/governance-activation/transition-planning.js +12 -3
- package/dist/governance-activation/transition-planning.js.map +1 -1
- package/dist/governance-activation/transitions.d.ts +8 -2
- package/dist/governance-activation/transitions.js +36 -11
- package/dist/governance-activation/transitions.js.map +1 -1
- package/dist/governance-assessment/engine.js +30 -3
- package/dist/governance-assessment/engine.js.map +1 -1
- package/dist/governance-assessment/project.d.ts +7 -0
- package/dist/governance-assessment/project.js +44 -4
- package/dist/governance-assessment/project.js.map +1 -1
- package/dist/repository-governance.js +25 -12
- package/dist/repository-governance.js.map +1 -1
- package/docs/cli-reference.md +101 -28
- package/docs/configuration-and-manifests.md +27 -15
- package/docs/existing-repositories.md +19 -10
- package/docs/repository-governance.md +9 -5
- package/docs/safety-and-consent.md +27 -18
- package/docs/troubleshooting.md +9 -7
- package/docs/workloads.md +5 -4
- package/package.json +1 -1
package/docs/cli-reference.md
CHANGED
|
@@ -119,11 +119,21 @@ Governance JSON uses versioned objects and includes the complete activation
|
|
|
119
119
|
version vector: creating Liftoff version, manifest artifact version 7, policy
|
|
120
120
|
version 6, activation-contract version 2, state/evidence-header/approval schema
|
|
121
121
|
versions 2, graph/supersession/credential schema versions 1, and the phase-graph
|
|
122
|
-
hash. Compatibility metadata is version
|
|
122
|
+
hash. Compatibility metadata is version 3. It never
|
|
123
123
|
emits a setup-skill version. Future identities, unsupported compatibility
|
|
124
124
|
tuples, and unrecognized graph hashes block without rewriting state; the remedy
|
|
125
125
|
names the exact field and required Liftoff upgrade. Known v1 history is
|
|
126
|
-
diagnostic-only and byte-preserved;
|
|
126
|
+
diagnostic-only and byte-preserved; a supported successor requires
|
|
127
|
+
`liftoff update --check` and explicit approval, not automatic reconciliation.
|
|
128
|
+
|
|
129
|
+
Status, resume, and verify JSON include `migration` (the validated journal, or
|
|
130
|
+
`null`) and `migrationSummary`. The summary separates `localCommit`, validated
|
|
131
|
+
snapshot/index/successor linkage, recorded `revalidation`, `nextRecordedPhase`,
|
|
132
|
+
and a project-bound fresh-preview remedy. `currentProofRequired` is always
|
|
133
|
+
true: recorded completion is audit history, not current evidence or provider
|
|
134
|
+
authority. Human output presents the same migration progress separately from
|
|
135
|
+
readiness; stale current proof still blocks even when the journal says complete.
|
|
136
|
+
These inspection commands neither advance phases nor create preview receipts.
|
|
127
137
|
|
|
128
138
|
`/liftoff-setup` calls these commands instead of inferring phase completion from
|
|
129
139
|
prose or task checkboxes.
|
|
@@ -256,16 +266,28 @@ object.
|
|
|
256
266
|
## Update modes
|
|
257
267
|
|
|
258
268
|
```bash
|
|
269
|
+
liftoff update --check
|
|
259
270
|
liftoff update
|
|
260
271
|
liftoff update --force
|
|
261
|
-
liftoff update --json
|
|
262
|
-
liftoff update --check
|
|
263
272
|
liftoff update --check --json
|
|
273
|
+
liftoff update --approve-plan <fingerprint> --json
|
|
264
274
|
```
|
|
265
275
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
276
|
+
`liftoff update --check` is the human-first compatibility and migration preview.
|
|
277
|
+
It changes no project bytes, but saves and discloses a project-bound preview
|
|
278
|
+
receipt in user-local storage outside the repository. A receipt is not approval.
|
|
279
|
+
`liftoff update` requires a matching preview, recomputes its effective plan, and
|
|
280
|
+
asks for explicit approval with a negative default. Missing or stale previews
|
|
281
|
+
stop with instructions to rerun check. No-op inspection requires no approval.
|
|
282
|
+
|
|
283
|
+
Noninteractive apply additionally requires the exact full plan fingerprint
|
|
284
|
+
through `--approve-plan`. Check and apply must share the same materialized
|
|
285
|
+
checkout and user-local storage; another runner, worktree, or moved project
|
|
286
|
+
needs a fresh check and approval. `--force`, `--json`, and a generic yes do not
|
|
287
|
+
waive these gates. The force variant has its own preview and fingerprint.
|
|
288
|
+
|
|
289
|
+
Approved apply retains safe new, missing, untouched-upgrade, clean-move, and
|
|
290
|
+
recorded-state changes only for explicit `managed-core` artifacts. For manifest v7 this includes governance
|
|
269
291
|
policy, context, guide, phase graph, compatibility metadata, credential-policy
|
|
270
292
|
schema, and selected-agent `/liftoff-setup` integrations. Core conflicts are
|
|
271
293
|
skipped and core orphans are reported without deletion. During legacy governance
|
|
@@ -288,22 +310,71 @@ recreates or deletes project files.
|
|
|
288
310
|
New environments also require recorded independent-root infrastructure and safe
|
|
289
311
|
existing shared-module files. Legacy/shared or unknown layout produces a
|
|
290
312
|
component-level migration-required result; other safe managed-core work may
|
|
291
|
-
continue. Force cannot migrate state or rewrite shared infrastructure.
|
|
313
|
+
continue. Force cannot migrate infrastructure state or rewrite shared infrastructure.
|
|
314
|
+
New component provisioning is deferred during activation-v1 migration and needs
|
|
315
|
+
a fresh post-migration preview.
|
|
292
316
|
|
|
293
317
|
Use `--check` whenever no project bytes may change. Human check mode prints
|
|
294
318
|
managed-core drift, ownership-only manifest v2-v7 migration, activation-identity
|
|
295
|
-
compatibility,
|
|
296
|
-
recommends `--force` only for core conflicts
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
319
|
+
compatibility, history preservation, revalidation gaps, and authorized
|
|
320
|
+
provisioning. It recommends `--force` only for eligible owned core conflicts
|
|
321
|
+
and displays the additional exact changes and fingerprint separately.
|
|
322
|
+
`--check --force` remains invalid because check mode never authorizes overwrites.
|
|
323
|
+
|
|
324
|
+
`--json` selects output format, not safety or consent. Update JSON uses schema 3
|
|
325
|
+
with project-update scope and separate core, provisioning, activation-migration,
|
|
326
|
+
and revalidation outcomes. Prompts and progress use stderr; stdout remains one
|
|
327
|
+
JSON result. Check exits 0 for no actionable work, 2 for differences, and 1 for
|
|
328
|
+
errors. Apply exits 0 for completed scope, 2 when migration committed but
|
|
329
|
+
revalidation is incomplete, and 1 for rejected approval or an error.
|
|
330
|
+
|
|
331
|
+
Update never installs dependencies. Ordinary transaction backups are for failure
|
|
332
|
+
recovery; activation migration additionally retains durable original history.
|
|
333
|
+
Force cannot bypass preview, approval, ownership, project-boundary, symlink,
|
|
334
|
+
structural, identity, or manifest guards.
|
|
335
|
+
|
|
336
|
+
### Preview receipt storage
|
|
337
|
+
|
|
338
|
+
Check reports the exact native receipt path. Receipts and separate transaction
|
|
339
|
+
approval records use user-local storage, never the project or its containing
|
|
340
|
+
repository:
|
|
341
|
+
|
|
342
|
+
| Platform | Receipt directory |
|
|
343
|
+
| --- | --- |
|
|
344
|
+
| Linux | `$XDG_STATE_HOME/liftoff/update-previews` when `XDG_STATE_HOME` is set to an absolute path; otherwise, when unset, `$HOME/.local/state/liftoff/update-previews` |
|
|
345
|
+
| macOS | `~/Library/Application Support/liftoff/update-previews` |
|
|
346
|
+
| Windows | `%LOCALAPPDATA%\liftoff\update-previews` when `LOCALAPPDATA` is set to an absolute drive or UNC path; otherwise, when unset, `%USERPROFILE%\AppData\Local\liftoff\update-previews` |
|
|
347
|
+
|
|
348
|
+
An empty or relative override is an error, not a request to use the fallback.
|
|
349
|
+
Unsafe paths, links/junctions, or storage inside the project or repository also
|
|
350
|
+
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.
|
|
353
|
+
|
|
354
|
+
The immutable history snapshot travels inside the project. Preview receipts and
|
|
355
|
+
approval records do not: another machine, checkout, worktree, or moved project
|
|
356
|
+
needs its own fresh check and approval. A receipt stores digests, not project
|
|
357
|
+
source bodies, and is never portable blanket authorization.
|
|
358
|
+
|
|
359
|
+
### Reviewed activation-v1 migration
|
|
360
|
+
|
|
361
|
+
An exact supported v1 source can be previewed with `liftoff update --check`.
|
|
362
|
+
Approved update verifies an immutable in-project history snapshot before
|
|
363
|
+
replacing active records, then creates a linked strict v2 activation. Historical
|
|
364
|
+
state, evidence, plans, approvals, and source metadata retain their original
|
|
365
|
+
bytes under the dedicated governance history directory. History is not managed
|
|
366
|
+
core and is never automatically committed, pushed, or cleaned with receipts.
|
|
367
|
+
|
|
368
|
+
Fresh local revalidation does not translate old success flags or approvals.
|
|
369
|
+
It uses only the finite reviewed local operations and stops before provider
|
|
370
|
+
access, dependency installation, publication, or other independently approved
|
|
371
|
+
work. Validation commands execute project-controlled code, not a sandbox;
|
|
372
|
+
unexpected protected-input edits are preserved and reported.
|
|
373
|
+
|
|
374
|
+
A failed local transaction uses bounded recovery. A failure after commit keeps
|
|
375
|
+
v2 blocked and resumable: repair the named cause, rerun check, then approve the
|
|
376
|
+
remaining work. Do not reset state to v1, change identity fields manually, or
|
|
377
|
+
recreate live resources to silence readiness diagnostics.
|
|
307
378
|
|
|
308
379
|
New dependency, runtime, container, database, application, and infrastructure
|
|
309
380
|
templates apply to newly generated projects. Existing
|
|
@@ -330,10 +401,10 @@ All current writes use v7. Supported historical reads are normalized through an
|
|
|
330
401
|
explicit compatibility map; future versions, individually known but unsupported
|
|
331
402
|
tuples, and unknown phase-graph hashes block and report an upgrade or
|
|
332
403
|
reconciliation remedy instead of downgrading or fabricating evidence.
|
|
333
|
-
Exact known activation-v1 identity
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
404
|
+
Exact known activation-v1 identity remains non-executable. The explicitly
|
|
405
|
+
supported reviewed successor lane preserves that original history while
|
|
406
|
+
establishing new v2 state and fresh proof; merely reading a historical identity
|
|
407
|
+
or updating a core file does not perform or authorize the migration.
|
|
337
408
|
|
|
338
409
|
## Development and infrastructure helpers
|
|
339
410
|
|
|
@@ -370,8 +441,9 @@ liftoff update --check --json
|
|
|
370
441
|
```
|
|
371
442
|
|
|
372
443
|
Each JSON object has a top-level numeric `schemaVersion`. Update JSON uses
|
|
373
|
-
schema version
|
|
374
|
-
|
|
444
|
+
schema version 3 and `scope: "project-update"`, with separate managed-core,
|
|
445
|
+
provisioning, activation-migration, and revalidation outcomes plus preview and
|
|
446
|
+
approval status. A committed migration does not imply governance readiness.
|
|
375
447
|
Operational warnings, such as a dirty-worktree warning before JSON apply, are
|
|
376
448
|
written to stderr so stdout remains one parseable JSON object.
|
|
377
449
|
|
|
@@ -379,8 +451,9 @@ Exit codes:
|
|
|
379
451
|
|
|
380
452
|
- `0`: success or a clean check.
|
|
381
453
|
- `1`: invalid input, unsafe state, or command failure.
|
|
382
|
-
- `2`:
|
|
383
|
-
installable CLI release.
|
|
454
|
+
- `2`: update check found differences, update committed a migration but local
|
|
455
|
+
revalidation is incomplete, or upgrade check found an installable CLI release.
|
|
456
|
+
Governance assessment also uses 2 for partial or excepted results.
|
|
384
457
|
|
|
385
458
|
Raw installer, framework, and dependency child stdout and stderr are forwarded
|
|
386
459
|
unchanged.
|
|
@@ -197,7 +197,8 @@ policy, contract, schema, or graph identities remain invalid or blocked without
|
|
|
197
197
|
rewrite.
|
|
198
198
|
|
|
199
199
|
`liftoff update --check`, including `--check --json`, leaves an old manifest
|
|
200
|
-
byte-for-byte unchanged
|
|
200
|
+
byte-for-byte unchanged while disclosing an external preview receipt. An
|
|
201
|
+
explicitly approved update writes v7 only after the
|
|
201
202
|
transaction succeeds. V2-v6 backend, frontend, database, dependency, container,
|
|
202
203
|
environment, documentation, and infrastructure entries become
|
|
203
204
|
project provenance without reading or changing current production bytes.
|
|
@@ -209,27 +210,38 @@ comparisons to infer execution safety.
|
|
|
209
210
|
|
|
210
211
|
| Contract | Current version |
|
|
211
212
|
| --- | --- |
|
|
212
|
-
| CLI package version | 0.11.
|
|
213
|
+
| CLI package version | 0.11.2 |
|
|
213
214
|
| Activation package identity | 0.11.0 |
|
|
214
215
|
| Manifest write / supported reads | 7 / 2-7 for API and GenAI |
|
|
215
216
|
| Normative policy | 6 |
|
|
216
|
-
| Activation contract, state, evidence header, approval envelope
|
|
217
|
+
| Activation contract, state, evidence header, approval envelope | 2 |
|
|
218
|
+
| Compatibility metadata / supported historical input | 3 / 2 |
|
|
219
|
+
| Update report | 3 |
|
|
220
|
+
| Preview receipt, transaction approval, history index, migration journal | 1 |
|
|
217
221
|
| Phase graph, supersession, credential policy | 1 |
|
|
218
222
|
| Assessment report and control catalog | 1 |
|
|
219
223
|
|
|
220
|
-
The 0.11.
|
|
224
|
+
The 0.11.2 CLI patch retains the 0.11.0 activation identity because its phase
|
|
221
225
|
semantics and graph are unchanged. Independent infrastructure provenance
|
|
222
|
-
explicitly recognizes
|
|
223
|
-
automatically trusted or
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
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.
|
|
230
|
+
|
|
231
|
+
Known activation-v1 history remains **diagnostic-only**, not executable proof.
|
|
232
|
+
Compatibility metadata v3 separately declares the exact history-preserving
|
|
233
|
+
successor lane available through `liftoff update --check` and explicitly
|
|
234
|
+
approved update. Schema-2 metadata remains readable input, not authority to
|
|
235
|
+
invent a migration. Future/mixed tuples, ad hoc state, and unknown graphs remain
|
|
236
|
+
blocked.
|
|
237
|
+
|
|
238
|
+
Migration preserves the original manifest, historical state and evidence, creates
|
|
239
|
+
strict v2 state, and links it through `governance/migration-state.json` to its
|
|
240
|
+
immutable `governance/history` snapshot. No required field is added to manifest
|
|
241
|
+
v7 or the v2 proof schemas. Original generation provenance remains intact.
|
|
242
|
+
A readable historical record never authorizes current provider scope; old
|
|
243
|
+
approvals and checked tasks do not become fresh evidence. Revalidation failure
|
|
244
|
+
after local commit leaves the linked v2 activation blocked and resumable.
|
|
233
245
|
|
|
234
246
|
## Artifact ownership
|
|
235
247
|
|
|
@@ -70,11 +70,16 @@ liftoff update --check
|
|
|
70
70
|
liftoff update
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
Always run `--check` before a write-capable update. Check leaves project bytes
|
|
74
|
+
unchanged and discloses a user-local preview receipt outside the repository.
|
|
75
|
+
Plain update requires a matching preview and explicit approval of the exact
|
|
76
|
+
plan before applying safe managed-core changes; core conflicts and orphans stay
|
|
77
|
+
protected. `--force` requires separate approval of its previewed variant and
|
|
78
|
+
can replace only listed, owned core conflicts. Project-owned production
|
|
79
|
+
files are not compared with new templates or overwritten by update. For CI
|
|
77
80
|
core-maintenance gates, use `liftoff update --check --json`.
|
|
81
|
+
See [preview receipt storage](cli-reference.md#preview-receipt-storage) for
|
|
82
|
+
platform-specific locations and checkout portability.
|
|
78
83
|
|
|
79
84
|
OpenSpec skills and commands remain framework-owned. To give an existing
|
|
80
85
|
project all 12 workflows as both skills and commands, run:
|
|
@@ -90,8 +95,9 @@ hosted Copilot agent later, update `githubCopilot.cloudAgent` through OpenSpec
|
|
|
90
95
|
and run `openspec update`.
|
|
91
96
|
|
|
92
97
|
Projects created before manifest artifact version 7 automatically preview the
|
|
93
|
-
default deterministic setup handoff as new named drift.
|
|
94
|
-
adopts collision-free policy, context,
|
|
98
|
+
default deterministic setup handoff as new named drift. After a matching check
|
|
99
|
+
and explicit approval, update safely adopts collision-free policy, context,
|
|
100
|
+
guide, phase graph, compatibility
|
|
95
101
|
metadata, credential-policy schema, and selected-agent setup integrations
|
|
96
102
|
without rewriting a configuration that omitted `governanceProfile`.
|
|
97
103
|
Existing different files remain unowned conflicts and the v7 manifest records
|
|
@@ -107,10 +113,13 @@ canonical phase graph, private-runner credential contract, bootstrap-state
|
|
|
107
113
|
retention/disposal contract, and active-change reconciliation before
|
|
108
114
|
replacement. Updating the handoff never provisions Azure or GitHub resources;
|
|
109
115
|
active downstream work must have supported identity and current evidence before
|
|
110
|
-
it can execute.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
116
|
+
it can execute. Exact supported activation-v1 migration is previewed through
|
|
117
|
+
`liftoff update --check` and requires approval of that plan. Original state,
|
|
118
|
+
receipts, plans, approvals, and source metadata are retained in in-project
|
|
119
|
+
history before a linked v2 successor is created. Historical records stay
|
|
120
|
+
non-executable; updating a core file does not make them current proof.
|
|
121
|
+
Post-commit revalidation failure leaves v2 blocked and resumable. Unsupported
|
|
122
|
+
source formats and independent infrastructure migrations remain separate blockers.
|
|
114
123
|
|
|
115
124
|
The manifest-v7 transition releases every legacy non-core artifact into project
|
|
116
125
|
provenance without writing, restoring, moving, or deleting its path.
|
|
@@ -342,14 +342,18 @@ seed blocks Phase 0. Exactly one compatible active governance change is resumed.
|
|
|
342
342
|
Multiple overlapping changes require a schema-valid supersession or archive
|
|
343
343
|
record before any phase advances.
|
|
344
344
|
|
|
345
|
-
|
|
346
|
-
|
|
345
|
+
Reviewed managed updates install new policy, graph, schema, compatibility metadata,
|
|
346
|
+
and setup/assessment integrations without acquiring general state ownership.
|
|
347
|
+
Forced update can remove
|
|
347
348
|
exact retired generated setup-alias entries from older manifests. When a policy,
|
|
348
349
|
activation-contract, schema, or graph-hash change affects active work, status
|
|
349
350
|
reports `reconciliation-required` and identifies affected descendants. Historical
|
|
350
|
-
activation-v1 state and evidence
|
|
351
|
-
|
|
352
|
-
|
|
351
|
+
activation-v1 state and evidence remain byte-preserved and non-executable.
|
|
352
|
+
`liftoff update --check` can preview an exact supported successor migration;
|
|
353
|
+
explicitly approved apply preserves original history and creates linked v2 state.
|
|
354
|
+
Fresh local revalidation stops at unsupported or independently authorized work.
|
|
355
|
+
Failure after commit leaves v2 blocked/resumable, not reset to v1. Never
|
|
356
|
+
acknowledge an identity by editing JSON or treat old approvals as current consent.
|
|
353
357
|
|
|
354
358
|
## Private staging and bootstrap retention
|
|
355
359
|
|
|
@@ -117,10 +117,15 @@ Existing destination modes are preserved where supported, including POSIX 0600
|
|
|
117
117
|
files. Windows does not provide equivalent POSIX mode-bit guarantees; this is
|
|
118
118
|
not a promise to preserve all Windows ACLs or filesystem metadata.
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
120
|
+
`liftoff update --check` presents compatibility and the exact proposed changes,
|
|
121
|
+
then discloses its external preview receipt without changing project bytes.
|
|
122
|
+
Apply requires that matching preview and explicit exact-plan approval. It
|
|
123
|
+
rechecks protected inputs under the project lock before writing. Noninteractive
|
|
124
|
+
approval uses `--approve-plan <fingerprint>`, not a generic yes.
|
|
125
|
+
|
|
126
|
+
The approved transaction preflights exact managed-core and create-only
|
|
127
|
+
provisioning paths separately from any explicitly authorized activation migration.
|
|
128
|
+
Schema/successor changes commit consistently with their manifest and history link.
|
|
124
129
|
|
|
125
130
|
Managed update may install manifest v7, policy v6, activation-contract v2,
|
|
126
131
|
phase graph, compatibility metadata, credential-policy schema, setup
|
|
@@ -130,17 +135,21 @@ immutable evidence, credential policies, active OpenSpec changes, and bootstrap
|
|
|
130
135
|
retention/disposal records. If the current activation identity is future,
|
|
131
136
|
unsupported, or graph-incompatible, update and setup block with a remedy instead
|
|
132
137
|
of downgrading or rewriting state.
|
|
133
|
-
Exact known historical v1
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
138
|
+
Exact known historical v1 can use the reviewed successor lane, not in-place
|
|
139
|
+
retagging. Original records are copied byte-for-byte into immutable in-project
|
|
140
|
+
history before their exact active paths are retired or replaced. A linked v2
|
|
141
|
+
activation obtains fresh evidence; historical approvals never become current
|
|
142
|
+
permission. Unavailable revalidation remains an explicit blocker.
|
|
137
143
|
|
|
138
144
|
If automatic rollback itself cannot safely restore a path because another
|
|
139
145
|
process changed it, Liftoff reports the incomplete rollback rather than
|
|
140
146
|
overwriting unknown bytes.
|
|
141
147
|
|
|
142
|
-
|
|
143
|
-
|
|
148
|
+
Ordinary transaction backups are for failed-write recovery. Activation history
|
|
149
|
+
is different: it remains after success and is never removed with disposable
|
|
150
|
+
preview receipts. A durable recovery journal must match a separately persisted
|
|
151
|
+
external transaction approval; a project-local claim alone cannot authorize
|
|
152
|
+
recovery. Post-commit revalidation failure preserves v2 and its historical link.
|
|
144
153
|
|
|
145
154
|
Dependency execution has a different recovery boundary: installer scripts can
|
|
146
155
|
write arbitrary project files, and a concurrent developer edit cannot be
|
|
@@ -154,12 +163,12 @@ literal-path recipe. This does not claim the entire scaffold was unchanged.
|
|
|
154
163
|
Update mode is selected explicitly rather than from terminal interactivity:
|
|
155
164
|
|
|
156
165
|
- Existing project artifacts are never compared with current template bytes.
|
|
157
|
-
- Plain `liftoff update`
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
- `
|
|
162
|
-
|
|
166
|
+
- Plain `liftoff update` applies the matching explicitly approved plan, retaining
|
|
167
|
+
safe managed-core classification and the separate migration/provisioning lanes.
|
|
168
|
+
- `liftoff update --check` changes no project bytes but saves and discloses a
|
|
169
|
+
preview receipt outside the repository.
|
|
170
|
+
- `--json` changes output formatting only; machine apply still requires the
|
|
171
|
+
matching preview and exact plan-fingerprint approval.
|
|
163
172
|
- Managed-core developer edits are conflicts. Project edits are outside update.
|
|
164
173
|
- Default update skips core conflicts and lists them by portable relative path.
|
|
165
174
|
`liftoff update --force` extends authority only to those guarded core
|
|
@@ -179,8 +188,8 @@ Update mode is selected explicitly rather than from terminal interactivity:
|
|
|
179
188
|
- Dependency definitions and locks are project-owned; update neither changes
|
|
180
189
|
nor installs them.
|
|
181
190
|
|
|
182
|
-
`--force` cannot be combined with `--check` and cannot weaken
|
|
183
|
-
symlink, collision, manifest, or transaction guards.
|
|
191
|
+
`--force` cannot be combined with `--check` and cannot weaken preview, approval,
|
|
192
|
+
compatibility, project-boundary, symlink, collision, manifest, or transaction guards.
|
|
184
193
|
|
|
185
194
|
Power Apps support is retired. Its manifests are rejected without fetching
|
|
186
195
|
starter source, changing application files, or treating force as conversion
|
package/docs/troubleshooting.md
CHANGED
|
@@ -148,11 +148,12 @@ hand-edited unsafe path.
|
|
|
148
148
|
|
|
149
149
|
## Update reports managed-core conflicts or orphans
|
|
150
150
|
|
|
151
|
-
`liftoff update`
|
|
152
|
-
|
|
151
|
+
Run `liftoff update --check` before apply. `liftoff update` requires the matching
|
|
152
|
+
preview and explicit approval, then applies its safe scope and skips core
|
|
153
|
+
conflicts. A missing or stale receipt requires a fresh check, not force.
|
|
153
154
|
|
|
154
|
-
- Use `liftoff update --check` for a read-only human report or
|
|
155
|
-
`
|
|
155
|
+
- Use `liftoff update --check` for a project-read-only human report or add
|
|
156
|
+
`--json` for automation. Both disclose an external preview receipt.
|
|
156
157
|
- Project-owned application files never enter the report or mutation set.
|
|
157
158
|
- Managed-core conflicts remain untouched by default.
|
|
158
159
|
- Use `liftoff update --force` only after reviewing every listed path and
|
|
@@ -162,7 +163,8 @@ conflicts.
|
|
|
162
163
|
- Update neither changes nor installs project dependencies.
|
|
163
164
|
|
|
164
165
|
Commit or copy local work before overwriting. Transaction rollback protects a
|
|
165
|
-
failed update
|
|
166
|
+
failed ordinary update. Activation migration additionally retains original
|
|
167
|
+
history after success; failed revalidation retains blocked/resumable v2.
|
|
166
168
|
|
|
167
169
|
For a new governance policy or launcher conflict, review that exact local file
|
|
168
170
|
before considering `liftoff update --force`; do not delete it or activate remote
|
|
@@ -258,8 +260,8 @@ or allow TCP and UDP 53 to exact custom resolver addresses.
|
|
|
258
260
|
| `phase-blocked` | Read the phase, proof, and authority blocker; unavailable production or enrollment capabilities remain blocked. |
|
|
259
261
|
| `evidence-stale` | Obtain fresh proof through supported, authorized execution from current inputs; never edit receipts or reuse stale headers as current inputs. |
|
|
260
262
|
| `credential-expiring` | Rotate before the recorded lead time using the same App or PAT policy. |
|
|
261
|
-
| `reconciliation-required` | Review
|
|
262
|
-
| `identity-incompatible` | Upgrade when the supported tuple requires a newer CLI.
|
|
263
|
+
| `reconciliation-required` | Review `liftoff update --check`. An exact supported v1 source can use the approved history-preserving successor lane; unknown formats remain blocked. Never edit JSON to acknowledge identity. |
|
|
264
|
+
| `identity-incompatible` | Upgrade when the supported tuple requires a newer CLI. A historical receipt never becomes executable through force, retagging, or an invented mapping. |
|
|
263
265
|
| `enforcement-incomplete` | Prove exact required contexts green and deliberately red, then approve final enforcement before ruleset mutation. |
|
|
264
266
|
| `disposal-pending` | Review retention, exact imported paths, destructive scope, and proof. Execution requires valid authority; there is no public approval-entry shortcut. |
|
|
265
267
|
|
package/docs/workloads.md
CHANGED
|
@@ -138,7 +138,8 @@ It does not convert workloads, change API stacks or GenAI patterns,
|
|
|
138
138
|
or modernize production project templates. Retired workloads have no update or
|
|
139
139
|
automatic migration path.
|
|
140
140
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
141
|
+
Start with `liftoff update --check`, which changes no project bytes and discloses
|
|
142
|
+
an external preview receipt. Plain update requires that matching preview and
|
|
143
|
+
explicit approval. `--force` applies only to its separately reviewed core
|
|
144
|
+
conflicts; project-owned source, dependencies, schemas, containers, environments,
|
|
145
|
+
documentation, and infrastructure remain outside replacement authority.
|