@msn-control/liftoff 0.11.3 → 0.12.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 +26 -35
- package/README.md +18 -18
- package/assets/governance/single-maintainer-gitflow/activation-v2-graph.json +1583 -0
- package/dist/adapters/credentials/github-enrollment.d.ts +51 -0
- package/dist/adapters/credentials/github-enrollment.js +226 -0
- package/dist/adapters/credentials/github-enrollment.js.map +1 -0
- package/dist/adapters/credentials/protected-input.d.ts +7 -0
- package/dist/adapters/credentials/protected-input.js +68 -0
- package/dist/adapters/credentials/protected-input.js.map +1 -0
- package/dist/adapters/filesystem/executables.d.ts +2 -0
- package/dist/adapters/filesystem/executables.js +70 -0
- package/dist/adapters/filesystem/executables.js.map +1 -0
- package/dist/adapters/filesystem/update-previews.d.ts +9 -0
- package/dist/adapters/filesystem/update-previews.js +44 -0
- package/dist/adapters/filesystem/update-previews.js.map +1 -1
- package/dist/adapters/filesystem/workstation-attempts.d.ts +13 -0
- package/dist/adapters/filesystem/workstation-attempts.js +78 -0
- package/dist/adapters/filesystem/workstation-attempts.js.map +1 -0
- package/dist/adapters/github/activation-rest.d.ts +40 -0
- package/dist/adapters/github/activation-rest.js +272 -0
- package/dist/adapters/github/activation-rest.js.map +1 -0
- package/dist/adapters/state/azure-blob.d.ts +43 -0
- package/dist/adapters/state/azure-blob.js +335 -0
- package/dist/adapters/state/azure-blob.js.map +1 -0
- package/dist/adapters/state/darwin-capabilities.d.ts +33 -0
- package/dist/adapters/state/darwin-capabilities.js +146 -0
- package/dist/adapters/state/darwin-capabilities.js.map +1 -0
- package/dist/adapters/state/darwin-native-host.d.ts +32 -0
- package/dist/adapters/state/darwin-native-host.js +294 -0
- package/dist/adapters/state/darwin-native-host.js.map +1 -0
- package/dist/adapters/state/darwin-profile.d.ts +6 -0
- package/dist/adapters/state/darwin-profile.js +56 -0
- package/dist/adapters/state/darwin-profile.js.map +1 -0
- package/dist/adapters/state/darwin-system-program.d.ts +1 -0
- package/dist/adapters/state/darwin-system-program.js +94 -0
- package/dist/adapters/state/darwin-system-program.js.map +1 -0
- package/dist/adapters/state/local-qualification.d.ts +16 -0
- package/dist/adapters/state/local-qualification.js +299 -0
- package/dist/adapters/state/local-qualification.js.map +1 -0
- package/dist/adapters/state/local.d.ts +25 -0
- package/dist/adapters/state/local.js +145 -0
- package/dist/adapters/state/local.js.map +1 -0
- package/dist/adapters/state/native-command.d.ts +21 -0
- package/dist/adapters/state/native-command.js +82 -0
- package/dist/adapters/state/native-command.js.map +1 -0
- package/dist/adapters/state/native-files.d.ts +2 -0
- package/dist/adapters/state/native-files.js +47 -0
- package/dist/adapters/state/native-files.js.map +1 -0
- package/dist/adapters/state/native-system.d.ts +38 -0
- package/dist/adapters/state/native-system.js +86 -0
- package/dist/adapters/state/native-system.js.map +1 -0
- package/dist/adapters/state/opentofu.d.ts +35 -0
- package/dist/adapters/state/opentofu.js +350 -0
- package/dist/adapters/state/opentofu.js.map +1 -0
- package/dist/adapters/state/owned-process.d.ts +43 -0
- package/dist/adapters/state/owned-process.js +252 -0
- package/dist/adapters/state/owned-process.js.map +1 -0
- package/dist/adapters/state/posix-lock-program.d.ts +1 -0
- package/dist/adapters/state/posix-lock-program.js +185 -0
- package/dist/adapters/state/posix-lock-program.js.map +1 -0
- package/dist/adapters/state/posix-native-lock.d.ts +15 -0
- package/dist/adapters/state/posix-native-lock.js +145 -0
- package/dist/adapters/state/posix-native-lock.js.map +1 -0
- package/dist/adapters/state/protected-workspace.d.ts +57 -0
- package/dist/adapters/state/protected-workspace.js +412 -0
- package/dist/adapters/state/protected-workspace.js.map +1 -0
- package/dist/application/context.d.ts +3 -0
- package/dist/application/diagnose/doctor.d.ts +5 -0
- package/dist/application/diagnose/doctor.js +21 -5
- package/dist/application/diagnose/doctor.js.map +1 -1
- package/dist/application/diagnose/generated-project.js +2 -7
- package/dist/application/diagnose/generated-project.js.map +1 -1
- package/dist/application/initialize/fixture.js +8 -1
- package/dist/application/initialize/fixture.js.map +1 -1
- package/dist/application/initialize/use-case.js +70 -36
- package/dist/application/initialize/use-case.js.map +1 -1
- package/dist/application/project/manifest.js +5 -4
- package/dist/application/project/manifest.js.map +1 -1
- package/dist/application/state-migration/execution.d.ts +32 -0
- package/dist/application/state-migration/execution.js +440 -0
- package/dist/application/state-migration/execution.js.map +1 -0
- package/dist/application/state-migration/index.d.ts +22 -0
- package/dist/application/state-migration/index.js +17 -0
- package/dist/application/state-migration/index.js.map +1 -0
- package/dist/application/state-migration/lifecycle.d.ts +3 -0
- package/dist/application/state-migration/lifecycle.js +149 -0
- package/dist/application/state-migration/lifecycle.js.map +1 -0
- package/dist/application/state-migration/planning.d.ts +7 -0
- package/dist/application/state-migration/planning.js +150 -0
- package/dist/application/state-migration/planning.js.map +1 -0
- package/dist/application/state-migration/recovery.d.ts +5 -0
- package/dist/application/state-migration/recovery.js +145 -0
- package/dist/application/state-migration/recovery.js.map +1 -0
- package/dist/application/state-migration/runtime.d.ts +32 -0
- package/dist/application/state-migration/runtime.js +188 -0
- package/dist/application/state-migration/runtime.js.map +1 -0
- package/dist/application/state-migration/service.d.ts +2 -0
- package/dist/application/state-migration/service.js +20 -0
- package/dist/application/state-migration/service.js.map +1 -0
- package/dist/application/update/inspection.d.ts +16 -2
- package/dist/application/update/inspection.js +76 -23
- package/dist/application/update/inspection.js.map +1 -1
- package/dist/application/update/migration-runtime.js +24 -11
- package/dist/application/update/migration-runtime.js.map +1 -1
- package/dist/application/update/output.d.ts +2 -0
- package/dist/application/update/output.js +11 -1
- package/dist/application/update/output.js.map +1 -1
- package/dist/application/update/revalidation-plan.d.ts +1 -0
- package/dist/application/update/revalidation-plan.js +25 -12
- package/dist/application/update/revalidation-plan.js.map +1 -1
- package/dist/application/update/revalidation.d.ts +4 -1
- package/dist/application/update/revalidation.js +62 -21
- package/dist/application/update/revalidation.js.map +1 -1
- package/dist/application/update/use-case.js +25 -17
- package/dist/application/update/use-case.js.map +1 -1
- package/dist/application/upgrade/use-case.js +3 -0
- package/dist/application/upgrade/use-case.js.map +1 -1
- package/dist/cli/args/definitions.js +11 -3
- package/dist/cli/args/definitions.js.map +1 -1
- package/dist/cli/args/parser.js +29 -3
- package/dist/cli/args/parser.js.map +1 -1
- package/dist/domain/governance/activation/approvals.d.ts +264 -7
- package/dist/domain/governance/activation/approvals.js +166 -23
- package/dist/domain/governance/activation/approvals.js.map +1 -1
- package/dist/domain/governance/activation/capabilities.js +5 -2
- package/dist/domain/governance/activation/capabilities.js.map +1 -1
- package/dist/domain/governance/activation/evidence.d.ts +2 -1
- package/dist/domain/governance/activation/evidence.js +64 -11
- package/dist/domain/governance/activation/evidence.js.map +1 -1
- package/dist/domain/governance/activation/graph.d.ts +11 -384
- package/dist/domain/governance/activation/graph.js +424 -379
- package/dist/domain/governance/activation/graph.js.map +1 -1
- package/dist/domain/governance/activation/inputs.d.ts +3 -1
- package/dist/domain/governance/activation/inputs.js +47 -6
- package/dist/domain/governance/activation/inputs.js.map +1 -1
- package/dist/domain/governance/activation/operations.d.ts +4 -1
- package/dist/domain/governance/activation/operations.js +110 -22
- package/dist/domain/governance/activation/operations.js.map +1 -1
- package/dist/domain/governance/activation/readiness.d.ts +10 -0
- package/dist/domain/governance/activation/readiness.js +77 -38
- package/dist/domain/governance/activation/readiness.js.map +1 -1
- package/dist/domain/governance/activation/types.d.ts +151 -9
- package/dist/domain/governance/activation/types.js +23 -1
- package/dist/domain/governance/activation/types.js.map +1 -1
- package/dist/domain/governance/activation/validators.d.ts +4 -1
- package/dist/domain/governance/activation/validators.js +419 -26
- package/dist/domain/governance/activation/validators.js.map +1 -1
- package/dist/domain/governance/policy/identity.d.ts +55 -13
- package/dist/domain/governance/policy/identity.js +28 -8
- package/dist/domain/governance/policy/identity.js.map +1 -1
- package/dist/domain/project/artifact-lifecycle.d.ts +2 -1
- package/dist/domain/project/artifact-lifecycle.js +7 -1
- package/dist/domain/project/artifact-lifecycle.js.map +1 -1
- package/dist/domain/project/catalog.d.ts +50 -1
- package/dist/domain/project/catalog.js +104 -4
- package/dist/domain/project/catalog.js.map +1 -1
- package/dist/domain/project/contracts.d.ts +9 -1
- package/dist/domain/project/infrastructure-layout.d.ts +1 -1
- package/dist/domain/project/infrastructure-layout.js +3 -1
- package/dist/domain/project/infrastructure-layout.js.map +1 -1
- package/dist/domain/project/manifest/governance.d.ts +1 -1
- package/dist/domain/project/manifest/governance.js +9 -10
- package/dist/domain/project/manifest/governance.js.map +1 -1
- package/dist/domain/project/planning.js +4 -5
- package/dist/domain/project/planning.js.map +1 -1
- package/dist/domain/repair/stateful-bounded.d.ts +1 -0
- package/dist/domain/repair/stateful-bounded.js +37 -0
- package/dist/domain/repair/stateful-bounded.js.map +1 -0
- package/dist/domain/repair/stateful-invariants.d.ts +28 -0
- package/dist/domain/repair/stateful-invariants.js +278 -0
- package/dist/domain/repair/stateful-invariants.js.map +1 -0
- package/dist/domain/repair/stateful.d.ts +690 -0
- package/dist/domain/repair/stateful.js +26 -0
- package/dist/domain/repair/stateful.js.map +1 -0
- package/dist/domain/workstation/constraints.d.ts +1 -0
- package/dist/domain/workstation/constraints.js.map +1 -1
- package/dist/domain/workstation/contracts.d.ts +42 -0
- package/dist/domain/workstation/contracts.js +2 -0
- package/dist/domain/workstation/contracts.js.map +1 -0
- package/dist/domain/workstation/executables.d.ts +19 -0
- package/dist/domain/workstation/executables.js +68 -0
- package/dist/domain/workstation/executables.js.map +1 -0
- package/dist/domain/workstation/versions.d.ts +8 -0
- package/dist/domain/workstation/versions.js +145 -0
- package/dist/domain/workstation/versions.js.map +1 -0
- package/dist/framework-adapters.d.ts +2 -0
- package/dist/framework-adapters.js +148 -22
- package/dist/framework-adapters.js.map +1 -1
- package/dist/framework-validation.d.ts +6 -0
- package/dist/framework-validation.js +89 -24
- package/dist/framework-validation.js.map +1 -1
- package/dist/generators/common/base.js +57 -17
- package/dist/generators/common/base.js.map +1 -1
- package/dist/governance-activation/activation-state.js +39 -7
- package/dist/governance-activation/activation-state.js.map +1 -1
- package/dist/governance-activation/authority-records.d.ts +4 -0
- package/dist/governance-activation/authority-records.js +24 -0
- package/dist/governance-activation/authority-records.js.map +1 -0
- package/dist/governance-activation/commands.d.ts +9 -1
- package/dist/governance-activation/commands.js +392 -97
- package/dist/governance-activation/commands.js.map +1 -1
- package/dist/governance-activation/compatibility.d.ts +11 -8
- package/dist/governance-activation/compatibility.js +37 -23
- package/dist/governance-activation/compatibility.js.map +1 -1
- package/dist/governance-activation/doctor.js +40 -16
- package/dist/governance-activation/doctor.js.map +1 -1
- package/dist/governance-activation/github-config.d.ts +17 -0
- package/dist/governance-activation/github-config.js +88 -0
- package/dist/governance-activation/github-config.js.map +1 -0
- package/dist/governance-activation/github-discovery.d.ts +18 -0
- package/dist/governance-activation/github-discovery.js +229 -0
- package/dist/governance-activation/github-discovery.js.map +1 -0
- package/dist/governance-activation/github-ports.d.ts +12 -0
- package/dist/governance-activation/github-ports.js +4 -0
- package/dist/governance-activation/github-ports.js.map +1 -0
- package/dist/governance-activation/github-publication.d.ts +3 -0
- package/dist/governance-activation/github-publication.js +190 -0
- package/dist/governance-activation/github-publication.js.map +1 -0
- package/dist/governance-activation/historical-common.d.ts +98 -0
- package/dist/governance-activation/historical-common.js +269 -0
- package/dist/governance-activation/historical-common.js.map +1 -0
- package/dist/governance-activation/historical-credential-policy.d.ts +3 -0
- package/dist/governance-activation/historical-credential-policy.js +91 -0
- package/dist/governance-activation/historical-credential-policy.js.map +1 -0
- package/dist/governance-activation/historical-inputs.d.ts +6 -0
- package/dist/governance-activation/historical-inputs.js +57 -0
- package/dist/governance-activation/historical-inputs.js.map +1 -0
- package/dist/governance-activation/historical-safety.d.ts +9 -0
- package/dist/governance-activation/historical-safety.js +102 -0
- package/dist/governance-activation/historical-safety.js.map +1 -0
- package/dist/governance-activation/historical-source-metadata.d.ts +31 -0
- package/dist/governance-activation/historical-source-metadata.js +55 -0
- package/dist/governance-activation/historical-source-metadata.js.map +1 -0
- package/dist/governance-activation/historical-state.d.ts +12 -50
- package/dist/governance-activation/historical-state.js +195 -308
- package/dist/governance-activation/historical-state.js.map +1 -1
- package/dist/governance-activation/historical-v1-auxiliary.d.ts +1 -0
- package/dist/governance-activation/historical-v1-auxiliary.js +43 -0
- package/dist/governance-activation/historical-v1-auxiliary.js.map +1 -0
- package/dist/governance-activation/historical-v1-phase-contracts.d.ts +31 -0
- package/dist/governance-activation/historical-v1-phase-contracts.js +46 -0
- package/dist/governance-activation/historical-v1-phase-contracts.js.map +1 -0
- package/dist/governance-activation/historical-v2.d.ts +53 -0
- package/dist/governance-activation/historical-v2.js +313 -0
- package/dist/governance-activation/historical-v2.js.map +1 -0
- package/dist/governance-activation/history-contracts.d.ts +21 -12
- package/dist/governance-activation/history-contracts.js +99 -27
- package/dist/governance-activation/history-contracts.js.map +1 -1
- package/dist/governance-activation/inputs.d.ts +8 -2
- package/dist/governance-activation/inputs.js +41 -6
- package/dist/governance-activation/inputs.js.map +1 -1
- package/dist/governance-activation/migration-history.d.ts +43 -5
- package/dist/governance-activation/migration-history.js +231 -50
- package/dist/governance-activation/migration-history.js.map +1 -1
- package/dist/governance-activation/migration.d.ts +7 -4
- package/dist/governance-activation/migration.js +53 -252
- package/dist/governance-activation/migration.js.map +1 -1
- package/dist/governance-activation/phase-azure.d.ts +3 -0
- package/dist/governance-activation/phase-azure.js +205 -0
- package/dist/governance-activation/phase-azure.js.map +1 -0
- package/dist/governance-activation/phase-bootstrap-state.js +3 -0
- package/dist/governance-activation/phase-bootstrap-state.js.map +1 -1
- package/dist/governance-activation/phase-github.d.ts +3 -0
- package/dist/governance-activation/phase-github.js +192 -0
- package/dist/governance-activation/phase-github.js.map +1 -0
- package/dist/governance-activation/phase-governance.js +8 -2
- package/dist/governance-activation/phase-governance.js.map +1 -1
- package/dist/governance-activation/public-plans.d.ts +36 -0
- package/dist/governance-activation/public-plans.js +100 -0
- package/dist/governance-activation/public-plans.js.map +1 -0
- package/dist/governance-activation/read-only.d.ts +3 -1
- package/dist/governance-activation/read-only.js +7 -3
- package/dist/governance-activation/read-only.js.map +1 -1
- package/dist/governance-activation/reconciliation.js +10 -0
- package/dist/governance-activation/reconciliation.js.map +1 -1
- package/dist/governance-activation/seed-lifecycle.js +14 -25
- package/dist/governance-activation/seed-lifecycle.js.map +1 -1
- package/dist/governance-activation/source-of-truth.d.ts +21 -5
- package/dist/governance-activation/source-of-truth.js +102 -13
- package/dist/governance-activation/source-of-truth.js.map +1 -1
- package/dist/governance-activation/task-projection.d.ts +4 -1
- package/dist/governance-activation/task-projection.js +32 -3
- package/dist/governance-activation/task-projection.js.map +1 -1
- package/dist/governance-activation/task-writes.d.ts +42 -0
- package/dist/governance-activation/task-writes.js +250 -0
- package/dist/governance-activation/task-writes.js.map +1 -0
- package/dist/governance-activation/transition-files.d.ts +12 -0
- package/dist/governance-activation/transition-files.js +109 -0
- package/dist/governance-activation/transition-files.js.map +1 -0
- package/dist/governance-activation/transition-planning.d.ts +3 -1
- package/dist/governance-activation/transition-planning.js +158 -20
- package/dist/governance-activation/transition-planning.js.map +1 -1
- package/dist/governance-activation/transition-ports.d.ts +31 -3
- package/dist/governance-activation/transition-records.d.ts +11 -1
- package/dist/governance-activation/transition-records.js +52 -6
- package/dist/governance-activation/transition-records.js.map +1 -1
- package/dist/governance-activation/transitions.d.ts +5 -0
- package/dist/governance-activation/transitions.js +271 -37
- package/dist/governance-activation/transitions.js.map +1 -1
- package/dist/governance-assessment/engine.js +22 -15
- package/dist/governance-assessment/engine.js.map +1 -1
- package/dist/governance-assessment/project.d.ts +2 -0
- package/dist/governance-assessment/project.js +2 -1
- package/dist/governance-assessment/project.js.map +1 -1
- package/dist/interactive.d.ts +0 -1
- package/dist/interactive.js +3 -22
- package/dist/interactive.js.map +1 -1
- package/dist/openspec-profile.d.ts +2 -1
- package/dist/openspec-profile.js +11 -41
- package/dist/openspec-profile.js.map +1 -1
- package/dist/repository-governance.d.ts +10 -5
- package/dist/repository-governance.js +178 -92
- package/dist/repository-governance.js.map +1 -1
- package/dist/self-upgrade.d.ts +8 -2
- package/dist/self-upgrade.js +180 -47
- package/dist/self-upgrade.js.map +1 -1
- package/dist/telemetry/contract.d.ts +1 -1
- package/dist/telemetry/contract.js +3 -0
- package/dist/telemetry/contract.js.map +1 -1
- package/dist/workstation-catalog.d.ts +13 -1
- package/dist/workstation-catalog.js +122 -0
- package/dist/workstation-catalog.js.map +1 -1
- package/dist/workstation.d.ts +69 -14
- package/dist/workstation.js +600 -215
- package/dist/workstation.js.map +1 -1
- package/docs/cli-reference.md +69 -22
- package/docs/configuration-and-manifests.md +9 -8
- package/docs/prerequisites.md +93 -18
- package/docs/repository-governance.md +68 -40
- package/docs/spec-workflows-and-agents.md +132 -13
- package/docs/troubleshooting.md +32 -2
- package/package.json +1 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { readProjectFile } from '../adapters/filesystem/project-files.js';
|
|
2
2
|
import { loadActivationState } from './activation-state.js';
|
|
3
3
|
import { credentialPolicyPathParts } from './credentials.js';
|
|
4
|
-
import { selectLatestPhaseEvidence } from '../domain/governance/activation/evidence.js';
|
|
5
|
-
import { activationEvidenceContexts, readActivationInputSnapshot } from './inputs.js';
|
|
4
|
+
import { assertPhaseOutputsBound, selectLatestPhaseEvidence } from '../domain/governance/activation/evidence.js';
|
|
5
|
+
import { activationEvidenceContexts, activationSensitivePathExclusions, readActivationInputSnapshot } from './inputs.js';
|
|
6
6
|
import { readActivationEvidence, readReviewedTransitionPlans } from './read-only.js';
|
|
7
7
|
import { canonicalPhaseGraph, currentActivationIdentity } from '../domain/governance/activation/graph.js';
|
|
8
8
|
import { planHistoricalActivationStateMigration } from './migration.js';
|
|
9
|
-
import {
|
|
9
|
+
import { historicalLifecyclePhaseBlockers, inspectActivationMigrationHistory, planActivationHistoryMigration } from './migration-history.js';
|
|
10
10
|
import { calculatePhaseReadiness } from '../domain/governance/activation/readiness.js';
|
|
11
11
|
import { inspectGovernanceSourceOfTruth } from './source-of-truth.js';
|
|
12
|
-
import { phaseIds } from '../domain/governance/activation/types.js';
|
|
12
|
+
import { phaseIds, phaseScope } from '../domain/governance/activation/types.js';
|
|
13
13
|
import { validateCredentialPolicy } from '../domain/governance/activation/validators.js';
|
|
14
14
|
const terminalEvidenceStates = new Set([
|
|
15
15
|
'verified',
|
|
@@ -45,10 +45,10 @@ function evidenceStaleCheck(state, evidence, contexts) {
|
|
|
45
45
|
return {
|
|
46
46
|
id: 'governance-evidence-stale',
|
|
47
47
|
label: 'governance evidence',
|
|
48
|
-
severity: 'fail',
|
|
48
|
+
severity: stale.some((id) => phaseScope(id) === 'local') ? 'fail' : 'warn',
|
|
49
49
|
state: 'evidence-stale',
|
|
50
50
|
detail: `stored terminal phase(s) lack current authoritative evidence: ${stale.join(', ')}`,
|
|
51
|
-
remedy: '
|
|
51
|
+
remedy: 'Run liftoff governance verify with the affected --scope, then preview a supported transition or repair. Do not hand-create evidence or use checkboxes as proof.'
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
54
|
function phaseBlockedCheck(state) {
|
|
@@ -96,7 +96,7 @@ function disposalPendingCheck(state, now) {
|
|
|
96
96
|
? `retained bootstrap state reached disposal date ${state.bootstrapState.disposeAfter}`
|
|
97
97
|
: `retained bootstrap state is not disposable until ${state.bootstrapState.disposeAfter}`,
|
|
98
98
|
remedy: due
|
|
99
|
-
? '
|
|
99
|
+
? 'Run liftoff governance plan --scope lifecycle, approve its exact fingerprint, then execute the scoped destructive disposal plan.'
|
|
100
100
|
: 'Leave retained local bootstrap state untouched until the disposal date.'
|
|
101
101
|
};
|
|
102
102
|
}
|
|
@@ -114,10 +114,10 @@ async function credentialExpiringCheck(projectRoot, now) {
|
|
|
114
114
|
return {
|
|
115
115
|
id: 'governance-credential-expiring',
|
|
116
116
|
label: 'governance credential',
|
|
117
|
-
severity:
|
|
117
|
+
severity: 'warn',
|
|
118
118
|
state: 'credential-expiring',
|
|
119
119
|
detail: `credential policy status ${policy.status}; rotation due ${policy.rotationDueAt}; expires ${policy.expiresAt}`,
|
|
120
|
-
remedy: '
|
|
120
|
+
remedy: 'Preview the credential-ready phase and use governance credential-enroll with its approved fingerprint and private input; no public credential enrollment/readback workflow is exposed without approved plan fingerprint. Expired cloud credentials do not invalidate unrelated local readiness.'
|
|
121
121
|
};
|
|
122
122
|
}
|
|
123
123
|
export async function governanceDoctorChecks(projectRoot, manifest, now = new Date()) {
|
|
@@ -142,11 +142,11 @@ export async function governanceDoctorChecks(projectRoot, manifest, now = new Da
|
|
|
142
142
|
severity: 'fail',
|
|
143
143
|
state: supported ? 'migration-available' : 'identity-incompatible',
|
|
144
144
|
detail: supported
|
|
145
|
-
? 'Historical activation v1 has a supported history-preserving
|
|
145
|
+
? 'Historical activation v1/v2 has a supported history-preserving v3 successor; existing history is not current execution proof.'
|
|
146
146
|
: history?.status === 'blocked' ? history.issues.join('; ')
|
|
147
147
|
: migration.report.issues[0] ?? 'activation state is not compatible with this Liftoff version',
|
|
148
148
|
remedy: 'Preserve user-owned state and evidence bytes. ' + (migration.report.diagnosticOnly === true
|
|
149
|
-
? 'Historical activation v1 requires liftoff update --check followed by explicit approval of a supported plan; do not reset or retag history.'
|
|
149
|
+
? 'Historical activation v1/v2 requires liftoff update --check followed by explicit approval of a supported plan; do not reset or retag history.'
|
|
150
150
|
: 'The recorded activation format or identity is unsupported or invalid. Use a compatible Liftoff version or restore original state from a trusted backup; do not rewrite identity fields to bypass validation.')
|
|
151
151
|
});
|
|
152
152
|
return checks;
|
|
@@ -177,7 +177,9 @@ export async function governanceDoctorChecks(projectRoot, manifest, now = new Da
|
|
|
177
177
|
});
|
|
178
178
|
return checks;
|
|
179
179
|
}
|
|
180
|
-
const
|
|
180
|
+
const history = await inspectActivationMigrationHistory(projectRoot);
|
|
181
|
+
const journal = history.status === 'committed' ? history.journal : null;
|
|
182
|
+
const historicalLifecycleObligations = history.status === 'committed' ? history.lifecycleObligations : [];
|
|
181
183
|
if (journal) {
|
|
182
184
|
const blocked = journal.revalidation.status !== 'complete';
|
|
183
185
|
checks.push({
|
|
@@ -186,9 +188,19 @@ export async function governanceDoctorChecks(projectRoot, manifest, now = new Da
|
|
|
186
188
|
severity: blocked ? 'fail' : 'ok',
|
|
187
189
|
state: blocked ? 'revalidation-blocked' : 'migration-committed',
|
|
188
190
|
detail: blocked
|
|
189
|
-
? `Local
|
|
190
|
-
: 'Local
|
|
191
|
-
...(blocked ? { remedy: 'Repair the named blocker, run liftoff update --check, and approve the remaining local work. Keep
|
|
191
|
+
? `Local v3 migration committed; revalidation is ${journal.revalidation.status}: ${journal.revalidation.nextAction}`
|
|
192
|
+
: 'Local v3 migration and its approved local revalidation are complete; preserved v1/v2 history is informational, not live governance proof.',
|
|
193
|
+
...(blocked ? { remedy: 'Repair the named blocker, run liftoff update --check, and approve the remaining local work. Keep v3 and its preserved history.' } : {})
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
for (const obligation of historicalLifecycleObligations) {
|
|
197
|
+
checks.push({
|
|
198
|
+
id: `governance-historical-lifecycle-${obligation.snapshotId}`,
|
|
199
|
+
label: 'historical bootstrap lifecycle', severity: 'warn', state: 'current-binding-required',
|
|
200
|
+
detail: obligation.retention.status === 'disposed'
|
|
201
|
+
? 'Historical bootstrap material was disposed; migration must not recreate it or its keys.'
|
|
202
|
+
: `Historical bootstrap retention remains due at ${obligation.retention.disposeAfter}; identity migration does not restart its clock.`,
|
|
203
|
+
remedy: 'Use separately authorized lifecycle verification and ownership binding; historical proof alone cannot authorize reuse or deletion.'
|
|
192
204
|
});
|
|
193
205
|
}
|
|
194
206
|
let evidence;
|
|
@@ -259,7 +271,9 @@ export async function governanceDoctorChecks(projectRoot, manifest, now = new Da
|
|
|
259
271
|
}
|
|
260
272
|
return checks;
|
|
261
273
|
}
|
|
262
|
-
|
|
274
|
+
assertPhaseOutputsBound(state, evidence);
|
|
275
|
+
const sensitivePathExclusions = activationSensitivePathExclusions(state, historicalLifecycleObligations.map((obligation) => obligation.retention));
|
|
276
|
+
const contexts = activationEvidenceContexts(canonicalPhaseGraph, state, await readActivationInputSnapshot(projectRoot, manifest, undefined, { sensitivePathExclusions }), now);
|
|
263
277
|
const reviewedPlans = await readReviewedTransitionPlans(projectRoot);
|
|
264
278
|
for (const phase of phaseIds)
|
|
265
279
|
contexts[phase].reviewedPlans = reviewedPlans;
|
|
@@ -300,6 +314,9 @@ export async function governanceDoctorChecks(projectRoot, manifest, now = new Da
|
|
|
300
314
|
approvals: [],
|
|
301
315
|
evidence,
|
|
302
316
|
transitionContexts: contexts,
|
|
317
|
+
scope: 'local',
|
|
318
|
+
phaseBlockers: historicalLifecyclePhaseBlockers(historicalLifecycleObligations),
|
|
319
|
+
historicalLifecycleBlockers: historicalLifecyclePhaseBlockers(historicalLifecycleObligations)['bootstrap-state-disposed'],
|
|
303
320
|
now
|
|
304
321
|
});
|
|
305
322
|
if (!readiness.identityCompatible) {
|
|
@@ -312,6 +329,13 @@ export async function governanceDoctorChecks(projectRoot, manifest, now = new Da
|
|
|
312
329
|
remedy: 'Upgrade Liftoff or restore a supported tuple and recognized phase graph hash.'
|
|
313
330
|
});
|
|
314
331
|
}
|
|
332
|
+
if (readiness.completion.local) {
|
|
333
|
+
checks.push({
|
|
334
|
+
id: 'governance-local-ready', label: 'local setup', severity: 'ok', state: 'local-ready',
|
|
335
|
+
detail: 'The current local seed validation, application baseline, and workflow-specific finalization are complete.',
|
|
336
|
+
remedy: 'Use liftoff governance plan --scope activation for separately approved publication, cloud, and governance work.'
|
|
337
|
+
});
|
|
338
|
+
}
|
|
315
339
|
for (const check of [
|
|
316
340
|
evidenceStaleCheck(state, evidence, contexts),
|
|
317
341
|
phaseBlockedCheck(state),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/governance-activation/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/governance-activation/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PhaseId, TransitionOperation } from '../domain/governance/activation/types.js';
|
|
2
|
+
import type { GovernanceTransitionInspection, PhaseAdapterExecutionInput, PhasePlanningInput } from './transition-ports.js';
|
|
3
|
+
import { GitHubActivationClient } from '../adapters/github/activation-rest.js';
|
|
4
|
+
export declare function clientFor(input: PhasePlanningInput | PhaseAdapterExecutionInput): GitHubActivationClient;
|
|
5
|
+
export declare function phaseConfiguration(inspection: GovernanceTransitionInspection, phaseId: PhaseId, keys: readonly string[]): Record<string, unknown>;
|
|
6
|
+
export declare function repositoryConfiguration(inspection: GovernanceTransitionInspection): {
|
|
7
|
+
name: string;
|
|
8
|
+
defaultBranch: string;
|
|
9
|
+
visibility: 'private' | 'public';
|
|
10
|
+
create: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare function sourceSha(value: unknown, label?: string): string;
|
|
13
|
+
export declare function digest(value: unknown, label?: string): string;
|
|
14
|
+
export declare function ownedPath(value: unknown, label: string): string;
|
|
15
|
+
export declare function verifiedOutput(inspection: GovernanceTransitionInspection, phase: PhaseId, key: string): string | number | boolean | null;
|
|
16
|
+
export declare function githubOperation(input: PhasePlanningInput, actionId: string, mutationClass: TransitionOperation['mutationClass'], inputs: Record<string, unknown>, destination?: TransitionOperation['destination'], effects?: TransitionOperation['effects']): TransitionOperation;
|
|
17
|
+
export declare function assertGitHubAuthorized(input: PhaseAdapterExecutionInput, operation: TransitionOperation): Promise<void>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { canonicalSha256 } from '../domain/governance/activation/canonical-json.js';
|
|
2
|
+
import { canonicalApprovalEnvelopeHash } from '../domain/governance/activation/approvals.js';
|
|
3
|
+
import { createGitHubCliTransport, GitHubActivationClient, GitHubActivationError, githubRef, githubRepository, object, text } from '../adapters/github/activation-rest.js';
|
|
4
|
+
import { githubPorts } from './github-ports.js';
|
|
5
|
+
export function clientFor(input) {
|
|
6
|
+
return new GitHubActivationClient(githubPorts(input).transport ?? createGitHubCliTransport(input.runner, input.inspection.projectRoot));
|
|
7
|
+
}
|
|
8
|
+
export function phaseConfiguration(inspection, phaseId, keys) {
|
|
9
|
+
const config = object(inspection.activationInputs?.phases[phaseId] ?? {}, `${phaseId} configuration`);
|
|
10
|
+
if (Object.keys(config).some((key) => !keys.includes(key))) {
|
|
11
|
+
throw new GitHubActivationError('invalid-configuration', `${phaseId} configuration has unknown keys. Only the documented declarative inputs are allowed; commands and guessed targets are forbidden.`);
|
|
12
|
+
}
|
|
13
|
+
return config;
|
|
14
|
+
}
|
|
15
|
+
export function repositoryConfiguration(inspection) {
|
|
16
|
+
const config = inspection.activationInputs?.repository;
|
|
17
|
+
const fallback = inspection.state.remoteBinding?.name ?? inspection.state.repository.name;
|
|
18
|
+
const rawName = config?.name ?? (fallback.includes('/') ? fallback : `owner/${fallback}`);
|
|
19
|
+
const name = githubRepository(rawName);
|
|
20
|
+
const bound = inspection.state.remoteBinding;
|
|
21
|
+
if (bound && bound.name.toLowerCase() !== name.toLowerCase()) {
|
|
22
|
+
throw new GitHubActivationError('repository-drift', 'The configured GitHub repository differs from the verified publication binding. Review repository reconciliation first.');
|
|
23
|
+
}
|
|
24
|
+
if (config?.defaultBranch !== undefined && config.defaultBranch !== 'develop') {
|
|
25
|
+
throw new GitHubActivationError('policy-default-branch', 'The single-maintainer GitFlow policy requires develop as the default branch; reconcile an existing nonconforming default explicitly.');
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
name, defaultBranch: githubRef(config?.defaultBranch ?? 'develop'),
|
|
29
|
+
visibility: config?.visibility ?? 'private', create: config?.create === true
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function sourceSha(value, label = 'Reviewed source SHA') {
|
|
33
|
+
const sha = text(value, label);
|
|
34
|
+
if (!/^[a-f0-9]{40}$/u.test(sha))
|
|
35
|
+
throw new GitHubActivationError('source-required', `${label} must be an actual full Git commit SHA.`);
|
|
36
|
+
return sha;
|
|
37
|
+
}
|
|
38
|
+
export function digest(value, label = 'Artifact digest') {
|
|
39
|
+
const result = text(value, label);
|
|
40
|
+
if (!/^sha256:[a-f0-9]{64}$/u.test(result))
|
|
41
|
+
throw new GitHubActivationError('digest-required', `${label} must be an immutable sha256 digest.`);
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
export function ownedPath(value, label) {
|
|
45
|
+
const result = text(value, label);
|
|
46
|
+
if (!/^[A-Za-z0-9_.-]+(?:\/[A-Za-z0-9_.-]+)*$/u.test(result) ||
|
|
47
|
+
result.split('/').some((part) => part === '.' || part === '..' || part === '.git') ||
|
|
48
|
+
result.startsWith('governance/') || /(?:^|\/)(?:\.env|.*\.tfstate)(?:$|\.)/u.test(result)) {
|
|
49
|
+
throw new GitHubActivationError('unsafe-path', `${label} must be an explicitly approved project-relative non-sensitive file path.`);
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
export function verifiedOutput(inspection, phase, key) {
|
|
54
|
+
const state = inspection.state.phases[phase];
|
|
55
|
+
const output = inspection.state.phaseOutputs?.[phase];
|
|
56
|
+
if (!state || !['verified', 'retained'].includes(state.state) || !output || !(key in output.values)) {
|
|
57
|
+
throw new GitHubActivationError('predecessor-required', `A current verified ${phase} output named ${key} is required; user assertions are not provider proof.`);
|
|
58
|
+
}
|
|
59
|
+
return output.values[key];
|
|
60
|
+
}
|
|
61
|
+
export function githubOperation(input, actionId, mutationClass, inputs, destination, effects) {
|
|
62
|
+
const repository = repositoryConfiguration(input.inspection).name;
|
|
63
|
+
return {
|
|
64
|
+
phaseId: input.phase.id, adapter: 'github', actionId, mutationClass, inputs,
|
|
65
|
+
destination: destination ?? { type: 'repository', identity: repository, repository },
|
|
66
|
+
remote: true, destructive: false, ...(effects?.length ? { effects } : {})
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export async function assertGitHubAuthorized(input, operation) {
|
|
70
|
+
await input.lease?.assertHeld();
|
|
71
|
+
const now = input.clock?.() ?? input.now;
|
|
72
|
+
if (!input.plan.operations.some((planned) => canonicalSha256(planned) === canonicalSha256(operation)) ||
|
|
73
|
+
operation.phaseId !== input.phase.id || input.plan.phaseId !== input.phase.id ||
|
|
74
|
+
input.plan.scope !== 'activation' || Date.parse(input.plan.expiresAt) <= now.getTime()) {
|
|
75
|
+
throw new GitHubActivationError('stale-approval', 'The exact GitHub operation is absent from the reviewed activation plan, has changed, or has expired.');
|
|
76
|
+
}
|
|
77
|
+
if (input.plan.configuration && canonicalSha256(input.plan.configuration) !== canonicalSha256(input.inspection.activationInputs)) {
|
|
78
|
+
throw new GitHubActivationError('stale-configuration', 'Activation configuration changed after review.');
|
|
79
|
+
}
|
|
80
|
+
if (!input.phase.approvalGate.required)
|
|
81
|
+
return;
|
|
82
|
+
const envelope = input.inspection.approvals.find((entry) => entry.id === input.plan.approval.envelopeId);
|
|
83
|
+
if (!envelope || Date.parse(envelope.expiresAt) <= now.getTime() || Date.parse(envelope.approvedAt) > now.getTime() ||
|
|
84
|
+
canonicalApprovalEnvelopeHash(envelope) !== input.plan.approval.envelopeHash) {
|
|
85
|
+
throw new GitHubActivationError('approval-required', 'The phase-specific GitHub approval is missing, changed, or expired immediately before mutation.');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=github-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-config.js","sourceRoot":"","sources":["../../src/governance-activation/github-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { GovernanceTransitionInspection, PhaseAdapterExecutionInput, PhaseAdapterOutcome, PhasePlanningInput } from './transition-ports.js';
|
|
2
|
+
import { githubOperation } from './github-config.js';
|
|
3
|
+
interface DiscoveryObservation {
|
|
4
|
+
status: 'observed' | 'unknown';
|
|
5
|
+
values?: unknown;
|
|
6
|
+
prerequisite?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function classifyGitHubWorkload(inspection: GovernanceTransitionInspection): Promise<Record<string, unknown>>;
|
|
9
|
+
export declare function observeGitHubPhase0(input: PhasePlanningInput | PhaseAdapterExecutionInput): Promise<{
|
|
10
|
+
repository: Record<string, unknown>;
|
|
11
|
+
workload: Record<string, unknown>;
|
|
12
|
+
observations: Record<string, DiscoveryObservation>;
|
|
13
|
+
}>;
|
|
14
|
+
export declare function planGitHubDiscovery(input: PhasePlanningInput): Promise<{
|
|
15
|
+
operations: readonly ReturnType<typeof githubOperation>[];
|
|
16
|
+
}>;
|
|
17
|
+
export declare function executeGitHubDiscovery(input: PhaseAdapterExecutionInput): Promise<PhaseAdapterOutcome>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { parseDocument } from 'yaml';
|
|
2
|
+
import { canonicalSha256 } from '../domain/governance/activation/canonical-json.js';
|
|
3
|
+
import { readProjectFile } from '../adapters/filesystem/project-files.js';
|
|
4
|
+
import { GitHubActivationError, githubRef, object, positiveId, safeGitHubFailure, text } from '../adapters/github/activation-rest.js';
|
|
5
|
+
import { cloneState, readbackProof } from './transition-records.js';
|
|
6
|
+
import { clientFor, githubOperation, repositoryConfiguration, sourceSha } from './github-config.js';
|
|
7
|
+
import { inspectGitRepository, reviewedPushUrl } from './phase-publication.js';
|
|
8
|
+
import { githubRepositoryFromPushUrl } from '../domain/governance/activation/inputs.js';
|
|
9
|
+
export async function classifyGitHubWorkload(inspection) {
|
|
10
|
+
const workload = inspection.manifest.project.workload;
|
|
11
|
+
const stack = workload.apiStack;
|
|
12
|
+
const paths = stack === 'node-fastify' ? ['backend/package.json', 'backend/package-lock.json'] :
|
|
13
|
+
stack === 'python-fastapi' ? ['backend/pyproject.toml', 'backend/uv.lock'] : ['backend/go.mod', 'backend/go.sum'];
|
|
14
|
+
const files = [];
|
|
15
|
+
const missing = [];
|
|
16
|
+
for (const path of paths) {
|
|
17
|
+
const bytes = await readProjectFile(inspection.projectRoot, path.split('/'));
|
|
18
|
+
if (!bytes) {
|
|
19
|
+
missing.push(path);
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
files.push({ path, digest: canonicalSha256(bytes.toString('base64')) });
|
|
23
|
+
}
|
|
24
|
+
let commands;
|
|
25
|
+
if (stack === 'node-fastify') {
|
|
26
|
+
const bytes = await readProjectFile(inspection.projectRoot, ['backend', 'package.json']);
|
|
27
|
+
const packageJson = bytes ? object(JSON.parse(bytes.toString('utf8')), 'Workload package.json') : {};
|
|
28
|
+
const scripts = object(packageJson.scripts ?? {}, 'Workload scripts');
|
|
29
|
+
for (const id of ['build', 'test'])
|
|
30
|
+
if (typeof scripts[id] !== 'string' || !scripts[id])
|
|
31
|
+
missing.push(`backend/package.json scripts.${id}`);
|
|
32
|
+
commands = { build: ['npm', '--prefix', 'backend', 'run', 'build'], test: ['npm', '--prefix', 'backend', 'test'] };
|
|
33
|
+
}
|
|
34
|
+
else if (stack === 'python-fastapi') {
|
|
35
|
+
commands = { build: ['uv', 'sync', '--frozen', '--project', 'backend'], test: ['uv', 'run', '--project', 'backend', 'pytest'] };
|
|
36
|
+
}
|
|
37
|
+
else if (stack === 'go-huma') {
|
|
38
|
+
commands = { build: ['go', '-C', 'backend', 'build', './...'], test: ['go', '-C', 'backend', 'test', './...'] };
|
|
39
|
+
}
|
|
40
|
+
else
|
|
41
|
+
throw new GitHubActivationError('unsupported-workload', 'Activation supports the recorded node-fastify, python-fastapi, and go-huma container workloads; an unknown workload needs an explicit producer recipe.');
|
|
42
|
+
const dockerfiles = inspection.manifest.projectArtifacts.filter((artifact) => artifact.pathParts.at(-1) === 'Dockerfile' && artifact.pathParts[0] !== 'frontend');
|
|
43
|
+
const containers = [];
|
|
44
|
+
for (const artifact of dockerfiles) {
|
|
45
|
+
const bytes = await readProjectFile(inspection.projectRoot, [...artifact.pathParts]);
|
|
46
|
+
if (bytes)
|
|
47
|
+
containers.push({ path: artifact.pathParts.join('/'), digest: canonicalSha256(bytes.toString('base64')) });
|
|
48
|
+
}
|
|
49
|
+
if (!containers.length)
|
|
50
|
+
missing.push('recorded application Dockerfile');
|
|
51
|
+
return {
|
|
52
|
+
artifactKind: containers.length ? 'container-image' : 'unknown', stack, kind: workload.kind,
|
|
53
|
+
environments: workload.environments, frontend: workload.frontend, files, containers, commands,
|
|
54
|
+
commandsExecutedByDiscovery: false,
|
|
55
|
+
localBaseline: inspection.state.phases['seed-verified'].state === 'verified' ? 'verified-predecessor' : 'not-current',
|
|
56
|
+
healthDepth: 'requires-deployment-probe', missing
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async function observed(probe) {
|
|
60
|
+
try {
|
|
61
|
+
return { status: 'observed', values: await probe() };
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
return { status: 'unknown', prerequisite: safeGitHubFailure(error) };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function project(row, fields) {
|
|
68
|
+
return Object.fromEntries(fields.filter((field) => field in row).map((field) => [field, row[field]]));
|
|
69
|
+
}
|
|
70
|
+
async function readWorkflowSource(client, repository, path, ref) {
|
|
71
|
+
if (!/^\.github\/workflows\/[A-Za-z0-9_.-]+\.ya?ml$/u.test(path)) {
|
|
72
|
+
throw new GitHubActivationError('workflow-source', 'A listed workflow has an unsupported source path; source coverage is unknown.');
|
|
73
|
+
}
|
|
74
|
+
const response = await client.get(`/repos/${repository}/contents/${path}?ref=${ref}`);
|
|
75
|
+
if (response.encoding !== 'base64' || typeof response.content !== 'string' || Number(response.size) > 256 * 1024) {
|
|
76
|
+
throw new GitHubActivationError('workflow-source', 'The listed workflow source is unavailable or exceeds the inspection bound.');
|
|
77
|
+
}
|
|
78
|
+
const bytes = Buffer.from(response.content, 'base64');
|
|
79
|
+
const document = parseDocument(bytes.toString('utf8'), { uniqueKeys: true, maxAliasCount: 0 });
|
|
80
|
+
if (document.errors.length)
|
|
81
|
+
throw new GitHubActivationError('workflow-source', 'The listed workflow contains invalid YAML.');
|
|
82
|
+
const source = object(document.toJS({ maxAliasCount: 0 }), 'Workflow');
|
|
83
|
+
const jobs = object(source.jobs, 'Workflow jobs');
|
|
84
|
+
return {
|
|
85
|
+
path, digest: canonicalSha256(bytes.toString('base64')),
|
|
86
|
+
jobs: Object.entries(jobs).map(([id, value]) => ({ id, name: String(object(value).name ?? id).slice(0, 200) }))
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export async function observeGitHubPhase0(input) {
|
|
90
|
+
const config = repositoryConfiguration(input.inspection);
|
|
91
|
+
const client = clientFor(input);
|
|
92
|
+
const repo = await client.get(`/repos/${config.name}`);
|
|
93
|
+
if (repo.full_name !== config.name || input.inspection.state.remoteBinding?.id !== String(repo.id)) {
|
|
94
|
+
throw new GitHubActivationError('phase0-binding', 'Phase 0 repository identity differs from independently verified publication.');
|
|
95
|
+
}
|
|
96
|
+
const workload = await classifyGitHubWorkload(input.inspection);
|
|
97
|
+
const repository = {
|
|
98
|
+
id: positiveId(repo.id), name: config.name, defaultBranch: githubRef(repo.default_branch), private: repo.private,
|
|
99
|
+
owner: project(object(repo.owner), ['login', 'type', 'id']),
|
|
100
|
+
permissions: project(object(repo.permissions ?? {}), ['admin', 'push', 'pull', 'maintain']),
|
|
101
|
+
security: repo.security_and_analysis ? Object.fromEntries(Object.entries(object(repo.security_and_analysis)).map(([key, value]) => [key, project(object(value), ['status'])])) : null
|
|
102
|
+
};
|
|
103
|
+
const branches = [];
|
|
104
|
+
const observations = {};
|
|
105
|
+
observations.branches = await observed(async () => {
|
|
106
|
+
branches.push(...await client.list(`/repos/${config.name}/branches`));
|
|
107
|
+
return branches.map((branch) => ({ name: text(branch.name, 'Branch name'), sha: sourceSha(object(branch.commit).sha), protected: branch.protected }));
|
|
108
|
+
});
|
|
109
|
+
const probes = [
|
|
110
|
+
['identity', async () => project(await client.get('/user'), ['id', 'login', 'type'])],
|
|
111
|
+
['workflows', async () => {
|
|
112
|
+
const workflows = await client.list(`/repos/${config.name}/actions/workflows`, 'workflows');
|
|
113
|
+
return Promise.all(workflows.map(async (workflow) => ({
|
|
114
|
+
...project(workflow, ['id', 'name', 'path', 'state']),
|
|
115
|
+
source: await readWorkflowSource(client, config.name, text(workflow.path, 'Workflow path'), String(repo.default_branch))
|
|
116
|
+
})));
|
|
117
|
+
}],
|
|
118
|
+
['rulesets', async () => {
|
|
119
|
+
const rulesets = await client.list(`/repos/${config.name}/rulesets?includes_parents=true`);
|
|
120
|
+
const result = [];
|
|
121
|
+
for (const rule of rulesets) {
|
|
122
|
+
const summary = project(rule, ['id', 'name', 'source_type', 'source', 'target', 'enforcement']);
|
|
123
|
+
if (rule.source_type === 'Repository') {
|
|
124
|
+
const payload = await client.get(`/repos/${config.name}/rulesets/${positiveId(rule.id)}`);
|
|
125
|
+
result.push({ ...summary, payload: project(payload, ['bypass_actors', 'conditions', 'rules']) });
|
|
126
|
+
}
|
|
127
|
+
else
|
|
128
|
+
result.push({ ...summary, ownership: 'external-inherited-control-not-modifiable' });
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
}],
|
|
132
|
+
['tags', async () => (await client.list(`/repos/${config.name}/tags`)).map((tag) => ({ name: text(tag.name, 'Tag name'), sha: sourceSha(object(tag.commit).sha) }))],
|
|
133
|
+
['releases', async () => (await client.list(`/repos/${config.name}/releases`)).map((release) => project(release, ['id', 'tag_name', 'target_commitish', 'draft', 'prerelease', 'published_at']))],
|
|
134
|
+
['environments', async () => {
|
|
135
|
+
const environments = await client.list(`/repos/${config.name}/environments`, 'environments');
|
|
136
|
+
return environments.map((environment) => ({
|
|
137
|
+
...project(environment, ['id', 'name', 'deployment_branch_policy']),
|
|
138
|
+
protectionRules: Array.isArray(environment.protection_rules) ? environment.protection_rules.map((value) => {
|
|
139
|
+
const rule = object(value);
|
|
140
|
+
return { type: rule.type, reviewers: Array.isArray(rule.reviewers) ? rule.reviewers.length : 0, waitTimer: rule.wait_timer ?? 0 };
|
|
141
|
+
}) : null
|
|
142
|
+
}));
|
|
143
|
+
}],
|
|
144
|
+
['deployments', async () => (await client.list(`/repos/${config.name}/deployments`)).map((deployment) => project(deployment, ['id', 'sha', 'ref', 'environment', 'transient_environment', 'production_environment', 'created_at']))],
|
|
145
|
+
['actionsPermissions', async () => ({
|
|
146
|
+
actions: project(await client.get(`/repos/${config.name}/actions/permissions`), ['enabled', 'allowed_actions']),
|
|
147
|
+
token: project(await client.get(`/repos/${config.name}/actions/permissions/workflow`), ['default_workflow_permissions', 'can_approve_pull_request_reviews'])
|
|
148
|
+
})],
|
|
149
|
+
['codeScanning', async () => {
|
|
150
|
+
const alerts = await client.list(`/repos/${config.name}/code-scanning/alerts?state=open`);
|
|
151
|
+
return { openAlerts: alerts.length, tools: [...new Set(alerts.map((alert) => String(object(alert.tool).name)))] };
|
|
152
|
+
}],
|
|
153
|
+
['secretProtection', async () => ({
|
|
154
|
+
openAlerts: (await client.list(`/repos/${config.name}/secret-scanning/alerts?state=open`)).length,
|
|
155
|
+
configuration: repository.security
|
|
156
|
+
})],
|
|
157
|
+
['dependencySecurity', async () => ({ openAlerts: (await client.list(`/repos/${config.name}/dependabot/alerts?state=open`)).length })],
|
|
158
|
+
['runners', async () => ({
|
|
159
|
+
hosted: (await client.list(`/orgs/${config.name.split('/')[0]}/actions/hosted-runners`, 'runners')).map((runner) => project(runner, ['id', 'name', 'runner_group_id', 'image_details', 'machine_size_details', 'status', 'maximum_runners', 'public_ip_enabled'])),
|
|
160
|
+
groups: (await client.list(`/orgs/${config.name.split('/')[0]}/actions/runner-groups?visible_to_repository=${config.name.split('/')[1]}`, 'runner_groups')).map((group) => project(group, ['id', 'name', 'visibility', 'network_configuration_id', 'restricted_to_workflows', 'selected_workflows', 'inherited', 'allows_public_repositories']))
|
|
161
|
+
})],
|
|
162
|
+
['networkConfigurations', async () => (await client.list(`/orgs/${config.name.split('/')[0]}/settings/network-configurations`, 'network_configurations')).map((network) => project(network, ['id', 'name', 'compute_service', 'network_settings_ids']))]
|
|
163
|
+
];
|
|
164
|
+
// Bounded sequential reads avoid rate-limit spikes; each inventory has its own completeness outcome.
|
|
165
|
+
for (const [name, probe] of probes)
|
|
166
|
+
observations[name] = await observed(probe);
|
|
167
|
+
observations.contexts = await observed(async () => {
|
|
168
|
+
if (observations.branches.status !== 'observed')
|
|
169
|
+
throw new GitHubActivationError('branches-unknown', 'Branches are unreadable; required-context coverage cannot be inferred.');
|
|
170
|
+
const result = [];
|
|
171
|
+
for (const branch of branches.filter((branch) => /^(?:develop|main|release\/.+|hotfix\/.+)$/u.test(String(branch.name)))) {
|
|
172
|
+
const sha = sourceSha(object(branch.commit).sha);
|
|
173
|
+
const checks = await client.list(`/repos/${config.name}/commits/${sha}/check-runs?filter=latest`, 'check_runs');
|
|
174
|
+
result.push({
|
|
175
|
+
ref: branch.name, sha, checks: checks.map((check) => ({
|
|
176
|
+
...project(check, ['id', 'name', 'status', 'conclusion', 'head_sha']),
|
|
177
|
+
appId: positiveId(object(check.app).id), appSlug: object(check.app).slug
|
|
178
|
+
}))
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
return result;
|
|
182
|
+
});
|
|
183
|
+
return { repository, workload, observations };
|
|
184
|
+
}
|
|
185
|
+
export async function planGitHubDiscovery(input) {
|
|
186
|
+
let repository;
|
|
187
|
+
try {
|
|
188
|
+
const git = await inspectGitRepository(input.inspection.projectRoot, input.runner);
|
|
189
|
+
repository = githubRepositoryFromPushUrl(reviewedPushUrl(git));
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
repository = repositoryConfiguration(input.inspection).name;
|
|
193
|
+
}
|
|
194
|
+
return { operations: [githubOperation(input, 'github.phase0.discover', 'github-read', {
|
|
195
|
+
repository, coverage: ['source', 'branches', 'contexts', 'workflows', 'rulesets', 'tags', 'releases', 'environments',
|
|
196
|
+
'deployments', 'security', 'actions-permissions', 'identity', 'runners', 'network-configurations']
|
|
197
|
+
}, { type: 'repository', identity: repository, repository })] };
|
|
198
|
+
}
|
|
199
|
+
export async function executeGitHubDiscovery(input) {
|
|
200
|
+
const report = await observeGitHubPhase0(input);
|
|
201
|
+
const facts = [
|
|
202
|
+
{ id: 'repository.id', value: String(report.repository.id) },
|
|
203
|
+
{ id: 'repository.nameWithOwner', value: String(report.repository.name) },
|
|
204
|
+
{ id: 'repository.defaultBranch', value: String(report.repository.defaultBranch) },
|
|
205
|
+
{ id: 'repository.isPrivate', value: Boolean(report.repository.private) }
|
|
206
|
+
];
|
|
207
|
+
const state = cloneState(input.inspection.state);
|
|
208
|
+
// Azure/state applicability is deliberately left to its independent producer.
|
|
209
|
+
const resourceId = `/repos/${report.repository.name}`;
|
|
210
|
+
const unknown = Object.entries(report.observations).filter(([, value]) => value.status === 'unknown').map(([name]) => name);
|
|
211
|
+
const missing = report.workload.missing;
|
|
212
|
+
const mandatory = unknown.filter((name) => !['runners', 'networkConfigurations'].includes(name));
|
|
213
|
+
if (mandatory.length || missing.length) {
|
|
214
|
+
return {
|
|
215
|
+
status: 'blocked', completedOperations: input.plan.operations.filter((entry) => entry.actionId === 'github.phase0.discover'),
|
|
216
|
+
blocker: `Phase 0 has incomplete authoritative GitHub coverage: ${[...mandatory, ...missing].join(', ')}. Grant the named read capabilities or prepare the exact missing workload inputs; no unknown was treated as absent.`,
|
|
217
|
+
evidencePayload: { kind: 'phase-0-discovery.v1', facts, github: report }
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
status: 'completed', resultState: 'verified', stateOverride: state,
|
|
222
|
+
completedOperations: input.plan.operations.filter((entry) => entry.actionId === 'github.phase0.discover'),
|
|
223
|
+
evidencePayload: { kind: 'phase-0-discovery.v1', facts, github: report },
|
|
224
|
+
outputs: { values: { repositoryId: Number(report.repository.id), repository: String(report.repository.name), workload: String(report.workload.stack),
|
|
225
|
+
githubCoverageComplete: unknown.length === 0 }, resources: [{ provider: 'github', resourceType: 'repository', resourceId }] },
|
|
226
|
+
liveReadback: [readbackProof(input, 'github', 'repository', resourceId, report)]
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=github-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-discovery.js","sourceRoot":"","sources":["../../src/governance-activation/github-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { GitHubActivationTransport } from '../adapters/github/activation-rest.js';
|
|
2
|
+
import type { ProtectedCredentialChannel } from '../adapters/credentials/protected-input.js';
|
|
3
|
+
import type { GitHubSecretWriter } from '../adapters/credentials/github-enrollment.js';
|
|
4
|
+
import type { PhaseAdapterExecutionInput, PhasePlanningInput } from './transition-ports.js';
|
|
5
|
+
export interface GitHubActivationPorts {
|
|
6
|
+
transport?: GitHubActivationTransport;
|
|
7
|
+
protectedCredentialChannel?: ProtectedCredentialChannel;
|
|
8
|
+
credentialTransport?: (credential: Uint8Array) => GitHubActivationTransport;
|
|
9
|
+
secretWriter?: GitHubSecretWriter;
|
|
10
|
+
pollAttempts?: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function githubPorts(input: PhasePlanningInput | PhaseAdapterExecutionInput): GitHubActivationPorts;
|