@msn-control/liftoff 0.11.2 → 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.
- package/DEVELOPER.md +26 -24
- package/README.md +18 -18
- package/assets/governance/single-maintainer-gitflow/activation-v2-graph.json +1583 -0
- package/dist/adapters/credentials/github-enrollment.d.ts +51 -0
- package/dist/adapters/credentials/github-enrollment.js +226 -0
- package/dist/adapters/credentials/github-enrollment.js.map +1 -0
- package/dist/adapters/credentials/protected-input.d.ts +7 -0
- package/dist/adapters/credentials/protected-input.js +68 -0
- package/dist/adapters/credentials/protected-input.js.map +1 -0
- package/dist/adapters/filesystem/executables.d.ts +2 -0
- package/dist/adapters/filesystem/executables.js +70 -0
- package/dist/adapters/filesystem/executables.js.map +1 -0
- package/dist/adapters/filesystem/update-previews.d.ts +9 -0
- package/dist/adapters/filesystem/update-previews.js +45 -2
- package/dist/adapters/filesystem/update-previews.js.map +1 -1
- package/dist/adapters/filesystem/workstation-attempts.d.ts +13 -0
- package/dist/adapters/filesystem/workstation-attempts.js +78 -0
- package/dist/adapters/filesystem/workstation-attempts.js.map +1 -0
- package/dist/adapters/github/activation-rest.d.ts +40 -0
- package/dist/adapters/github/activation-rest.js +272 -0
- package/dist/adapters/github/activation-rest.js.map +1 -0
- package/dist/adapters/process/shell-command.d.ts +1 -0
- package/dist/adapters/process/shell-command.js +5 -2
- package/dist/adapters/process/shell-command.js.map +1 -1
- package/dist/adapters/state/azure-blob.d.ts +43 -0
- package/dist/adapters/state/azure-blob.js +335 -0
- package/dist/adapters/state/azure-blob.js.map +1 -0
- package/dist/adapters/state/darwin-capabilities.d.ts +33 -0
- package/dist/adapters/state/darwin-capabilities.js +146 -0
- package/dist/adapters/state/darwin-capabilities.js.map +1 -0
- package/dist/adapters/state/darwin-native-host.d.ts +32 -0
- package/dist/adapters/state/darwin-native-host.js +294 -0
- package/dist/adapters/state/darwin-native-host.js.map +1 -0
- package/dist/adapters/state/darwin-profile.d.ts +6 -0
- package/dist/adapters/state/darwin-profile.js +56 -0
- package/dist/adapters/state/darwin-profile.js.map +1 -0
- package/dist/adapters/state/darwin-system-program.d.ts +1 -0
- package/dist/adapters/state/darwin-system-program.js +94 -0
- package/dist/adapters/state/darwin-system-program.js.map +1 -0
- package/dist/adapters/state/local-qualification.d.ts +16 -0
- package/dist/adapters/state/local-qualification.js +299 -0
- package/dist/adapters/state/local-qualification.js.map +1 -0
- package/dist/adapters/state/local.d.ts +25 -0
- package/dist/adapters/state/local.js +145 -0
- package/dist/adapters/state/local.js.map +1 -0
- package/dist/adapters/state/native-command.d.ts +21 -0
- package/dist/adapters/state/native-command.js +82 -0
- package/dist/adapters/state/native-command.js.map +1 -0
- package/dist/adapters/state/native-files.d.ts +2 -0
- package/dist/adapters/state/native-files.js +47 -0
- package/dist/adapters/state/native-files.js.map +1 -0
- package/dist/adapters/state/native-system.d.ts +38 -0
- package/dist/adapters/state/native-system.js +86 -0
- package/dist/adapters/state/native-system.js.map +1 -0
- package/dist/adapters/state/opentofu.d.ts +35 -0
- package/dist/adapters/state/opentofu.js +350 -0
- package/dist/adapters/state/opentofu.js.map +1 -0
- package/dist/adapters/state/owned-process.d.ts +43 -0
- package/dist/adapters/state/owned-process.js +252 -0
- package/dist/adapters/state/owned-process.js.map +1 -0
- package/dist/adapters/state/posix-lock-program.d.ts +1 -0
- package/dist/adapters/state/posix-lock-program.js +185 -0
- package/dist/adapters/state/posix-lock-program.js.map +1 -0
- package/dist/adapters/state/posix-native-lock.d.ts +15 -0
- package/dist/adapters/state/posix-native-lock.js +145 -0
- package/dist/adapters/state/posix-native-lock.js.map +1 -0
- package/dist/adapters/state/protected-workspace.d.ts +57 -0
- package/dist/adapters/state/protected-workspace.js +412 -0
- package/dist/adapters/state/protected-workspace.js.map +1 -0
- package/dist/application/context.d.ts +3 -0
- package/dist/application/diagnose/doctor.d.ts +5 -0
- package/dist/application/diagnose/doctor.js +21 -5
- package/dist/application/diagnose/doctor.js.map +1 -1
- package/dist/application/diagnose/generated-project.js +2 -7
- package/dist/application/diagnose/generated-project.js.map +1 -1
- package/dist/application/initialize/fixture.js +8 -1
- package/dist/application/initialize/fixture.js.map +1 -1
- package/dist/application/initialize/use-case.js +70 -36
- package/dist/application/initialize/use-case.js.map +1 -1
- package/dist/application/project/manifest.js +5 -4
- package/dist/application/project/manifest.js.map +1 -1
- package/dist/application/state-migration/execution.d.ts +32 -0
- package/dist/application/state-migration/execution.js +440 -0
- package/dist/application/state-migration/execution.js.map +1 -0
- package/dist/application/state-migration/index.d.ts +22 -0
- package/dist/application/state-migration/index.js +17 -0
- package/dist/application/state-migration/index.js.map +1 -0
- package/dist/application/state-migration/lifecycle.d.ts +3 -0
- package/dist/application/state-migration/lifecycle.js +149 -0
- package/dist/application/state-migration/lifecycle.js.map +1 -0
- package/dist/application/state-migration/planning.d.ts +7 -0
- package/dist/application/state-migration/planning.js +150 -0
- package/dist/application/state-migration/planning.js.map +1 -0
- package/dist/application/state-migration/recovery.d.ts +5 -0
- package/dist/application/state-migration/recovery.js +145 -0
- package/dist/application/state-migration/recovery.js.map +1 -0
- package/dist/application/state-migration/runtime.d.ts +32 -0
- package/dist/application/state-migration/runtime.js +188 -0
- package/dist/application/state-migration/runtime.js.map +1 -0
- package/dist/application/state-migration/service.d.ts +2 -0
- package/dist/application/state-migration/service.js +20 -0
- package/dist/application/state-migration/service.js.map +1 -0
- package/dist/application/update/command-guidance.d.ts +19 -2
- package/dist/application/update/command-guidance.js +20 -6
- package/dist/application/update/command-guidance.js.map +1 -1
- package/dist/application/update/guidance-context.d.ts +2 -0
- package/dist/application/update/guidance-context.js +35 -0
- package/dist/application/update/guidance-context.js.map +1 -0
- package/dist/application/update/inspection.d.ts +21 -4
- package/dist/application/update/inspection.js +88 -29
- package/dist/application/update/inspection.js.map +1 -1
- package/dist/application/update/migration-runtime.js +25 -13
- package/dist/application/update/migration-runtime.js.map +1 -1
- package/dist/application/update/output.d.ts +4 -1
- package/dist/application/update/output.js +14 -4
- package/dist/application/update/output.js.map +1 -1
- package/dist/application/update/preview.d.ts +10 -1
- package/dist/application/update/preview.js +26 -4
- package/dist/application/update/preview.js.map +1 -1
- package/dist/application/update/revalidation-plan.d.ts +1 -0
- package/dist/application/update/revalidation-plan.js +27 -15
- package/dist/application/update/revalidation-plan.js.map +1 -1
- package/dist/application/update/revalidation.d.ts +4 -1
- package/dist/application/update/revalidation.js +64 -23
- package/dist/application/update/revalidation.js.map +1 -1
- package/dist/application/update/use-case.js +50 -29
- package/dist/application/update/use-case.js.map +1 -1
- package/dist/cli/args/definitions.js +11 -3
- package/dist/cli/args/definitions.js.map +1 -1
- package/dist/cli/args/parser.js +29 -3
- package/dist/cli/args/parser.js.map +1 -1
- package/dist/domain/governance/activation/approvals.d.ts +264 -7
- package/dist/domain/governance/activation/approvals.js +166 -23
- package/dist/domain/governance/activation/approvals.js.map +1 -1
- package/dist/domain/governance/activation/capabilities.js +5 -2
- package/dist/domain/governance/activation/capabilities.js.map +1 -1
- package/dist/domain/governance/activation/evidence.d.ts +2 -1
- package/dist/domain/governance/activation/evidence.js +64 -11
- package/dist/domain/governance/activation/evidence.js.map +1 -1
- package/dist/domain/governance/activation/graph.d.ts +11 -384
- package/dist/domain/governance/activation/graph.js +424 -379
- package/dist/domain/governance/activation/graph.js.map +1 -1
- package/dist/domain/governance/activation/inputs.d.ts +3 -1
- package/dist/domain/governance/activation/inputs.js +47 -6
- package/dist/domain/governance/activation/inputs.js.map +1 -1
- package/dist/domain/governance/activation/operations.d.ts +4 -1
- package/dist/domain/governance/activation/operations.js +110 -22
- package/dist/domain/governance/activation/operations.js.map +1 -1
- package/dist/domain/governance/activation/readiness.d.ts +10 -0
- package/dist/domain/governance/activation/readiness.js +77 -38
- package/dist/domain/governance/activation/readiness.js.map +1 -1
- package/dist/domain/governance/activation/types.d.ts +151 -9
- package/dist/domain/governance/activation/types.js +23 -1
- package/dist/domain/governance/activation/types.js.map +1 -1
- package/dist/domain/governance/activation/validators.d.ts +4 -1
- package/dist/domain/governance/activation/validators.js +419 -26
- package/dist/domain/governance/activation/validators.js.map +1 -1
- package/dist/domain/governance/policy/identity.d.ts +55 -13
- package/dist/domain/governance/policy/identity.js +28 -8
- package/dist/domain/governance/policy/identity.js.map +1 -1
- package/dist/domain/project/artifact-lifecycle.d.ts +2 -1
- package/dist/domain/project/artifact-lifecycle.js +7 -1
- package/dist/domain/project/artifact-lifecycle.js.map +1 -1
- package/dist/domain/project/catalog.d.ts +50 -1
- package/dist/domain/project/catalog.js +104 -4
- package/dist/domain/project/catalog.js.map +1 -1
- package/dist/domain/project/contracts.d.ts +9 -1
- package/dist/domain/project/infrastructure-layout.d.ts +1 -1
- package/dist/domain/project/infrastructure-layout.js +3 -1
- package/dist/domain/project/infrastructure-layout.js.map +1 -1
- package/dist/domain/project/manifest/governance.d.ts +1 -1
- package/dist/domain/project/manifest/governance.js +9 -10
- package/dist/domain/project/manifest/governance.js.map +1 -1
- package/dist/domain/project/planning.js +4 -5
- package/dist/domain/project/planning.js.map +1 -1
- package/dist/domain/repair/stateful-bounded.d.ts +1 -0
- package/dist/domain/repair/stateful-bounded.js +37 -0
- package/dist/domain/repair/stateful-bounded.js.map +1 -0
- package/dist/domain/repair/stateful-invariants.d.ts +28 -0
- package/dist/domain/repair/stateful-invariants.js +278 -0
- package/dist/domain/repair/stateful-invariants.js.map +1 -0
- package/dist/domain/repair/stateful.d.ts +690 -0
- package/dist/domain/repair/stateful.js +26 -0
- package/dist/domain/repair/stateful.js.map +1 -0
- package/dist/domain/workstation/constraints.d.ts +1 -0
- package/dist/domain/workstation/constraints.js.map +1 -1
- package/dist/domain/workstation/contracts.d.ts +42 -0
- package/dist/domain/workstation/contracts.js +2 -0
- package/dist/domain/workstation/contracts.js.map +1 -0
- package/dist/domain/workstation/executables.d.ts +19 -0
- package/dist/domain/workstation/executables.js +68 -0
- package/dist/domain/workstation/executables.js.map +1 -0
- package/dist/domain/workstation/versions.d.ts +8 -0
- package/dist/domain/workstation/versions.js +145 -0
- package/dist/domain/workstation/versions.js.map +1 -0
- package/dist/framework-adapters.d.ts +2 -0
- package/dist/framework-adapters.js +148 -22
- package/dist/framework-adapters.js.map +1 -1
- package/dist/framework-validation.d.ts +6 -0
- package/dist/framework-validation.js +89 -24
- package/dist/framework-validation.js.map +1 -1
- package/dist/generators/common/base.js +57 -17
- package/dist/generators/common/base.js.map +1 -1
- package/dist/governance-activation/activation-state.js +39 -7
- package/dist/governance-activation/activation-state.js.map +1 -1
- package/dist/governance-activation/authority-records.d.ts +4 -0
- package/dist/governance-activation/authority-records.js +24 -0
- package/dist/governance-activation/authority-records.js.map +1 -0
- package/dist/governance-activation/commands.d.ts +9 -1
- package/dist/governance-activation/commands.js +392 -97
- package/dist/governance-activation/commands.js.map +1 -1
- package/dist/governance-activation/compatibility.d.ts +11 -8
- package/dist/governance-activation/compatibility.js +37 -23
- package/dist/governance-activation/compatibility.js.map +1 -1
- package/dist/governance-activation/doctor.js +40 -16
- package/dist/governance-activation/doctor.js.map +1 -1
- package/dist/governance-activation/github-config.d.ts +17 -0
- package/dist/governance-activation/github-config.js +88 -0
- package/dist/governance-activation/github-config.js.map +1 -0
- package/dist/governance-activation/github-discovery.d.ts +18 -0
- package/dist/governance-activation/github-discovery.js +229 -0
- package/dist/governance-activation/github-discovery.js.map +1 -0
- package/dist/governance-activation/github-ports.d.ts +12 -0
- package/dist/governance-activation/github-ports.js +4 -0
- package/dist/governance-activation/github-ports.js.map +1 -0
- package/dist/governance-activation/github-publication.d.ts +3 -0
- package/dist/governance-activation/github-publication.js +190 -0
- package/dist/governance-activation/github-publication.js.map +1 -0
- package/dist/governance-activation/historical-common.d.ts +98 -0
- package/dist/governance-activation/historical-common.js +269 -0
- package/dist/governance-activation/historical-common.js.map +1 -0
- package/dist/governance-activation/historical-credential-policy.d.ts +3 -0
- package/dist/governance-activation/historical-credential-policy.js +91 -0
- package/dist/governance-activation/historical-credential-policy.js.map +1 -0
- package/dist/governance-activation/historical-inputs.d.ts +6 -0
- package/dist/governance-activation/historical-inputs.js +57 -0
- package/dist/governance-activation/historical-inputs.js.map +1 -0
- package/dist/governance-activation/historical-safety.d.ts +9 -0
- package/dist/governance-activation/historical-safety.js +102 -0
- package/dist/governance-activation/historical-safety.js.map +1 -0
- package/dist/governance-activation/historical-source-metadata.d.ts +31 -0
- package/dist/governance-activation/historical-source-metadata.js +55 -0
- package/dist/governance-activation/historical-source-metadata.js.map +1 -0
- package/dist/governance-activation/historical-state.d.ts +12 -50
- package/dist/governance-activation/historical-state.js +195 -308
- package/dist/governance-activation/historical-state.js.map +1 -1
- package/dist/governance-activation/historical-v1-auxiliary.d.ts +1 -0
- package/dist/governance-activation/historical-v1-auxiliary.js +43 -0
- package/dist/governance-activation/historical-v1-auxiliary.js.map +1 -0
- package/dist/governance-activation/historical-v1-phase-contracts.d.ts +31 -0
- package/dist/governance-activation/historical-v1-phase-contracts.js +46 -0
- package/dist/governance-activation/historical-v1-phase-contracts.js.map +1 -0
- package/dist/governance-activation/historical-v2.d.ts +53 -0
- package/dist/governance-activation/historical-v2.js +313 -0
- package/dist/governance-activation/historical-v2.js.map +1 -0
- package/dist/governance-activation/history-contracts.d.ts +21 -12
- package/dist/governance-activation/history-contracts.js +99 -27
- package/dist/governance-activation/history-contracts.js.map +1 -1
- package/dist/governance-activation/inputs.d.ts +8 -2
- package/dist/governance-activation/inputs.js +41 -6
- package/dist/governance-activation/inputs.js.map +1 -1
- package/dist/governance-activation/migration-history.d.ts +43 -5
- package/dist/governance-activation/migration-history.js +231 -50
- package/dist/governance-activation/migration-history.js.map +1 -1
- package/dist/governance-activation/migration.d.ts +7 -4
- package/dist/governance-activation/migration.js +53 -252
- package/dist/governance-activation/migration.js.map +1 -1
- package/dist/governance-activation/phase-azure.d.ts +3 -0
- package/dist/governance-activation/phase-azure.js +205 -0
- package/dist/governance-activation/phase-azure.js.map +1 -0
- package/dist/governance-activation/phase-bootstrap-state.js +3 -0
- package/dist/governance-activation/phase-bootstrap-state.js.map +1 -1
- package/dist/governance-activation/phase-github.d.ts +3 -0
- package/dist/governance-activation/phase-github.js +192 -0
- package/dist/governance-activation/phase-github.js.map +1 -0
- package/dist/governance-activation/phase-governance.js +8 -2
- package/dist/governance-activation/phase-governance.js.map +1 -1
- package/dist/governance-activation/public-plans.d.ts +36 -0
- package/dist/governance-activation/public-plans.js +100 -0
- package/dist/governance-activation/public-plans.js.map +1 -0
- package/dist/governance-activation/read-only.d.ts +3 -1
- package/dist/governance-activation/read-only.js +7 -3
- package/dist/governance-activation/read-only.js.map +1 -1
- package/dist/governance-activation/reconciliation.js +10 -0
- package/dist/governance-activation/reconciliation.js.map +1 -1
- package/dist/governance-activation/seed-lifecycle.js +14 -25
- package/dist/governance-activation/seed-lifecycle.js.map +1 -1
- package/dist/governance-activation/source-of-truth.d.ts +21 -5
- package/dist/governance-activation/source-of-truth.js +102 -13
- package/dist/governance-activation/source-of-truth.js.map +1 -1
- package/dist/governance-activation/task-projection.d.ts +4 -1
- package/dist/governance-activation/task-projection.js +32 -3
- package/dist/governance-activation/task-projection.js.map +1 -1
- package/dist/governance-activation/task-writes.d.ts +42 -0
- package/dist/governance-activation/task-writes.js +250 -0
- package/dist/governance-activation/task-writes.js.map +1 -0
- package/dist/governance-activation/transition-files.d.ts +12 -0
- package/dist/governance-activation/transition-files.js +109 -0
- package/dist/governance-activation/transition-files.js.map +1 -0
- package/dist/governance-activation/transition-planning.d.ts +3 -1
- package/dist/governance-activation/transition-planning.js +158 -20
- package/dist/governance-activation/transition-planning.js.map +1 -1
- package/dist/governance-activation/transition-ports.d.ts +31 -3
- package/dist/governance-activation/transition-records.d.ts +11 -1
- package/dist/governance-activation/transition-records.js +52 -6
- package/dist/governance-activation/transition-records.js.map +1 -1
- package/dist/governance-activation/transitions.d.ts +5 -0
- package/dist/governance-activation/transitions.js +271 -37
- package/dist/governance-activation/transitions.js.map +1 -1
- package/dist/governance-assessment/engine.js +22 -15
- package/dist/governance-assessment/engine.js.map +1 -1
- package/dist/governance-assessment/project.d.ts +2 -0
- package/dist/governance-assessment/project.js +2 -1
- package/dist/governance-assessment/project.js.map +1 -1
- package/dist/interactive.d.ts +0 -1
- package/dist/interactive.js +3 -22
- package/dist/interactive.js.map +1 -1
- package/dist/openspec-profile.d.ts +2 -1
- package/dist/openspec-profile.js +11 -41
- package/dist/openspec-profile.js.map +1 -1
- package/dist/repository-governance.d.ts +10 -5
- package/dist/repository-governance.js +178 -92
- package/dist/repository-governance.js.map +1 -1
- package/dist/telemetry/contract.d.ts +1 -1
- package/dist/telemetry/contract.js +3 -0
- package/dist/telemetry/contract.js.map +1 -1
- package/dist/workstation-catalog.d.ts +13 -1
- package/dist/workstation-catalog.js +122 -0
- package/dist/workstation-catalog.js.map +1 -1
- package/dist/workstation.d.ts +69 -14
- package/dist/workstation.js +600 -215
- package/dist/workstation.js.map +1 -1
- package/docs/cli-reference.md +94 -23
- package/docs/configuration-and-manifests.md +11 -10
- package/docs/prerequisites.md +93 -18
- package/docs/repository-governance.md +68 -40
- package/docs/spec-workflows-and-agents.md +132 -13
- package/docs/troubleshooting.md +28 -0
- package/package.json +1 -1
|
@@ -14,17 +14,20 @@ cd my-project
|
|
|
14
14
|
/liftoff-setup
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
the workflow-specific local bootstrap
|
|
19
|
-
|
|
17
|
+
The native setup integration uses the deterministic Liftoff governance engine to
|
|
18
|
+
complete the workflow-specific local bootstrap and reviewed repairs, then
|
|
19
|
+
coordinates separately authorized publication, cloud deployment, qualification,
|
|
20
|
+
and enforcement. Codex invokes its native setup skill through the skill picker
|
|
21
|
+
or `$skill-name`; it does not receive a fabricated slash-command adapter.
|
|
22
|
+
The user-owned activation state records
|
|
20
23
|
execution, not an agent's claim of completion.
|
|
21
24
|
|
|
22
|
-
**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
**Independent milestones:** local readiness does not imply publication or
|
|
26
|
+
deployment. Explicit local-only use and declining a later approval remain
|
|
27
|
+
supported. Activation requires real source-matching provider evidence;
|
|
28
|
+
unsupported account capabilities, unverified private access, and incomplete
|
|
29
|
+
observations remain explicit blockers. Retained-state disposal is separate
|
|
30
|
+
lifecycle work, not a 30-day delay before initial activation can complete.
|
|
28
31
|
|
|
29
32
|
## Managed files and user-owned state
|
|
30
33
|
|
|
@@ -39,8 +42,10 @@ Enabled governance adds managed-core files:
|
|
|
39
42
|
.liftoff/governance/credential-policy.schema.json
|
|
40
43
|
.github/prompts/liftoff-setup.prompt.md # Copilot selected
|
|
41
44
|
.claude/commands/liftoff-setup.md # Claude selected
|
|
45
|
+
.agents/skills/liftoff-setup/SKILL.md # Codex selected
|
|
42
46
|
.github/prompts/liftoff-governance-assess.prompt.md # Copilot selected
|
|
43
47
|
.claude/commands/liftoff-governance-assess.md # Claude selected
|
|
48
|
+
.agents/skills/liftoff-governance-assess/SKILL.md # Codex selected
|
|
44
49
|
```
|
|
45
50
|
|
|
46
51
|
Older generated setup aliases are retired. Use `liftoff update --force` after
|
|
@@ -167,7 +172,7 @@ normally return partial coverage. Exit 2 is advisory, not proof that governance
|
|
|
167
172
|
is broken or permission to remediate.
|
|
168
173
|
|
|
169
174
|
Reports go to stdout only, never activation state or evidence. Assessment cannot
|
|
170
|
-
complete Phase 0, satisfy an approval gate, or advance any phase. The wrapper
|
|
175
|
+
complete read-only Phase 0, satisfy an approval gate, or advance any phase. The wrapper
|
|
171
176
|
explains the CLI's classifications without inventing findings or executing
|
|
172
177
|
recommendations. Neither installing the integration nor running it activates,
|
|
173
178
|
updates, upgrades, or migrates the project.
|
|
@@ -196,6 +201,7 @@ seed-valid
|
|
|
196
201
|
-> pushed
|
|
197
202
|
-> phase-0-complete
|
|
198
203
|
-> activation-approved
|
|
204
|
+
-> bootstrap-workflow-source-ready
|
|
199
205
|
-> credential-ready
|
|
200
206
|
-> provider-ready
|
|
201
207
|
-> state-path-selected
|
|
@@ -204,8 +210,10 @@ seed-valid
|
|
|
204
210
|
-> private-backend-proof |
|
|
205
211
|
-> remote-import-verified --|
|
|
206
212
|
-> remote-ready
|
|
207
|
-
-> application-
|
|
213
|
+
-> application-prerequisites-ready
|
|
208
214
|
-> workflow-source-ready
|
|
215
|
+
-> application-artifact-ready
|
|
216
|
+
-> application-foundation
|
|
209
217
|
-> dev-proof
|
|
210
218
|
-> staging-qualified
|
|
211
219
|
-> production-rehearsed
|
|
@@ -213,7 +221,7 @@ seed-valid
|
|
|
213
221
|
-> enforcement-approved
|
|
214
222
|
-> rulesets-applied
|
|
215
223
|
-> live-readback
|
|
216
|
-
|
|
224
|
+
... separate lifecycle: bootstrap-state-disposed when due
|
|
217
225
|
```
|
|
218
226
|
|
|
219
227
|
If policy prose, generated tasks, or an agent response orders a transition
|
|
@@ -254,8 +262,11 @@ requires cloud credentials. A failed local check remains unfinished; only
|
|
|
254
262
|
explicit execution retries it after repair. Read-only status, resume, and
|
|
255
263
|
verification do not advance tasks or rerun checks. Unchanged current proof can
|
|
256
264
|
be reused; changed relevant inputs require fresh evidence.
|
|
257
|
-
Recorded legacy-shared or unknown infrastructure layouts
|
|
258
|
-
|
|
265
|
+
Recorded legacy-shared or unknown infrastructure layouts require a reviewed
|
|
266
|
+
repair plan even if new-looking directories exist. Layout assessment reports
|
|
267
|
+
migration-required and no commands are executed until approved. Use the setup integration's
|
|
268
|
+
supported repair action; moving folders or editing manifest provenance is not
|
|
269
|
+
a supported repair and does not prove that deployed state is safe to migrate.
|
|
259
270
|
|
|
260
271
|
If the seed was already archived before setup began, it stays archived.
|
|
261
272
|
Setup still runs the entire applicable local baseline, but strict OpenSpec
|
|
@@ -284,8 +295,11 @@ ask again; expanded resources, destinations, permissions, cost, exceptions, or
|
|
|
284
295
|
destructive effects require a new approval.
|
|
285
296
|
Its time window must satisfy `approvedAt <= now < expiresAt` and have a valid
|
|
286
297
|
start/end interval. A future, reversed, or expired envelope cannot authorize
|
|
287
|
-
execution.
|
|
288
|
-
|
|
298
|
+
execution. `governance plan` can preview dependency-ready work before approval.
|
|
299
|
+
`governance approve --plan <fingerprint>` persists only the exact reviewed
|
|
300
|
+
authority, with a separate project-bound user-local issue record. Imported
|
|
301
|
+
project JSON is not permission. Final enforcement can bind both its approval
|
|
302
|
+
and subsequent exact ruleset operations without granting other phase authority.
|
|
289
303
|
|
|
290
304
|
## Credentials for runner preflight
|
|
291
305
|
|
|
@@ -293,8 +307,7 @@ When `GITHUB_TOKEN` cannot read required hosted-runner metadata, setup first
|
|
|
293
307
|
prefers an existing verified selected-repository GitHub App installation with the
|
|
294
308
|
required read permissions. Liftoff does not install or broaden an App.
|
|
295
309
|
|
|
296
|
-
If no approved App is available, the
|
|
297
|
-
fine-grained PAT fallback, not an implemented enrollment command:
|
|
310
|
+
If no approved App is available, the narrowly scoped fallback is:
|
|
298
311
|
|
|
299
312
|
| Field | Value |
|
|
300
313
|
| --- | --- |
|
|
@@ -307,9 +320,11 @@ fine-grained PAT fallback, not an implemented enrollment command:
|
|
|
307
320
|
| Writes | none |
|
|
308
321
|
| Workflow/job allowlist | `.github/workflows/bootstrap-import-preflight.yml` job `bootstrap-import-preflight`; `.github/workflows/private-dast-preflight.yml` job `private-dast-preflight` |
|
|
309
322
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
323
|
+
After reviewing and approving the credential-ready plan, use
|
|
324
|
+
`liftoff governance credential-enroll --plan <fingerprint>`. The default input
|
|
325
|
+
channel is a private TTY; `--protected-stdin` explicitly selects a protected
|
|
326
|
+
automation channel. The published allowlisted workflow must prove actual
|
|
327
|
+
credential use; the secret name or a policy file alone cannot establish readiness.
|
|
313
328
|
Never paste or show the value in chat, argv, command arguments,
|
|
314
329
|
logs, evidence, files, or screenshots. A disclosed value is
|
|
315
330
|
compromised and must be revoked and rotated through its owner-controlled system.
|
|
@@ -323,7 +338,8 @@ secret value.
|
|
|
323
338
|
|
|
324
339
|
Task checkboxes are a projection of phase state, not authority. Evidence
|
|
325
340
|
documents carry repository identity, activation version vector, graph hash, phase
|
|
326
|
-
contract digest, real input/baseline digests,
|
|
341
|
+
contract digest, scope, real input/baseline digests, reviewed before/after
|
|
342
|
+
file and Git bindings, body commitment, phase ID, timestamp,
|
|
327
343
|
producer, and result. The local execution anchor is separate from a verified
|
|
328
344
|
remote repository binding; Phase 0 does not replace the anchor beneath earlier
|
|
329
345
|
local receipts. Digests prove consistency, not an independent signature or
|
|
@@ -335,7 +351,11 @@ binds the full saved plan, including clocks. `bodyDigest` covers the payload and
|
|
|
335
351
|
normalized readbacks. Consumers use the validated selected payload, not another
|
|
336
352
|
raw record that happens to reuse an ID. Repository publication binds the actual
|
|
337
353
|
reviewed push destination; Phase 0 cannot invalidate earlier local/publication
|
|
338
|
-
receipts by replacing the local anchor.
|
|
354
|
+
receipts by replacing the local anchor. Scoped projections keep later approved
|
|
355
|
+
workflow publication from invalidating unrelated local application checks,
|
|
356
|
+
while unplanned source, destination, and output changes still invalidate the
|
|
357
|
+
affected proof. External operation handles and pre-write checkpoints prevent
|
|
358
|
+
an interrupted workflow from being dispatched twice.
|
|
339
359
|
|
|
340
360
|
There may be only one active governance source of truth. An unfinished bootstrap
|
|
341
361
|
seed blocks Phase 0. Exactly one compatible active governance change is resumed.
|
|
@@ -348,21 +368,21 @@ Forced update can remove
|
|
|
348
368
|
exact retired generated setup-alias entries from older manifests. When a policy,
|
|
349
369
|
activation-contract, schema, or graph-hash change affects active work, status
|
|
350
370
|
reports `reconciliation-required` and identifies affected descendants. Historical
|
|
351
|
-
activation-v1 state and evidence remain byte-preserved and non-executable.
|
|
371
|
+
activation-v1/v2 state and evidence remain byte-preserved and non-executable.
|
|
352
372
|
`liftoff update --check` can preview an exact supported successor migration;
|
|
353
|
-
explicitly approved apply preserves original history and creates linked
|
|
373
|
+
explicitly approved apply preserves original history and creates linked v3 state.
|
|
354
374
|
Fresh local revalidation stops at unsupported or independently authorized work.
|
|
355
|
-
Failure after commit leaves
|
|
375
|
+
Failure after commit leaves v3 blocked/resumable, not reset to older authority. Never
|
|
356
376
|
acknowledge an identity by editing JSON or treat old approvals as current consent.
|
|
357
377
|
|
|
358
378
|
## Private staging and bootstrap retention
|
|
359
379
|
|
|
360
|
-
These are policy requirements for separately implemented production adapters,
|
|
361
|
-
not a claim that this CLI can provision the complete platform.
|
|
362
380
|
Private Staging DAST uses an ephemeral GitHub-hosted larger runner with Azure
|
|
363
381
|
VNet injection only when genuinely applicable. Phase 0 discovers repository,
|
|
364
382
|
subscription, authority, billing, network, DNS, cost, teardown, and capability
|
|
365
|
-
facts read-only.
|
|
383
|
+
facts read-only. DAST inapplicability does not bypass provider registration or
|
|
384
|
+
the private execution path required for state operations. Existing suitable
|
|
385
|
+
private paths are reused rather than replaced with public access.
|
|
366
386
|
|
|
367
387
|
When a private ZRS backend cannot be reached and no existing private management
|
|
368
388
|
path is approved, the bounded `bootstrap-local` branch may create only the
|
|
@@ -382,29 +402,37 @@ teardown.
|
|
|
382
402
|
The generated setup integrations call only strict, project-aware CLI commands:
|
|
383
403
|
|
|
384
404
|
```bash
|
|
385
|
-
liftoff governance status --json
|
|
386
|
-
liftoff governance plan --json
|
|
387
|
-
liftoff governance apply-next --json
|
|
388
|
-
liftoff governance
|
|
389
|
-
liftoff governance
|
|
390
|
-
liftoff governance
|
|
405
|
+
liftoff governance status --scope local --json
|
|
406
|
+
liftoff governance plan --scope local --json
|
|
407
|
+
liftoff governance apply-next --scope local --json --execute
|
|
408
|
+
liftoff governance verify --scope local --json
|
|
409
|
+
liftoff governance plan --scope activation --inputs public-inputs.json --json
|
|
410
|
+
liftoff governance approve --scope activation --plan <fingerprint> --json
|
|
411
|
+
liftoff governance apply-next --scope activation --plan <fingerprint> --execute --json
|
|
412
|
+
liftoff governance resume --scope activation --json
|
|
413
|
+
liftoff governance status --scope lifecycle --json
|
|
391
414
|
```
|
|
392
415
|
|
|
393
|
-
`status`, `
|
|
416
|
+
Direct commands default to activation scope. `status`, `resume`, and `verify`
|
|
417
|
+
are read-only; `plan` saves a disclosed preview outside the repository without
|
|
418
|
+
changing project/provider data. `apply-next` previews mutations
|
|
394
419
|
unless `--execute` is supplied, and even then executes at most one graph-ready,
|
|
395
420
|
evidence-ready, approved phase. Here, approved means its approval status is
|
|
396
421
|
`not-required` or `reused`. Unknown subcommands, flags, or extra positionals
|
|
397
422
|
fail before project discovery or mutation. Verification reports consistency
|
|
398
|
-
separately from
|
|
423
|
+
separately from selected-scope completion: a valid not-started or in-progress state may
|
|
399
424
|
have `ok: true` and `verificationStatus: "consistent"` while `complete` remains
|
|
400
425
|
false. An intact bootstrap seed awaiting baseline verification or archive is
|
|
401
426
|
also incomplete rather than inconsistent. Missing or overlapping seeds, or an
|
|
402
427
|
active seed contradicting recorded archive completion, still fail verification.
|
|
403
428
|
|
|
404
429
|
Apply-next reports `selectedPhase` for the attempted transition and
|
|
405
|
-
`executedPhase`
|
|
406
|
-
|
|
407
|
-
|
|
430
|
+
`executedPhase` separately from recomputed post-transition `nextReadyPhase`.
|
|
431
|
+
Schema-2 results also identify `nextPlannablePhase`, separate milestone progress,
|
|
432
|
+
and structured registered `nextActions`. A pending external operation is not
|
|
433
|
+
completed evidence. For failed or interrupted work, obtain a fresh
|
|
434
|
+
`governance plan --recover-phase <phase>` and explicitly execute its reviewed
|
|
435
|
+
`governance recover --plan <fingerprint> --execute` action. OpenSpec failures include bounded
|
|
408
436
|
diagnostics with terminal controls removed; credential-shaped output is
|
|
409
437
|
withheld rather than copied into state or command output.
|
|
410
438
|
|
|
@@ -9,8 +9,8 @@ Liftoff workload.
|
|
|
9
9
|
|
|
10
10
|
OpenSpec 1.11.0 organizes proposed behavior changes as reviewable artifacts
|
|
11
11
|
before implementation. Liftoff runs that pinned official initializer in
|
|
12
|
-
|
|
13
|
-
requires the complete custom profile with both
|
|
12
|
+
isolated staging, passes every selected coding agent in stable order, and
|
|
13
|
+
requires the complete custom profile with native-surface-aware `both` delivery:
|
|
14
14
|
|
|
15
15
|
```text
|
|
16
16
|
propose, explore, new, continue, apply, update,
|
|
@@ -26,6 +26,9 @@ the machine-wide change.
|
|
|
26
26
|
|
|
27
27
|
Generated projects contain `openspec/` plus all 12 official workflow skills and
|
|
28
28
|
commands for each selected agent surface that supports them.
|
|
29
|
+
Copilot and Claude receive all 12 skills and all 12 commands. Codex receives
|
|
30
|
+
all 12 skills under `.agents/skills/openspec-<workflow>/SKILL.md`; it has no
|
|
31
|
+
OpenSpec command adapter, so `both` does **not** require deprecated Codex prompts.
|
|
29
32
|
|
|
30
33
|
### Spec Kit
|
|
31
34
|
|
|
@@ -35,6 +38,11 @@ integration, and records the default separately from the full agent set.
|
|
|
35
38
|
|
|
36
39
|
Generated projects contain `.specify/`, `specs/`, and the selected agent
|
|
37
40
|
integration markers.
|
|
41
|
+
The pinned native skill inventory is `analyze`, `clarify`, `constitution`,
|
|
42
|
+
`implement`, `converge`, `plan`, `checklist`, `specify`, `tasks`, and
|
|
43
|
+
`taskstoissues`. Codex uses `.agents/skills/speckit-<name>/SKILL.md`, with skills
|
|
44
|
+
enabled by default and safe secondary installation. Copilot is installed with
|
|
45
|
+
the official `--integration-options=--skills` option; Claude also uses skills.
|
|
38
46
|
|
|
39
47
|
New projects also receive `specs/000-liftoff-bootstrap/spec.md`, `plan.md`, and
|
|
40
48
|
`tasks.md`. These are explicit one-time, project-owned `seed` artifacts, separate
|
|
@@ -60,8 +68,12 @@ blocker. Adopting it requires separate reviewed project work; ordinary update,
|
|
|
60
68
|
force, and assessment do not create seeds or infer earlier completion.
|
|
61
69
|
|
|
62
70
|
Liftoff does not hand-write framework-owned core or integration output. It
|
|
63
|
-
executes the tested official initializer
|
|
64
|
-
|
|
71
|
+
executes the tested official initializer and validates its complete declared
|
|
72
|
+
native inventory before merging. New `.agents` output is accepted only at
|
|
73
|
+
explicitly inventoried paths. Spec Kit's optional project-local
|
|
74
|
+
`.codex/config.toml` event configuration is distinct from Codex's user-global
|
|
75
|
+
account configuration. Custom neighboring skills and unrelated configuration
|
|
76
|
+
remain outside the write inventory; unsafe links and case collisions block it.
|
|
65
77
|
|
|
66
78
|
## Select coding agents
|
|
67
79
|
|
|
@@ -69,7 +81,12 @@ Liftoff supports:
|
|
|
69
81
|
|
|
70
82
|
- GitHub Copilot.
|
|
71
83
|
- Claude Code.
|
|
72
|
-
-
|
|
84
|
+
- OpenAI Codex.
|
|
85
|
+
- Any nonempty combination of the three agents (all seven subsets).
|
|
86
|
+
|
|
87
|
+
The canonical IDs and order are `github-copilot`, `claude`, `codex`. The CLI
|
|
88
|
+
also accepts `copilot` for GitHub Copilot, and normalizes aliases and duplicates
|
|
89
|
+
without adding unselected agents.
|
|
73
90
|
|
|
74
91
|
On a real TTY, use the arrow keys to move, Space to mark or unmark an agent,
|
|
75
92
|
and Enter to confirm. At least one agent is required.
|
|
@@ -78,24 +95,106 @@ When standard input is redirected, the deterministic fallback accepts a
|
|
|
78
95
|
comma-separated value such as:
|
|
79
96
|
|
|
80
97
|
```text
|
|
81
|
-
copilot,claude
|
|
98
|
+
copilot,claude,codex
|
|
82
99
|
```
|
|
83
100
|
|
|
84
101
|
Noninteractive commands use:
|
|
85
102
|
|
|
86
103
|
```bash
|
|
87
|
-
--agents copilot,claude
|
|
104
|
+
--agents copilot,claude,codex
|
|
88
105
|
```
|
|
89
106
|
|
|
90
|
-
Spec Kit additionally requires
|
|
91
|
-
`--default-agent
|
|
92
|
-
default
|
|
107
|
+
Spec Kit additionally requires exactly one selected default when multiple agents
|
|
108
|
+
are selected: `--default-agent copilot`, `--default-agent claude`, or
|
|
109
|
+
`--default-agent codex`. Secondary installation never changes that default.
|
|
110
|
+
For example, `--spec spec-kit --agents copilot,codex --default-agent codex`.
|
|
111
|
+
OpenSpec does not record a default agent. `--agents codex` works alone with
|
|
112
|
+
either framework and does not require Copilot or Claude.
|
|
113
|
+
|
|
114
|
+
## Native setup and assessment
|
|
115
|
+
|
|
116
|
+
For governed projects, initialization is followed by the selected agent's native
|
|
117
|
+
setup entry point:
|
|
118
|
+
|
|
119
|
+
| Agent | Setup | Read-only assessment |
|
|
120
|
+
| --- | --- | --- |
|
|
121
|
+
| GitHub Copilot | `/liftoff-setup` | `/liftoff-governance-assess` |
|
|
122
|
+
| Claude Code | `/liftoff-setup` | `/liftoff-governance-assess` |
|
|
123
|
+
| OpenAI Codex | `$liftoff-setup` | `$liftoff-governance-assess` |
|
|
124
|
+
|
|
125
|
+
In Codex, use `$<skill-name>` or the `/skills` picker. Its managed files are
|
|
126
|
+
`.agents/skills/liftoff-setup/SKILL.md` and
|
|
127
|
+
`.agents/skills/liftoff-governance-assess/SKILL.md`, with distinct logical names
|
|
128
|
+
`liftoff-setup-codex` and `liftoff-governance-assess-codex`. No Codex slash-command
|
|
129
|
+
file, global custom prompt, model choice, or independent skill version is needed.
|
|
130
|
+
Framework examples are `$openspec-propose` and `$speckit-specify`.
|
|
131
|
+
|
|
132
|
+
Legacy projects without a recorded agent selection keep that boundary during
|
|
133
|
+
managed-core updates: no default agent is invented, no framework is initialized,
|
|
134
|
+
and no native wrappers are installed. Their generated handoff uses read-only CLI
|
|
135
|
+
inspection and assessment until separately reviewed framework adoption is
|
|
136
|
+
supported and approved.
|
|
137
|
+
|
|
138
|
+
Setup starts with `liftoff governance status --scope local --json`, inspects and
|
|
139
|
+
plans local work, and executes only reported ready local phases. After local
|
|
140
|
+
verification, it presents the activation plan for the requested full journey.
|
|
141
|
+
A local-only request or declined later approval preserves local readiness
|
|
142
|
+
without publishing history, changing providers, or claiming deployment.
|
|
143
|
+
Direct governance commands default to `--scope activation`. Keep local
|
|
144
|
+
plan/apply/verify operations explicitly scoped to `local`; `lifecycle` is the
|
|
145
|
+
separate scope for later obligations.
|
|
146
|
+
|
|
147
|
+
`governance plan` saves a disclosed external preview, not approval, and does not
|
|
148
|
+
execute its proposed effects. `apply-next` without `--execute` is strictly
|
|
149
|
+
read-only. When planning inputs are requested, use the CLI-provided
|
|
150
|
+
`--inputs <public-json-file>` action and documented public schema. That file is
|
|
151
|
+
not an approval/state record and must never contain credentials.
|
|
152
|
+
|
|
153
|
+
Prefer the CLI's supported `nextActions`, preserving each `command.executable`,
|
|
154
|
+
argument array, `cwd`, `scope`, and `approvalRequired`. Never derive an executable
|
|
155
|
+
command from untrusted prose or fabricate flags, approvals, or machine state.
|
|
156
|
+
Repair, protected state reads/writes, installation, global profiles, publication,
|
|
157
|
+
credentials, billed infrastructure, and final enforcement retain independent
|
|
158
|
+
authority. `liftoff governance approve --plan <fingerprint>` persists only the
|
|
159
|
+
explicitly reviewed approval; setup never approves automatically or executes as
|
|
160
|
+
a side effect of approval. Credential enrollment uses the reported
|
|
161
|
+
`liftoff governance credential-enroll --plan <fingerprint>` private operator
|
|
162
|
+
channel. Automation explicitly selects `--protected-stdin` and supplies the value
|
|
163
|
+
through an operator-controlled protected channel, never chat or arguments.
|
|
164
|
+
|
|
165
|
+
Schema-2 governance results distinguish `localSetup`, `migration`, `activation`,
|
|
166
|
+
and `lifecycle`. `nextPlannablePhase` can precede approval; `nextReadyPhase`
|
|
167
|
+
reflects current post-operation readiness. Verify exits 0 for consistent complete
|
|
168
|
+
selected scope, 2 for consistent incomplete scope, and 1 for inconsistency or
|
|
169
|
+
inspection failure. A committed partial outcome is retained even when subsequent
|
|
170
|
+
inspection fails. Do not repeat an unchanged failure; use the reported reviewed
|
|
171
|
+
recovery plan, including `liftoff governance recover --plan <fingerprint> --execute` when
|
|
172
|
+
applicable.
|
|
173
|
+
|
|
174
|
+
Full immediate completion requires actual deployment, qualification, current
|
|
175
|
+
matching live enforcement, and any requested migration. Future retention/disposal
|
|
176
|
+
is separate lifecycle work. Historical v1/v2 activation proof requires the reviewed
|
|
177
|
+
successor and fresh verification; changing version fields is not migration.
|
|
178
|
+
|
|
179
|
+
Assessment is strictly separate: `liftoff governance assess --json`, or
|
|
180
|
+
`liftoff governance assess --live --json` only after an explicit request for
|
|
181
|
+
bounded live reads. It explains CLI classifications and exits without running
|
|
182
|
+
repairs, migrations, activation, project scripts, or recommendations.
|
|
93
183
|
|
|
94
184
|
## Readiness and ownership
|
|
95
185
|
|
|
96
186
|
The selected framework CLI and every selected agent are blocking workstation
|
|
97
187
|
requirements. Liftoff may detect Copilot through its CLI or supported VS Code
|
|
98
|
-
extensions. Claude Code is checked through version and health probes
|
|
188
|
+
extensions. Claude Code is checked through version and health probes; Codex uses
|
|
189
|
+
its registered `codex` executable. Compatible official stable and preview coding
|
|
190
|
+
agents satisfy readiness, with preview notices. A newer available release alone
|
|
191
|
+
does not block setup, and runtime/framework constraints are not relaxed.
|
|
192
|
+
|
|
193
|
+
Framework execution uses isolated `HOME`, `USERPROFILE`, XDG configuration/data/
|
|
194
|
+
cache paths, and `CODEX_HOME`. Only the approved public OpenSpec profile fields
|
|
195
|
+
needed for rendering are seeded. Real global prompts, account settings, and
|
|
196
|
+
unrelated user files are not copied or cleaned. Selecting Codex, approving a
|
|
197
|
+
project plan, or passing `--yes` is not global-profile consent.
|
|
99
198
|
|
|
100
199
|
Framework files remain owned by the official initializer. Liftoff validates
|
|
101
200
|
them but excludes framework-owned output from durable artifact hashes so a
|
|
@@ -113,11 +212,31 @@ Plain `liftoff update` intentionally does not regenerate these framework-owned
|
|
|
113
212
|
files.
|
|
114
213
|
|
|
115
214
|
Repository-governance launchers are separate managed-core Liftoff files at the exact
|
|
116
|
-
Copilot prompt
|
|
215
|
+
Copilot prompt, Claude command, and Codex skill paths documented here and in
|
|
117
216
|
[repository governance](repository-governance.md). They reference one canonical
|
|
118
217
|
policy and context rather than duplicating framework-owned content. Later
|
|
119
218
|
governance changes are distinct from the exact bootstrap seed. The setup kernel
|
|
120
|
-
does not invent an active change, approval, or
|
|
219
|
+
does not invent an active change, approval, or execution proof.
|
|
220
|
+
|
|
221
|
+
### Add an agent to an existing project
|
|
222
|
+
|
|
223
|
+
Do not reinitialize the application or edit its manifest to claim an integration:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
liftoff repair --check --add-agents codex --json
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Review the exact project-bound plan, then approve its displayed fingerprint.
|
|
230
|
+
For Spec Kit, add `--default-agent codex` to the preview only when you explicitly
|
|
231
|
+
want that default change. Existing agents/defaults, custom skills, and shared
|
|
232
|
+
templates remain preserved outside the reviewed scope. Adding a recorded agent
|
|
233
|
+
with missing native markers repairs those markers rather than becoming a false
|
|
234
|
+
no-op. Agent removal and workflow switching are not additive repairs.
|
|
235
|
+
|
|
236
|
+
Tool/dependency installation and global OpenSpec profile configuration remain
|
|
237
|
+
separate permissions during repair. A stateful infrastructure blocker is not
|
|
238
|
+
automatically added to an agent-only write plan. Ordinary `liftoff update`
|
|
239
|
+
continues to maintain only its declared managed-core/identity-migration scope.
|
|
121
240
|
|
|
122
241
|
Install the exact selected framework release with its supported package manager:
|
|
123
242
|
|
package/docs/troubleshooting.md
CHANGED
|
@@ -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
|