@msn-control/liftoff 0.10.3 → 0.11.1
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 +364 -20
- package/README.md +29 -29
- package/assets/governance/single-maintainer-gitflow/assessment-controls.json +39 -0
- package/assets/supported-stack.json +7 -138
- 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 +23 -0
- package/dist/adapters/filesystem/project-transaction.js +158 -0
- package/dist/adapters/filesystem/project-transaction.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 +5 -0
- package/dist/adapters/process/shell-command.js +21 -0
- package/dist/adapters/process/shell-command.js.map +1 -0
- package/dist/application/context.d.ts +20 -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 +586 -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/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/reporting.d.ts +42 -0
- package/dist/application/update/reporting.js +325 -0
- package/dist/application/update/reporting.js.map +1 -0
- package/dist/application/update/use-case.d.ts +8 -0
- package/dist/application/update/use-case.js +600 -0
- package/dist/application/update/use-case.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 -441
- package/dist/args.js.map +1 -1
- package/dist/artifact-lifecycle.d.ts +1 -21
- package/dist/artifact-lifecycle.js +1 -73
- 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 +187 -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 +130 -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 +145 -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 +9 -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 +4 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +4 -35
- package/dist/commands.js +3 -2812
- 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 +124 -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/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 -41
- package/dist/file-system.js +9 -1204
- 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 +421 -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 +46 -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 +1 -1
- package/dist/governance-activation/commands.js +107 -103
- package/dist/governance-activation/commands.js.map +1 -1
- package/dist/governance-activation/compatibility.d.ts +11 -3
- package/dist/governance-activation/compatibility.js +31 -4
- 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 +28 -96
- 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/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 +8 -0
- package/dist/governance-activation/inputs.js +146 -0
- package/dist/governance-activation/inputs.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/read-only.d.ts +30 -0
- package/dist/governance-activation/read-only.js +93 -0
- package/dist/governance-activation/read-only.js.map +1 -0
- package/dist/governance-activation/readiness.d.ts +1 -24
- package/dist/governance-activation/readiness.js +1 -220
- 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 +10 -2
- package/dist/governance-activation/seed-lifecycle.js +244 -66
- 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 +15 -0
- package/dist/governance-activation/transition-planning.js +250 -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 +6 -157
- package/dist/governance-activation/transitions.js +143 -2045
- 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 +7 -0
- package/dist/governance-assessment/catalog.js +31 -0
- package/dist/governance-assessment/catalog.js.map +1 -0
- package/dist/governance-assessment/command.d.ts +10 -0
- package/dist/governance-assessment/command.js +77 -0
- package/dist/governance-assessment/command.js.map +1 -0
- package/dist/governance-assessment/engine.d.ts +14 -0
- package/dist/governance-assessment/engine.js +935 -0
- package/dist/governance-assessment/engine.js.map +1 -0
- package/dist/governance-assessment/index.d.ts +5 -0
- package/dist/governance-assessment/index.js +6 -0
- package/dist/governance-assessment/index.js.map +1 -0
- package/dist/governance-assessment/live-normalize.d.ts +1 -0
- package/dist/governance-assessment/live-normalize.js +2 -0
- package/dist/governance-assessment/live-normalize.js.map +1 -0
- package/dist/governance-assessment/live-transport.d.ts +34 -0
- package/dist/governance-assessment/live-transport.js +455 -0
- package/dist/governance-assessment/live-transport.js.map +1 -0
- package/dist/governance-assessment/live.d.ts +2 -0
- package/dist/governance-assessment/live.js +689 -0
- package/dist/governance-assessment/live.js.map +1 -0
- package/dist/governance-assessment/predicates.d.ts +1 -0
- package/dist/governance-assessment/predicates.js +2 -0
- package/dist/governance-assessment/predicates.js.map +1 -0
- package/dist/governance-assessment/project.d.ts +33 -0
- package/dist/governance-assessment/project.js +178 -0
- package/dist/governance-assessment/project.js.map +1 -0
- package/dist/governance-assessment/readers.d.ts +14 -0
- package/dist/governance-assessment/readers.js +122 -0
- package/dist/governance-assessment/readers.js.map +1 -0
- package/dist/governance-assessment/report.d.ts +1 -0
- package/dist/governance-assessment/report.js +2 -0
- package/dist/governance-assessment/report.js.map +1 -0
- package/dist/governance-assessment/sanitize.d.ts +1 -0
- package/dist/governance-assessment/sanitize.js +2 -0
- package/dist/governance-assessment/sanitize.js.map +1 -0
- package/dist/governance-assessment/types.d.ts +6 -0
- package/dist/governance-assessment/types.js +2 -0
- package/dist/governance-assessment/types.js.map +1 -0
- package/dist/governance-assessment/yaml.d.ts +1 -0
- package/dist/governance-assessment/yaml.js +2 -0
- package/dist/governance-assessment/yaml.js.map +1 -0
- 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 +5 -1
- package/dist/migrate-plan.js +87 -10
- 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 +5 -1
- package/dist/process-runner.js +164 -8
- package/dist/process-runner.js.map +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 +67 -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/release-identity.js +19 -0
- package/dist/release-identity.js.map +1 -1
- package/dist/repository-governance.d.ts +10 -2
- package/dist/repository-governance.js +240 -99
- 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/contract.d.ts +2 -0
- package/dist/telemetry/contract.js +7 -0
- package/dist/telemetry/contract.js.map +1 -1
- package/dist/telemetry/index.d.ts +1 -1
- package/dist/templates.d.ts +10 -20
- package/dist/templates.js +52 -3238
- 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 +127 -11
- package/docs/configuration-and-manifests.md +150 -35
- package/docs/existing-repositories.md +33 -6
- package/docs/getting-started.md +44 -31
- package/docs/prerequisites.md +34 -35
- package/docs/project-structure.md +45 -47
- package/docs/repository-governance.md +207 -24
- package/docs/safety-and-consent.md +65 -12
- package/docs/spec-workflows-and-agents.md +31 -28
- package/docs/supported-stack.md +11 -9
- package/docs/telemetry.md +9 -3
- package/docs/troubleshooting.md +107 -49
- package/docs/workloads.md +53 -62
- package/package.json +6 -8
- 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 -173
- 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
|
@@ -6,6 +6,7 @@ Run `liftoff help` or command-specific help for the authoritative syntax:
|
|
|
6
6
|
liftoff init --help
|
|
7
7
|
liftoff migrate --help
|
|
8
8
|
liftoff governance --help
|
|
9
|
+
liftoff governance assess --help
|
|
9
10
|
liftoff upgrade --help
|
|
10
11
|
liftoff update --help
|
|
11
12
|
```
|
|
@@ -31,16 +32,18 @@ install -> upgrade CLI -> plan -> init or migrate -> /liftoff-setup -> validate,
|
|
|
31
32
|
| `liftoff governance apply-next [project]` | Previews the next graph-ready transition; add `--execute` to execute at most one approved mutation |
|
|
32
33
|
| `liftoff governance resume [project]` | Rechecks external blockers and readiness descendants without rerunning verified operations |
|
|
33
34
|
| `liftoff governance verify [project]` | Read-only validation of graph, state, evidence, task projection, policy identity, active-change identity, and live readback; reports consistency separately from setup completion and reports completion as indeterminate when inspection fails |
|
|
35
|
+
| `liftoff governance assess [project]` | Read-only comparison against the installed CLI's packaged governance target; local-only unless `--live` is explicitly requested |
|
|
34
36
|
| `liftoff upgrade` | Replaces a verified global npm installation with the exact canonical stable release exposed by the configured registry |
|
|
35
37
|
| `liftoff upgrade --check` | Checks installation origin and registry parity without installing; exits 2 when an installable update exists |
|
|
36
38
|
| `liftoff update [project]` | Applies safe managed-core maintenance and authorized create-only component provisioning |
|
|
37
39
|
| `liftoff update --check` | Reports core maintenance and provisioning without mutation; exits 0 when clean and 2 when actionable |
|
|
38
40
|
| `liftoff update --force` | Overwrites only exact guarded managed-core conflicts; project-owned files remain unreachable |
|
|
39
41
|
| `liftoff dev` | Prints workload-appropriate local development commands; it does not execute them |
|
|
40
|
-
| `liftoff infra` | Prints OpenTofu guidance for API workloads
|
|
42
|
+
| `liftoff infra` | Prints OpenTofu guidance for supported API/GenAI workloads without executing it |
|
|
41
43
|
| `liftoff patterns` | Lists GenAI patterns |
|
|
42
44
|
| `liftoff providers` | Lists provider availability |
|
|
43
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 |
|
|
44
47
|
| `liftoff regions search <query>` | Searches region names and slugs |
|
|
45
48
|
| `liftoff --version` | Prints exactly one version line |
|
|
46
49
|
|
|
@@ -57,7 +60,7 @@ Node.js 24 LTS, Python 3.14, Go 1.27, OpenTofu 1.12, OpenSpec 1.11, and Spec Kit
|
|
|
57
60
|
Common noninteractive inputs include:
|
|
58
61
|
|
|
59
62
|
```text
|
|
60
|
-
--type genai|standard
|
|
63
|
+
--type genai|standard
|
|
61
64
|
--pattern <genai-pattern>
|
|
62
65
|
--api python|node|go
|
|
63
66
|
--cloud azure
|
|
@@ -68,7 +71,6 @@ Common noninteractive inputs include:
|
|
|
68
71
|
--agents copilot,claude
|
|
69
72
|
--default-agent copilot|claude
|
|
70
73
|
--governance single-maintainer-gitflow|none
|
|
71
|
-
--code-apps-plugin | --no-code-apps-plugin
|
|
72
74
|
--copilot-cloud | --no-copilot-cloud
|
|
73
75
|
--configure-openspec-profile
|
|
74
76
|
```
|
|
@@ -78,8 +80,9 @@ Interactive initialization presents **I'm not sure yet - Generic GenAI
|
|
|
78
80
|
starter** first and accepts it as the default. `liftoff patterns` lists this
|
|
79
81
|
stable `generic` identifier alongside the eight specialized patterns.
|
|
80
82
|
|
|
81
|
-
Power Apps
|
|
82
|
-
|
|
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.
|
|
83
86
|
|
|
84
87
|
Consent options are documented in [safety and consent](safety-and-consent.md).
|
|
85
88
|
Repository governance defaults to `single-maintainer-gitflow`. It generates a
|
|
@@ -104,13 +107,23 @@ reviewed plan and execute at most one phase whose dependencies, evidence, and
|
|
|
104
107
|
approval envelope are satisfied. `resume` rechecks blockers and downstream
|
|
105
108
|
readiness without repeating verified operations.
|
|
106
109
|
|
|
110
|
+
Apply-next JSON names the attempted phase in `selectedPhase` and reports
|
|
111
|
+
`executedPhase` on execution (`null` on failure). For compatibility its existing
|
|
112
|
+
`nextReadyPhase` field can refer to the phase just attempted, not the next
|
|
113
|
+
post-transition phase. Read `nextReadyPhase` from the subsequent `status` or
|
|
114
|
+
`verify` result. Status/resume preserve `storedState` and `storedBlockers` when
|
|
115
|
+
an archived baseline is `retryable`; only explicit execution may replace that
|
|
116
|
+
failure with verified evidence.
|
|
117
|
+
|
|
107
118
|
Governance JSON uses versioned objects and includes the complete activation
|
|
108
119
|
version vector: creating Liftoff version, manifest artifact version 7, policy
|
|
109
|
-
version 6, activation-contract version
|
|
110
|
-
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 2. It never
|
|
111
123
|
emits a setup-skill version. Future identities, unsupported compatibility
|
|
112
124
|
tuples, and unrecognized graph hashes block without rewriting state; the remedy
|
|
113
|
-
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; no automatic reconciliation command exists.
|
|
114
127
|
|
|
115
128
|
`/liftoff-setup` calls these commands instead of inferring phase completion from
|
|
116
129
|
prose or task checkboxes.
|
|
@@ -126,6 +139,79 @@ consent. Noninteractive `init` and `migrate` require
|
|
|
126
139
|
`openspec config set` commands. The flag has no effect during `plan`, which
|
|
127
140
|
never inspects or changes machine configuration.
|
|
128
141
|
|
|
142
|
+
## Read-only governance assessment
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
liftoff governance assess [project] [--json]
|
|
146
|
+
liftoff governance assess [project] --live [--json]
|
|
147
|
+
liftoff governance assess --project "path with spaces" --json
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Use an optional positional project or `--project`, never both. It can identify
|
|
151
|
+
an ordinary Git repository without a manifest. Nested working directories resolve
|
|
152
|
+
to the nearest applicable Git or Liftoff boundary; invalid or retired inner
|
|
153
|
+
manifests cannot be bypassed. No initialization or slash-command installation is
|
|
154
|
+
required. Help needs no project or
|
|
155
|
+
credential discovery. Only `assess` accepts `--live`; assessment rejects
|
|
156
|
+
`--execute` (including `--execute=false`), `--force`, installation, automatic
|
|
157
|
+
upgrade, and output-file flags before project access.
|
|
158
|
+
|
|
159
|
+
The pinned target is the **installed CLI**, including its packaged policy
|
|
160
|
+
version/content digest, activation identity, phase-graph hash, and control
|
|
161
|
+
catalog schema/digest. It never resolves registry latest or upgrades anything.
|
|
162
|
+
The schema-v1 report (`readOnly: true`) separates target, recorded baseline,
|
|
163
|
+
declared configuration, and observed enforcement, with expected/observed values,
|
|
164
|
+
scope, provenance, impact, diagnostics, and advisory recommendations.
|
|
165
|
+
It shows the project policy version when available. JSON observations may retain
|
|
166
|
+
optional normalized `facts` alongside evaluator predicate values; these are
|
|
167
|
+
sanitized details rather than raw provider payloads.
|
|
168
|
+
|
|
169
|
+
The default is **local-only with no network access**, registry lookup, project
|
|
170
|
+
script execution, or GitHub/Azure credential requirement. Assessment works
|
|
171
|
+
before commit, push, or activation. Every assessment invocation, including
|
|
172
|
+
`--live` and `--help`, skips telemetry and disclosure entirely. Local Git reads
|
|
173
|
+
use only repository root, HEAD, and origin metadata, never `git status`, which
|
|
174
|
+
can execute clean filters. `--live` opts into bounded read-only metadata
|
|
175
|
+
access using existing permissions and verified repository/environment/resource
|
|
176
|
+
bindings. It does not log in, enroll credentials, broaden permissions, register
|
|
177
|
+
providers, download state blobs, or mutate GitHub or Azure.
|
|
178
|
+
Azure scope and evidence-backed applicability require a current active-baseline
|
|
179
|
+
and referenced, validated saved-plan/evidence receipts, not placeholder digests,
|
|
180
|
+
future-dated approvals, or inferred bindings. Missing bindings remain
|
|
181
|
+
`not-observed`. Do not fabricate or hand-edit state, baselines, receipts, or
|
|
182
|
+
evidence as remediation; missing proof requires separately approved setup or
|
|
183
|
+
governance work.
|
|
184
|
+
|
|
185
|
+
Findings are `aligned`, `outdated`, `missing`, `conflicting`,
|
|
186
|
+
`approved-exception`, `inapplicable`, or `not-observed`. Coverage preserves
|
|
187
|
+
unknown applicability, stale or unavailable proof, and unsupported evaluators.
|
|
188
|
+
Denied access, masked 404s, or incomplete collection are not proof of absence.
|
|
189
|
+
Local matches do not prove live enforcement; local-only reports normally have
|
|
190
|
+
partial coverage. See [finding meanings](repository-governance.md#read-only-governance-assessment).
|
|
191
|
+
|
|
192
|
+
| Outcome | Exit | Meaning |
|
|
193
|
+
| --- | --- | --- |
|
|
194
|
+
| `aligned` | 0 | Every applicable catalog control has fresh required proof and matches |
|
|
195
|
+
| `not-applicable` | 0 | Governance is explicitly disabled; not an alignment claim |
|
|
196
|
+
| `partial` | 2 | Applicability or required proof is unknown; known differences remain visible |
|
|
197
|
+
| `differences` | 2 | Complete observation found differences, including approved exceptions |
|
|
198
|
+
| `error` | 1 | Invalid invocation/input, unsafe paths, malformed required artifacts, or an invalid catalog prevent a trustworthy report |
|
|
199
|
+
|
|
200
|
+
Human and JSON output derive from the same report, emitted only to stdout.
|
|
201
|
+
Exit 2 is advisory, not proof that governance is broken or authorization to
|
|
202
|
+
repair it. Neither assessment mode changes project files, Git, state,
|
|
203
|
+
approvals, evidence, or remotes, or runs recommendations. A report cannot
|
|
204
|
+
complete Phase 0 or advance activation.
|
|
205
|
+
|
|
206
|
+
`/liftoff-governance-assess` is a selected-agent explanation wrapper, not a setup
|
|
207
|
+
alias; `/liftoff-setup` remains the primary post-init path. Compatible older
|
|
208
|
+
projects install the integration through normal `liftoff update --check` and
|
|
209
|
+
guarded `liftoff update`. Unowned collisions remain protected even with
|
|
210
|
+
`--force`. Unsupported activation mappings may be diagnosed without migration;
|
|
211
|
+
force cannot bypass compatibility or overwrite project-owned files. A future
|
|
212
|
+
governance upgrade requires fresh observations, its own reviewed plan, and
|
|
213
|
+
separate authority.
|
|
214
|
+
|
|
129
215
|
## CLI upgrade modes
|
|
130
216
|
|
|
131
217
|
```bash
|
|
@@ -148,6 +234,12 @@ version. Liftoff never edits `.npmrc`, embeds registry credentials, forces a
|
|
|
148
234
|
canonical bypass around a stale mirror, invokes elevation, installs a
|
|
149
235
|
prerelease, or performs a downgrade.
|
|
150
236
|
|
|
237
|
+
Machine-level `@msn-control:registry` takes precedence over the default
|
|
238
|
+
`registry`, even when the default is canonical. The lookup runs from a neutral
|
|
239
|
+
directory so project `.npmrc` files cannot change upgrade delivery. Canonical
|
|
240
|
+
verification isolates both registry settings without changing persistent
|
|
241
|
+
configuration; actual delivery still honors the configured mirror.
|
|
242
|
+
|
|
151
243
|
`--check` performs the same origin, target, and parity checks without invoking
|
|
152
244
|
installation. Apply uses one shell-free exact npm command with lifecycle scripts,
|
|
153
245
|
audit, and funding prompts disabled, then verifies installed metadata, the
|
|
@@ -182,7 +274,7 @@ set local state to `handoff-partial`. Forced update may remove exact retired
|
|
|
182
274
|
generated setup-alias entries from older manifests after review.
|
|
183
275
|
|
|
184
276
|
Application source, tests, dependencies and locks, database assets, Docker and
|
|
185
|
-
Compose files, environment files, documentation,
|
|
277
|
+
Compose files, environment files, documentation, and
|
|
186
278
|
OpenTofu topology are `project` artifacts after generation. Update does not
|
|
187
279
|
compare them with newer templates, restore deleted paths, or overwrite them
|
|
188
280
|
under `--force`.
|
|
@@ -193,6 +285,10 @@ preflighted together. Absent files are created and byte-identical files are
|
|
|
193
285
|
adopted as provenance; any differing destination blocks the group even with
|
|
194
286
|
`--force`. Disabling or re-enabling a previously provisioned group never
|
|
195
287
|
recreates or deletes project files.
|
|
288
|
+
New environments also require recorded independent-root infrastructure and safe
|
|
289
|
+
existing shared-module files. Legacy/shared or unknown layout produces a
|
|
290
|
+
component-level migration-required result; other safe managed-core work may
|
|
291
|
+
continue. Force cannot migrate state or rewrite shared infrastructure.
|
|
196
292
|
|
|
197
293
|
Use `--check` whenever no project bytes may change. Human check mode prints
|
|
198
294
|
managed-core drift, ownership-only manifest v2-v7 migration, activation-identity
|
|
@@ -209,8 +305,8 @@ core update, but Liftoff retains no backup after a successful core overwrite.
|
|
|
209
305
|
Force cannot bypass the ownership, project-boundary, symlink, structural,
|
|
210
306
|
identity, or manifest guards.
|
|
211
307
|
|
|
212
|
-
New dependency, runtime, container, database, application,
|
|
213
|
-
|
|
308
|
+
New dependency, runtime, container, database, application, and infrastructure
|
|
309
|
+
templates apply to newly generated projects. Existing
|
|
214
310
|
production projects adopt them through a separately reviewed project change.
|
|
215
311
|
The existing `liftoff migrate` command only adopts a non-Liftoff source into a
|
|
216
312
|
fresh target; it is not an in-place template upgrade.
|
|
@@ -234,6 +330,26 @@ All current writes use v7. Supported historical reads are normalized through an
|
|
|
234
330
|
explicit compatibility map; future versions, individually known but unsupported
|
|
235
331
|
tuples, and unknown phase-graph hashes block and report an upgrade or
|
|
236
332
|
reconciliation remedy instead of downgrading or fabricating evidence.
|
|
333
|
+
Exact known activation-v1 identity is readable for diagnostics. A
|
|
334
|
+
`diagnosticOnly` historical-state result can coexist with managed-core maintenance,
|
|
335
|
+
which preserves the historical identity, state, and receipts and does not make
|
|
336
|
+
them executable.
|
|
337
|
+
|
|
338
|
+
## Development and infrastructure helpers
|
|
339
|
+
|
|
340
|
+
`liftoff dev` and `liftoff infra` print commands rather than execute them.
|
|
341
|
+
Infrastructure helpers use recorded layout, not merely new-looking paths.
|
|
342
|
+
For a selected prod environment in the independent layout,
|
|
343
|
+
`liftoff infra init --env prod` targets
|
|
344
|
+
`infrastructure/opentofu/azure/environments/prod`; plan/apply use
|
|
345
|
+
`-var-file=prod.tfvars` in that same root. Operational init uses the configured
|
|
346
|
+
backend, not `-backend=false`. Only the local baseline disables backend
|
|
347
|
+
initialization, separately for every selected root. Recursive formatting remains
|
|
348
|
+
at the Azure parent to include the shared module.
|
|
349
|
+
|
|
350
|
+
The eight explicitly retired flat-root identities remain old provenance, not
|
|
351
|
+
aliases for new roots. See the [exact inventory](azure-deployment.md#explicit-flat-root-identity-retirement)
|
|
352
|
+
and [native runtime recipes](configuration-and-manifests.md#application-runtime-configuration).
|
|
237
353
|
|
|
238
354
|
## JSON and exit codes
|
|
239
355
|
|
|
@@ -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
|
|
@@ -123,18 +199,37 @@ rewrite.
|
|
|
123
199
|
`liftoff update --check`, including `--check --json`, leaves an old manifest
|
|
124
200
|
byte-for-byte unchanged. A successful plain update writes v7 only after the
|
|
125
201
|
transaction succeeds. V2-v6 backend, frontend, database, dependency, container,
|
|
126
|
-
environment, documentation,
|
|
202
|
+
environment, documentation, and infrastructure entries become
|
|
127
203
|
project provenance without reading or changing current production bytes.
|
|
128
204
|
Intentionally deleted files remain absent. Only exact current core logical names
|
|
129
205
|
retain write authority.
|
|
130
206
|
|
|
131
207
|
The compatibility map is explicit; Liftoff does not use numeric less-than
|
|
132
|
-
comparisons to infer safety.
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
208
|
+
comparisons to infer execution safety.
|
|
209
|
+
|
|
210
|
+
| Contract | Current version |
|
|
211
|
+
| --- | --- |
|
|
212
|
+
| CLI package version | 0.11.1 |
|
|
213
|
+
| Activation package identity | 0.11.0 |
|
|
214
|
+
| Manifest write / supported reads | 7 / 2-7 for API and GenAI |
|
|
215
|
+
| Normative policy | 6 |
|
|
216
|
+
| Activation contract, state, evidence header, approval envelope, compatibility metadata | 2 |
|
|
217
|
+
| Phase graph, supersession, credential policy | 1 |
|
|
218
|
+
| Assessment report and control catalog | 1 |
|
|
219
|
+
|
|
220
|
+
The 0.11.1 CLI patch retains the 0.11.0 activation identity because its phase
|
|
221
|
+
semantics and graph are unchanged. Independent infrastructure provenance
|
|
222
|
+
explicitly recognizes both generation versions; unknown releases are not
|
|
223
|
+
automatically trusted or treated as compatible.
|
|
224
|
+
|
|
225
|
+
Known activation-v1 history remains readable but **diagnostic-only**, not
|
|
226
|
+
executable proof. Managed-core maintenance can continue without rewriting user-owned
|
|
227
|
+
historical identity, state, or receipts. A readable historical manifest cannot
|
|
228
|
+
bootstrap current activation or authorize provider scope, even when no state
|
|
229
|
+
file exists or a separate current state is supplied. No automatic conversion, reset, or public
|
|
230
|
+
historical reconciliation workflow is provided. Future/mixed tuples, ad hoc
|
|
231
|
+
state, and unknown graph hashes remain blocked. No reader converts prose,
|
|
232
|
+
filenames, checked tasks, or old placeholder digests into current evidence.
|
|
138
233
|
|
|
139
234
|
## Artifact ownership
|
|
140
235
|
|
|
@@ -149,10 +244,23 @@ category or filename:
|
|
|
149
244
|
| `framework` | Official framework | Validated through framework markers and maintained by that framework |
|
|
150
245
|
| `seed` | Developer/project | Written once and never reconciled |
|
|
151
246
|
|
|
247
|
+
New Spec Kit projects explicitly seed
|
|
248
|
+
`specs/000-liftoff-bootstrap/{spec.md,plan.md,tasks.md}`. These are not framework
|
|
249
|
+
templates or managed-core files. Missing older bundles are an adoption blocker,
|
|
250
|
+
not permission for update or force to create them.
|
|
251
|
+
|
|
152
252
|
The manifest is a CLI-owned transaction record rather than an ordinary
|
|
153
253
|
template artifact. Current managed core is limited to the exact repository
|
|
154
254
|
governance policy, context, guide, phase graph, compatibility metadata,
|
|
155
255
|
credential-policy schema, and selected-agent `/liftoff-setup` integrations.
|
|
256
|
+
Enabled projects also own only the exact assessment integrations:
|
|
257
|
+
`liftoff-governance-assess-copilot` at
|
|
258
|
+
`.github/prompts/liftoff-governance-assess.prompt.md` and
|
|
259
|
+
`liftoff-governance-assess-claude` at
|
|
260
|
+
`.claude/commands/liftoff-governance-assess.md`, for selected agents only.
|
|
261
|
+
Older supported inventories without these entries remain readable and expose
|
|
262
|
+
safe managed-core update drift. Unowned collisions stay outside ownership even
|
|
263
|
+
with force; assessment never grants write authority for files it reads.
|
|
156
264
|
Forced update may remove exact retired generated setup-alias entries from older
|
|
157
265
|
manifests after review. A name such as `config.go`, a `configuration` category,
|
|
158
266
|
or a path under `.github` does not grant update authority.
|
|
@@ -166,14 +274,21 @@ those files, but it does not advance, reset, or delete a phase.
|
|
|
166
274
|
## Contract conventions
|
|
167
275
|
|
|
168
276
|
- Writers use `artifactVersion` 7; readers support v2, v3, v4, v5, v6, and v7.
|
|
169
|
-
- Artifact logical names and catalog identifiers are append-only
|
|
277
|
+
- Artifact logical names and catalog identifiers are append-only except for
|
|
278
|
+
explicitly reviewed retirements. In 0.11.0, the eight
|
|
279
|
+
[flat-root OpenTofu identities](azure-deployment.md#explicit-flat-root-identity-retirement)
|
|
280
|
+
are retired from **new scaffold output only**. Their historical paths,
|
|
281
|
+
identities, and generation hashes remain provenance, not aliases or deletion
|
|
282
|
+
authority. Retained tfvars IDs alone do not establish the independent layout.
|
|
170
283
|
- Rendering is deterministic and does not depend on timestamps, host versions,
|
|
171
284
|
or network state.
|
|
172
285
|
- `.liftoff/governance/` contains managed setup definitions; `governance/`
|
|
173
286
|
contains user-owned activation state.
|
|
174
287
|
- Machine-readable paths are path-part arrays, never platform-joined strings.
|
|
175
288
|
- Exit codes are 0 for success or clean, 1 for failure, and 2 for detected
|
|
176
|
-
drift in check mode.
|
|
289
|
+
drift in check mode. Assessment also uses 2 for partial coverage or differences
|
|
290
|
+
including approved exceptions; disabled governance exits 0 as not-applicable,
|
|
291
|
+
never as an alignment claim.
|
|
177
292
|
- JSON outputs carry a numeric top-level `schemaVersion`.
|
|
178
293
|
|
|
179
294
|
See [safety and consent](safety-and-consent.md) for reconciliation and rollback
|
|
@@ -102,12 +102,15 @@ while unrecorded conflicts remain user-owned. No update mode runs an agent or
|
|
|
102
102
|
activates GitHub settings.
|
|
103
103
|
|
|
104
104
|
Projects carrying governance policy versions 2 through 5 preview policy version
|
|
105
|
-
6, manifest v7, and activation-contract
|
|
105
|
+
6, manifest v7, and activation-contract v2 as managed-core drift. Review the
|
|
106
106
|
canonical phase graph, private-runner credential contract, bootstrap-state
|
|
107
107
|
retention/disposal contract, and active-change reconciliation before
|
|
108
108
|
replacement. Updating the handoff never provisions Azure or GitHub resources;
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
active downstream work must have supported identity and current evidence before
|
|
110
|
+
it can execute. The CLI provides no public identity-acknowledgment or historical
|
|
111
|
+
reconciliation workflow.
|
|
112
|
+
Historical activation-v1 state and receipts are diagnostic-only, not
|
|
113
|
+
automatically migrated or made executable by updating core files.
|
|
111
114
|
|
|
112
115
|
The manifest-v7 transition releases every legacy non-core artifact into project
|
|
113
116
|
provenance without writing, restoring, moving, or deleting its path.
|
|
@@ -118,7 +121,16 @@ Supported readers normalize manifest v2-v6 and write only v7 after all
|
|
|
118
121
|
preflights pass. Future versions, unsupported policy/contract/schema tuples,
|
|
119
122
|
unknown graph hashes, unversioned activation state, or prose-only task history
|
|
120
123
|
block with explicit upgrade, import-mapping, or reconciliation remedies. Liftoff
|
|
121
|
-
never fabricates evidence from old checkboxes.
|
|
124
|
+
never fabricates evidence from old checkboxes. A diagnostic is not a command to
|
|
125
|
+
hand-write mappings, retag receipts, or manufacture missing history.
|
|
126
|
+
|
|
127
|
+
The new infrastructure layout uses shared application modules and independent
|
|
128
|
+
environment roots. Its eight [retired flat-root identities](azure-deployment.md#explicit-flat-root-identity-retirement)
|
|
129
|
+
remain readable as historical provenance, not aliases for new paths. Existing
|
|
130
|
+
files, state, and generation hashes remain untouched. Adding an environment
|
|
131
|
+
requires recorded independent-root provenance and safe existing module files;
|
|
132
|
+
legacy or unknown layouts need separately reviewed migration. Core context
|
|
133
|
+
updates cannot claim that this migration happened.
|
|
122
134
|
|
|
123
135
|
Major supported-stack releases apply to new scaffolds. Existing projects adopt
|
|
124
136
|
runtime, lock, Docker, provider, framework, and application changes through a
|
|
@@ -146,5 +158,20 @@ framework pipeline, including separate global OpenSpec profile authorization,
|
|
|
146
158
|
and leaves the source byte-for-byte unchanged. `--force` does not permit a
|
|
147
159
|
non-empty migration target.
|
|
148
160
|
|
|
149
|
-
|
|
150
|
-
|
|
161
|
+
The scan reads dependency declarations rather than comments or example text.
|
|
162
|
+
Python setup/test configuration and non-workflow `.github` files remain
|
|
163
|
+
explicit inventory items; dynamic or malformed declarations produce review
|
|
164
|
+
diagnostics rather than invented stack defaults. Source configuration code is
|
|
165
|
+
never executed to discover dependencies.
|
|
166
|
+
|
|
167
|
+
Explicit workload, API-stack, and frontend choices control the target mapping.
|
|
168
|
+
For example, Go source selected for a Node target receives porting instructions,
|
|
169
|
+
not Go-only destination paths; a declined frontend remains a placement decision.
|
|
170
|
+
|
|
171
|
+
Complete the mapped work and run the backend tests, `liftoff validate`, and
|
|
172
|
+
`liftoff doctor` before deleting `migration/legacy/`. OpenSpec archival follows
|
|
173
|
+
the completed change; a Spec Kit migration checklist is finalized locally
|
|
174
|
+
without an invented archive command.
|
|
175
|
+
|
|
176
|
+
Power Apps creation, maintenance, and migration are retired. Existing Power Apps
|
|
177
|
+
manifests are rejected without modifying or converting their application files.
|