@msn-control/liftoff 0.10.4 → 0.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DEVELOPER.md +238 -77
- package/README.md +38 -33
- package/assets/supported-stack.json +3 -136
- package/dist/adapters/azure/governance-assessment.d.ts +2 -0
- package/dist/adapters/azure/governance-assessment.js +21 -0
- package/dist/adapters/azure/governance-assessment.js.map +1 -0
- package/dist/adapters/filesystem/atomic-write.d.ts +2 -0
- package/dist/adapters/filesystem/atomic-write.js +74 -0
- package/dist/adapters/filesystem/atomic-write.js.map +1 -0
- package/dist/adapters/filesystem/errors.d.ts +2 -0
- package/dist/adapters/filesystem/errors.js +8 -0
- package/dist/adapters/filesystem/errors.js.map +1 -0
- package/dist/adapters/filesystem/manifest-file.d.ts +1 -0
- package/dist/adapters/filesystem/manifest-file.js +21 -0
- package/dist/adapters/filesystem/manifest-file.js.map +1 -0
- package/dist/adapters/filesystem/project-config.d.ts +4 -0
- package/dist/adapters/filesystem/project-config.js +157 -0
- package/dist/adapters/filesystem/project-config.js.map +1 -0
- package/dist/adapters/filesystem/project-discovery.d.ts +2 -0
- package/dist/adapters/filesystem/project-discovery.js +30 -0
- package/dist/adapters/filesystem/project-discovery.js.map +1 -0
- package/dist/adapters/filesystem/project-files.d.ts +6 -0
- package/dist/adapters/filesystem/project-files.js +68 -0
- package/dist/adapters/filesystem/project-files.js.map +1 -0
- package/dist/adapters/filesystem/project-lock.d.ts +8 -0
- package/dist/adapters/filesystem/project-lock.js +164 -0
- package/dist/adapters/filesystem/project-lock.js.map +1 -0
- package/dist/adapters/filesystem/project-paths.d.ts +2 -0
- package/dist/adapters/filesystem/project-paths.js +60 -0
- package/dist/adapters/filesystem/project-paths.js.map +1 -0
- package/dist/adapters/filesystem/project-transaction.d.ts +24 -0
- package/dist/adapters/filesystem/project-transaction.js +177 -0
- package/dist/adapters/filesystem/project-transaction.js.map +1 -0
- package/dist/adapters/filesystem/reviewed-update-transaction.d.ts +53 -0
- package/dist/adapters/filesystem/reviewed-update-transaction.js +864 -0
- package/dist/adapters/filesystem/reviewed-update-transaction.js.map +1 -0
- package/dist/adapters/filesystem/update-previews.d.ts +50 -0
- package/dist/adapters/filesystem/update-previews.js +613 -0
- package/dist/adapters/filesystem/update-previews.js.map +1 -0
- package/dist/adapters/git/governance-assessment.d.ts +22 -0
- package/dist/adapters/git/governance-assessment.js +161 -0
- package/dist/adapters/git/governance-assessment.js.map +1 -0
- package/dist/adapters/github/governance-assessment.d.ts +2 -0
- package/dist/adapters/github/governance-assessment.js +18 -0
- package/dist/adapters/github/governance-assessment.js.map +1 -0
- package/dist/adapters/packaged-assets/package-root.d.ts +3 -0
- package/dist/adapters/packaged-assets/package-root.js +21 -0
- package/dist/adapters/packaged-assets/package-root.js.map +1 -0
- package/dist/adapters/packaged-assets/supported-stack.d.ts +4 -0
- package/dist/adapters/packaged-assets/supported-stack.js +18 -0
- package/dist/adapters/packaged-assets/supported-stack.js.map +1 -0
- package/dist/adapters/packaged-assets/template-assets.d.ts +23 -0
- package/dist/adapters/packaged-assets/template-assets.js +36 -0
- package/dist/adapters/packaged-assets/template-assets.js.map +1 -0
- package/dist/adapters/process/shell-command.d.ts +6 -0
- package/dist/adapters/process/shell-command.js +27 -0
- package/dist/adapters/process/shell-command.js.map +1 -0
- package/dist/application/context.d.ts +25 -0
- package/dist/application/context.js +2 -0
- package/dist/application/context.js.map +1 -0
- package/dist/application/diagnose/doctor.d.ts +21 -0
- package/dist/application/diagnose/doctor.js +580 -0
- package/dist/application/diagnose/doctor.js.map +1 -0
- package/dist/application/diagnose/generated-project.d.ts +1 -0
- package/dist/application/diagnose/generated-project.js +105 -0
- package/dist/application/diagnose/generated-project.js.map +1 -0
- package/dist/application/diagnose/validate.d.ts +6 -0
- package/dist/application/diagnose/validate.js +27 -0
- package/dist/application/diagnose/validate.js.map +1 -0
- package/dist/application/initialize/fixture.d.ts +2 -0
- package/dist/application/initialize/fixture.js +39 -0
- package/dist/application/initialize/fixture.js.map +1 -0
- package/dist/application/initialize/inputs.d.ts +3 -0
- package/dist/application/initialize/inputs.js +35 -0
- package/dist/application/initialize/inputs.js.map +1 -0
- package/dist/application/initialize/use-case.d.ts +23 -0
- package/dist/application/initialize/use-case.js +360 -0
- package/dist/application/initialize/use-case.js.map +1 -0
- package/dist/application/migrate/use-case.d.ts +7 -0
- package/dist/application/migrate/use-case.js +378 -0
- package/dist/application/migrate/use-case.js.map +1 -0
- package/dist/application/project/catalog.d.ts +46 -0
- package/dist/application/project/catalog.js +12 -0
- package/dist/application/project/catalog.js.map +1 -0
- package/dist/application/project/manifest.d.ts +2 -0
- package/dist/application/project/manifest.js +29 -0
- package/dist/application/project/manifest.js.map +1 -0
- package/dist/application/project/planning.d.ts +6 -0
- package/dist/application/project/planning.js +12 -0
- package/dist/application/project/planning.js.map +1 -0
- package/dist/application/update/approval.d.ts +39 -0
- package/dist/application/update/approval.js +54 -0
- package/dist/application/update/approval.js.map +1 -0
- package/dist/application/update/command-guidance.d.ts +2 -0
- package/dist/application/update/command-guidance.js +14 -0
- package/dist/application/update/command-guidance.js.map +1 -0
- package/dist/application/update/inspection.d.ts +37 -0
- package/dist/application/update/inspection.js +235 -0
- package/dist/application/update/inspection.js.map +1 -0
- package/dist/application/update/migration-runtime.d.ts +14 -0
- package/dist/application/update/migration-runtime.js +178 -0
- package/dist/application/update/migration-runtime.js.map +1 -0
- package/dist/application/update/output.d.ts +134 -0
- package/dist/application/update/output.js +182 -0
- package/dist/application/update/output.js.map +1 -0
- package/dist/application/update/planning.d.ts +40 -0
- package/dist/application/update/planning.js +293 -0
- package/dist/application/update/planning.js.map +1 -0
- package/dist/application/update/preview.d.ts +49 -0
- package/dist/application/update/preview.js +220 -0
- package/dist/application/update/preview.js.map +1 -0
- package/dist/application/update/protected-source.d.ts +25 -0
- package/dist/application/update/protected-source.js +81 -0
- package/dist/application/update/protected-source.js.map +1 -0
- package/dist/application/update/reporting.d.ts +42 -0
- package/dist/application/update/reporting.js +326 -0
- package/dist/application/update/reporting.js.map +1 -0
- package/dist/application/update/revalidation-plan.d.ts +22 -0
- package/dist/application/update/revalidation-plan.js +108 -0
- package/dist/application/update/revalidation-plan.js.map +1 -0
- package/dist/application/update/revalidation.d.ts +70 -0
- package/dist/application/update/revalidation.js +337 -0
- package/dist/application/update/revalidation.js.map +1 -0
- package/dist/application/update/review-plan.d.ts +25 -0
- package/dist/application/update/review-plan.js +89 -0
- package/dist/application/update/review-plan.js.map +1 -0
- package/dist/application/update/transaction-approval.d.ts +29 -0
- package/dist/application/update/transaction-approval.js +82 -0
- package/dist/application/update/transaction-approval.js.map +1 -0
- package/dist/application/update/use-case.d.ts +9 -0
- package/dist/application/update/use-case.js +271 -0
- package/dist/application/update/use-case.js.map +1 -0
- package/dist/application/update/write-plan.d.ts +15 -0
- package/dist/application/update/write-plan.js +115 -0
- package/dist/application/update/write-plan.js.map +1 -0
- package/dist/application/upgrade/use-case.d.ts +6 -0
- package/dist/application/upgrade/use-case.js +82 -0
- package/dist/application/upgrade/use-case.js.map +1 -0
- package/dist/args.d.ts +5 -65
- package/dist/args.js +4 -472
- package/dist/args.js.map +1 -1
- package/dist/artifact-lifecycle.d.ts +1 -21
- package/dist/artifact-lifecycle.js +1 -75
- package/dist/artifact-lifecycle.js.map +1 -1
- package/dist/catalogs.d.ts +1 -50
- package/dist/catalogs.js +1 -472
- package/dist/catalogs.js.map +1 -1
- package/dist/cli/args/contracts.d.ts +51 -0
- package/dist/cli/args/contracts.js +2 -0
- package/dist/cli/args/contracts.js.map +1 -0
- package/dist/cli/args/definitions.d.ts +6 -0
- package/dist/cli/args/definitions.js +188 -0
- package/dist/cli/args/definitions.js.map +1 -0
- package/dist/cli/args/help.d.ts +5 -0
- package/dist/cli/args/help.js +142 -0
- package/dist/cli/args/help.js.map +1 -0
- package/dist/cli/args/parser.d.ts +5 -0
- package/dist/cli/args/parser.js +160 -0
- package/dist/cli/args/parser.js.map +1 -0
- package/dist/cli/args/readers.d.ts +4 -0
- package/dist/cli/args/readers.js +19 -0
- package/dist/cli/args/readers.js.map +1 -0
- package/dist/cli/commands/diagnose.d.ts +4 -0
- package/dist/cli/commands/diagnose.js +12 -0
- package/dist/cli/commands/diagnose.js.map +1 -0
- package/dist/cli/commands/dispatch.d.ts +3 -0
- package/dist/cli/commands/dispatch.js +94 -0
- package/dist/cli/commands/dispatch.js.map +1 -0
- package/dist/cli/commands/help.d.ts +3 -0
- package/dist/cli/commands/help.js +32 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/helpers.d.ts +8 -0
- package/dist/cli/commands/helpers.js +97 -0
- package/dist/cli/commands/helpers.js.map +1 -0
- package/dist/cli/commands/initialize.d.ts +3 -0
- package/dist/cli/commands/initialize.js +7 -0
- package/dist/cli/commands/initialize.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +3 -0
- package/dist/cli/commands/migrate.js +8 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +3 -0
- package/dist/cli/commands/plan.js +34 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/reference.d.ts +5 -0
- package/dist/cli/commands/reference.js +43 -0
- package/dist/cli/commands/reference.js.map +1 -0
- package/dist/cli/commands/update.d.ts +3 -0
- package/dist/cli/commands/update.js +10 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/upgrade.d.ts +3 -0
- package/dist/cli/commands/upgrade.js +7 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/context.d.ts +1 -0
- package/dist/cli/context.js +2 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/project-options.d.ts +3 -0
- package/dist/cli/project-options.js +41 -0
- package/dist/cli/project-options.js.map +1 -0
- package/dist/cli.d.ts +3 -3
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +4 -35
- package/dist/commands.js +3 -2969
- package/dist/commands.js.map +1 -1
- package/dist/container-validation.d.ts +1 -1
- package/dist/domain/governance/activation/approvals.d.ts +351 -0
- package/dist/domain/governance/activation/approvals.js +528 -0
- package/dist/domain/governance/activation/approvals.js.map +1 -0
- package/dist/domain/governance/activation/canonical-json.d.ts +4 -0
- package/dist/domain/governance/activation/canonical-json.js +39 -0
- package/dist/domain/governance/activation/canonical-json.js.map +1 -0
- package/dist/domain/governance/activation/capabilities.d.ts +7 -0
- package/dist/domain/governance/activation/capabilities.js +33 -0
- package/dist/domain/governance/activation/capabilities.js.map +1 -0
- package/dist/domain/governance/activation/evidence.d.ts +63 -0
- package/dist/domain/governance/activation/evidence.js +444 -0
- package/dist/domain/governance/activation/evidence.js.map +1 -0
- package/dist/domain/governance/activation/graph.d.ts +397 -0
- package/dist/domain/governance/activation/graph.js +441 -0
- package/dist/domain/governance/activation/graph.js.map +1 -0
- package/dist/domain/governance/activation/inputs.d.ts +25 -0
- package/dist/domain/governance/activation/inputs.js +63 -0
- package/dist/domain/governance/activation/inputs.js.map +1 -0
- package/dist/domain/governance/activation/operations.d.ts +19 -0
- package/dist/domain/governance/activation/operations.js +181 -0
- package/dist/domain/governance/activation/operations.js.map +1 -0
- package/dist/domain/governance/activation/readiness.d.ts +27 -0
- package/dist/domain/governance/activation/readiness.js +269 -0
- package/dist/domain/governance/activation/readiness.js.map +1 -0
- package/dist/domain/governance/activation/types.d.ts +399 -0
- package/dist/domain/governance/activation/types.js +109 -0
- package/dist/domain/governance/activation/types.js.map +1 -0
- package/dist/domain/governance/activation/validators.d.ts +22 -0
- package/dist/domain/governance/activation/validators.js +1347 -0
- package/dist/domain/governance/activation/validators.js.map +1 -0
- package/dist/domain/governance/assessment/catalog.d.ts +14 -0
- package/dist/domain/governance/assessment/catalog.js +105 -0
- package/dist/domain/governance/assessment/catalog.js.map +1 -0
- package/dist/domain/governance/assessment/errors.d.ts +10 -0
- package/dist/domain/governance/assessment/errors.js +22 -0
- package/dist/domain/governance/assessment/errors.js.map +1 -0
- package/dist/domain/governance/assessment/index.d.ts +8 -0
- package/dist/domain/governance/assessment/index.js +9 -0
- package/dist/domain/governance/assessment/index.js.map +1 -0
- package/dist/domain/governance/assessment/live-normalize.d.ts +19 -0
- package/dist/domain/governance/assessment/live-normalize.js +403 -0
- package/dist/domain/governance/assessment/live-normalize.js.map +1 -0
- package/dist/domain/governance/assessment/predicates.d.ts +36 -0
- package/dist/domain/governance/assessment/predicates.js +545 -0
- package/dist/domain/governance/assessment/predicates.js.map +1 -0
- package/dist/domain/governance/assessment/report.d.ts +23 -0
- package/dist/domain/governance/assessment/report.js +266 -0
- package/dist/domain/governance/assessment/report.js.map +1 -0
- package/dist/domain/governance/assessment/sanitize.d.ts +8 -0
- package/dist/domain/governance/assessment/sanitize.js +60 -0
- package/dist/domain/governance/assessment/sanitize.js.map +1 -0
- package/dist/domain/governance/assessment/types.d.ts +174 -0
- package/dist/domain/governance/assessment/types.js +13 -0
- package/dist/domain/governance/assessment/types.js.map +1 -0
- package/dist/domain/governance/assessment/yaml.d.ts +6 -0
- package/dist/domain/governance/assessment/yaml.js +30 -0
- package/dist/domain/governance/assessment/yaml.js.map +1 -0
- package/dist/domain/governance/policy/identity.d.ts +64 -0
- package/dist/domain/governance/policy/identity.js +112 -0
- package/dist/domain/governance/policy/identity.js.map +1 -0
- package/dist/domain/migration/dependencies.d.ts +7 -0
- package/dist/domain/migration/dependencies.js +221 -0
- package/dist/domain/migration/dependencies.js.map +1 -0
- package/dist/domain/migration/inventory.d.ts +3 -0
- package/dist/domain/migration/inventory.js +15 -0
- package/dist/domain/migration/inventory.js.map +1 -0
- package/dist/domain/project/artifact-lifecycle.d.ts +69 -0
- package/dist/domain/project/artifact-lifecycle.js +137 -0
- package/dist/domain/project/artifact-lifecycle.js.map +1 -0
- package/dist/domain/project/catalog.d.ts +48 -0
- package/dist/domain/project/catalog.js +507 -0
- package/dist/domain/project/catalog.js.map +1 -0
- package/dist/domain/project/contracts.d.ts +247 -0
- package/dist/domain/project/contracts.js +2 -0
- package/dist/domain/project/contracts.js.map +1 -0
- package/dist/domain/project/errors.d.ts +3 -0
- package/dist/domain/project/errors.js +7 -0
- package/dist/domain/project/errors.js.map +1 -0
- package/dist/domain/project/infrastructure-layout.d.ts +26 -0
- package/dist/domain/project/infrastructure-layout.js +125 -0
- package/dist/domain/project/infrastructure-layout.js.map +1 -0
- package/dist/domain/project/inputs.d.ts +21 -0
- package/dist/domain/project/inputs.js +41 -0
- package/dist/domain/project/inputs.js.map +1 -0
- package/dist/domain/project/manifest/artifacts.d.ts +8 -0
- package/dist/domain/project/manifest/artifacts.js +150 -0
- package/dist/domain/project/manifest/artifacts.js.map +1 -0
- package/dist/domain/project/manifest/context.d.ts +13 -0
- package/dist/domain/project/manifest/context.js +2 -0
- package/dist/domain/project/manifest/context.js.map +1 -0
- package/dist/domain/project/manifest/fields.d.ts +6 -0
- package/dist/domain/project/manifest/fields.js +36 -0
- package/dist/domain/project/manifest/fields.js.map +1 -0
- package/dist/domain/project/manifest/governance.d.ts +8 -0
- package/dist/domain/project/manifest/governance.js +161 -0
- package/dist/domain/project/manifest/governance.js.map +1 -0
- package/dist/domain/project/manifest/project-identity.d.ts +6 -0
- package/dist/domain/project/manifest/project-identity.js +273 -0
- package/dist/domain/project/manifest/project-identity.js.map +1 -0
- package/dist/domain/project/manifest/reader.d.ts +9 -0
- package/dist/domain/project/manifest/reader.js +141 -0
- package/dist/domain/project/manifest/reader.js.map +1 -0
- package/dist/domain/project/paths.d.ts +2 -0
- package/dist/domain/project/paths.js +29 -0
- package/dist/domain/project/paths.js.map +1 -0
- package/dist/domain/project/planning.d.ts +19 -0
- package/dist/domain/project/planning.js +329 -0
- package/dist/domain/project/planning.js.map +1 -0
- package/dist/domain/project/retired-workload.d.ts +4 -0
- package/dist/domain/project/retired-workload.js +18 -0
- package/dist/domain/project/retired-workload.js.map +1 -0
- package/dist/domain/project/reviewed-update-artifacts.d.ts +2 -0
- package/dist/domain/project/reviewed-update-artifacts.js +3 -0
- package/dist/domain/project/reviewed-update-artifacts.js.map +1 -0
- package/dist/domain/project/supported-stack.d.ts +113 -0
- package/dist/domain/project/supported-stack.js +426 -0
- package/dist/domain/project/supported-stack.js.map +1 -0
- package/dist/domain/workstation/constraints.d.ts +6 -0
- package/dist/domain/workstation/constraints.js +8 -0
- package/dist/domain/workstation/constraints.js.map +1 -0
- package/dist/file-system.d.ts +10 -44
- package/dist/file-system.js +9 -1245
- package/dist/file-system.js.map +1 -1
- package/dist/framework-adapters.d.ts +1 -1
- package/dist/framework-validation.d.ts +1 -1
- package/dist/framework-validation.js +1 -1
- package/dist/framework-validation.js.map +1 -1
- package/dist/genai-templates.d.ts +2 -9
- package/dist/genai-templates.js +4 -5
- package/dist/genai-templates.js.map +1 -1
- package/dist/generators/common/artifacts.d.ts +6 -0
- package/dist/generators/common/artifacts.js +30 -0
- package/dist/generators/common/artifacts.js.map +1 -0
- package/dist/generators/common/base.d.ts +17 -0
- package/dist/generators/common/base.js +425 -0
- package/dist/generators/common/base.js.map +1 -0
- package/dist/generators/common/dotenv-validation.d.ts +2 -0
- package/dist/generators/common/dotenv-validation.js +80 -0
- package/dist/generators/common/dotenv-validation.js.map +1 -0
- package/dist/generators/common/environments.d.ts +3 -0
- package/dist/generators/common/environments.js +15 -0
- package/dist/generators/common/environments.js.map +1 -0
- package/dist/generators/common/frontend.d.ts +15 -0
- package/dist/generators/common/frontend.js +166 -0
- package/dist/generators/common/frontend.js.map +1 -0
- package/dist/generators/common/python-settings.d.ts +2 -0
- package/dist/generators/common/python-settings.js +70 -0
- package/dist/generators/common/python-settings.js.map +1 -0
- package/dist/generators/common/spec-workflow.d.ts +28 -0
- package/dist/generators/common/spec-workflow.js +567 -0
- package/dist/generators/common/spec-workflow.js.map +1 -0
- package/dist/generators/common/values.d.ts +13 -0
- package/dist/generators/common/values.js +16 -0
- package/dist/generators/common/values.js.map +1 -0
- package/dist/generators/containers/compose.d.ts +7 -0
- package/dist/generators/containers/compose.js +196 -0
- package/dist/generators/containers/compose.js.map +1 -0
- package/dist/generators/containers/context.d.ts +1 -0
- package/dist/generators/containers/context.js +43 -0
- package/dist/generators/containers/context.js.map +1 -0
- package/dist/generators/containers/images.d.ts +7 -0
- package/dist/generators/containers/images.js +119 -0
- package/dist/generators/containers/images.js.map +1 -0
- package/dist/generators/context.d.ts +42 -0
- package/dist/generators/context.js +38 -0
- package/dist/generators/context.js.map +1 -0
- package/dist/generators/genai/backend.d.ts +20 -0
- package/dist/generators/genai/backend.js +667 -0
- package/dist/generators/genai/backend.js.map +1 -0
- package/dist/generators/genai/configuration.d.ts +3 -0
- package/dist/generators/genai/configuration.js +43 -0
- package/dist/generators/genai/configuration.js.map +1 -0
- package/dist/generators/genai/database.d.ts +7 -0
- package/dist/generators/genai/database.js +71 -0
- package/dist/generators/genai/database.js.map +1 -0
- package/dist/generators/genai/functions.d.ts +15 -0
- package/dist/generators/genai/functions.js +156 -0
- package/dist/generators/genai/functions.js.map +1 -0
- package/dist/generators/genai/index.d.ts +8 -0
- package/dist/generators/genai/index.js +11 -0
- package/dist/generators/genai/index.js.map +1 -0
- package/dist/generators/genai/patterns.d.ts +9 -0
- package/dist/generators/genai/patterns.js +309 -0
- package/dist/generators/genai/patterns.js.map +1 -0
- package/dist/generators/infrastructure/azure.d.ts +18 -0
- package/dist/generators/infrastructure/azure.js +655 -0
- package/dist/generators/infrastructure/azure.js.map +1 -0
- package/dist/generators/infrastructure/names.d.ts +23 -0
- package/dist/generators/infrastructure/names.js +51 -0
- package/dist/generators/infrastructure/names.js.map +1 -0
- package/dist/generators/standard/configuration.d.ts +3 -0
- package/dist/generators/standard/configuration.js +26 -0
- package/dist/generators/standard/configuration.js.map +1 -0
- package/dist/generators/standard/go.d.ts +17 -0
- package/dist/generators/standard/go.js +338 -0
- package/dist/generators/standard/go.js.map +1 -0
- package/dist/generators/standard/index.d.ts +12 -0
- package/dist/generators/standard/index.js +12 -0
- package/dist/generators/standard/index.js.map +1 -0
- package/dist/generators/standard/node.d.ts +20 -0
- package/dist/generators/standard/node.js +314 -0
- package/dist/generators/standard/node.js.map +1 -0
- package/dist/generators/standard/python.d.ts +18 -0
- package/dist/generators/standard/python.js +191 -0
- package/dist/generators/standard/python.js.map +1 -0
- package/dist/go-template-assets.js +3 -3
- package/dist/go-template-assets.js.map +1 -1
- package/dist/governance-activation/activation-state.d.ts +1 -1
- package/dist/governance-activation/activation-state.js +49 -9
- package/dist/governance-activation/activation-state.js.map +1 -1
- package/dist/governance-activation/approvals.d.ts +1 -188
- package/dist/governance-activation/approvals.js +1 -507
- package/dist/governance-activation/approvals.js.map +1 -1
- package/dist/governance-activation/canonical-json.d.ts +1 -3
- package/dist/governance-activation/canonical-json.js +1 -35
- package/dist/governance-activation/canonical-json.js.map +1 -1
- package/dist/governance-activation/commands.d.ts +6 -1
- package/dist/governance-activation/commands.js +135 -107
- package/dist/governance-activation/commands.js.map +1 -1
- package/dist/governance-activation/compatibility.d.ts +30 -5
- package/dist/governance-activation/compatibility.js +74 -8
- package/dist/governance-activation/compatibility.js.map +1 -1
- package/dist/governance-activation/credentials.d.ts +3 -3
- package/dist/governance-activation/credentials.js +5 -5
- package/dist/governance-activation/credentials.js.map +1 -1
- package/dist/governance-activation/doctor.d.ts +1 -1
- package/dist/governance-activation/doctor.js +59 -100
- package/dist/governance-activation/doctor.js.map +1 -1
- package/dist/governance-activation/evidence.d.ts +1 -49
- package/dist/governance-activation/evidence.js +1 -245
- package/dist/governance-activation/evidence.js.map +1 -1
- package/dist/governance-activation/git-ignore.d.ts +9 -0
- package/dist/governance-activation/git-ignore.js +76 -0
- package/dist/governance-activation/git-ignore.js.map +1 -0
- package/dist/governance-activation/graph.d.ts +1 -397
- package/dist/governance-activation/graph.js +1 -440
- package/dist/governance-activation/graph.js.map +1 -1
- package/dist/governance-activation/historical-state.d.ts +81 -0
- package/dist/governance-activation/historical-state.js +817 -0
- package/dist/governance-activation/historical-state.js.map +1 -0
- package/dist/governance-activation/history-contracts.d.ts +109 -0
- package/dist/governance-activation/history-contracts.js +303 -0
- package/dist/governance-activation/history-contracts.js.map +1 -0
- package/dist/governance-activation/identity.d.ts +1 -35
- package/dist/governance-activation/identity.js +1 -88
- package/dist/governance-activation/identity.js.map +1 -1
- package/dist/governance-activation/index.d.ts +3 -0
- package/dist/governance-activation/index.js +3 -0
- package/dist/governance-activation/index.js.map +1 -1
- package/dist/governance-activation/inputs.d.ts +10 -0
- package/dist/governance-activation/inputs.js +158 -0
- package/dist/governance-activation/inputs.js.map +1 -0
- package/dist/governance-activation/migration-history.d.ts +97 -0
- package/dist/governance-activation/migration-history.js +388 -0
- package/dist/governance-activation/migration-history.js.map +1 -0
- package/dist/governance-activation/migration.d.ts +4 -3
- package/dist/governance-activation/migration.js +14 -6
- package/dist/governance-activation/migration.js.map +1 -1
- package/dist/governance-activation/phase-bootstrap-state.d.ts +3 -0
- package/dist/governance-activation/phase-bootstrap-state.js +128 -0
- package/dist/governance-activation/phase-bootstrap-state.js.map +1 -0
- package/dist/governance-activation/phase-discovery.d.ts +2 -0
- package/dist/governance-activation/phase-discovery.js +88 -0
- package/dist/governance-activation/phase-discovery.js.map +1 -0
- package/dist/governance-activation/phase-governance.d.ts +4 -0
- package/dist/governance-activation/phase-governance.js +141 -0
- package/dist/governance-activation/phase-governance.js.map +1 -0
- package/dist/governance-activation/phase-publication.d.ts +8 -0
- package/dist/governance-activation/phase-publication.js +318 -0
- package/dist/governance-activation/phase-publication.js.map +1 -0
- package/dist/governance-activation/proof-records.d.ts +3 -0
- package/dist/governance-activation/proof-records.js +78 -0
- package/dist/governance-activation/proof-records.js.map +1 -0
- package/dist/governance-activation/read-only.d.ts +30 -0
- package/dist/governance-activation/read-only.js +33 -0
- package/dist/governance-activation/read-only.js.map +1 -0
- package/dist/governance-activation/readiness.d.ts +1 -25
- package/dist/governance-activation/readiness.js +1 -222
- package/dist/governance-activation/readiness.js.map +1 -1
- package/dist/governance-activation/reconciliation.d.ts +1 -1
- package/dist/governance-activation/reconciliation.js +3 -3
- package/dist/governance-activation/reconciliation.js.map +1 -1
- package/dist/governance-activation/release-integrity.d.ts +1 -1
- package/dist/governance-activation/release-integrity.js +2 -2
- package/dist/governance-activation/release-integrity.js.map +1 -1
- package/dist/governance-activation/seed-lifecycle.d.ts +36 -6
- package/dist/governance-activation/seed-lifecycle.js +444 -77
- package/dist/governance-activation/seed-lifecycle.js.map +1 -1
- package/dist/governance-activation/source-of-truth.d.ts +5 -3
- package/dist/governance-activation/source-of-truth.js +32 -52
- package/dist/governance-activation/source-of-truth.js.map +1 -1
- package/dist/governance-activation/spec-kit-seed.d.ts +9 -0
- package/dist/governance-activation/spec-kit-seed.js +43 -0
- package/dist/governance-activation/spec-kit-seed.js.map +1 -0
- package/dist/governance-activation/task-projection.d.ts +1 -1
- package/dist/governance-activation/transition-planning.d.ts +17 -0
- package/dist/governance-activation/transition-planning.js +259 -0
- package/dist/governance-activation/transition-planning.js.map +1 -0
- package/dist/governance-activation/transition-ports.d.ts +150 -0
- package/dist/governance-activation/transition-ports.js +2 -0
- package/dist/governance-activation/transition-ports.js.map +1 -0
- package/dist/governance-activation/transition-process.d.ts +7 -0
- package/dist/governance-activation/transition-process.js +21 -0
- package/dist/governance-activation/transition-process.js.map +1 -0
- package/dist/governance-activation/transition-records.d.ts +56 -0
- package/dist/governance-activation/transition-records.js +208 -0
- package/dist/governance-activation/transition-records.js.map +1 -0
- package/dist/governance-activation/transitions.d.ts +14 -167
- package/dist/governance-activation/transitions.js +173 -2061
- package/dist/governance-activation/transitions.js.map +1 -1
- package/dist/governance-activation/types.d.ts +1 -390
- package/dist/governance-activation/types.js +1 -107
- package/dist/governance-activation/types.js.map +1 -1
- package/dist/governance-activation/validators.d.ts +1 -17
- package/dist/governance-activation/validators.js +1 -1304
- package/dist/governance-activation/validators.js.map +1 -1
- package/dist/governance-assessment/catalog.d.ts +1 -2
- package/dist/governance-assessment/catalog.js +18 -85
- package/dist/governance-assessment/catalog.js.map +1 -1
- package/dist/governance-assessment/command.d.ts +1 -1
- package/dist/governance-assessment/command.js +8 -12
- package/dist/governance-assessment/command.js.map +1 -1
- package/dist/governance-assessment/engine.d.ts +6 -11
- package/dist/governance-assessment/engine.js +490 -114
- package/dist/governance-assessment/engine.js.map +1 -1
- package/dist/governance-assessment/live-normalize.d.ts +1 -19
- package/dist/governance-assessment/live-normalize.js +1 -402
- package/dist/governance-assessment/live-normalize.js.map +1 -1
- package/dist/governance-assessment/live-transport.d.ts +2 -6
- package/dist/governance-assessment/live-transport.js +10 -22
- package/dist/governance-assessment/live-transport.js.map +1 -1
- package/dist/governance-assessment/live.js +55 -5
- package/dist/governance-assessment/live.js.map +1 -1
- package/dist/governance-assessment/predicates.d.ts +1 -27
- package/dist/governance-assessment/predicates.js +1 -329
- package/dist/governance-assessment/predicates.js.map +1 -1
- package/dist/governance-assessment/project.d.ts +20 -17
- package/dist/governance-assessment/project.js +101 -151
- package/dist/governance-assessment/project.js.map +1 -1
- package/dist/governance-assessment/readers.d.ts +1 -5
- package/dist/governance-assessment/readers.js +5 -13
- package/dist/governance-assessment/readers.js.map +1 -1
- package/dist/governance-assessment/report.d.ts +1 -23
- package/dist/governance-assessment/report.js +1 -265
- package/dist/governance-assessment/report.js.map +1 -1
- package/dist/governance-assessment/sanitize.d.ts +1 -8
- package/dist/governance-assessment/sanitize.js +1 -56
- package/dist/governance-assessment/sanitize.js.map +1 -1
- package/dist/governance-assessment/types.d.ts +1 -173
- package/dist/governance-assessment/types.js +1 -12
- package/dist/governance-assessment/types.js.map +1 -1
- package/dist/governance-assessment/yaml.d.ts +1 -6
- package/dist/governance-assessment/yaml.js +1 -29
- package/dist/governance-assessment/yaml.js.map +1 -1
- package/dist/init-filesystem.d.ts +1 -1
- package/dist/init-filesystem.js +126 -174
- package/dist/init-filesystem.js.map +1 -1
- package/dist/interactive.d.ts +2 -2
- package/dist/interactive.js +42 -41
- package/dist/interactive.js.map +1 -1
- package/dist/migrate-plan.d.ts +1 -1
- package/dist/migrate-plan.js +14 -8
- package/dist/migrate-plan.js.map +1 -1
- package/dist/npm-template-assets.js +5 -4
- package/dist/npm-template-assets.js.map +1 -1
- package/dist/openspec-profile.d.ts +1 -1
- package/dist/opentofu-template-assets.js +3 -3
- package/dist/opentofu-template-assets.js.map +1 -1
- package/dist/package-identity.d.ts +3 -0
- package/dist/package-identity.js +13 -2
- package/dist/package-identity.js.map +1 -1
- package/dist/planner.d.ts +1 -19
- package/dist/planner.js +1 -565
- package/dist/planner.js.map +1 -1
- package/dist/process-runner.d.ts +1 -1
- package/dist/project-dependencies.d.ts +5 -3
- package/dist/project-dependencies.js +74 -63
- package/dist/project-dependencies.js.map +1 -1
- package/dist/published-verifier.js +61 -30
- package/dist/published-verifier.js.map +1 -1
- package/dist/python-template-assets.js +6 -9
- package/dist/python-template-assets.js.map +1 -1
- package/dist/reconcile.d.ts +1 -1
- package/dist/reconcile.js +2 -2
- package/dist/reconcile.js.map +1 -1
- package/dist/repository-governance.d.ts +5 -2
- package/dist/repository-governance.js +140 -113
- package/dist/repository-governance.js.map +1 -1
- package/dist/runtime.js +1 -1
- package/dist/runtime.js.map +1 -1
- package/dist/scan.d.ts +6 -2
- package/dist/scan.js +78 -30
- package/dist/scan.js.map +1 -1
- package/dist/self-upgrade.d.ts +1 -1
- package/dist/self-upgrade.js +20 -7
- package/dist/self-upgrade.js.map +1 -1
- package/dist/stable-release.js +7 -1
- package/dist/stable-release.js.map +1 -1
- package/dist/standard-templates.d.ts +2 -2
- package/dist/standard-templates.js +6 -841
- package/dist/standard-templates.js.map +1 -1
- package/dist/supported-stack.d.ts +3 -115
- package/dist/supported-stack.js +4 -438
- package/dist/supported-stack.js.map +1 -1
- package/dist/telemetry/index.d.ts +1 -1
- package/dist/templates.d.ts +10 -20
- package/dist/templates.js +52 -3261
- package/dist/templates.js.map +1 -1
- package/dist/types.d.ts +1 -263
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/version.js +2 -6
- package/dist/version.js.map +1 -1
- package/dist/workstation-catalog.d.ts +5 -2
- package/dist/workstation-catalog.js +33 -2
- package/dist/workstation-catalog.js.map +1 -1
- package/dist/workstation.d.ts +4 -3
- package/dist/workstation.js +86 -32
- package/dist/workstation.js.map +1 -1
- package/docs/assets/liftoff-terminal.svg +3 -3
- package/docs/azure-deployment.md +107 -10
- package/docs/cli-reference.md +144 -35
- package/docs/configuration-and-manifests.md +152 -35
- package/docs/existing-repositories.md +48 -12
- package/docs/getting-started.md +44 -31
- package/docs/prerequisites.md +34 -35
- package/docs/project-structure.md +39 -46
- package/docs/repository-governance.md +96 -26
- package/docs/safety-and-consent.md +90 -28
- package/docs/spec-workflows-and-agents.md +31 -28
- package/docs/supported-stack.md +11 -9
- package/docs/troubleshooting.md +114 -54
- package/docs/workloads.md +52 -67
- package/package.json +4 -7
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/UPSTREAM_LICENSE.txt +0 -21
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/catalog.json +0 -520
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/packaged/gitignore +0 -27
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/README.md +0 -25
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/components.json +0 -22
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/eslint.config.js +0 -23
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/index.html +0 -13
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package-lock.json +0 -6156
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package.json +0 -60
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/public/power-apps.svg +0 -55
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/App.tsx +0 -17
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/assets/react.svg +0 -1
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/mode-toggle.tsx +0 -37
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/badge.tsx +0 -46
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/button.tsx +0 -60
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/calendar.tsx +0 -211
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/card.tsx +0 -92
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/chart.tsx +0 -355
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/checkbox.tsx +0 -32
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/command.tsx +0 -184
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dialog.tsx +0 -141
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dropdown-menu.tsx +0 -257
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/input.tsx +0 -21
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/label.tsx +0 -22
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/popover.tsx +0 -46
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/progress.tsx +0 -29
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/select.tsx +0 -185
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/separator.tsx +0 -26
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/skeleton.tsx +0 -13
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/table.tsx +0 -114
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tabs.tsx +0 -66
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/textarea.tsx +0 -18
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tooltip.tsx +0 -61
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/hooks/use-theme.ts +0 -11
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/index.css +0 -131
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/lib/utils.ts +0 -6
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/main.tsx +0 -10
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/_layout.tsx +0 -31
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/home.tsx +0 -59
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/not-found.tsx +0 -14
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/query-provider.tsx +0 -26
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/sonner-provider.tsx +0 -23
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/theme-provider.tsx +0 -64
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/router.tsx +0 -24
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.app.json +0 -34
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.json +0 -13
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.node.json +0 -26
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/vite.config.ts +0 -19
- package/assets/power-apps-code-app/README.md +0 -27
- package/dist/code-apps-plugin.d.ts +0 -13
- package/dist/code-apps-plugin.js +0 -69
- package/dist/code-apps-plugin.js.map +0 -1
- package/dist/power-apps-assets.d.ts +0 -30
- package/dist/power-apps-assets.js +0 -131
- package/dist/power-apps-assets.js.map +0 -1
- package/dist/power-apps-templates.d.ts +0 -3
- package/dist/power-apps-templates.js +0 -177
- package/dist/power-apps-templates.js.map +0 -1
- package/dist/power-apps-validation.d.ts +0 -1
- package/dist/power-apps-validation.js +0 -79
- package/dist/power-apps-validation.js.map +0 -1
package/docs/getting-started.md
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
# Getting started
|
|
2
2
|
|
|
3
|
-
Liftoff is an interactive project initializer for governed GenAI applications
|
|
4
|
-
standard APIs
|
|
3
|
+
Liftoff is an interactive project initializer for governed GenAI applications
|
|
4
|
+
and standard APIs.
|
|
5
5
|
|
|
6
6
|
## 1. Install the CLI
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
Workstation readiness requires stable Node.js 24 LTS at 24.20.0 or newer within
|
|
9
|
+
that line, plus npm 12.x at 12.0.2 or newer when selected tools need it.
|
|
10
|
+
Python workloads use Python 3.14.x with frozen `uv` dependency locks.
|
|
10
11
|
|
|
11
12
|
The canonical release registry is `https://registry.npmjs.org`:
|
|
12
13
|
|
|
13
14
|
```bash
|
|
14
|
-
npm view @msn-control/liftoff@latest version --registry=https://registry.npmjs.org
|
|
15
|
-
npm install -g @msn-control/liftoff@latest
|
|
15
|
+
npm view @msn-control/liftoff@latest version --registry=https://registry.npmjs.org --@msn-control:registry=https://registry.npmjs.org
|
|
16
|
+
npm install -g @msn-control/liftoff@latest
|
|
16
17
|
liftoff --version
|
|
17
18
|
```
|
|
18
19
|
|
|
@@ -22,6 +23,10 @@ If your organization requires a managed npm registry, query
|
|
|
22
23
|
canonical npm. Stop if the mirror is older or rejects the explicit current
|
|
23
24
|
version; ask the mirror owner to synchronize or approve the release. Liftoff
|
|
24
25
|
does not modify `.npmrc` or bypass registry policy.
|
|
26
|
+
The read-only canonical query isolates both default and scoped registry
|
|
27
|
+
overrides. Installation intentionally honors the configured
|
|
28
|
+
`@msn-control:registry` before the default registry; do not force a canonical
|
|
29
|
+
download around an organization's delivery policy.
|
|
25
30
|
|
|
26
31
|
Versions predating the self-upgrade command require that manual global install
|
|
27
32
|
once. After a capable version is installed globally with npm, use:
|
|
@@ -50,7 +55,7 @@ cd my-project
|
|
|
50
55
|
|
|
51
56
|
The guided flow asks for:
|
|
52
57
|
|
|
53
|
-
1. Project identity and workload: GenAI
|
|
58
|
+
1. Project identity and workload: GenAI or API.
|
|
54
59
|
2. Only the architecture choices applicable to that workload.
|
|
55
60
|
For GenAI, **I'm not sure yet - Generic GenAI starter** is the safe default
|
|
56
61
|
when no specialization has been selected.
|
|
@@ -62,8 +67,7 @@ The guided flow asks for:
|
|
|
62
67
|
6. Whether to configure the default-off GitHub-hosted Copilot coding agent when
|
|
63
68
|
OpenSpec and GitHub Copilot are selected.
|
|
64
69
|
7. A Spec Kit default agent when both agents are selected.
|
|
65
|
-
8.
|
|
66
|
-
9. Plan confirmation, workstation readiness, and any separate install or
|
|
70
|
+
8. Plan confirmation, workstation readiness, and any separate install or
|
|
67
71
|
overwrite permissions that are needed.
|
|
68
72
|
|
|
69
73
|
Liftoff renders into temporary staging, runs the official framework initializer
|
|
@@ -74,12 +78,12 @@ and asks separately before staging.
|
|
|
74
78
|
|
|
75
79
|
When governance is enabled, `/liftoff-setup` is the next selected-agent action.
|
|
76
80
|
It has no model-selection requirement: safety comes from the Liftoff CLI phase
|
|
77
|
-
graph, local evidence, approval envelopes, and readback.
|
|
78
|
-
syncs, and archives
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
or read-only checks.
|
|
81
|
+
graph, local evidence, approval envelopes, and readback. OpenSpec setup completes,
|
|
82
|
+
syncs, and archives `bootstrap-<project>`; Spec Kit validates and finalizes
|
|
83
|
+
`specs/000-liftoff-bootstrap/` locally. Neither workflow invents completed product
|
|
84
|
+
work. Missing approval-persistence, credential-enrollment, and production phase
|
|
85
|
+
executors remain specific blockers. Commit and push are never implicit in
|
|
86
|
+
`liftoff init`, `--yes`, or read-only checks.
|
|
83
87
|
|
|
84
88
|
For deterministic generic generation, use `--type genai --pattern generic`.
|
|
85
89
|
|
|
@@ -97,26 +101,35 @@ non-empty target.
|
|
|
97
101
|
|
|
98
102
|
## 4. Local baseline setup verifies
|
|
99
103
|
|
|
100
|
-
`/liftoff-setup` runs only local, project-applicable baseline checks before
|
|
101
|
-
|
|
104
|
+
`/liftoff-setup` runs only local, project-applicable baseline checks before
|
|
105
|
+
archiving the OpenSpec seed or finalizing the Spec Kit bundle. Commands run in
|
|
106
|
+
their declared component directories, not all from an arbitrary working directory:
|
|
102
107
|
|
|
103
108
|
```bash
|
|
104
109
|
liftoff validate
|
|
105
110
|
# backend tests from the generated README when a backend exists
|
|
106
111
|
# frontend build from the generated README when a frontend exists
|
|
107
112
|
docker compose config -q
|
|
113
|
+
# From infrastructure/opentofu/azure/:
|
|
108
114
|
tofu fmt -check -recursive
|
|
115
|
+
# Within each selected environments/<environment>/ infrastructure root:
|
|
109
116
|
tofu init -backend=false
|
|
110
117
|
tofu validate
|
|
111
|
-
|
|
118
|
+
# OpenSpec only, from the project root (replace the generated change name):
|
|
119
|
+
openspec validate bootstrap-my-project --strict
|
|
112
120
|
```
|
|
113
121
|
|
|
114
|
-
Absent components are inapplicable:
|
|
115
|
-
|
|
116
|
-
frontend build evidence. The baseline does not run `tofu plan`, `tofu apply`,
|
|
122
|
+
Absent optional components are inapplicable: an API project without a frontend
|
|
123
|
+
skips frontend build evidence. The baseline does not run `tofu plan`, `tofu apply`,
|
|
117
124
|
start containers, deploy, mutate GitHub, or require cloud credentials. If a check
|
|
118
|
-
fails, the seed remains
|
|
119
|
-
|
|
125
|
+
fails, the seed remains unfinished. After repair, explicit execution can retry
|
|
126
|
+
the local baseline; read-only `resume` does not run it. Current unchanged proof
|
|
127
|
+
can be reused, while changed inputs require new evidence.
|
|
128
|
+
Dependencies must already be usable, or separately installed with explicit
|
|
129
|
+
consent; passing a baseline does not prove that installation or consent happened.
|
|
130
|
+
Spec Kit's B001–B006 projection is finalized only after its checks pass.
|
|
131
|
+
Legacy/shared or unknown infrastructure layouts block baseline execution with a
|
|
132
|
+
migration-required result rather than omitting those checks.
|
|
120
133
|
|
|
121
134
|
You can run read-only maintenance at any time:
|
|
122
135
|
|
|
@@ -132,14 +145,14 @@ liftoff governance verify --json
|
|
|
132
145
|
adds read-only workstation, runtime, authentication, dependency,
|
|
133
146
|
workload-specific, and governance-state diagnostics.
|
|
134
147
|
|
|
135
|
-
After
|
|
136
|
-
|
|
148
|
+
After the local bootstrap handoff, normal development follows your selected
|
|
149
|
+
workflow. Repository publication and production activation remain separate:
|
|
137
150
|
|
|
138
151
|
- GenAI and API projects: copy `.env.example` to `.env`, install the generated
|
|
139
152
|
stack dependencies, then use `liftoff dev` and `liftoff infra` to print local
|
|
140
|
-
development and infrastructure commands.
|
|
141
|
-
|
|
142
|
-
|
|
153
|
+
development and infrastructure commands. Native Go also copies
|
|
154
|
+
`runtime.config.example.json` to `runtime.config.json`; see the
|
|
155
|
+
[stack-specific configuration recipes](configuration-and-manifests.md#application-runtime-configuration).
|
|
143
156
|
- OpenSpec or Spec Kit changes drive normal feature work; release and hotfix
|
|
144
157
|
flows follow the governed GitFlow plan after activation evidence is green.
|
|
145
158
|
|
|
@@ -151,7 +164,7 @@ Use `liftoff plan` to resolve choices and preview requirements without writing
|
|
|
151
164
|
files or running installers:
|
|
152
165
|
|
|
153
166
|
```bash
|
|
154
|
-
liftoff plan --type
|
|
167
|
+
liftoff plan --type standard --api node --spec openspec --agents copilot
|
|
155
168
|
```
|
|
156
169
|
|
|
157
170
|
Automation can pass the same options to `liftoff init`. Use `--yes` for project
|
|
@@ -176,5 +189,5 @@ source remains byte-for-byte unchanged.
|
|
|
176
189
|
liftoff migrate ../legacy-app --region eastus --agents copilot,claude --yes
|
|
177
190
|
```
|
|
178
191
|
|
|
179
|
-
Power Apps
|
|
180
|
-
|
|
192
|
+
Power Apps support is retired, including existing-project maintenance. Retired
|
|
193
|
+
inputs are rejected without converting or deleting the original application.
|
package/docs/prerequisites.md
CHANGED
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
# Prerequisites
|
|
2
2
|
|
|
3
3
|
Liftoff derives workstation and project requirements from the complete resolved
|
|
4
|
-
plan. A
|
|
5
|
-
|
|
4
|
+
plan. A Go API does not inherit Python backend dependencies, although a selected
|
|
5
|
+
framework such as Spec Kit can require Python for its own tooling.
|
|
6
6
|
|
|
7
7
|
## Baseline
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
9
|
+
- Workstation Node.js: stable Node.js 24 LTS, version 24.20.0 or newer within 24.x.
|
|
10
|
+
- npm-dependent stacks or OpenSpec: stable npm 12.x, version 12.0.2 or newer.
|
|
11
|
+
- Python projects: stable Python 3.14.x and `uv` 0.12.x at version 0.12.7 or newer.
|
|
12
|
+
- Go projects: stable Go 1.27.x.
|
|
13
|
+
- Generated Azure infrastructure: stable OpenTofu 1.12.x at version 1.12.6 or newer.
|
|
13
14
|
- Selected framework: OpenSpec 1.11.0 or Spec Kit 1.0.1 exactly.
|
|
14
15
|
- Selected agents: GitHub Copilot, Claude Code, or both.
|
|
15
16
|
|
|
17
|
+
Minimum versions do not authorize a different, untested release line. Release
|
|
18
|
+
candidates and other prereleases do not satisfy stable floors or exact framework
|
|
19
|
+
pins. A working Node.js executable does not establish npm readiness: when npm is
|
|
20
|
+
required, it is probed separately before destination writes. A missing npm
|
|
21
|
+
executable requires a separately reviewed machine-level repair; Liftoff does not
|
|
22
|
+
try to run the missing executable or reinstall Node.js on its behalf.
|
|
23
|
+
|
|
16
24
|
Automatic `liftoff upgrade` additionally requires that the running canonical
|
|
17
25
|
`@msn-control/liftoff` package is a normal global npm installation beneath
|
|
18
26
|
`npm root --global`. Local dependencies, `npx` cache copies, linked checkouts,
|
|
@@ -27,6 +35,8 @@ runtime. GenAI uses Python 3.14 and the Python/FastAPI/PydanticAI stack.
|
|
|
27
35
|
Blocking checks must be ready before initialization can safely complete:
|
|
28
36
|
|
|
29
37
|
- Required runtime and minimum version.
|
|
38
|
+
- Required package managers, including npm for Node.js dependencies, a frontend,
|
|
39
|
+
or OpenSpec.
|
|
30
40
|
- Selected spec framework CLI.
|
|
31
41
|
- Every selected coding agent.
|
|
32
42
|
- For OpenSpec, global profile `custom`, delivery `both`, and all 12 workflows.
|
|
@@ -36,7 +46,6 @@ Advisory checks describe useful but deferrable capabilities:
|
|
|
36
46
|
- Docker CLI and daemon health for API workloads.
|
|
37
47
|
- OpenTofu for generated Azure infrastructure.
|
|
38
48
|
- Azure CLI and observable authentication health.
|
|
39
|
-
- Optional Code Apps plugin state for Power Apps.
|
|
40
49
|
|
|
41
50
|
Authentication checks are read-only. Liftoff never stores credentials or signs
|
|
42
51
|
in to a cloud or agent on your behalf.
|
|
@@ -63,7 +72,7 @@ can register each missing namespace explicitly before dependent resources.
|
|
|
63
72
|
without writing files or running installers:
|
|
64
73
|
|
|
65
74
|
```bash
|
|
66
|
-
liftoff plan --type
|
|
75
|
+
liftoff plan --type standard --api node --spec openspec --agents copilot,claude
|
|
67
76
|
```
|
|
68
77
|
|
|
69
78
|
## Tool installation consent
|
|
@@ -103,19 +112,22 @@ Project-local dependency setup is separate from workstation tools and requires
|
|
|
103
112
|
`--install-dependencies` or interactive approval after a successful project
|
|
104
113
|
merge.
|
|
105
114
|
|
|
106
|
-
For Power Apps, Liftoff runs only the root locked install:
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
npm ci
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
The generated `package.json` and `package-lock.json` are validated before
|
|
113
|
-
installation and protected from installer mutation. If dependency setup is
|
|
114
|
-
skipped or fails, Liftoff prints the exact resume command rather than claiming
|
|
115
|
-
the project is ready.
|
|
116
|
-
|
|
117
115
|
GenAI and API projects use their generated stack-native locked dependency
|
|
118
|
-
commands.
|
|
116
|
+
commands. If dependency setup is skipped or fails, Liftoff prints the exact
|
|
117
|
+
resume command rather than claiming the project is ready.
|
|
118
|
+
|
|
119
|
+
Recovery output identifies its shell: POSIX shell on macOS/Linux and PowerShell
|
|
120
|
+
on Windows. Copy the command into that shell; directory names and arguments are
|
|
121
|
+
quoted literally rather than expanded as environment variables.
|
|
122
|
+
|
|
123
|
+
If protected metadata changes during dependency setup, Liftoff stops and lists
|
|
124
|
+
the changed paths. It preserves those edits instead of assuming the installer
|
|
125
|
+
caused them and restoring older bytes over concurrent work. Review and repair
|
|
126
|
+
the metadata before retrying. Dependency scripts can also change other project
|
|
127
|
+
files; this check is not a script sandbox.
|
|
128
|
+
Dependencies that are already installed and usable do not need a new install
|
|
129
|
+
merely to satisfy a bootstrap checkbox. Local checks prove usability, not that
|
|
130
|
+
an installation or its consent occurred.
|
|
119
131
|
|
|
120
132
|
Python projects use the generated lock without resolving new versions:
|
|
121
133
|
|
|
@@ -130,24 +142,11 @@ Liftoff's npm locks are generated with npm 12.0.2 and verified in the supported
|
|
|
130
142
|
compatibility lanes. Do not replace a committed lock with an install from
|
|
131
143
|
open-ended manifest ranges.
|
|
132
144
|
|
|
133
|
-
## Power Apps local CLI
|
|
134
|
-
|
|
135
|
-
The Power Apps CLI is supplied by the generated project dependency graph.
|
|
136
|
-
Liftoff checks it without downloading another package:
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
npx --no-install power-apps --version
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
If `node_modules` is absent, run `npm ci` first. Environment binding and cloud
|
|
143
|
-
authentication remain separate later actions.
|
|
144
|
-
|
|
145
145
|
## Agent detection
|
|
146
146
|
|
|
147
147
|
Copilot can be detected through its CLI or supported VS Code extensions.
|
|
148
148
|
Claude Code is checked with its version and doctor commands. When both are
|
|
149
149
|
selected, both must be ready.
|
|
150
150
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
result is reported as not observable rather than silently treated as missing.
|
|
151
|
+
Power Apps and Code Apps plugin preparation are retired. Their inputs are
|
|
152
|
+
rejected before selecting or installing a former workload-specific tool set.
|
|
@@ -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,25 +323,42 @@ 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.
|
|
279
342
|
Multiple overlapping changes require a schema-valid supersession or archive
|
|
280
343
|
record before any phase advances.
|
|
281
344
|
|
|
282
|
-
|
|
283
|
-
|
|
345
|
+
Reviewed managed updates install new policy, graph, schema, compatibility metadata,
|
|
346
|
+
and setup/assessment integrations without acquiring general state ownership.
|
|
347
|
+
Forced update can remove
|
|
284
348
|
exact retired generated setup-alias entries from older manifests. When a policy,
|
|
285
349
|
activation-contract, schema, or graph-hash change affects active work, status
|
|
286
|
-
reports `reconciliation-required
|
|
287
|
-
|
|
288
|
-
|
|
350
|
+
reports `reconciliation-required` and identifies affected descendants. Historical
|
|
351
|
+
activation-v1 state and evidence remain byte-preserved and non-executable.
|
|
352
|
+
`liftoff update --check` can preview an exact supported successor migration;
|
|
353
|
+
explicitly approved apply preserves original history and creates linked v2 state.
|
|
354
|
+
Fresh local revalidation stops at unsupported or independently authorized work.
|
|
355
|
+
Failure after commit leaves v2 blocked/resumable, not reset to v1. Never
|
|
356
|
+
acknowledge an identity by editing JSON or treat old approvals as current consent.
|
|
289
357
|
|
|
290
358
|
## Private staging and bootstrap retention
|
|
291
359
|
|
|
360
|
+
These are policy requirements for separately implemented production adapters,
|
|
361
|
+
not a claim that this CLI can provision the complete platform.
|
|
292
362
|
Private Staging DAST uses an ephemeral GitHub-hosted larger runner with Azure
|
|
293
363
|
VNet injection only when genuinely applicable. Phase 0 discovers repository,
|
|
294
364
|
subscription, authority, billing, network, DNS, cost, teardown, and capability
|