@msn-control/liftoff 0.10.4 → 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 +220 -77
- package/README.md +28 -28
- 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 +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 -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 +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 +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 +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 -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 +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 +72 -106
- 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 -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 +9 -1
- package/dist/governance-activation/seed-lifecycle.js +197 -63
- 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 -165
- package/dist/governance-activation/transitions.js +142 -2055
- 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 +463 -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 +13 -17
- package/dist/governance-assessment/project.js +59 -149
- 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 +126 -112
- 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 +49 -13
- package/docs/configuration-and-manifests.md +139 -34
- 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 +39 -46
- package/docs/repository-governance.md +90 -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/troubleshooting.md +107 -49
- package/docs/workloads.md +46 -62
- 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
|
@@ -17,7 +17,9 @@ project/
|
|
|
17
17
|
|-- liftoff.config.json
|
|
18
18
|
|-- liftoff.manifest.json
|
|
19
19
|
|-- .env.example
|
|
20
|
+
|-- runtime.config.example.json # Go native configuration only
|
|
20
21
|
|-- Dockerfile
|
|
22
|
+
|-- .dockerignore
|
|
21
23
|
|-- docker-compose.yml
|
|
22
24
|
|-- .liftoff/
|
|
23
25
|
| `-- governance/ # managed-core local handoff when enabled
|
|
@@ -45,8 +47,10 @@ project/
|
|
|
45
47
|
|-- infrastructure/
|
|
46
48
|
| `-- opentofu/
|
|
47
49
|
| `-- azure/
|
|
48
|
-
|
|
|
50
|
+
| |-- modules/application/
|
|
51
|
+
| `-- environments/<env>/ # independent root, <env>.tfvars and provider lock
|
|
49
52
|
|-- openspec/ or .specify/
|
|
53
|
+
|-- specs/000-liftoff-bootstrap/ # Spec Kit only: one-time spec.md, plan.md, tasks.md
|
|
50
54
|
|-- .github/skills/openspec-*/ and .github/prompts/opsx-* # OpenSpec + Copilot
|
|
51
55
|
|-- .claude/skills/openspec-*/ and .claude/commands/opsx/ # OpenSpec + Claude
|
|
52
56
|
|-- .github/workflows/copilot-setup-steps.yml # optional hosted agent
|
|
@@ -64,7 +68,9 @@ project/
|
|
|
64
68
|
|
|
65
69
|
- `backend` contains the selected API stack and Scalar/OpenAPI wiring. Python
|
|
66
70
|
uses `backend/apis`, Node.js uses `backend/src`, and Go uses
|
|
67
|
-
`backend/cmd/api` plus `backend/internal`.
|
|
71
|
+
`backend/cmd/api` plus `backend/internal`. Node includes an explicit
|
|
72
|
+
`backend/vitest.config.ts`; Go's `backend/cmd/migrate/main.go` passes resolved
|
|
73
|
+
configuration to the existing pinned Goose migration tool.
|
|
68
74
|
- `backend/orchestration` appears only in GenAI projects and contains
|
|
69
75
|
PydanticAI agents, prompts, model configuration, and integration boundaries.
|
|
70
76
|
The generic pattern creates `generic_agent.py`, `generic.md`, and the neutral
|
|
@@ -80,8 +86,12 @@ project/
|
|
|
80
86
|
- Python Docker builds export the committed `uv.lock` in frozen mode and install
|
|
81
87
|
only hash-verified requirements. `UV_DEFAULT_INDEX` can select a
|
|
82
88
|
credential-free managed mirror without changing the lock.
|
|
83
|
-
- `infrastructure/opentofu/azure` contains
|
|
84
|
-
|
|
89
|
+
- `infrastructure/opentofu/azure/modules/application` contains the shared module.
|
|
90
|
+
Each selected `infrastructure/opentofu/azure/environments/<env>` root owns its
|
|
91
|
+
named tfvars, provider lock, and independent local/remote state configuration.
|
|
92
|
+
Existing shared-state projects are not relocated by update or force.
|
|
93
|
+
The eight [retired flat-root identities](azure-deployment.md#explicit-flat-root-identity-retirement)
|
|
94
|
+
remain historical provenance; new root-looking files do not establish eligibility.
|
|
85
95
|
- `openspec` is created for OpenSpec. `.specify` and `specs` are created for
|
|
86
96
|
Spec Kit.
|
|
87
97
|
- OpenSpec projects receive all 12 pinned workflows as both skills and commands
|
|
@@ -104,47 +114,30 @@ project/
|
|
|
104
114
|
separate from Azure Functions runtime files.
|
|
105
115
|
- `migration/legacy` contains the filtered source copy created by migration.
|
|
106
116
|
|
|
107
|
-
|
|
117
|
+
### Runtime configuration and image boundaries
|
|
108
118
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|-- vite.config.ts
|
|
119
|
-
|-- eslint.config.js
|
|
120
|
-
|-- tsconfig.json
|
|
121
|
-
|-- public/
|
|
122
|
-
|-- src/
|
|
123
|
-
| |-- App.tsx
|
|
124
|
-
| |-- main.tsx
|
|
125
|
-
| |-- router.tsx
|
|
126
|
-
| |-- components/
|
|
127
|
-
| |-- hooks/
|
|
128
|
-
| |-- pages/
|
|
129
|
-
| `-- providers/
|
|
130
|
-
|-- .liftoff/governance/ # managed-core setup files when enabled
|
|
131
|
-
|-- governance/ # user-owned activation state after setup starts
|
|
132
|
-
`-- openspec/ or .specify/
|
|
133
|
-
```
|
|
119
|
+
Python and Node.js native startup read the project-root `.env`; process
|
|
120
|
+
environment values take precedence over file-backed settings and nonsecret
|
|
121
|
+
defaults. Go native startup from `backend/` reads `../runtime.config.json`;
|
|
122
|
+
copy `runtime.config.example.json` to that path or select explicit JSON with
|
|
123
|
+
`LIFTOFF_ENV_FILE`. It does not shell-source `.env`. Configuration is resolved
|
|
124
|
+
once per process; restart after editing the selected file.
|
|
125
|
+
Explicit missing, unreadable, or malformed selected files fail before fallback.
|
|
126
|
+
See [configuration syntax and native commands](configuration-and-manifests.md#application-runtime-configuration)
|
|
127
|
+
for strict dotenv quoting and Go's string-valued JSON contract.
|
|
134
128
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
129
|
+
Compose passes applicable runtime settings explicitly while keeping PostgreSQL,
|
|
130
|
+
Redis, and other generated service addresses container-reachable. Root and
|
|
131
|
+
frontend `.dockerignore` files exclude host virtual environments, `node_modules`,
|
|
132
|
+
build outputs, VCS metadata, state, and local secrets. Installing dependencies
|
|
133
|
+
locally must not copy a host environment over dependencies installed in an image.
|
|
140
134
|
|
|
141
|
-
|
|
142
|
-
Power Apps SDK, Vite plugin, and project-local CLI through locked npm
|
|
143
|
-
dependencies.
|
|
135
|
+
## Retired project layouts
|
|
144
136
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
137
|
+
Power Apps code app generation and maintenance are retired. An existing
|
|
138
|
+
Power Apps manifest is rejected without converting its root layout or modifying
|
|
139
|
+
application, framework, dependency, or governance files. The remaining generated
|
|
140
|
+
layouts are the API and GenAI layouts above.
|
|
148
141
|
|
|
149
142
|
## Managed versus user-owned governance artifacts
|
|
150
143
|
|
|
@@ -169,12 +162,12 @@ success-shaped placeholders:
|
|
|
169
162
|
invocation fails clearly.
|
|
170
163
|
- Redis Streams uses `REDIS_URL` and `REDIS_STREAM_NAME`.
|
|
171
164
|
- Azure Service Bus uses `SERVICE_BUS_QUEUE_NAME` and either
|
|
172
|
-
`
|
|
173
|
-
`
|
|
174
|
-
user-assigned
|
|
165
|
+
`SERVICE_BUS_AUTH_MODE=connection-string` with `SERVICE_BUS_CONNECTION_STRING`,
|
|
166
|
+
or `managed-identity` with `SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE` and
|
|
167
|
+
`AZURE_CLIENT_ID` for the selected user-assigned identity.
|
|
175
168
|
- Langfuse requires both `LANGFUSE_PUBLIC_KEY` and
|
|
176
|
-
`LANGFUSE_SECRET_KEY`, with optional `LANGFUSE_HOST`.
|
|
177
|
-
tracing is
|
|
169
|
+
`LANGFUSE_SECRET_KEY`, with optional `LANGFUSE_HOST`. Both blank disables
|
|
170
|
+
tracing; only one configured key is an error.
|
|
178
171
|
- Frontends read `VITE_API_BASE_URL`, call the route selected by the pattern or
|
|
179
172
|
API stack, and expose loading, response, and failure states.
|
|
180
173
|
- Backends allow the local frontend origin by default.
|
|
@@ -14,9 +14,10 @@ cd my-project
|
|
|
14
14
|
/liftoff-setup
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
`/liftoff-setup`
|
|
18
|
-
|
|
19
|
-
read-only Phase 0
|
|
17
|
+
`/liftoff-setup` uses the deterministic Liftoff governance engine to complete
|
|
18
|
+
the workflow-specific local bootstrap, then encounters the separately authorized
|
|
19
|
+
publication and read-only Phase 0 boundaries. The user-owned activation state records
|
|
20
|
+
execution, not an agent's claim of completion.
|
|
20
21
|
|
|
21
22
|
**Current activation limits:** local bootstrap is implemented, but the CLI does
|
|
22
23
|
not yet wire every production phase executor or expose approval persistence
|
|
@@ -72,6 +73,18 @@ runs assessment. It needs no commit, push, activation, or cloud credentials:
|
|
|
72
73
|
liftoff governance assess --json
|
|
73
74
|
```
|
|
74
75
|
|
|
76
|
+
The same CLI command works in an ordinary Git repository without initialization,
|
|
77
|
+
a manifest, or generated slash commands. An explicit path is authoritative;
|
|
78
|
+
otherwise the nearest applicable Git or Liftoff boundary is used, including
|
|
79
|
+
linked worktrees and unborn repositories. A malformed, unreadable, symlinked,
|
|
80
|
+
dangling, or retired inner manifest blocks fallback to an outer project or Git
|
|
81
|
+
repository. Assessment never installs agent wrappers into unrelated repositories.
|
|
82
|
+
|
|
83
|
+
For ordinary Git repositories the installed single-maintainer policy is the
|
|
84
|
+
displayed target, not a policy inferred from existing branches. Recorded Liftoff
|
|
85
|
+
identity stays nullable, and missing baseline, ownership, or evidence stays
|
|
86
|
+
`not-observed`. It is not the same as a valid Liftoff governance opt-out.
|
|
87
|
+
|
|
75
88
|
The pinned target is the **installed CLI** and its packaged policy, activation
|
|
76
89
|
identity, phase graph, and assessment control catalog, never registry latest.
|
|
77
90
|
The report compares four distinct layers: target, recorded project baseline,
|
|
@@ -103,8 +116,10 @@ enrolls credentials, expands permissions, registers providers, reads state blobs
|
|
|
103
116
|
executes project code, runs scanners or infrastructure tools, or changes local
|
|
104
117
|
or remote configuration.
|
|
105
118
|
Azure scope and evidence-backed applicability require a current active-baseline
|
|
106
|
-
and referenced, validated saved-plan/evidence receipts.
|
|
107
|
-
|
|
119
|
+
and referenced, validated saved-plan/evidence receipts. Current receipts bind
|
|
120
|
+
their canonical payload and live readback through `bodyDigest`; a header hash
|
|
121
|
+
alone cannot authorize changed runner IDs or Azure resources. Placeholder digests,
|
|
122
|
+
historical v1 receipts, future-dated approvals, and inferred bindings cannot establish proof. Missing
|
|
108
123
|
bindings remain `not-observed`. Do not fabricate or hand-edit activation state,
|
|
109
124
|
baselines, receipts, or evidence to manufacture alignment; use separately
|
|
110
125
|
approved setup or governance work to obtain trustworthy proof.
|
|
@@ -127,6 +142,21 @@ zero-required-reviewer policy rather than generic peer-review advice.
|
|
|
127
142
|
Approved exceptions remain differences; free-form or expired claims cannot
|
|
128
143
|
waive controls or hide coverage gaps.
|
|
129
144
|
|
|
145
|
+
Collection failures do not erase independent facts. For example, denied GitHub
|
|
146
|
+
access cannot invalidate an unchanged local workflow, and a denied Azure resource
|
|
147
|
+
cannot hide a proven violation on another resource. Effective/classic/inherited
|
|
148
|
+
branch protection, release/hotfix check bindings, transitive required-job
|
|
149
|
+
dependencies, and complete runner restrictions are evaluated separately.
|
|
150
|
+
Rejected exception claims retain diagnostics instead of disappearing.
|
|
151
|
+
Required checks bind both their names and application identities. A passing
|
|
152
|
+
aggregator cannot hide a required scanner with `continue-on-error`; unresolved
|
|
153
|
+
reusable-workflow, matrix, or dynamic semantics stay unobserved. Runner checks
|
|
154
|
+
include repository/group restrictions, not only matching IDs or labels.
|
|
155
|
+
|
|
156
|
+
The catalog retains 30 controls across 17 families, including 10 unsupported
|
|
157
|
+
evaluators. Available evaluators are not completed proof; always-applicable
|
|
158
|
+
unsupported controls keep enabled assessments partial even with live access.
|
|
159
|
+
|
|
130
160
|
Human and schema-v1 JSON reports share `readOnly: true`, target and project
|
|
131
161
|
identities, findings, diagnostics, provenance, and coverage. Exit **0** means
|
|
132
162
|
fully observed `aligned` or explicitly disabled `not-applicable` governance
|
|
@@ -194,22 +224,38 @@ remote import can satisfy `remote-ready`.
|
|
|
194
224
|
|
|
195
225
|
## Bootstrap seed and local baseline
|
|
196
226
|
|
|
197
|
-
Before commit/push or Phase 0, setup completes, syncs, and archives the
|
|
198
|
-
`bootstrap-<project>`
|
|
227
|
+
Before commit/push or Phase 0, OpenSpec setup completes, syncs, and archives the
|
|
228
|
+
generated `bootstrap-<project>` seed. Spec Kit setup instead validates the real
|
|
229
|
+
`specs/000-liftoff-bootstrap/{spec.md,plan.md,tasks.md}` bundle and official
|
|
230
|
+
framework markers, then finalizes the local bootstrap handoff. It never creates
|
|
231
|
+
an OpenSpec tree, invents an archive, or creates a Git branch. Older Spec Kit
|
|
232
|
+
projects without the bundle need separately reviewed seed adoption.
|
|
233
|
+
|
|
234
|
+
The bundle's exact identity is `000-liftoff-bootstrap`, with B001–B006 each
|
|
235
|
+
appearing once. It is not an active governance change. Dependencies may already
|
|
236
|
+
be installed; installing them requires separate consent, which passing tests
|
|
237
|
+
alone cannot prove. Successful explicit execution commits the checked projection
|
|
238
|
+
with body/full-plan-bound baseline evidence; failed checks leave tasks unchanged.
|
|
239
|
+
|
|
240
|
+
Both adapters run only local, applicable checks in the declared component roots:
|
|
199
241
|
|
|
200
242
|
- `liftoff validate`
|
|
201
243
|
- backend tests from the generated README
|
|
202
244
|
- frontend build when a frontend exists
|
|
203
245
|
- `docker compose config -q` when Compose exists
|
|
204
|
-
- `tofu fmt -check -recursive`
|
|
205
|
-
- `tofu init -backend=false`
|
|
206
|
-
- `tofu validate`
|
|
207
|
-
- strict OpenSpec validation
|
|
246
|
+
- `tofu fmt -check -recursive` at `infrastructure/opentofu/azure`, covering modules and roots
|
|
247
|
+
- `tofu init -backend=false` in each selected independent environment root
|
|
248
|
+
- `tofu validate` in each selected independent environment root
|
|
249
|
+
- strict OpenSpec validation, or validation of the real Spec Kit bootstrap bundle
|
|
208
250
|
|
|
209
251
|
Absent components are recorded as inapplicable. The baseline never starts
|
|
210
252
|
containers, runs a live `tofu plan` or `tofu apply`, deploys, mutates GitHub, or
|
|
211
|
-
requires cloud credentials. A failed check
|
|
212
|
-
|
|
253
|
+
requires cloud credentials. A failed local check remains unfinished; only
|
|
254
|
+
explicit execution retries it after repair. Read-only status, resume, and
|
|
255
|
+
verification do not advance tasks or rerun checks. Unchanged current proof can
|
|
256
|
+
be reused; changed relevant inputs require fresh evidence.
|
|
257
|
+
Recorded legacy-shared or unknown infrastructure layouts block this baseline
|
|
258
|
+
with migration-required and no commands, even if new-looking directories exist.
|
|
213
259
|
|
|
214
260
|
If the seed was already archived before setup began, it stays archived.
|
|
215
261
|
Setup still runs the entire applicable local baseline, but strict OpenSpec
|
|
@@ -236,6 +282,10 @@ types, destinations, permissions, cost ceiling, destructive scope, policy
|
|
|
236
282
|
exceptions, expiry, and baseline SHA. Retries inside the same envelope do not
|
|
237
283
|
ask again; expanded resources, destinations, permissions, cost, exceptions, or
|
|
238
284
|
destructive effects require a new approval.
|
|
285
|
+
Its time window must satisfy `approvedAt <= now < expiresAt` and have a valid
|
|
286
|
+
start/end interval. A future, reversed, or expired envelope cannot authorize
|
|
287
|
+
execution. The contract does not imply a public approval-persistence workflow
|
|
288
|
+
exists; an unavailable entry capability remains a blocker.
|
|
239
289
|
|
|
240
290
|
## Credentials for runner preflight
|
|
241
291
|
|
|
@@ -243,7 +293,8 @@ When `GITHUB_TOKEN` cannot read required hosted-runner metadata, setup first
|
|
|
243
293
|
prefers an existing verified selected-repository GitHub App installation with the
|
|
244
294
|
required read permissions. Liftoff does not install or broaden an App.
|
|
245
295
|
|
|
246
|
-
If no approved App is available,
|
|
296
|
+
If no approved App is available, the normative policy describes this
|
|
297
|
+
fine-grained PAT fallback, not an implemented enrollment command:
|
|
247
298
|
|
|
248
299
|
| Field | Value |
|
|
249
300
|
| --- | --- |
|
|
@@ -256,10 +307,12 @@ If no approved App is available, setup guides one fine-grained PAT with exactly:
|
|
|
256
307
|
| Writes | none |
|
|
257
308
|
| Workflow/job allowlist | `.github/workflows/bootstrap-import-preflight.yml` job `bootstrap-import-preflight`; `.github/workflows/private-dast-preflight.yml` job `private-dast-preflight` |
|
|
258
309
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
310
|
+
This release has no public masked credential-enrollment channel. Stop at the
|
|
311
|
+
reported capability blocker rather than creating a credential or hand-writing
|
|
312
|
+
state to make the phase pass.
|
|
313
|
+
Never paste or show the value in chat, argv, command arguments,
|
|
314
|
+
logs, evidence, files, or screenshots. A disclosed value is
|
|
315
|
+
compromised and must be revoked and rotated through its owner-controlled system.
|
|
263
316
|
|
|
264
317
|
The recorded credential policy is payload-free: it stores auth kind, display
|
|
265
318
|
name, secret name, owner, repository, expiry, rotation lead, permissions,
|
|
@@ -270,9 +323,19 @@ secret value.
|
|
|
270
323
|
|
|
271
324
|
Task checkboxes are a projection of phase state, not authority. Evidence
|
|
272
325
|
documents carry repository identity, activation version vector, graph hash, phase
|
|
273
|
-
contract digest, input
|
|
274
|
-
result.
|
|
275
|
-
|
|
326
|
+
contract digest, real input/baseline digests, body commitment, phase ID, timestamp,
|
|
327
|
+
producer, and result. The local execution anchor is separate from a verified
|
|
328
|
+
remote repository binding; Phase 0 does not replace the anchor beneath earlier
|
|
329
|
+
local receipts. Digests prove consistency, not an independent signature or
|
|
330
|
+
permission grant. Current valid proof may coexist with informational stale
|
|
331
|
+
history, but equally authoritative contradictory records block execution.
|
|
332
|
+
The current context includes reviewed immutable plans and state evidence
|
|
333
|
+
references. Payload `planDigest` binds semantic plan inputs; `savedPlanDigest`
|
|
334
|
+
binds the full saved plan, including clocks. `bodyDigest` covers the payload and
|
|
335
|
+
normalized readbacks. Consumers use the validated selected payload, not another
|
|
336
|
+
raw record that happens to reuse an ID. Repository publication binds the actual
|
|
337
|
+
reviewed push destination; Phase 0 cannot invalidate earlier local/publication
|
|
338
|
+
receipts by replacing the local anchor.
|
|
276
339
|
|
|
277
340
|
There may be only one active governance source of truth. An unfinished bootstrap
|
|
278
341
|
seed blocks Phase 0. Exactly one compatible active governance change is resumed.
|
|
@@ -283,12 +346,15 @@ Managed updates install new policy, graph, schema, compatibility metadata, and
|
|
|
283
346
|
setup and assessment integrations without touching user-owned state. Forced update can remove
|
|
284
347
|
exact retired generated setup-alias entries from older manifests. When a policy,
|
|
285
348
|
activation-contract, schema, or graph-hash change affects active work, status
|
|
286
|
-
reports `reconciliation-required
|
|
287
|
-
|
|
288
|
-
|
|
349
|
+
reports `reconciliation-required` and identifies affected descendants. Historical
|
|
350
|
+
activation-v1 state and evidence stay byte-preserved and diagnostic-only under
|
|
351
|
+
activation v2. This release has no automatic historical-state reconciliation,
|
|
352
|
+
reset, or conversion workflow; do not acknowledge a new identity by editing JSON.
|
|
289
353
|
|
|
290
354
|
## Private staging and bootstrap retention
|
|
291
355
|
|
|
356
|
+
These are policy requirements for separately implemented production adapters,
|
|
357
|
+
not a claim that this CLI can provision the complete platform.
|
|
292
358
|
Private Staging DAST uses an ephemeral GitHub-hosted larger runner with Azure
|
|
293
359
|
VNet injection only when genuinely applicable. Phase 0 discovers repository,
|
|
294
360
|
subscription, authority, billing, network, DNS, cost, teardown, and capability
|
|
@@ -22,9 +22,13 @@ Selecting repository governance or passing `--yes` authorizes only deterministic
|
|
|
22
22
|
local handoff files. It never authorizes agent execution, Git mutation, GitHub
|
|
23
23
|
APIs, Azure or other cloud resources, rulesets, security configuration,
|
|
24
24
|
deployment, monitoring, file replacement, machine tools, or project
|
|
25
|
-
dependencies. `/liftoff-setup` first
|
|
26
|
-
|
|
25
|
+
dependencies. `/liftoff-setup` first verifies and archives the OpenSpec bootstrap
|
|
26
|
+
or finalizes the real Spec Kit bundle locally, then stops at authority gates.
|
|
27
|
+
Live activation requires explicit
|
|
27
28
|
commit/push approval, read-only Phase 0, and activation-plan approval.
|
|
29
|
+
Missing public approval persistence, secure credential enrollment, or production
|
|
30
|
+
executors remain blockers; this sequence does not promise a complete production
|
|
31
|
+
activation workflow.
|
|
28
32
|
|
|
29
33
|
An approved downstream local-state bootstrap remains encrypted, gitignored, and
|
|
30
34
|
single-writer. It is never transferred through GitHub artifacts or secrets,
|
|
@@ -48,6 +52,9 @@ cannot redirect machine-level discovery. Canonical npm selects the target while
|
|
|
48
52
|
the configured registry must provide that exact release. Liftoff does not expose
|
|
49
53
|
registry credentials, rewrite npm configuration, bypass a stale mirror, invoke
|
|
50
54
|
`sudo` or another elevation mechanism, or touch project files.
|
|
55
|
+
Machine-level `@msn-control:registry` takes precedence over default `registry`;
|
|
56
|
+
canonical verification isolates both settings, but installation still honors
|
|
57
|
+
the effective delivery registry.
|
|
51
58
|
|
|
52
59
|
npm replacement is not a Liftoff file transaction. If npm or post-install
|
|
53
60
|
verification fails, Liftoff reports an exact-version repair command and does not
|
|
@@ -87,16 +94,35 @@ Structural collisions are not overridable:
|
|
|
87
94
|
|
|
88
95
|
## Atomic writes and rollback
|
|
89
96
|
|
|
97
|
+
Project mutations share an exclusive cooperating-writer lock across initialization,
|
|
98
|
+
migration, dependency setup, managed update, and setup execution. The lock is a
|
|
99
|
+
sibling file named `.liftoff-mutation-<project-path-digest>.lock`, created with
|
|
100
|
+
0600 mode where POSIX permissions apply; the target's
|
|
101
|
+
parent directory must be writable. Reserving a new target does not create that
|
|
102
|
+
target or project state. Nested steps in one operation retain the same lock.
|
|
103
|
+
Reservation identities are NFC-normalized and lowercased on every platform; this
|
|
104
|
+
may serialize case-distinct sibling projects on case-sensitive volumes, but never
|
|
105
|
+
merges their ownership.
|
|
106
|
+
Read-only commands, including assessment and `update --check`, never acquire it.
|
|
107
|
+
An existing or changed lock blocks mutation and is never automatically stolen or
|
|
108
|
+
removed. After an interrupted process, verify its owner has stopped before
|
|
109
|
+
reviewing the exact reported lock. This coordinates Liftoff writers; it does not
|
|
110
|
+
replace path/content preconditions or isolate the project from other programs.
|
|
111
|
+
|
|
90
112
|
Individual project files use temporary-file replacement. Initialization keeps
|
|
91
113
|
backups for replaced files and records created files and directories. A handled
|
|
92
|
-
merge failure restores or removes
|
|
114
|
+
merge failure restores or removes attributable unchanged entries in reverse
|
|
115
|
+
order; concurrent or uncertain edits are preserved and reported.
|
|
116
|
+
Existing destination modes are preserved where supported, including POSIX 0600
|
|
117
|
+
files. Windows does not provide equivalent POSIX mode-bit guarantees; this is
|
|
118
|
+
not a promise to preserve all Windows ACLs or filesystem metadata.
|
|
93
119
|
|
|
94
120
|
Plain `liftoff update` preflights every eligible managed-core or authorized
|
|
95
121
|
create-only provisioning path and applies those writes, managed-core moves or
|
|
96
122
|
deletes, and the manifest as one rollback-capable transaction. Schema upgrades
|
|
97
123
|
are committed only after the other mutations succeed.
|
|
98
124
|
|
|
99
|
-
Managed update may install manifest v7, policy v6, activation-contract
|
|
125
|
+
Managed update may install manifest v7, policy v6, activation-contract v2,
|
|
100
126
|
phase graph, compatibility metadata, credential-policy schema, setup
|
|
101
127
|
integrations, and forced removal of exact retired generated setup-alias entries
|
|
102
128
|
from older manifests. It preserves user-owned activation state, approvals,
|
|
@@ -104,6 +130,10 @@ immutable evidence, credential policies, active OpenSpec changes, and bootstrap
|
|
|
104
130
|
retention/disposal records. If the current activation identity is future,
|
|
105
131
|
unsupported, or graph-incompatible, update and setup block with a remedy instead
|
|
106
132
|
of downgrading or rewriting state.
|
|
133
|
+
Exact known historical v1 identity is a separate diagnostic-only case:
|
|
134
|
+
safe managed-core maintenance may continue while preserving the recorded
|
|
135
|
+
historical identity, state, and receipts. That maintenance never makes history
|
|
136
|
+
executable or supplies a missing reconciliation workflow.
|
|
107
137
|
|
|
108
138
|
If automatic rollback itself cannot safely restore a path because another
|
|
109
139
|
process changed it, Liftoff reports the incomplete rollback rather than
|
|
@@ -112,6 +142,13 @@ overwriting unknown bytes.
|
|
|
112
142
|
Update snapshots exist only for rollback after a failed transaction. Liftoff
|
|
113
143
|
does not retain them as backups after success.
|
|
114
144
|
|
|
145
|
+
Dependency execution has a different recovery boundary: installer scripts can
|
|
146
|
+
write arbitrary project files, and a concurrent developer edit cannot be
|
|
147
|
+
attributed safely from a content difference alone. Changed or deleted protected
|
|
148
|
+
metadata is therefore preserved and reported, not automatically restored.
|
|
149
|
+
Liftoff stops further dependency commands and identifies the recovery shell and
|
|
150
|
+
literal-path recipe. This does not claim the entire scaffold was unchanged.
|
|
151
|
+
|
|
115
152
|
## Update ownership
|
|
116
153
|
|
|
117
154
|
Update mode is selected explicitly rather than from terminal interactivity:
|
|
@@ -133,6 +170,9 @@ Update mode is selected explicitly rather than from terminal interactivity:
|
|
|
133
170
|
- A newly selected frontend or environment is provisioned once only at absent
|
|
134
171
|
or byte-identical destinations. A collision blocks the complete group and
|
|
135
172
|
cannot be forced.
|
|
173
|
+
- A new environment additionally requires recorded independent-root provenance
|
|
174
|
+
and safe existing shared-module files. Legacy or unknown layouts are blocked
|
|
175
|
+
without moving state or rewriting project-owned infrastructure.
|
|
136
176
|
- Unrecorded governance conflicts remain outside manifest ownership and produce
|
|
137
177
|
`handoff-partial` until a later update safely writes or adopts every artifact.
|
|
138
178
|
- Orphans are reported and left on disk for manual review.
|
|
@@ -142,9 +182,15 @@ Update mode is selected explicitly rather than from terminal interactivity:
|
|
|
142
182
|
`--force` cannot be combined with `--check` and cannot weaken project-boundary,
|
|
143
183
|
symlink, collision, manifest, or transaction guards.
|
|
144
184
|
|
|
145
|
-
Power Apps
|
|
146
|
-
|
|
147
|
-
|
|
185
|
+
Power Apps support is retired. Its manifests are rejected without fetching
|
|
186
|
+
starter source, changing application files, or treating force as conversion
|
|
187
|
+
authority.
|
|
188
|
+
|
|
189
|
+
The eight flat-root OpenTofu identities are retired from new 0.11.0 output only.
|
|
190
|
+
Their historical records, paths, generation hashes, files, and state remain
|
|
191
|
+
unchanged by update, force, helpers, or assessment. They are not aliases to new
|
|
192
|
+
roots or managed-core deletion targets; see the
|
|
193
|
+
[explicit inventory](azure-deployment.md#explicit-flat-root-identity-retirement).
|
|
148
194
|
|
|
149
195
|
## Framework and seed ownership
|
|
150
196
|
|
|
@@ -153,7 +199,11 @@ initializers. Liftoff validates the selected contract and agent markers but
|
|
|
153
199
|
does not claim framework-owned files in durable artifact hashes.
|
|
154
200
|
|
|
155
201
|
One-time seed content is also omitted from durable hashes so it can follow its
|
|
156
|
-
own lifecycle after generation.
|
|
202
|
+
own lifecycle after generation. Spec Kit's `000-liftoff-bootstrap` bundle is
|
|
203
|
+
project-owned, separate from official markers, and not an active governance
|
|
204
|
+
change. Missing older seeds require reviewed adoption. Failed local checks leave
|
|
205
|
+
B001–B006 unchecked; explicit successful execution commits the projection with
|
|
206
|
+
body/full-plan-bound evidence. Read-only verify, status, and resume never mark it.
|
|
157
207
|
|
|
158
208
|
OpenSpec workflow profile and delivery are global machine preferences. Liftoff
|
|
159
209
|
changes them only after dedicated consent and verifies the result before
|
|
@@ -188,19 +238,22 @@ Liftoff does not:
|
|
|
188
238
|
- Store cloud or agent credentials.
|
|
189
239
|
- Perform cloud sign-in.
|
|
190
240
|
- Apply OpenTofu.
|
|
191
|
-
-
|
|
192
|
-
- Run Microsoft's broad Code Apps marketplace installer.
|
|
241
|
+
- Restore or manage the retired Power Apps workload or Code Apps integration.
|
|
193
242
|
|
|
194
243
|
Those actions require their own review, authentication, and consent.
|
|
195
244
|
|
|
196
245
|
Governance runner-preflight credentials have a stricter contract. Setup first
|
|
197
246
|
uses an existing verified selected-repository GitHub App installation when it
|
|
198
|
-
has the required read permissions.
|
|
247
|
+
has the required read permissions. The normative fallback specifies one
|
|
248
|
+
fine-grained PAT:
|
|
199
249
|
display name `<repo>-runner-preflight-read`, repository secret
|
|
200
250
|
`RUNNER_CONFIGURATION_READ_TOKEN`, 30-day lifetime, current repository only,
|
|
201
251
|
repository metadata read, organization hosted-runner read and
|
|
202
252
|
network-configuration read, no writes, and only the recorded workflow/job
|
|
203
|
-
allowlist. The
|
|
253
|
+
allowlist. The CLI currently lacks public secure enrollment, independent
|
|
254
|
+
credential readback, and approval-persistence entry points; stop at the capability
|
|
255
|
+
blocker instead of creating JSON or inventing an input channel. Any future
|
|
256
|
+
supported enrollment must use masked input. Never paste or
|
|
204
257
|
show it in chat, argv, command arguments, logs, evidence, generated files, or
|
|
205
258
|
screenshots. If it appears there, treat it as compromised and manually revoke and
|
|
206
259
|
rotate it before continuing.
|
|
@@ -36,6 +36,29 @@ integration, and records the default separately from the full agent set.
|
|
|
36
36
|
Generated projects contain `.specify/`, `specs/`, and the selected agent
|
|
37
37
|
integration markers.
|
|
38
38
|
|
|
39
|
+
New projects also receive `specs/000-liftoff-bootstrap/spec.md`, `plan.md`, and
|
|
40
|
+
`tasks.md`. These are explicit one-time, project-owned `seed` artifacts, separate
|
|
41
|
+
from official framework templates. Local setup validates the real bundle and
|
|
42
|
+
official markers, performs the applicable baseline, and then finalizes its task
|
|
43
|
+
projection and receipt. It creates neither a Git branch nor an OpenSpec archive.
|
|
44
|
+
|
|
45
|
+
All three files identify `000-liftoff-bootstrap`. The tasks contain exactly one
|
|
46
|
+
initial unchecked entry each for **B001–B006**: review the real bundle and markers;
|
|
47
|
+
use already-installed locked dependencies or install with explicit consent;
|
|
48
|
+
run Liftoff/backend/applicable-worker checks; build the frontend or record
|
|
49
|
+
inapplicability; validate Compose and all infrastructure roots; then finalize.
|
|
50
|
+
The non-checkbox command reference list is not execution evidence.
|
|
51
|
+
Only after every applicable check passes does explicit setup execution commit
|
|
52
|
+
the checked projection with body/full-plan-bound baseline evidence. Failed checks
|
|
53
|
+
leave tasks untouched; status, verify, and resume do not edit checkboxes.
|
|
54
|
+
`seed-archived` means a local handoff for Spec Kit, not an archive operation.
|
|
55
|
+
This exact bootstrap is not an active governance change and has no
|
|
56
|
+
`liftoff-governance.json`.
|
|
57
|
+
|
|
58
|
+
An existing Spec Kit project without this bundle receives a seed-adoption
|
|
59
|
+
blocker. Adopting it requires separate reviewed project work; ordinary update,
|
|
60
|
+
force, and assessment do not create seeds or infer earlier completion.
|
|
61
|
+
|
|
39
62
|
Liftoff does not hand-write framework-owned core or integration output. It
|
|
40
63
|
executes the tested official initializer, confines its writes to allowed roots,
|
|
41
64
|
and validates the declared markers before merging.
|
|
@@ -92,9 +115,9 @@ files.
|
|
|
92
115
|
Repository-governance launchers are separate managed-core Liftoff files at the exact
|
|
93
116
|
Copilot prompt and Claude command paths documented in
|
|
94
117
|
[repository governance](repository-governance.md). They reference one canonical
|
|
95
|
-
policy and context rather than duplicating framework-owned content.
|
|
96
|
-
|
|
97
|
-
|
|
118
|
+
policy and context rather than duplicating framework-owned content. Later
|
|
119
|
+
governance changes are distinct from the exact bootstrap seed. The setup kernel
|
|
120
|
+
does not invent an active change, approval, or missing production executor.
|
|
98
121
|
|
|
99
122
|
Install the exact selected framework release with its supported package manager:
|
|
100
123
|
|
|
@@ -118,29 +141,9 @@ Use `--copilot-cloud` or `--no-copilot-cloud` in automation. The choice is
|
|
|
118
141
|
recorded as `githubCopilot.cloudAgent` in `openspec/config.yaml`; it is not stored
|
|
119
142
|
as Liftoff overwrite or machine-configuration consent.
|
|
120
143
|
|
|
121
|
-
##
|
|
122
|
-
|
|
123
|
-
Power Apps projects can request Microsoft's
|
|
124
|
-
`code-apps-preview@power-platform-skills` plugin. The integration is optional,
|
|
125
|
-
Preview, and independent for each selected agent.
|
|
126
|
-
|
|
127
|
-
Liftoff runs only allowlisted read-only plugin-list probes. A missing or
|
|
128
|
-
unobservable plugin produces advisory guidance and never makes initialization
|
|
129
|
-
or doctor fail by itself.
|
|
130
|
-
|
|
131
|
-
Install the targeted plugin manually inside the selected agent:
|
|
132
|
-
|
|
133
|
-
```text
|
|
134
|
-
/plugin marketplace add microsoft/power-platform-skills
|
|
135
|
-
/plugin install code-apps-preview@power-platform-skills
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
Liftoff does not run Microsoft's broad marketplace installer and does not
|
|
139
|
-
invoke `/create-code-app`. The plugin's connector and deployment skills remain
|
|
140
|
-
available for post-creation work.
|
|
144
|
+
## Retired Code Apps integration
|
|
141
145
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
writing.
|
|
146
|
+
The Power Apps workload and Code Apps plugin options are retired. Liftoff no
|
|
147
|
+
longer installs, probes, or manages that integration. This does not uninstall
|
|
148
|
+
machine-wide tools or plugins; existing installations remain outside Liftoff's
|
|
149
|
+
maintenance authority.
|
package/docs/supported-stack.md
CHANGED
|
@@ -17,17 +17,20 @@ file; they never resolve mutable `latest` versions.
|
|
|
17
17
|
| OpenSpec | 1.11.0 |
|
|
18
18
|
| Spec Kit | 1.0.1 |
|
|
19
19
|
| AzureRM provider | 5.3.0 |
|
|
20
|
-
| Power Apps SDK | 1.2.7 |
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
Python's tested patch is 3.14.7; its supported runtime floor is 3.14.0 within
|
|
22
|
+
3.14.x. Floors, tested versions, and allowed release lines are separate values
|
|
23
|
+
in the baseline; a newer untested major is not automatically compatible.
|
|
24
|
+
|
|
25
|
+
Power Apps is retired and has no active SDK, starter snapshot, or source-commit
|
|
26
|
+
compatibility lane in the supported baseline.
|
|
27
27
|
|
|
28
28
|
Generated npm projects include `package-lock.json`. Python projects include
|
|
29
29
|
`uv.lock` and use `uv sync --frozen`. Go projects include `go.mod` and
|
|
30
30
|
`go.sum`. Generated OpenTofu includes a multi-platform `.terraform.lock.hcl`.
|
|
31
|
+
Each selected independent environment root receives its own provider lock and
|
|
32
|
+
backend configuration; the application module is shared. Generic GenAI's default
|
|
33
|
+
Python project and lock do not require a `pgvector` package.
|
|
31
34
|
|
|
32
35
|
Container references include a readable stable tag and an immutable
|
|
33
36
|
multi-architecture digest. The optional Langfuse profile uses the v4 web and
|
|
@@ -52,11 +55,10 @@ digests and upstream provenance, then run:
|
|
|
52
55
|
npm run refresh:supported-stack
|
|
53
56
|
npm run check
|
|
54
57
|
npm run verify:standard-node-templates
|
|
55
|
-
npm run verify:power-apps-starter
|
|
56
58
|
```
|
|
57
59
|
|
|
58
|
-
Power Apps
|
|
59
|
-
|
|
60
|
+
Retired Power Apps fixtures are negative inputs only and do not participate in
|
|
61
|
+
generation, freshness, or dependency promotion.
|
|
60
62
|
|
|
61
63
|
## Existing generated projects
|
|
62
64
|
|