@msn-control/liftoff 0.10.4 → 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 +238 -77
- package/README.md +38 -33
- package/assets/supported-stack.json +3 -136
- package/dist/adapters/azure/governance-assessment.d.ts +2 -0
- package/dist/adapters/azure/governance-assessment.js +21 -0
- package/dist/adapters/azure/governance-assessment.js.map +1 -0
- package/dist/adapters/filesystem/atomic-write.d.ts +2 -0
- package/dist/adapters/filesystem/atomic-write.js +74 -0
- package/dist/adapters/filesystem/atomic-write.js.map +1 -0
- package/dist/adapters/filesystem/errors.d.ts +2 -0
- package/dist/adapters/filesystem/errors.js +8 -0
- package/dist/adapters/filesystem/errors.js.map +1 -0
- package/dist/adapters/filesystem/manifest-file.d.ts +1 -0
- package/dist/adapters/filesystem/manifest-file.js +21 -0
- package/dist/adapters/filesystem/manifest-file.js.map +1 -0
- package/dist/adapters/filesystem/project-config.d.ts +4 -0
- package/dist/adapters/filesystem/project-config.js +157 -0
- package/dist/adapters/filesystem/project-config.js.map +1 -0
- package/dist/adapters/filesystem/project-discovery.d.ts +2 -0
- package/dist/adapters/filesystem/project-discovery.js +30 -0
- package/dist/adapters/filesystem/project-discovery.js.map +1 -0
- package/dist/adapters/filesystem/project-files.d.ts +6 -0
- package/dist/adapters/filesystem/project-files.js +68 -0
- package/dist/adapters/filesystem/project-files.js.map +1 -0
- package/dist/adapters/filesystem/project-lock.d.ts +8 -0
- package/dist/adapters/filesystem/project-lock.js +164 -0
- package/dist/adapters/filesystem/project-lock.js.map +1 -0
- package/dist/adapters/filesystem/project-paths.d.ts +2 -0
- package/dist/adapters/filesystem/project-paths.js +60 -0
- package/dist/adapters/filesystem/project-paths.js.map +1 -0
- package/dist/adapters/filesystem/project-transaction.d.ts +24 -0
- package/dist/adapters/filesystem/project-transaction.js +177 -0
- package/dist/adapters/filesystem/project-transaction.js.map +1 -0
- 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/git/governance-assessment.d.ts +22 -0
- package/dist/adapters/git/governance-assessment.js +161 -0
- package/dist/adapters/git/governance-assessment.js.map +1 -0
- package/dist/adapters/github/governance-assessment.d.ts +2 -0
- package/dist/adapters/github/governance-assessment.js +18 -0
- package/dist/adapters/github/governance-assessment.js.map +1 -0
- package/dist/adapters/packaged-assets/package-root.d.ts +3 -0
- package/dist/adapters/packaged-assets/package-root.js +21 -0
- package/dist/adapters/packaged-assets/package-root.js.map +1 -0
- package/dist/adapters/packaged-assets/supported-stack.d.ts +4 -0
- package/dist/adapters/packaged-assets/supported-stack.js +18 -0
- package/dist/adapters/packaged-assets/supported-stack.js.map +1 -0
- package/dist/adapters/packaged-assets/template-assets.d.ts +23 -0
- package/dist/adapters/packaged-assets/template-assets.js +36 -0
- package/dist/adapters/packaged-assets/template-assets.js.map +1 -0
- package/dist/adapters/process/shell-command.d.ts +6 -0
- package/dist/adapters/process/shell-command.js +27 -0
- package/dist/adapters/process/shell-command.js.map +1 -0
- package/dist/application/context.d.ts +25 -0
- package/dist/application/context.js +2 -0
- package/dist/application/context.js.map +1 -0
- package/dist/application/diagnose/doctor.d.ts +21 -0
- package/dist/application/diagnose/doctor.js +580 -0
- package/dist/application/diagnose/doctor.js.map +1 -0
- package/dist/application/diagnose/generated-project.d.ts +1 -0
- package/dist/application/diagnose/generated-project.js +105 -0
- package/dist/application/diagnose/generated-project.js.map +1 -0
- package/dist/application/diagnose/validate.d.ts +6 -0
- package/dist/application/diagnose/validate.js +27 -0
- package/dist/application/diagnose/validate.js.map +1 -0
- package/dist/application/initialize/fixture.d.ts +2 -0
- package/dist/application/initialize/fixture.js +39 -0
- package/dist/application/initialize/fixture.js.map +1 -0
- package/dist/application/initialize/inputs.d.ts +3 -0
- package/dist/application/initialize/inputs.js +35 -0
- package/dist/application/initialize/inputs.js.map +1 -0
- package/dist/application/initialize/use-case.d.ts +23 -0
- package/dist/application/initialize/use-case.js +360 -0
- package/dist/application/initialize/use-case.js.map +1 -0
- package/dist/application/migrate/use-case.d.ts +7 -0
- package/dist/application/migrate/use-case.js +378 -0
- package/dist/application/migrate/use-case.js.map +1 -0
- package/dist/application/project/catalog.d.ts +46 -0
- package/dist/application/project/catalog.js +12 -0
- package/dist/application/project/catalog.js.map +1 -0
- package/dist/application/project/manifest.d.ts +2 -0
- package/dist/application/project/manifest.js +29 -0
- package/dist/application/project/manifest.js.map +1 -0
- package/dist/application/project/planning.d.ts +6 -0
- package/dist/application/project/planning.js +12 -0
- package/dist/application/project/planning.js.map +1 -0
- 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/planning.d.ts +40 -0
- package/dist/application/update/planning.js +293 -0
- package/dist/application/update/planning.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 +42 -0
- package/dist/application/update/reporting.js +326 -0
- package/dist/application/update/reporting.js.map +1 -0
- 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 +9 -0
- package/dist/application/update/use-case.js +271 -0
- package/dist/application/update/use-case.js.map +1 -0
- 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/application/upgrade/use-case.d.ts +6 -0
- package/dist/application/upgrade/use-case.js +82 -0
- package/dist/application/upgrade/use-case.js.map +1 -0
- package/dist/args.d.ts +5 -65
- package/dist/args.js +4 -472
- package/dist/args.js.map +1 -1
- package/dist/artifact-lifecycle.d.ts +1 -21
- package/dist/artifact-lifecycle.js +1 -75
- package/dist/artifact-lifecycle.js.map +1 -1
- package/dist/catalogs.d.ts +1 -50
- package/dist/catalogs.js +1 -472
- package/dist/catalogs.js.map +1 -1
- package/dist/cli/args/contracts.d.ts +51 -0
- package/dist/cli/args/contracts.js +2 -0
- package/dist/cli/args/contracts.js.map +1 -0
- package/dist/cli/args/definitions.d.ts +6 -0
- package/dist/cli/args/definitions.js +188 -0
- package/dist/cli/args/definitions.js.map +1 -0
- package/dist/cli/args/help.d.ts +5 -0
- package/dist/cli/args/help.js +142 -0
- package/dist/cli/args/help.js.map +1 -0
- package/dist/cli/args/parser.d.ts +5 -0
- package/dist/cli/args/parser.js +160 -0
- package/dist/cli/args/parser.js.map +1 -0
- package/dist/cli/args/readers.d.ts +4 -0
- package/dist/cli/args/readers.js +19 -0
- package/dist/cli/args/readers.js.map +1 -0
- package/dist/cli/commands/diagnose.d.ts +4 -0
- package/dist/cli/commands/diagnose.js +12 -0
- package/dist/cli/commands/diagnose.js.map +1 -0
- package/dist/cli/commands/dispatch.d.ts +3 -0
- package/dist/cli/commands/dispatch.js +94 -0
- package/dist/cli/commands/dispatch.js.map +1 -0
- package/dist/cli/commands/help.d.ts +3 -0
- package/dist/cli/commands/help.js +32 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/helpers.d.ts +8 -0
- package/dist/cli/commands/helpers.js +97 -0
- package/dist/cli/commands/helpers.js.map +1 -0
- package/dist/cli/commands/initialize.d.ts +3 -0
- package/dist/cli/commands/initialize.js +7 -0
- package/dist/cli/commands/initialize.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +3 -0
- package/dist/cli/commands/migrate.js +8 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +3 -0
- package/dist/cli/commands/plan.js +34 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/reference.d.ts +5 -0
- package/dist/cli/commands/reference.js +43 -0
- package/dist/cli/commands/reference.js.map +1 -0
- package/dist/cli/commands/update.d.ts +3 -0
- package/dist/cli/commands/update.js +10 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/upgrade.d.ts +3 -0
- package/dist/cli/commands/upgrade.js +7 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/context.d.ts +1 -0
- package/dist/cli/context.js +2 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/project-options.d.ts +3 -0
- package/dist/cli/project-options.js +41 -0
- package/dist/cli/project-options.js.map +1 -0
- package/dist/cli.d.ts +3 -3
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +4 -35
- package/dist/commands.js +3 -2969
- package/dist/commands.js.map +1 -1
- package/dist/container-validation.d.ts +1 -1
- package/dist/domain/governance/activation/approvals.d.ts +351 -0
- package/dist/domain/governance/activation/approvals.js +528 -0
- package/dist/domain/governance/activation/approvals.js.map +1 -0
- package/dist/domain/governance/activation/canonical-json.d.ts +4 -0
- package/dist/domain/governance/activation/canonical-json.js +39 -0
- package/dist/domain/governance/activation/canonical-json.js.map +1 -0
- package/dist/domain/governance/activation/capabilities.d.ts +7 -0
- package/dist/domain/governance/activation/capabilities.js +33 -0
- package/dist/domain/governance/activation/capabilities.js.map +1 -0
- package/dist/domain/governance/activation/evidence.d.ts +63 -0
- package/dist/domain/governance/activation/evidence.js +444 -0
- package/dist/domain/governance/activation/evidence.js.map +1 -0
- package/dist/domain/governance/activation/graph.d.ts +397 -0
- package/dist/domain/governance/activation/graph.js +441 -0
- package/dist/domain/governance/activation/graph.js.map +1 -0
- package/dist/domain/governance/activation/inputs.d.ts +25 -0
- package/dist/domain/governance/activation/inputs.js +63 -0
- package/dist/domain/governance/activation/inputs.js.map +1 -0
- package/dist/domain/governance/activation/operations.d.ts +19 -0
- package/dist/domain/governance/activation/operations.js +181 -0
- package/dist/domain/governance/activation/operations.js.map +1 -0
- package/dist/domain/governance/activation/readiness.d.ts +27 -0
- package/dist/domain/governance/activation/readiness.js +269 -0
- package/dist/domain/governance/activation/readiness.js.map +1 -0
- package/dist/domain/governance/activation/types.d.ts +399 -0
- package/dist/domain/governance/activation/types.js +109 -0
- package/dist/domain/governance/activation/types.js.map +1 -0
- package/dist/domain/governance/activation/validators.d.ts +22 -0
- package/dist/domain/governance/activation/validators.js +1347 -0
- package/dist/domain/governance/activation/validators.js.map +1 -0
- package/dist/domain/governance/assessment/catalog.d.ts +14 -0
- package/dist/domain/governance/assessment/catalog.js +105 -0
- package/dist/domain/governance/assessment/catalog.js.map +1 -0
- package/dist/domain/governance/assessment/errors.d.ts +10 -0
- package/dist/domain/governance/assessment/errors.js +22 -0
- package/dist/domain/governance/assessment/errors.js.map +1 -0
- package/dist/domain/governance/assessment/index.d.ts +8 -0
- package/dist/domain/governance/assessment/index.js +9 -0
- package/dist/domain/governance/assessment/index.js.map +1 -0
- package/dist/domain/governance/assessment/live-normalize.d.ts +19 -0
- package/dist/domain/governance/assessment/live-normalize.js +403 -0
- package/dist/domain/governance/assessment/live-normalize.js.map +1 -0
- package/dist/domain/governance/assessment/predicates.d.ts +36 -0
- package/dist/domain/governance/assessment/predicates.js +545 -0
- package/dist/domain/governance/assessment/predicates.js.map +1 -0
- package/dist/domain/governance/assessment/report.d.ts +23 -0
- package/dist/domain/governance/assessment/report.js +266 -0
- package/dist/domain/governance/assessment/report.js.map +1 -0
- package/dist/domain/governance/assessment/sanitize.d.ts +8 -0
- package/dist/domain/governance/assessment/sanitize.js +60 -0
- package/dist/domain/governance/assessment/sanitize.js.map +1 -0
- package/dist/domain/governance/assessment/types.d.ts +174 -0
- package/dist/domain/governance/assessment/types.js +13 -0
- package/dist/domain/governance/assessment/types.js.map +1 -0
- package/dist/domain/governance/assessment/yaml.d.ts +6 -0
- package/dist/domain/governance/assessment/yaml.js +30 -0
- package/dist/domain/governance/assessment/yaml.js.map +1 -0
- package/dist/domain/governance/policy/identity.d.ts +64 -0
- package/dist/domain/governance/policy/identity.js +112 -0
- package/dist/domain/governance/policy/identity.js.map +1 -0
- package/dist/domain/migration/dependencies.d.ts +7 -0
- package/dist/domain/migration/dependencies.js +221 -0
- package/dist/domain/migration/dependencies.js.map +1 -0
- package/dist/domain/migration/inventory.d.ts +3 -0
- package/dist/domain/migration/inventory.js +15 -0
- package/dist/domain/migration/inventory.js.map +1 -0
- package/dist/domain/project/artifact-lifecycle.d.ts +69 -0
- package/dist/domain/project/artifact-lifecycle.js +137 -0
- package/dist/domain/project/artifact-lifecycle.js.map +1 -0
- package/dist/domain/project/catalog.d.ts +48 -0
- package/dist/domain/project/catalog.js +507 -0
- package/dist/domain/project/catalog.js.map +1 -0
- package/dist/domain/project/contracts.d.ts +247 -0
- package/dist/domain/project/contracts.js +2 -0
- package/dist/domain/project/contracts.js.map +1 -0
- package/dist/domain/project/errors.d.ts +3 -0
- package/dist/domain/project/errors.js +7 -0
- package/dist/domain/project/errors.js.map +1 -0
- package/dist/domain/project/infrastructure-layout.d.ts +26 -0
- package/dist/domain/project/infrastructure-layout.js +125 -0
- package/dist/domain/project/infrastructure-layout.js.map +1 -0
- package/dist/domain/project/inputs.d.ts +21 -0
- package/dist/domain/project/inputs.js +41 -0
- package/dist/domain/project/inputs.js.map +1 -0
- package/dist/domain/project/manifest/artifacts.d.ts +8 -0
- package/dist/domain/project/manifest/artifacts.js +150 -0
- package/dist/domain/project/manifest/artifacts.js.map +1 -0
- package/dist/domain/project/manifest/context.d.ts +13 -0
- package/dist/domain/project/manifest/context.js +2 -0
- package/dist/domain/project/manifest/context.js.map +1 -0
- package/dist/domain/project/manifest/fields.d.ts +6 -0
- package/dist/domain/project/manifest/fields.js +36 -0
- package/dist/domain/project/manifest/fields.js.map +1 -0
- package/dist/domain/project/manifest/governance.d.ts +8 -0
- package/dist/domain/project/manifest/governance.js +161 -0
- package/dist/domain/project/manifest/governance.js.map +1 -0
- package/dist/domain/project/manifest/project-identity.d.ts +6 -0
- package/dist/domain/project/manifest/project-identity.js +273 -0
- package/dist/domain/project/manifest/project-identity.js.map +1 -0
- package/dist/domain/project/manifest/reader.d.ts +9 -0
- package/dist/domain/project/manifest/reader.js +141 -0
- package/dist/domain/project/manifest/reader.js.map +1 -0
- package/dist/domain/project/paths.d.ts +2 -0
- package/dist/domain/project/paths.js +29 -0
- package/dist/domain/project/paths.js.map +1 -0
- package/dist/domain/project/planning.d.ts +19 -0
- package/dist/domain/project/planning.js +329 -0
- package/dist/domain/project/planning.js.map +1 -0
- package/dist/domain/project/retired-workload.d.ts +4 -0
- package/dist/domain/project/retired-workload.js +18 -0
- package/dist/domain/project/retired-workload.js.map +1 -0
- 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/domain/project/supported-stack.d.ts +113 -0
- package/dist/domain/project/supported-stack.js +426 -0
- package/dist/domain/project/supported-stack.js.map +1 -0
- package/dist/domain/workstation/constraints.d.ts +6 -0
- package/dist/domain/workstation/constraints.js +8 -0
- package/dist/domain/workstation/constraints.js.map +1 -0
- package/dist/file-system.d.ts +10 -44
- package/dist/file-system.js +9 -1245
- package/dist/file-system.js.map +1 -1
- package/dist/framework-adapters.d.ts +1 -1
- package/dist/framework-validation.d.ts +1 -1
- package/dist/framework-validation.js +1 -1
- package/dist/framework-validation.js.map +1 -1
- package/dist/genai-templates.d.ts +2 -9
- package/dist/genai-templates.js +4 -5
- package/dist/genai-templates.js.map +1 -1
- package/dist/generators/common/artifacts.d.ts +6 -0
- package/dist/generators/common/artifacts.js +30 -0
- package/dist/generators/common/artifacts.js.map +1 -0
- package/dist/generators/common/base.d.ts +17 -0
- package/dist/generators/common/base.js +425 -0
- package/dist/generators/common/base.js.map +1 -0
- package/dist/generators/common/dotenv-validation.d.ts +2 -0
- package/dist/generators/common/dotenv-validation.js +80 -0
- package/dist/generators/common/dotenv-validation.js.map +1 -0
- package/dist/generators/common/environments.d.ts +3 -0
- package/dist/generators/common/environments.js +15 -0
- package/dist/generators/common/environments.js.map +1 -0
- package/dist/generators/common/frontend.d.ts +15 -0
- package/dist/generators/common/frontend.js +166 -0
- package/dist/generators/common/frontend.js.map +1 -0
- package/dist/generators/common/python-settings.d.ts +2 -0
- package/dist/generators/common/python-settings.js +70 -0
- package/dist/generators/common/python-settings.js.map +1 -0
- package/dist/generators/common/spec-workflow.d.ts +28 -0
- package/dist/generators/common/spec-workflow.js +567 -0
- package/dist/generators/common/spec-workflow.js.map +1 -0
- package/dist/generators/common/values.d.ts +13 -0
- package/dist/generators/common/values.js +16 -0
- package/dist/generators/common/values.js.map +1 -0
- package/dist/generators/containers/compose.d.ts +7 -0
- package/dist/generators/containers/compose.js +196 -0
- package/dist/generators/containers/compose.js.map +1 -0
- package/dist/generators/containers/context.d.ts +1 -0
- package/dist/generators/containers/context.js +43 -0
- package/dist/generators/containers/context.js.map +1 -0
- package/dist/generators/containers/images.d.ts +7 -0
- package/dist/generators/containers/images.js +119 -0
- package/dist/generators/containers/images.js.map +1 -0
- package/dist/generators/context.d.ts +42 -0
- package/dist/generators/context.js +38 -0
- package/dist/generators/context.js.map +1 -0
- package/dist/generators/genai/backend.d.ts +20 -0
- package/dist/generators/genai/backend.js +667 -0
- package/dist/generators/genai/backend.js.map +1 -0
- package/dist/generators/genai/configuration.d.ts +3 -0
- package/dist/generators/genai/configuration.js +43 -0
- package/dist/generators/genai/configuration.js.map +1 -0
- package/dist/generators/genai/database.d.ts +7 -0
- package/dist/generators/genai/database.js +71 -0
- package/dist/generators/genai/database.js.map +1 -0
- package/dist/generators/genai/functions.d.ts +15 -0
- package/dist/generators/genai/functions.js +156 -0
- package/dist/generators/genai/functions.js.map +1 -0
- package/dist/generators/genai/index.d.ts +8 -0
- package/dist/generators/genai/index.js +11 -0
- package/dist/generators/genai/index.js.map +1 -0
- package/dist/generators/genai/patterns.d.ts +9 -0
- package/dist/generators/genai/patterns.js +309 -0
- package/dist/generators/genai/patterns.js.map +1 -0
- package/dist/generators/infrastructure/azure.d.ts +18 -0
- package/dist/generators/infrastructure/azure.js +655 -0
- package/dist/generators/infrastructure/azure.js.map +1 -0
- package/dist/generators/infrastructure/names.d.ts +23 -0
- package/dist/generators/infrastructure/names.js +51 -0
- package/dist/generators/infrastructure/names.js.map +1 -0
- package/dist/generators/standard/configuration.d.ts +3 -0
- package/dist/generators/standard/configuration.js +26 -0
- package/dist/generators/standard/configuration.js.map +1 -0
- package/dist/generators/standard/go.d.ts +17 -0
- package/dist/generators/standard/go.js +338 -0
- package/dist/generators/standard/go.js.map +1 -0
- package/dist/generators/standard/index.d.ts +12 -0
- package/dist/generators/standard/index.js +12 -0
- package/dist/generators/standard/index.js.map +1 -0
- package/dist/generators/standard/node.d.ts +20 -0
- package/dist/generators/standard/node.js +314 -0
- package/dist/generators/standard/node.js.map +1 -0
- package/dist/generators/standard/python.d.ts +18 -0
- package/dist/generators/standard/python.js +191 -0
- package/dist/generators/standard/python.js.map +1 -0
- package/dist/go-template-assets.js +3 -3
- package/dist/go-template-assets.js.map +1 -1
- package/dist/governance-activation/activation-state.d.ts +1 -1
- package/dist/governance-activation/activation-state.js +49 -9
- package/dist/governance-activation/activation-state.js.map +1 -1
- package/dist/governance-activation/approvals.d.ts +1 -188
- package/dist/governance-activation/approvals.js +1 -507
- package/dist/governance-activation/approvals.js.map +1 -1
- package/dist/governance-activation/canonical-json.d.ts +1 -3
- package/dist/governance-activation/canonical-json.js +1 -35
- package/dist/governance-activation/canonical-json.js.map +1 -1
- package/dist/governance-activation/commands.d.ts +6 -1
- package/dist/governance-activation/commands.js +135 -107
- package/dist/governance-activation/commands.js.map +1 -1
- package/dist/governance-activation/compatibility.d.ts +30 -5
- package/dist/governance-activation/compatibility.js +74 -8
- package/dist/governance-activation/compatibility.js.map +1 -1
- package/dist/governance-activation/credentials.d.ts +3 -3
- package/dist/governance-activation/credentials.js +5 -5
- package/dist/governance-activation/credentials.js.map +1 -1
- package/dist/governance-activation/doctor.d.ts +1 -1
- package/dist/governance-activation/doctor.js +59 -100
- package/dist/governance-activation/doctor.js.map +1 -1
- package/dist/governance-activation/evidence.d.ts +1 -49
- package/dist/governance-activation/evidence.js +1 -245
- package/dist/governance-activation/evidence.js.map +1 -1
- package/dist/governance-activation/git-ignore.d.ts +9 -0
- package/dist/governance-activation/git-ignore.js +76 -0
- package/dist/governance-activation/git-ignore.js.map +1 -0
- package/dist/governance-activation/graph.d.ts +1 -397
- package/dist/governance-activation/graph.js +1 -440
- package/dist/governance-activation/graph.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/identity.d.ts +1 -35
- package/dist/governance-activation/identity.js +1 -88
- package/dist/governance-activation/identity.js.map +1 -1
- package/dist/governance-activation/index.d.ts +3 -0
- package/dist/governance-activation/index.js +3 -0
- package/dist/governance-activation/index.js.map +1 -1
- package/dist/governance-activation/inputs.d.ts +10 -0
- package/dist/governance-activation/inputs.js +158 -0
- package/dist/governance-activation/inputs.js.map +1 -0
- 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.d.ts +4 -3
- package/dist/governance-activation/migration.js +14 -6
- package/dist/governance-activation/migration.js.map +1 -1
- package/dist/governance-activation/phase-bootstrap-state.d.ts +3 -0
- package/dist/governance-activation/phase-bootstrap-state.js +128 -0
- package/dist/governance-activation/phase-bootstrap-state.js.map +1 -0
- package/dist/governance-activation/phase-discovery.d.ts +2 -0
- package/dist/governance-activation/phase-discovery.js +88 -0
- package/dist/governance-activation/phase-discovery.js.map +1 -0
- package/dist/governance-activation/phase-governance.d.ts +4 -0
- package/dist/governance-activation/phase-governance.js +141 -0
- package/dist/governance-activation/phase-governance.js.map +1 -0
- package/dist/governance-activation/phase-publication.d.ts +8 -0
- package/dist/governance-activation/phase-publication.js +318 -0
- package/dist/governance-activation/phase-publication.js.map +1 -0
- 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 +30 -0
- package/dist/governance-activation/read-only.js +33 -0
- package/dist/governance-activation/read-only.js.map +1 -0
- package/dist/governance-activation/readiness.d.ts +1 -25
- package/dist/governance-activation/readiness.js +1 -222
- package/dist/governance-activation/readiness.js.map +1 -1
- package/dist/governance-activation/reconciliation.d.ts +1 -1
- package/dist/governance-activation/reconciliation.js +3 -3
- package/dist/governance-activation/reconciliation.js.map +1 -1
- package/dist/governance-activation/release-integrity.d.ts +1 -1
- package/dist/governance-activation/release-integrity.js +2 -2
- package/dist/governance-activation/release-integrity.js.map +1 -1
- package/dist/governance-activation/seed-lifecycle.d.ts +36 -6
- package/dist/governance-activation/seed-lifecycle.js +444 -77
- package/dist/governance-activation/seed-lifecycle.js.map +1 -1
- package/dist/governance-activation/source-of-truth.d.ts +5 -3
- package/dist/governance-activation/source-of-truth.js +32 -52
- package/dist/governance-activation/source-of-truth.js.map +1 -1
- package/dist/governance-activation/spec-kit-seed.d.ts +9 -0
- package/dist/governance-activation/spec-kit-seed.js +43 -0
- package/dist/governance-activation/spec-kit-seed.js.map +1 -0
- package/dist/governance-activation/task-projection.d.ts +1 -1
- package/dist/governance-activation/transition-planning.d.ts +17 -0
- package/dist/governance-activation/transition-planning.js +259 -0
- package/dist/governance-activation/transition-planning.js.map +1 -0
- package/dist/governance-activation/transition-ports.d.ts +150 -0
- package/dist/governance-activation/transition-ports.js +2 -0
- package/dist/governance-activation/transition-ports.js.map +1 -0
- package/dist/governance-activation/transition-process.d.ts +7 -0
- package/dist/governance-activation/transition-process.js +21 -0
- package/dist/governance-activation/transition-process.js.map +1 -0
- package/dist/governance-activation/transition-records.d.ts +56 -0
- package/dist/governance-activation/transition-records.js +208 -0
- package/dist/governance-activation/transition-records.js.map +1 -0
- package/dist/governance-activation/transitions.d.ts +14 -167
- package/dist/governance-activation/transitions.js +173 -2061
- package/dist/governance-activation/transitions.js.map +1 -1
- package/dist/governance-activation/types.d.ts +1 -390
- package/dist/governance-activation/types.js +1 -107
- package/dist/governance-activation/types.js.map +1 -1
- package/dist/governance-activation/validators.d.ts +1 -17
- package/dist/governance-activation/validators.js +1 -1304
- package/dist/governance-activation/validators.js.map +1 -1
- package/dist/governance-assessment/catalog.d.ts +1 -2
- package/dist/governance-assessment/catalog.js +18 -85
- package/dist/governance-assessment/catalog.js.map +1 -1
- package/dist/governance-assessment/command.d.ts +1 -1
- package/dist/governance-assessment/command.js +8 -12
- package/dist/governance-assessment/command.js.map +1 -1
- package/dist/governance-assessment/engine.d.ts +6 -11
- package/dist/governance-assessment/engine.js +490 -114
- package/dist/governance-assessment/engine.js.map +1 -1
- package/dist/governance-assessment/live-normalize.d.ts +1 -19
- package/dist/governance-assessment/live-normalize.js +1 -402
- package/dist/governance-assessment/live-normalize.js.map +1 -1
- package/dist/governance-assessment/live-transport.d.ts +2 -6
- package/dist/governance-assessment/live-transport.js +10 -22
- package/dist/governance-assessment/live-transport.js.map +1 -1
- package/dist/governance-assessment/live.js +55 -5
- package/dist/governance-assessment/live.js.map +1 -1
- package/dist/governance-assessment/predicates.d.ts +1 -27
- package/dist/governance-assessment/predicates.js +1 -329
- package/dist/governance-assessment/predicates.js.map +1 -1
- package/dist/governance-assessment/project.d.ts +20 -17
- package/dist/governance-assessment/project.js +101 -151
- package/dist/governance-assessment/project.js.map +1 -1
- package/dist/governance-assessment/readers.d.ts +1 -5
- package/dist/governance-assessment/readers.js +5 -13
- package/dist/governance-assessment/readers.js.map +1 -1
- package/dist/governance-assessment/report.d.ts +1 -23
- package/dist/governance-assessment/report.js +1 -265
- package/dist/governance-assessment/report.js.map +1 -1
- package/dist/governance-assessment/sanitize.d.ts +1 -8
- package/dist/governance-assessment/sanitize.js +1 -56
- package/dist/governance-assessment/sanitize.js.map +1 -1
- package/dist/governance-assessment/types.d.ts +1 -173
- package/dist/governance-assessment/types.js +1 -12
- package/dist/governance-assessment/types.js.map +1 -1
- package/dist/governance-assessment/yaml.d.ts +1 -6
- package/dist/governance-assessment/yaml.js +1 -29
- package/dist/governance-assessment/yaml.js.map +1 -1
- package/dist/init-filesystem.d.ts +1 -1
- package/dist/init-filesystem.js +126 -174
- package/dist/init-filesystem.js.map +1 -1
- package/dist/interactive.d.ts +2 -2
- package/dist/interactive.js +42 -41
- package/dist/interactive.js.map +1 -1
- package/dist/migrate-plan.d.ts +1 -1
- package/dist/migrate-plan.js +14 -8
- package/dist/migrate-plan.js.map +1 -1
- package/dist/npm-template-assets.js +5 -4
- package/dist/npm-template-assets.js.map +1 -1
- package/dist/openspec-profile.d.ts +1 -1
- package/dist/opentofu-template-assets.js +3 -3
- package/dist/opentofu-template-assets.js.map +1 -1
- package/dist/package-identity.d.ts +3 -0
- package/dist/package-identity.js +13 -2
- package/dist/package-identity.js.map +1 -1
- package/dist/planner.d.ts +1 -19
- package/dist/planner.js +1 -565
- package/dist/planner.js.map +1 -1
- package/dist/process-runner.d.ts +1 -1
- package/dist/project-dependencies.d.ts +5 -3
- package/dist/project-dependencies.js +74 -63
- package/dist/project-dependencies.js.map +1 -1
- package/dist/published-verifier.js +61 -30
- package/dist/published-verifier.js.map +1 -1
- package/dist/python-template-assets.js +6 -9
- package/dist/python-template-assets.js.map +1 -1
- package/dist/reconcile.d.ts +1 -1
- package/dist/reconcile.js +2 -2
- package/dist/reconcile.js.map +1 -1
- package/dist/repository-governance.d.ts +5 -2
- package/dist/repository-governance.js +140 -113
- package/dist/repository-governance.js.map +1 -1
- package/dist/runtime.js +1 -1
- package/dist/runtime.js.map +1 -1
- package/dist/scan.d.ts +6 -2
- package/dist/scan.js +78 -30
- package/dist/scan.js.map +1 -1
- package/dist/self-upgrade.d.ts +1 -1
- package/dist/self-upgrade.js +20 -7
- package/dist/self-upgrade.js.map +1 -1
- package/dist/stable-release.js +7 -1
- package/dist/stable-release.js.map +1 -1
- package/dist/standard-templates.d.ts +2 -2
- package/dist/standard-templates.js +6 -841
- package/dist/standard-templates.js.map +1 -1
- package/dist/supported-stack.d.ts +3 -115
- package/dist/supported-stack.js +4 -438
- package/dist/supported-stack.js.map +1 -1
- package/dist/telemetry/index.d.ts +1 -1
- package/dist/templates.d.ts +10 -20
- package/dist/templates.js +52 -3261
- package/dist/templates.js.map +1 -1
- package/dist/types.d.ts +1 -263
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/version.js +2 -6
- package/dist/version.js.map +1 -1
- package/dist/workstation-catalog.d.ts +5 -2
- package/dist/workstation-catalog.js +33 -2
- package/dist/workstation-catalog.js.map +1 -1
- package/dist/workstation.d.ts +4 -3
- package/dist/workstation.js +86 -32
- package/dist/workstation.js.map +1 -1
- package/docs/assets/liftoff-terminal.svg +3 -3
- package/docs/azure-deployment.md +107 -10
- package/docs/cli-reference.md +144 -35
- package/docs/configuration-and-manifests.md +152 -35
- package/docs/existing-repositories.md +48 -12
- package/docs/getting-started.md +44 -31
- package/docs/prerequisites.md +34 -35
- package/docs/project-structure.md +39 -46
- package/docs/repository-governance.md +96 -26
- package/docs/safety-and-consent.md +90 -28
- package/docs/spec-workflows-and-agents.md +31 -28
- package/docs/supported-stack.md +11 -9
- package/docs/troubleshooting.md +114 -54
- package/docs/workloads.md +52 -67
- package/package.json +4 -7
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/UPSTREAM_LICENSE.txt +0 -21
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/catalog.json +0 -520
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/packaged/gitignore +0 -27
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/README.md +0 -25
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/components.json +0 -22
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/eslint.config.js +0 -23
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/index.html +0 -13
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package-lock.json +0 -6156
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package.json +0 -60
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/public/power-apps.svg +0 -55
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/App.tsx +0 -17
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/assets/react.svg +0 -1
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/mode-toggle.tsx +0 -37
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/badge.tsx +0 -46
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/button.tsx +0 -60
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/calendar.tsx +0 -211
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/card.tsx +0 -92
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/chart.tsx +0 -355
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/checkbox.tsx +0 -32
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/command.tsx +0 -184
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dialog.tsx +0 -141
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dropdown-menu.tsx +0 -257
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/input.tsx +0 -21
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/label.tsx +0 -22
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/popover.tsx +0 -46
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/progress.tsx +0 -29
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/select.tsx +0 -185
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/separator.tsx +0 -26
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/skeleton.tsx +0 -13
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/table.tsx +0 -114
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tabs.tsx +0 -66
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/textarea.tsx +0 -18
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tooltip.tsx +0 -61
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/hooks/use-theme.ts +0 -11
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/index.css +0 -131
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/lib/utils.ts +0 -6
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/main.tsx +0 -10
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/_layout.tsx +0 -31
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/home.tsx +0 -59
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/not-found.tsx +0 -14
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/query-provider.tsx +0 -26
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/sonner-provider.tsx +0 -23
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/theme-provider.tsx +0 -64
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/router.tsx +0 -24
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.app.json +0 -34
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.json +0 -13
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.node.json +0 -26
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/vite.config.ts +0 -19
- package/assets/power-apps-code-app/README.md +0 -27
- package/dist/code-apps-plugin.d.ts +0 -13
- package/dist/code-apps-plugin.js +0 -69
- package/dist/code-apps-plugin.js.map +0 -1
- package/dist/power-apps-assets.d.ts +0 -30
- package/dist/power-apps-assets.js +0 -131
- package/dist/power-apps-assets.js.map +0 -1
- package/dist/power-apps-templates.d.ts +0 -3
- package/dist/power-apps-templates.js +0 -177
- package/dist/power-apps-templates.js.map +0 -1
- package/dist/power-apps-validation.d.ts +0 -1
- package/dist/power-apps-validation.js +0 -79
- package/dist/power-apps-validation.js.map +0 -1
package/docs/cli-reference.md
CHANGED
|
@@ -39,10 +39,11 @@ install -> upgrade CLI -> plan -> init or migrate -> /liftoff-setup -> validate,
|
|
|
39
39
|
| `liftoff update --check` | Reports core maintenance and provisioning without mutation; exits 0 when clean and 2 when actionable |
|
|
40
40
|
| `liftoff update --force` | Overwrites only exact guarded managed-core conflicts; project-owned files remain unreachable |
|
|
41
41
|
| `liftoff dev` | Prints workload-appropriate local development commands; it does not execute them |
|
|
42
|
-
| `liftoff infra` | Prints OpenTofu guidance for API workloads
|
|
42
|
+
| `liftoff infra` | Prints OpenTofu guidance for supported API/GenAI workloads without executing it |
|
|
43
43
|
| `liftoff patterns` | Lists GenAI patterns |
|
|
44
44
|
| `liftoff providers` | Lists provider availability |
|
|
45
45
|
| `liftoff regions` | Lists available regions |
|
|
46
|
+
| `liftoff regions --region <slug-or-alias>` | Resolves one region and filters the output; ambiguous or unknown values fail with guidance |
|
|
46
47
|
| `liftoff regions search <query>` | Searches region names and slugs |
|
|
47
48
|
| `liftoff --version` | Prints exactly one version line |
|
|
48
49
|
|
|
@@ -59,7 +60,7 @@ Node.js 24 LTS, Python 3.14, Go 1.27, OpenTofu 1.12, OpenSpec 1.11, and Spec Kit
|
|
|
59
60
|
Common noninteractive inputs include:
|
|
60
61
|
|
|
61
62
|
```text
|
|
62
|
-
--type genai|standard
|
|
63
|
+
--type genai|standard
|
|
63
64
|
--pattern <genai-pattern>
|
|
64
65
|
--api python|node|go
|
|
65
66
|
--cloud azure
|
|
@@ -70,7 +71,6 @@ Common noninteractive inputs include:
|
|
|
70
71
|
--agents copilot,claude
|
|
71
72
|
--default-agent copilot|claude
|
|
72
73
|
--governance single-maintainer-gitflow|none
|
|
73
|
-
--code-apps-plugin | --no-code-apps-plugin
|
|
74
74
|
--copilot-cloud | --no-copilot-cloud
|
|
75
75
|
--configure-openspec-profile
|
|
76
76
|
```
|
|
@@ -80,8 +80,9 @@ Interactive initialization presents **I'm not sure yet - Generic GenAI
|
|
|
80
80
|
starter** first and accepts it as the default. `liftoff patterns` lists this
|
|
81
81
|
stable `generic` identifier alongside the eight specialized patterns.
|
|
82
82
|
|
|
83
|
-
Power Apps
|
|
84
|
-
|
|
83
|
+
Power Apps and Code Apps plugin inputs are retired and rejected, including
|
|
84
|
+
false/negated plugin flags. Existing retired manifests are not reinterpreted as
|
|
85
|
+
supported workloads or ordinary Git repositories.
|
|
85
86
|
|
|
86
87
|
Consent options are documented in [safety and consent](safety-and-consent.md).
|
|
87
88
|
Repository governance defaults to `single-maintainer-gitflow`. It generates a
|
|
@@ -116,11 +117,23 @@ failure with verified evidence.
|
|
|
116
117
|
|
|
117
118
|
Governance JSON uses versioned objects and includes the complete activation
|
|
118
119
|
version vector: creating Liftoff version, manifest artifact version 7, policy
|
|
119
|
-
version 6, activation-contract version
|
|
120
|
-
supersession/credential schema versions, and the phase-graph
|
|
120
|
+
version 6, activation-contract version 2, state/evidence-header/approval schema
|
|
121
|
+
versions 2, graph/supersession/credential schema versions 1, and the phase-graph
|
|
122
|
+
hash. Compatibility metadata is version 3. It never
|
|
121
123
|
emits a setup-skill version. Future identities, unsupported compatibility
|
|
122
124
|
tuples, and unrecognized graph hashes block without rewriting state; the remedy
|
|
123
|
-
names the exact field and required Liftoff upgrade.
|
|
125
|
+
names the exact field and required Liftoff upgrade. Known v1 history is
|
|
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.
|
|
124
137
|
|
|
125
138
|
`/liftoff-setup` calls these commands instead of inferring phase completion from
|
|
126
139
|
prose or task checkboxes.
|
|
@@ -144,8 +157,11 @@ liftoff governance assess [project] --live [--json]
|
|
|
144
157
|
liftoff governance assess --project "path with spaces" --json
|
|
145
158
|
```
|
|
146
159
|
|
|
147
|
-
Use an optional positional project or `--project`, never both.
|
|
148
|
-
|
|
160
|
+
Use an optional positional project or `--project`, never both. It can identify
|
|
161
|
+
an ordinary Git repository without a manifest. Nested working directories resolve
|
|
162
|
+
to the nearest applicable Git or Liftoff boundary; invalid or retired inner
|
|
163
|
+
manifests cannot be bypassed. No initialization or slash-command installation is
|
|
164
|
+
required. Help needs no project or
|
|
149
165
|
credential discovery. Only `assess` accepts `--live`; assessment rejects
|
|
150
166
|
`--execute` (including `--execute=false`), `--force`, installation, automatic
|
|
151
167
|
upgrade, and output-file flags before project access.
|
|
@@ -228,6 +244,12 @@ version. Liftoff never edits `.npmrc`, embeds registry credentials, forces a
|
|
|
228
244
|
canonical bypass around a stale mirror, invokes elevation, installs a
|
|
229
245
|
prerelease, or performs a downgrade.
|
|
230
246
|
|
|
247
|
+
Machine-level `@msn-control:registry` takes precedence over the default
|
|
248
|
+
`registry`, even when the default is canonical. The lookup runs from a neutral
|
|
249
|
+
directory so project `.npmrc` files cannot change upgrade delivery. Canonical
|
|
250
|
+
verification isolates both registry settings without changing persistent
|
|
251
|
+
configuration; actual delivery still honors the configured mirror.
|
|
252
|
+
|
|
231
253
|
`--check` performs the same origin, target, and parity checks without invoking
|
|
232
254
|
installation. Apply uses one shell-free exact npm command with lifecycle scripts,
|
|
233
255
|
audit, and funding prompts disabled, then verifies installed metadata, the
|
|
@@ -244,16 +266,28 @@ object.
|
|
|
244
266
|
## Update modes
|
|
245
267
|
|
|
246
268
|
```bash
|
|
269
|
+
liftoff update --check
|
|
247
270
|
liftoff update
|
|
248
271
|
liftoff update --force
|
|
249
|
-
liftoff update --json
|
|
250
|
-
liftoff update --check
|
|
251
272
|
liftoff update --check --json
|
|
273
|
+
liftoff update --approve-plan <fingerprint> --json
|
|
252
274
|
```
|
|
253
275
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
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
|
|
257
291
|
policy, context, guide, phase graph, compatibility metadata, credential-policy
|
|
258
292
|
schema, and selected-agent `/liftoff-setup` integrations. Core conflicts are
|
|
259
293
|
skipped and core orphans are reported without deletion. During legacy governance
|
|
@@ -262,7 +296,7 @@ set local state to `handoff-partial`. Forced update may remove exact retired
|
|
|
262
296
|
generated setup-alias entries from older manifests after review.
|
|
263
297
|
|
|
264
298
|
Application source, tests, dependencies and locks, database assets, Docker and
|
|
265
|
-
Compose files, environment files, documentation,
|
|
299
|
+
Compose files, environment files, documentation, and
|
|
266
300
|
OpenTofu topology are `project` artifacts after generation. Update does not
|
|
267
301
|
compare them with newer templates, restore deleted paths, or overwrite them
|
|
268
302
|
under `--force`.
|
|
@@ -273,24 +307,77 @@ preflighted together. Absent files are created and byte-identical files are
|
|
|
273
307
|
adopted as provenance; any differing destination blocks the group even with
|
|
274
308
|
`--force`. Disabling or re-enabling a previously provisioned group never
|
|
275
309
|
recreates or deletes project files.
|
|
310
|
+
New environments also require recorded independent-root infrastructure and safe
|
|
311
|
+
existing shared-module files. Legacy/shared or unknown layout produces a
|
|
312
|
+
component-level migration-required result; other safe managed-core work may
|
|
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.
|
|
276
316
|
|
|
277
317
|
Use `--check` whenever no project bytes may change. Human check mode prints
|
|
278
318
|
managed-core drift, ownership-only manifest v2-v7 migration, activation-identity
|
|
279
|
-
compatibility,
|
|
280
|
-
recommends `--force` only for core conflicts
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
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.
|
|
378
|
+
|
|
379
|
+
New dependency, runtime, container, database, application, and infrastructure
|
|
380
|
+
templates apply to newly generated projects. Existing
|
|
294
381
|
production projects adopt them through a separately reviewed project change.
|
|
295
382
|
The existing `liftoff migrate` command only adopts a non-Liftoff source into a
|
|
296
383
|
fresh target; it is not an in-place template upgrade.
|
|
@@ -314,6 +401,26 @@ All current writes use v7. Supported historical reads are normalized through an
|
|
|
314
401
|
explicit compatibility map; future versions, individually known but unsupported
|
|
315
402
|
tuples, and unknown phase-graph hashes block and report an upgrade or
|
|
316
403
|
reconciliation remedy instead of downgrading or fabricating evidence.
|
|
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.
|
|
408
|
+
|
|
409
|
+
## Development and infrastructure helpers
|
|
410
|
+
|
|
411
|
+
`liftoff dev` and `liftoff infra` print commands rather than execute them.
|
|
412
|
+
Infrastructure helpers use recorded layout, not merely new-looking paths.
|
|
413
|
+
For a selected prod environment in the independent layout,
|
|
414
|
+
`liftoff infra init --env prod` targets
|
|
415
|
+
`infrastructure/opentofu/azure/environments/prod`; plan/apply use
|
|
416
|
+
`-var-file=prod.tfvars` in that same root. Operational init uses the configured
|
|
417
|
+
backend, not `-backend=false`. Only the local baseline disables backend
|
|
418
|
+
initialization, separately for every selected root. Recursive formatting remains
|
|
419
|
+
at the Azure parent to include the shared module.
|
|
420
|
+
|
|
421
|
+
The eight explicitly retired flat-root identities remain old provenance, not
|
|
422
|
+
aliases for new roots. See the [exact inventory](azure-deployment.md#explicit-flat-root-identity-retirement)
|
|
423
|
+
and [native runtime recipes](configuration-and-manifests.md#application-runtime-configuration).
|
|
317
424
|
|
|
318
425
|
## JSON and exit codes
|
|
319
426
|
|
|
@@ -334,8 +441,9 @@ liftoff update --check --json
|
|
|
334
441
|
```
|
|
335
442
|
|
|
336
443
|
Each JSON object has a top-level numeric `schemaVersion`. Update JSON uses
|
|
337
|
-
schema version
|
|
338
|
-
|
|
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.
|
|
339
447
|
Operational warnings, such as a dirty-worktree warning before JSON apply, are
|
|
340
448
|
written to stderr so stdout remains one parseable JSON object.
|
|
341
449
|
|
|
@@ -343,8 +451,9 @@ Exit codes:
|
|
|
343
451
|
|
|
344
452
|
- `0`: success or a clean check.
|
|
345
453
|
- `1`: invalid input, unsafe state, or command failure.
|
|
346
|
-
- `2`:
|
|
347
|
-
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.
|
|
348
457
|
|
|
349
458
|
Raw installer, framework, and dependency child stdout and stderr are forwarded
|
|
350
459
|
unchanged.
|
|
@@ -18,11 +18,9 @@ Supported edits are reconciled by `liftoff update`:
|
|
|
18
18
|
manifests; replace it with `staging` before validation or update.
|
|
19
19
|
- Removing or re-enabling a previously provisioned component never deletes,
|
|
20
20
|
restores, or overwrites its project-owned files.
|
|
21
|
-
- Power Apps can change the optional Code Apps plugin preference; only manifest
|
|
22
|
-
intent and applicable managed-core context change.
|
|
23
21
|
|
|
24
|
-
Workload kind, API stack, GenAI pattern, spec workflow, selected agents
|
|
25
|
-
|
|
22
|
+
Workload kind, API stack, GenAI pattern, spec workflow, and selected agents are
|
|
23
|
+
not ordinary updates.
|
|
26
24
|
|
|
27
25
|
An undecided GenAI project records an explicit generic identity rather than
|
|
28
26
|
omitting the pattern:
|
|
@@ -46,21 +44,98 @@ omitting the pattern:
|
|
|
46
44
|
Changing `generic` to a specialized pattern later is a reviewed project
|
|
47
45
|
migration because application files are project-owned; it is not an update.
|
|
48
46
|
|
|
49
|
-
|
|
47
|
+
The `power-apps-code-app` workload and `codeAppsPlugin` configuration field are
|
|
48
|
+
retired. They are rejected rather than ignored or converted to another workload.
|
|
50
49
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
50
|
+
## Application runtime configuration
|
|
51
|
+
|
|
52
|
+
These settings are separate from Liftoff desired state. Each backend resolves
|
|
53
|
+
**process environment > selected local configuration file > nonsecret defaults**
|
|
54
|
+
once per process. Restart after changing configuration; do not shell-source a
|
|
55
|
+
file to make it work.
|
|
56
|
+
|
|
57
|
+
| Backend | Default native file | Selected-file override |
|
|
58
|
+
| --- | --- | --- |
|
|
59
|
+
| Python/FastAPI, including GenAI | Project-root `.env`, resolved from `backend/config/settings.py`, not the working directory | `LIFTOFF_ENV_FILE` names a dotenv file |
|
|
60
|
+
| Node.js/Fastify | Project-root `.env`, resolved from source or compiled configuration location | `LIFTOFF_ENV_FILE` names a dotenv file |
|
|
61
|
+
| Go/Huma | `../runtime.config.json` when launched from `backend/` | `LIFTOFF_ENV_FILE` names a JSON object of string values |
|
|
62
|
+
|
|
63
|
+
Override paths are relative to the startup working directory unless absolute.
|
|
64
|
+
An explicitly selected missing, unreadable, or malformed file fails even when
|
|
65
|
+
process values could otherwise satisfy startup. An absent default file is allowed
|
|
66
|
+
when process values provide the required settings. All stacks need
|
|
67
|
+
`DATABASE_URL` and `REDIS_URL`; model credentials are not required for operational
|
|
68
|
+
endpoints.
|
|
69
|
+
|
|
70
|
+
Python and Node validate dotenv assignments, balanced quotes, UTF-8, and NUL
|
|
71
|
+
input before accepting a file. Use `KEY=value`, optional `export`, comments,
|
|
72
|
+
and single- or double-quoted values. Node uses the runtime dotenv parser and
|
|
73
|
+
rejects escaped quote delimiters that it would otherwise truncate; use the other
|
|
74
|
+
quote style, for example `APP_NAME="Bob's API"`. Go uses `encoding/json`, not a
|
|
75
|
+
dotenv dependency: numbers such as `PORT` must be quoted strings, and null or
|
|
76
|
+
other non-string values are rejected.
|
|
77
|
+
|
|
78
|
+
### Native development
|
|
79
|
+
|
|
80
|
+
From the project root in a POSIX shell, prepare the documented local settings:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
cp .env.example .env
|
|
84
|
+
docker compose up -d postgres redis azurite mailpit
|
|
60
85
|
```
|
|
61
86
|
|
|
62
|
-
|
|
63
|
-
|
|
87
|
+
Then run **only the selected backend** after its locked dependency preparation:
|
|
88
|
+
|
|
89
|
+
| Backend | Native command |
|
|
90
|
+
| --- | --- |
|
|
91
|
+
| Python | `uv sync --frozen --project backend --extra test`, then `uv run --project backend uvicorn backend.apis.main:app --host 127.0.0.1 --port 8000` |
|
|
92
|
+
| Node.js | `(cd backend && npm ci && npm run build && npm start)` |
|
|
93
|
+
| Go | Copy `runtime.config.example.json` to `runtime.config.json`, then `(cd backend && go mod download && go run ./cmd/api)` |
|
|
94
|
+
|
|
95
|
+
Worker-enabled Python projects add `--extra functions` to frozen synchronization.
|
|
96
|
+
For a Python launch from `backend/`, use
|
|
97
|
+
`uv run uvicorn --app-dir .. backend.apis.main:app --port 8000`; it still reads
|
|
98
|
+
root `.env` without exporting the file's values. PowerShell users can use
|
|
99
|
+
`Copy-Item` and `Set-Location` rather than the POSIX parenthesized commands.
|
|
100
|
+
An explicit selector from `backend/` is `$env:LIFTOFF_ENV_FILE = '..\.env'`
|
|
101
|
+
for Python/Node, or `'..\runtime.config.json'` for Go.
|
|
102
|
+
|
|
103
|
+
Migration tools use the same resolved settings: Python Alembic, Node Drizzle,
|
|
104
|
+
and Go's `make migrate` wrapper around the existing pinned Goose tool. Running
|
|
105
|
+
migrations is a separate database mutation, not part of the startup probes.
|
|
106
|
+
|
|
107
|
+
### Compose and integration boundaries
|
|
108
|
+
|
|
109
|
+
Compose reads root `.env` for interpolation. Select a different dotenv file with
|
|
110
|
+
`docker compose --env-file environments/<env>/backend.env up --build`, using an
|
|
111
|
+
actually selected environment. Process values take precedence. Compose deliberately
|
|
112
|
+
keeps PostgreSQL, Redis, and blob addresses container-reachable while forwarding
|
|
113
|
+
the applicable model, messaging, CORS, and tracing settings.
|
|
114
|
+
|
|
115
|
+
`/health` and `/ready` are local process/configuration endpoints, not dependency
|
|
116
|
+
connectivity or production-readiness proofs. They make no model/provider request.
|
|
117
|
+
Backend containers listen on 8000; the frontend container serves static files on
|
|
118
|
+
80, mapped to 5173 by Compose.
|
|
119
|
+
|
|
120
|
+
For GenAI:
|
|
121
|
+
|
|
122
|
+
- `PYDANTIC_AI_MODEL` supports the locked `openai:`, `openai-chat:`, and
|
|
123
|
+
`openai-responses:` providers with `OPENAI_API_KEY` and optional
|
|
124
|
+
`OPENAI_BASE_URL`. Other providers need reviewed dependency/configuration work.
|
|
125
|
+
- Redis Streams publishes to `REDIS_STREAM_NAME` using `REDIS_URL`.
|
|
126
|
+
- `SERVICE_BUS_AUTH_MODE=managed-identity` requires
|
|
127
|
+
`SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE`, `SERVICE_BUS_QUEUE_NAME`, and
|
|
128
|
+
`AZURE_CLIENT_ID`. `connection-string` requires the queue and
|
|
129
|
+
`SERVICE_BUS_CONNECTION_STRING`. Missing sender settings cannot report queued
|
|
130
|
+
ingestion.
|
|
131
|
+
- Both Langfuse keys blank means tracing is disabled; configuring exactly one
|
|
132
|
+
of `LANGFUSE_PUBLIC_KEY` and `LANGFUSE_SECRET_KEY` is an error.
|
|
133
|
+
`LANGFUSE_HOST` is optional.
|
|
134
|
+
|
|
135
|
+
Keep local secrets out of source control and build contexts. Root/frontend
|
|
136
|
+
`.dockerignore` files exclude host dependencies, caches, outputs, VCS metadata,
|
|
137
|
+
state, and secrets; the Function publish context also has `.funcignore`.
|
|
138
|
+
These runtime files remain project-owned, not managed update targets.
|
|
64
139
|
|
|
65
140
|
## `liftoff.manifest.json`: CLI-owned compatibility record
|
|
66
141
|
|
|
@@ -71,8 +146,6 @@ workload:
|
|
|
71
146
|
|
|
72
147
|
- `genai`: API stack, pattern, cloud, region, frontend, and environments.
|
|
73
148
|
- `standard`: API stack, cloud, region, frontend, and environments.
|
|
74
|
-
- `power-apps-code-app`: immutable starter repository, template path, commit,
|
|
75
|
-
and Code Apps plugin preference.
|
|
76
149
|
|
|
77
150
|
The manifest also records:
|
|
78
151
|
|
|
@@ -85,12 +158,14 @@ The manifest also records:
|
|
|
85
158
|
authorize update writes.
|
|
86
159
|
- OS-neutral path-part arrays.
|
|
87
160
|
- Repository governance profile, policy version 6, activation-contract version
|
|
88
|
-
|
|
161
|
+
2, state/evidence-header/approval schema versions 2,
|
|
162
|
+
graph/supersession/credential schema versions 1, the
|
|
89
163
|
exact phase-graph hash, and local `handoff-generated`, `handoff-partial`, or
|
|
90
164
|
disabled state.
|
|
91
165
|
|
|
92
|
-
Power Apps
|
|
93
|
-
|
|
166
|
+
An existing Power Apps manifest is rejected at its retired workload boundary
|
|
167
|
+
before starter metadata or artifact paths are interpreted. Its original files
|
|
168
|
+
remain unchanged.
|
|
94
169
|
|
|
95
170
|
Treat the manifest as CLI-owned. Restore it from version control or regenerate
|
|
96
171
|
with the matching Liftoff version when validation reports malformed identity,
|
|
@@ -98,19 +173,20 @@ paths, or hashes.
|
|
|
98
173
|
|
|
99
174
|
## Compatibility
|
|
100
175
|
|
|
101
|
-
Readers support artifact versions v2, v3, v4, v5, v6, and v7:
|
|
176
|
+
Readers support artifact versions v2, v3, v4, v5, v6, and v7 for API/GenAI projects:
|
|
102
177
|
|
|
103
178
|
- V2 normalizes the legacy flat API identity and records framework state as
|
|
104
179
|
uncertain without inventing agents.
|
|
105
180
|
- V3 normalizes flat GenAI or API identity plus framework and agent metadata.
|
|
106
|
-
- V4
|
|
181
|
+
- V4 introduces the discriminated workload model. Its formerly supported Power
|
|
182
|
+
Apps variant is now retired.
|
|
107
183
|
- V5 adds repository-governance handoff identity without claiming live
|
|
108
184
|
enforcement.
|
|
109
185
|
- V6 separates managed-core update authority from project generation
|
|
110
186
|
provenance.
|
|
111
|
-
- V7 adds deterministic setup identity
|
|
112
|
-
version 6, activation-contract version
|
|
113
|
-
|
|
187
|
+
- V7 adds deterministic setup identity. Current output uses
|
|
188
|
+
manifest artifact version 7, policy version 6, activation-contract version 2, and the canonical
|
|
189
|
+
phase-graph hash. Governance-disabled v7 manifests use the
|
|
114
190
|
disabled variant and do not fabricate activation identity.
|
|
115
191
|
|
|
116
192
|
Enabled governance manifests retain their recorded positive-integer policy
|
|
@@ -121,20 +197,51 @@ policy, contract, schema, or graph identities remain invalid or blocked without
|
|
|
121
197
|
rewrite.
|
|
122
198
|
|
|
123
199
|
`liftoff update --check`, including `--check --json`, leaves an old manifest
|
|
124
|
-
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
|
|
125
202
|
transaction succeeds. V2-v6 backend, frontend, database, dependency, container,
|
|
126
|
-
environment, documentation,
|
|
203
|
+
environment, documentation, and infrastructure entries become
|
|
127
204
|
project provenance without reading or changing current production bytes.
|
|
128
205
|
Intentionally deleted files remain absent. Only exact current core logical names
|
|
129
206
|
retain write authority.
|
|
130
207
|
|
|
131
208
|
The compatibility map is explicit; Liftoff does not use numeric less-than
|
|
132
|
-
comparisons to infer safety.
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
209
|
+
comparisons to infer execution safety.
|
|
210
|
+
|
|
211
|
+
| Contract | Current version |
|
|
212
|
+
| --- | --- |
|
|
213
|
+
| CLI package version | 0.11.2 |
|
|
214
|
+
| Activation package identity | 0.11.0 |
|
|
215
|
+
| Manifest write / supported reads | 7 / 2-7 for API and GenAI |
|
|
216
|
+
| Normative policy | 6 |
|
|
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 |
|
|
221
|
+
| Phase graph, supersession, credential policy | 1 |
|
|
222
|
+
| Assessment report and control catalog | 1 |
|
|
223
|
+
|
|
224
|
+
The 0.11.2 CLI patch retains the 0.11.0 activation identity because its phase
|
|
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.
|
|
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.
|
|
138
245
|
|
|
139
246
|
## Artifact ownership
|
|
140
247
|
|
|
@@ -149,6 +256,11 @@ category or filename:
|
|
|
149
256
|
| `framework` | Official framework | Validated through framework markers and maintained by that framework |
|
|
150
257
|
| `seed` | Developer/project | Written once and never reconciled |
|
|
151
258
|
|
|
259
|
+
New Spec Kit projects explicitly seed
|
|
260
|
+
`specs/000-liftoff-bootstrap/{spec.md,plan.md,tasks.md}`. These are not framework
|
|
261
|
+
templates or managed-core files. Missing older bundles are an adoption blocker,
|
|
262
|
+
not permission for update or force to create them.
|
|
263
|
+
|
|
152
264
|
The manifest is a CLI-owned transaction record rather than an ordinary
|
|
153
265
|
template artifact. Current managed core is limited to the exact repository
|
|
154
266
|
governance policy, context, guide, phase graph, compatibility metadata,
|
|
@@ -174,7 +286,12 @@ those files, but it does not advance, reset, or delete a phase.
|
|
|
174
286
|
## Contract conventions
|
|
175
287
|
|
|
176
288
|
- Writers use `artifactVersion` 7; readers support v2, v3, v4, v5, v6, and v7.
|
|
177
|
-
- Artifact logical names and catalog identifiers are append-only
|
|
289
|
+
- Artifact logical names and catalog identifiers are append-only except for
|
|
290
|
+
explicitly reviewed retirements. In 0.11.0, the eight
|
|
291
|
+
[flat-root OpenTofu identities](azure-deployment.md#explicit-flat-root-identity-retirement)
|
|
292
|
+
are retired from **new scaffold output only**. Their historical paths,
|
|
293
|
+
identities, and generation hashes remain provenance, not aliases or deletion
|
|
294
|
+
authority. Retained tfvars IDs alone do not establish the independent layout.
|
|
178
295
|
- Rendering is deterministic and does not depend on timestamps, host versions,
|
|
179
296
|
or network state.
|
|
180
297
|
- `.liftoff/governance/` contains managed setup definitions; `governance/`
|
|
@@ -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
|
|
@@ -102,12 +108,18 @@ while unrecorded conflicts remain user-owned. No update mode runs an agent or
|
|
|
102
108
|
activates GitHub settings.
|
|
103
109
|
|
|
104
110
|
Projects carrying governance policy versions 2 through 5 preview policy version
|
|
105
|
-
6, manifest v7, and activation-contract
|
|
111
|
+
6, manifest v7, and activation-contract v2 as managed-core drift. Review the
|
|
106
112
|
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
|
-
|
|
110
|
-
|
|
115
|
+
active downstream work must have supported identity and current evidence before
|
|
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.
|
|
111
123
|
|
|
112
124
|
The manifest-v7 transition releases every legacy non-core artifact into project
|
|
113
125
|
provenance without writing, restoring, moving, or deleting its path.
|
|
@@ -118,7 +130,16 @@ Supported readers normalize manifest v2-v6 and write only v7 after all
|
|
|
118
130
|
preflights pass. Future versions, unsupported policy/contract/schema tuples,
|
|
119
131
|
unknown graph hashes, unversioned activation state, or prose-only task history
|
|
120
132
|
block with explicit upgrade, import-mapping, or reconciliation remedies. Liftoff
|
|
121
|
-
never fabricates evidence from old checkboxes.
|
|
133
|
+
never fabricates evidence from old checkboxes. A diagnostic is not a command to
|
|
134
|
+
hand-write mappings, retag receipts, or manufacture missing history.
|
|
135
|
+
|
|
136
|
+
The new infrastructure layout uses shared application modules and independent
|
|
137
|
+
environment roots. Its eight [retired flat-root identities](azure-deployment.md#explicit-flat-root-identity-retirement)
|
|
138
|
+
remain readable as historical provenance, not aliases for new paths. Existing
|
|
139
|
+
files, state, and generation hashes remain untouched. Adding an environment
|
|
140
|
+
requires recorded independent-root provenance and safe existing module files;
|
|
141
|
+
legacy or unknown layouts need separately reviewed migration. Core context
|
|
142
|
+
updates cannot claim that this migration happened.
|
|
122
143
|
|
|
123
144
|
Major supported-stack releases apply to new scaffolds. Existing projects adopt
|
|
124
145
|
runtime, lock, Docker, provider, framework, and application changes through a
|
|
@@ -146,5 +167,20 @@ framework pipeline, including separate global OpenSpec profile authorization,
|
|
|
146
167
|
and leaves the source byte-for-byte unchanged. `--force` does not permit a
|
|
147
168
|
non-empty migration target.
|
|
148
169
|
|
|
149
|
-
|
|
150
|
-
|
|
170
|
+
The scan reads dependency declarations rather than comments or example text.
|
|
171
|
+
Python setup/test configuration and non-workflow `.github` files remain
|
|
172
|
+
explicit inventory items; dynamic or malformed declarations produce review
|
|
173
|
+
diagnostics rather than invented stack defaults. Source configuration code is
|
|
174
|
+
never executed to discover dependencies.
|
|
175
|
+
|
|
176
|
+
Explicit workload, API-stack, and frontend choices control the target mapping.
|
|
177
|
+
For example, Go source selected for a Node target receives porting instructions,
|
|
178
|
+
not Go-only destination paths; a declined frontend remains a placement decision.
|
|
179
|
+
|
|
180
|
+
Complete the mapped work and run the backend tests, `liftoff validate`, and
|
|
181
|
+
`liftoff doctor` before deleting `migration/legacy/`. OpenSpec archival follows
|
|
182
|
+
the completed change; a Spec Kit migration checklist is finalized locally
|
|
183
|
+
without an invented archive command.
|
|
184
|
+
|
|
185
|
+
Power Apps creation, maintenance, and migration are retired. Existing Power Apps
|
|
186
|
+
manifests are rejected without modifying or converting their application files.
|