@msn-control/liftoff 0.9.9 → 0.10.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 +142 -0
- package/README.md +26 -18
- package/assets/governance/single-maintainer-gitflow/policy.md +13 -11
- package/dist/args.js +23 -1
- package/dist/args.js.map +1 -1
- package/dist/artifact-lifecycle.d.ts +1 -1
- package/dist/artifact-lifecycle.js +5 -0
- package/dist/artifact-lifecycle.js.map +1 -1
- package/dist/catalogs.d.ts +2 -0
- package/dist/catalogs.js +13 -1
- package/dist/catalogs.js.map +1 -1
- package/dist/commands.js +365 -17
- package/dist/commands.js.map +1 -1
- package/dist/file-system.js +100 -13
- package/dist/file-system.js.map +1 -1
- package/dist/governance-activation/activation-state.d.ts +32 -0
- package/dist/governance-activation/activation-state.js +165 -0
- package/dist/governance-activation/activation-state.js.map +1 -0
- package/dist/governance-activation/approvals.d.ts +188 -0
- package/dist/governance-activation/approvals.js +508 -0
- package/dist/governance-activation/approvals.js.map +1 -0
- package/dist/governance-activation/canonical-json.d.ts +3 -0
- package/dist/governance-activation/canonical-json.js +36 -0
- package/dist/governance-activation/canonical-json.js.map +1 -0
- package/dist/governance-activation/commands.d.ts +10 -0
- package/dist/governance-activation/commands.js +1023 -0
- package/dist/governance-activation/commands.js.map +1 -0
- package/dist/governance-activation/compatibility.d.ts +68 -0
- package/dist/governance-activation/compatibility.js +447 -0
- package/dist/governance-activation/compatibility.js.map +1 -0
- package/dist/governance-activation/credentials.d.ts +160 -0
- package/dist/governance-activation/credentials.js +403 -0
- package/dist/governance-activation/credentials.js.map +1 -0
- package/dist/governance-activation/doctor.d.ts +10 -0
- package/dist/governance-activation/doctor.js +379 -0
- package/dist/governance-activation/doctor.js.map +1 -0
- package/dist/governance-activation/evidence.d.ts +49 -0
- package/dist/governance-activation/evidence.js +246 -0
- package/dist/governance-activation/evidence.js.map +1 -0
- package/dist/governance-activation/graph.d.ts +397 -0
- package/dist/governance-activation/graph.js +441 -0
- package/dist/governance-activation/graph.js.map +1 -0
- package/dist/governance-activation/identity.d.ts +35 -0
- package/dist/governance-activation/identity.js +89 -0
- package/dist/governance-activation/identity.js.map +1 -0
- package/dist/governance-activation/index.d.ts +18 -0
- package/dist/governance-activation/index.js +19 -0
- package/dist/governance-activation/index.js.map +1 -0
- package/dist/governance-activation/migration.d.ts +44 -0
- package/dist/governance-activation/migration.js +268 -0
- package/dist/governance-activation/migration.js.map +1 -0
- package/dist/governance-activation/readiness.d.ts +23 -0
- package/dist/governance-activation/readiness.js +158 -0
- package/dist/governance-activation/readiness.js.map +1 -0
- package/dist/governance-activation/reconciliation.d.ts +11 -0
- package/dist/governance-activation/reconciliation.js +58 -0
- package/dist/governance-activation/reconciliation.js.map +1 -0
- package/dist/governance-activation/release-integrity.d.ts +11 -0
- package/dist/governance-activation/release-integrity.js +49 -0
- package/dist/governance-activation/release-integrity.js.map +1 -0
- package/dist/governance-activation/seed-lifecycle.d.ts +116 -0
- package/dist/governance-activation/seed-lifecycle.js +609 -0
- package/dist/governance-activation/seed-lifecycle.js.map +1 -0
- package/dist/governance-activation/source-of-truth.d.ts +164 -0
- package/dist/governance-activation/source-of-truth.js +986 -0
- package/dist/governance-activation/source-of-truth.js.map +1 -0
- package/dist/governance-activation/task-projection.d.ts +21 -0
- package/dist/governance-activation/task-projection.js +75 -0
- package/dist/governance-activation/task-projection.js.map +1 -0
- package/dist/governance-activation/transitions.d.ts +163 -0
- package/dist/governance-activation/transitions.js +2128 -0
- package/dist/governance-activation/transitions.js.map +1 -0
- package/dist/governance-activation/type-contract.d.ts +1 -0
- package/dist/governance-activation/type-contract.js +27 -0
- package/dist/governance-activation/type-contract.js.map +1 -0
- package/dist/governance-activation/types.d.ts +390 -0
- package/dist/governance-activation/types.js +108 -0
- package/dist/governance-activation/types.js.map +1 -0
- package/dist/governance-activation/validators.d.ts +17 -0
- package/dist/governance-activation/validators.js +1305 -0
- package/dist/governance-activation/validators.js.map +1 -0
- package/dist/init-filesystem.js +5 -1
- package/dist/init-filesystem.js.map +1 -1
- package/dist/interactive.js +4 -3
- package/dist/interactive.js.map +1 -1
- package/dist/planner.js +5 -5
- package/dist/planner.js.map +1 -1
- package/dist/power-apps-templates.js +14 -1
- package/dist/power-apps-templates.js.map +1 -1
- package/dist/process-runner.d.ts +3 -0
- package/dist/process-runner.js +68 -10
- package/dist/process-runner.js.map +1 -1
- package/dist/repository-governance.d.ts +13 -3
- package/dist/repository-governance.js +357 -51
- package/dist/repository-governance.js.map +1 -1
- package/dist/telemetry/contract.d.ts +1 -1
- package/dist/telemetry/contract.js +6 -0
- package/dist/telemetry/contract.js.map +1 -1
- package/dist/templates.js +320 -25
- package/dist/templates.js.map +1 -1
- package/dist/types.d.ts +15 -7
- package/docs/cli-reference.md +61 -13
- package/docs/configuration-and-manifests.md +43 -16
- package/docs/existing-repositories.md +22 -11
- package/docs/getting-started.md +46 -10
- package/docs/project-structure.md +35 -6
- package/docs/repository-governance.md +200 -245
- package/docs/safety-and-consent.md +24 -2
- package/docs/troubleshooting.md +59 -4
- package/docs/workloads.md +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
import { canonicalJson, canonicalSha256, sha256Hex } from './canonical-json.js';
|
|
2
|
+
import { activationContractVersion, approvalEnvelopeSchemaVersion, buildActivationCompatibilityMap, createActivationIdentity, evidenceHeaderSchemaVersion, governanceActivationPolicyVersion, liftoffActivationPackageVersion, phaseGraphSchemaVersion } from './identity.js';
|
|
3
|
+
const terminalVerified = ['verified', 'failed'];
|
|
4
|
+
const terminalApproved = ['approved', 'failed'];
|
|
5
|
+
const terminalConditional = ['verified', 'failed', 'inapplicable'];
|
|
6
|
+
function dep(anyOf, description) {
|
|
7
|
+
return { anyOf, accepts: ['approved', 'verified', 'inapplicable', 'retained', 'disposed'], description };
|
|
8
|
+
}
|
|
9
|
+
function mutations(local, remote = ['none']) {
|
|
10
|
+
const normalizedLocal = [...local];
|
|
11
|
+
if (normalizedLocal.includes('write-evidence') &&
|
|
12
|
+
!normalizedLocal.includes('write-activation-state')) {
|
|
13
|
+
normalizedLocal.push('write-activation-state');
|
|
14
|
+
}
|
|
15
|
+
return { local: normalizedLocal, remote };
|
|
16
|
+
}
|
|
17
|
+
function evidence(schema, required = true, liveReadbackProviders = []) {
|
|
18
|
+
return { schema, required, headerSchemaVersion: evidenceHeaderSchemaVersion, liveReadbackProviders };
|
|
19
|
+
}
|
|
20
|
+
function approval(kind, required) {
|
|
21
|
+
return { kind, required, envelopeSchemaVersion: approvalEnvelopeSchemaVersion };
|
|
22
|
+
}
|
|
23
|
+
function rollback(kind, target, description) {
|
|
24
|
+
return { kind, target, description };
|
|
25
|
+
}
|
|
26
|
+
export const canonicalPhaseGraph = {
|
|
27
|
+
schemaVersion: phaseGraphSchemaVersion,
|
|
28
|
+
versions: {
|
|
29
|
+
liftoffVersion: liftoffActivationPackageVersion,
|
|
30
|
+
policyVersion: governanceActivationPolicyVersion,
|
|
31
|
+
activationContractVersion,
|
|
32
|
+
phaseGraphSchemaVersion
|
|
33
|
+
},
|
|
34
|
+
phases: [
|
|
35
|
+
{
|
|
36
|
+
id: 'seed-valid',
|
|
37
|
+
label: 'Generated bootstrap seed is strict-valid',
|
|
38
|
+
dependencies: [],
|
|
39
|
+
applicability: { kind: 'always' },
|
|
40
|
+
allowedMutations: mutations(['read-worktree', 'write-evidence']),
|
|
41
|
+
evidence: evidence('seed-valid.v1'),
|
|
42
|
+
approvalGate: approval('none', false),
|
|
43
|
+
invalidationInputs: ['project-files', 'policy', 'activation-identity'],
|
|
44
|
+
rollback: rollback('none', null, 'No mutation is authorized by seed validation.'),
|
|
45
|
+
terminalStates: terminalVerified
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: 'seed-verified',
|
|
49
|
+
label: 'Generated bootstrap baseline checks are verified',
|
|
50
|
+
dependencies: [dep(['seed-valid'], 'Seed strict validation must pass first.')],
|
|
51
|
+
applicability: { kind: 'always' },
|
|
52
|
+
allowedMutations: mutations(['read-worktree', 'write-evidence']),
|
|
53
|
+
evidence: evidence('seed-verified.v1'),
|
|
54
|
+
approvalGate: approval('none', false),
|
|
55
|
+
invalidationInputs: ['project-files', 'activation-identity'],
|
|
56
|
+
rollback: rollback('none', null, 'A failed baseline leaves the seed active.'),
|
|
57
|
+
terminalStates: terminalVerified
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: 'seed-archived',
|
|
61
|
+
label: 'Generated bootstrap seed is synced and archived',
|
|
62
|
+
dependencies: [dep(['seed-verified'], 'Only a verified seed may be archived.')],
|
|
63
|
+
applicability: { kind: 'always' },
|
|
64
|
+
allowedMutations: mutations(['write-openspec-seed', 'write-evidence']),
|
|
65
|
+
evidence: evidence('seed-archived.v1'),
|
|
66
|
+
approvalGate: approval('none', false),
|
|
67
|
+
invalidationInputs: ['project-files', 'activation-identity'],
|
|
68
|
+
rollback: rollback('none', null, 'Archive failures keep the seed active.'),
|
|
69
|
+
terminalStates: terminalVerified
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: 'committed',
|
|
73
|
+
label: 'Initial repository baseline is committed',
|
|
74
|
+
dependencies: [dep(['seed-archived'], 'Generated seed must be complete before commit guidance.')],
|
|
75
|
+
applicability: { kind: 'always' },
|
|
76
|
+
allowedMutations: mutations(['read-worktree', 'git-commit', 'write-evidence']),
|
|
77
|
+
evidence: evidence('committed.v1'),
|
|
78
|
+
approvalGate: approval('repository-publish', true),
|
|
79
|
+
invalidationInputs: ['baseline-sha', 'project-files', 'approval-envelope'],
|
|
80
|
+
rollback: rollback('none', null, 'Never rewrite a committed user history automatically.'),
|
|
81
|
+
terminalStates: terminalVerified
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: 'pushed',
|
|
85
|
+
label: 'Initial repository baseline is pushed',
|
|
86
|
+
dependencies: [dep(['committed'], 'Commit evidence precedes initial push.')],
|
|
87
|
+
applicability: { kind: 'always' },
|
|
88
|
+
allowedMutations: mutations(['read-worktree', 'write-evidence'], ['git-push', 'github-read']),
|
|
89
|
+
evidence: evidence('pushed.v1'),
|
|
90
|
+
approvalGate: approval('repository-publish', true),
|
|
91
|
+
invalidationInputs: ['baseline-sha', 'approval-envelope'],
|
|
92
|
+
rollback: rollback('none', null, 'Never force-push, delete, or rewrite refs.'),
|
|
93
|
+
terminalStates: terminalVerified
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
id: 'phase-0-complete',
|
|
97
|
+
label: 'Read-only Phase 0 discovery is complete',
|
|
98
|
+
dependencies: [dep(['pushed'], 'Remote repository identity must be resolvable.')],
|
|
99
|
+
applicability: { kind: 'always' },
|
|
100
|
+
allowedMutations: mutations(['write-evidence'], ['github-read', 'azure-read']),
|
|
101
|
+
evidence: evidence('phase-0-complete.v1'),
|
|
102
|
+
approvalGate: approval('none', false),
|
|
103
|
+
invalidationInputs: ['baseline-sha', 'policy', 'live-readback'],
|
|
104
|
+
rollback: rollback('none', null, 'Discovery is read-only and can be refreshed.'),
|
|
105
|
+
terminalStates: terminalVerified
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
id: 'activation-approved',
|
|
109
|
+
label: 'Governance activation plan is approved',
|
|
110
|
+
dependencies: [dep(['phase-0-complete'], 'Approval reviews Phase 0 evidence.')],
|
|
111
|
+
applicability: { kind: 'always' },
|
|
112
|
+
allowedMutations: mutations(['write-activation-state', 'write-evidence']),
|
|
113
|
+
evidence: evidence('activation-approved.v1', false),
|
|
114
|
+
approvalGate: approval('activation-plan', true),
|
|
115
|
+
invalidationInputs: ['baseline-sha', 'approval-envelope', 'policy'],
|
|
116
|
+
rollback: rollback('none', null, 'Approval expiry returns descendants to blocked.'),
|
|
117
|
+
terminalStates: terminalApproved
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
id: 'credential-ready',
|
|
121
|
+
label: 'Runner preflight credential policy is ready when required',
|
|
122
|
+
dependencies: [dep(['activation-approved'], 'Credential enrollment follows approved activation scope.')],
|
|
123
|
+
applicability: {
|
|
124
|
+
kind: 'conditional',
|
|
125
|
+
discriminator: 'credential-required',
|
|
126
|
+
when: 'credentialRequired=true',
|
|
127
|
+
inapplicableWhen: 'credentialRequired=false',
|
|
128
|
+
exclusiveWith: []
|
|
129
|
+
},
|
|
130
|
+
allowedMutations: mutations(['write-evidence'], ['github-secret-write', 'github-read']),
|
|
131
|
+
evidence: evidence('credential-ready.v1', true, ['github']),
|
|
132
|
+
approvalGate: approval('credential-enrollment', true),
|
|
133
|
+
invalidationInputs: ['credentials', 'approval-envelope', 'activation-identity'],
|
|
134
|
+
rollback: rollback('none', null, 'Leaked or expired credentials block use and require rotation.'),
|
|
135
|
+
terminalStates: terminalConditional
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
id: 'provider-ready',
|
|
139
|
+
label: 'Azure provider namespaces are terminal ready',
|
|
140
|
+
dependencies: [
|
|
141
|
+
dep(['activation-approved'], 'Provider readiness belongs to approved infrastructure scope.'),
|
|
142
|
+
dep(['credential-ready'], 'Runner preflight credential readiness or inapplicability precedes provider work.')
|
|
143
|
+
],
|
|
144
|
+
applicability: {
|
|
145
|
+
kind: 'conditional',
|
|
146
|
+
discriminator: 'private-staging-dast',
|
|
147
|
+
when: 'privateStagingDast=true',
|
|
148
|
+
inapplicableWhen: 'privateStagingDast=false',
|
|
149
|
+
exclusiveWith: []
|
|
150
|
+
},
|
|
151
|
+
allowedMutations: mutations(['write-evidence'], ['azure-read', 'azure-provider-register']),
|
|
152
|
+
evidence: evidence('provider-ready.v1', true, ['azure']),
|
|
153
|
+
approvalGate: approval('infrastructure-cost', true),
|
|
154
|
+
invalidationInputs: ['provider-inventory', 'approval-envelope', 'policy'],
|
|
155
|
+
rollback: rollback('retain', null, 'Provider registrations are retained subscription capabilities.'),
|
|
156
|
+
terminalStates: ['verified', 'failed', 'inapplicable', 'retained']
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
id: 'state-path-selected',
|
|
160
|
+
label: 'Private state path is selected',
|
|
161
|
+
dependencies: [dep(['provider-ready'], 'Provider readiness precedes private state path selection.')],
|
|
162
|
+
applicability: {
|
|
163
|
+
kind: 'conditional',
|
|
164
|
+
discriminator: 'private-staging-dast',
|
|
165
|
+
when: 'privateStagingDast=true',
|
|
166
|
+
inapplicableWhen: 'privateStagingDast=false',
|
|
167
|
+
exclusiveWith: []
|
|
168
|
+
},
|
|
169
|
+
allowedMutations: mutations(['write-activation-state', 'write-evidence'], ['azure-read']),
|
|
170
|
+
evidence: evidence('state-path-selected.v1'),
|
|
171
|
+
approvalGate: approval('infrastructure-cost', true),
|
|
172
|
+
invalidationInputs: ['remote-state', 'provider-inventory', 'approval-envelope'],
|
|
173
|
+
rollback: rollback('none', null, 'A changed path selection invalidates mutually exclusive descendants.'),
|
|
174
|
+
terminalStates: terminalConditional
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
id: 'existing-private-path',
|
|
178
|
+
label: 'Existing private backend management path is verified',
|
|
179
|
+
dependencies: [dep(['state-path-selected'], 'State path selection chooses this branch.')],
|
|
180
|
+
applicability: {
|
|
181
|
+
kind: 'conditional',
|
|
182
|
+
discriminator: 'state-path',
|
|
183
|
+
when: 'statePath=existing-private',
|
|
184
|
+
inapplicableWhen: 'statePath!=existing-private',
|
|
185
|
+
exclusiveWith: ['bootstrap-local']
|
|
186
|
+
},
|
|
187
|
+
allowedMutations: mutations(['write-evidence'], ['azure-read']),
|
|
188
|
+
evidence: evidence('existing-private-path.v1'),
|
|
189
|
+
approvalGate: approval('none', false),
|
|
190
|
+
invalidationInputs: ['remote-state', 'live-readback'],
|
|
191
|
+
rollback: rollback('none', null, 'Existing path verification is read-only.'),
|
|
192
|
+
terminalStates: terminalConditional
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
id: 'bootstrap-local',
|
|
196
|
+
label: 'Bounded local bootstrap creates access-establishing resources',
|
|
197
|
+
dependencies: [
|
|
198
|
+
dep(['provider-ready'], 'Provider readiness precedes local bootstrap.'),
|
|
199
|
+
dep(['state-path-selected'], 'State path selection precedes local bootstrap.')
|
|
200
|
+
],
|
|
201
|
+
applicability: {
|
|
202
|
+
kind: 'conditional',
|
|
203
|
+
discriminator: 'state-path',
|
|
204
|
+
when: 'statePath=bootstrap-local',
|
|
205
|
+
inapplicableWhen: 'statePath!=bootstrap-local',
|
|
206
|
+
exclusiveWith: ['existing-private-path']
|
|
207
|
+
},
|
|
208
|
+
allowedMutations: mutations(['write-local-state', 'write-evidence'], ['azure-network-provision', 'github-write']),
|
|
209
|
+
evidence: evidence('bootstrap-local.v1', true, ['github', 'azure']),
|
|
210
|
+
approvalGate: approval('infrastructure-cost', true),
|
|
211
|
+
invalidationInputs: ['approval-envelope', 'provider-inventory', 'remote-state'],
|
|
212
|
+
rollback: rollback('reverse-to', 'provider-ready', 'Remove only repository-owned bootstrap resources in dependency order.'),
|
|
213
|
+
terminalStates: terminalConditional
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
id: 'runner-ready',
|
|
217
|
+
label: 'Restricted larger runner is assigned and ready',
|
|
218
|
+
dependencies: [dep(['bootstrap-local'], 'Local bootstrap must establish runner networking before runner proof.')],
|
|
219
|
+
applicability: {
|
|
220
|
+
kind: 'conditional',
|
|
221
|
+
discriminator: 'state-path',
|
|
222
|
+
when: 'statePath=bootstrap-local',
|
|
223
|
+
inapplicableWhen: 'statePath!=bootstrap-local',
|
|
224
|
+
exclusiveWith: []
|
|
225
|
+
},
|
|
226
|
+
allowedMutations: mutations(['write-evidence'], ['github-read', 'github-write']),
|
|
227
|
+
evidence: evidence('runner-ready.v1', true, ['github']),
|
|
228
|
+
approvalGate: approval('infrastructure-cost', true),
|
|
229
|
+
invalidationInputs: ['runner-inventory', 'approval-envelope'],
|
|
230
|
+
rollback: rollback('reverse-to', 'bootstrap-local', 'Remove repository runner assignment before network resources.'),
|
|
231
|
+
terminalStates: terminalConditional
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
id: 'private-backend-proof',
|
|
235
|
+
label: 'Private backend is reachable from runner',
|
|
236
|
+
dependencies: [dep(['runner-ready'], 'Runner readiness precedes private backend proof.')],
|
|
237
|
+
applicability: {
|
|
238
|
+
kind: 'conditional',
|
|
239
|
+
discriminator: 'state-path',
|
|
240
|
+
when: 'statePath=bootstrap-local',
|
|
241
|
+
inapplicableWhen: 'statePath!=bootstrap-local',
|
|
242
|
+
exclusiveWith: []
|
|
243
|
+
},
|
|
244
|
+
allowedMutations: mutations(['write-evidence'], ['github-read', 'azure-read']),
|
|
245
|
+
evidence: evidence('private-backend-proof.v1'),
|
|
246
|
+
approvalGate: approval('none', false),
|
|
247
|
+
invalidationInputs: ['runner-inventory', 'remote-state', 'live-readback'],
|
|
248
|
+
rollback: rollback('reverse-to', 'runner-ready', 'Failed proof keeps remote import blocked.'),
|
|
249
|
+
terminalStates: terminalConditional
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
id: 'remote-import-verified',
|
|
253
|
+
label: 'Declarative remote import and no-change plan are verified',
|
|
254
|
+
dependencies: [dep(['private-backend-proof'], 'Private backend proof precedes remote import.')],
|
|
255
|
+
applicability: {
|
|
256
|
+
kind: 'conditional',
|
|
257
|
+
discriminator: 'state-path',
|
|
258
|
+
when: 'statePath=bootstrap-local',
|
|
259
|
+
inapplicableWhen: 'statePath!=bootstrap-local',
|
|
260
|
+
exclusiveWith: []
|
|
261
|
+
},
|
|
262
|
+
allowedMutations: mutations(['write-evidence'], ['azure-state-import']),
|
|
263
|
+
evidence: evidence('remote-import-verified.v1', true, ['azure']),
|
|
264
|
+
approvalGate: approval('infrastructure-cost', true),
|
|
265
|
+
invalidationInputs: ['remote-state', 'approval-envelope'],
|
|
266
|
+
rollback: rollback('reverse-to', 'private-backend-proof', 'Failed import leaves local state retained for remediation.'),
|
|
267
|
+
terminalStates: terminalConditional
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
id: 'remote-ready',
|
|
271
|
+
label: 'Remote state is ready and local bootstrap state is frozen',
|
|
272
|
+
dependencies: [dep(['existing-private-path', 'remote-import-verified'], 'Remote readiness follows either existing private path or verified remote import.')],
|
|
273
|
+
applicability: {
|
|
274
|
+
kind: 'conditional',
|
|
275
|
+
discriminator: 'private-staging-dast',
|
|
276
|
+
when: 'privateStagingDast=true',
|
|
277
|
+
inapplicableWhen: 'privateStagingDast=false',
|
|
278
|
+
exclusiveWith: []
|
|
279
|
+
},
|
|
280
|
+
allowedMutations: mutations(['write-evidence'], ['azure-read']),
|
|
281
|
+
evidence: evidence('remote-ready.v1'),
|
|
282
|
+
approvalGate: approval('none', false),
|
|
283
|
+
invalidationInputs: ['remote-state', 'live-readback'],
|
|
284
|
+
rollback: rollback('retain', null, 'Retain local bootstrap state read-only for exactly 30 days when used.'),
|
|
285
|
+
terminalStates: ['verified', 'failed', 'inapplicable', 'retained']
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
id: 'application-foundation',
|
|
289
|
+
label: 'Application infrastructure foundation is reconciled',
|
|
290
|
+
dependencies: [dep(['remote-ready'], 'Application resources wait for remote state readiness or inapplicability.')],
|
|
291
|
+
applicability: { kind: 'always' },
|
|
292
|
+
allowedMutations: mutations(['write-evidence', 'write-openspec-governance'], ['azure-resource-provision']),
|
|
293
|
+
evidence: evidence('application-foundation.v1', true, ['azure']),
|
|
294
|
+
approvalGate: approval('infrastructure-cost', true),
|
|
295
|
+
invalidationInputs: ['project-files', 'remote-state', 'approval-envelope'],
|
|
296
|
+
rollback: rollback('reverse-to', 'remote-ready', 'Application resources are removed without unregistering providers.'),
|
|
297
|
+
terminalStates: terminalVerified
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
id: 'workflow-source-ready',
|
|
301
|
+
label: 'Workflow source and ruleset payloads are ready',
|
|
302
|
+
dependencies: [dep(['application-foundation'], 'Workflow source targets the reconciled application foundation.')],
|
|
303
|
+
applicability: { kind: 'always' },
|
|
304
|
+
allowedMutations: mutations(['write-workflows', 'write-ruleset-source', 'write-evidence']),
|
|
305
|
+
evidence: evidence('workflow-source-ready.v1'),
|
|
306
|
+
approvalGate: approval('none', false),
|
|
307
|
+
invalidationInputs: ['project-files', 'policy'],
|
|
308
|
+
rollback: rollback('reverse-to', 'application-foundation', 'Remove or repair only workflow/ruleset source changes.'),
|
|
309
|
+
terminalStates: terminalVerified
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
id: 'dev-proof',
|
|
313
|
+
label: 'Development proof is green',
|
|
314
|
+
dependencies: [dep(['workflow-source-ready'], 'Workflow source must exist before proving checks.')],
|
|
315
|
+
applicability: { kind: 'always' },
|
|
316
|
+
allowedMutations: mutations(['write-evidence'], ['github-read']),
|
|
317
|
+
evidence: evidence('dev-proof.v1'),
|
|
318
|
+
approvalGate: approval('none', false),
|
|
319
|
+
invalidationInputs: ['workflow-source', 'project-files'],
|
|
320
|
+
rollback: rollback('none', null, 'A failed check blocks descendants until fixed.'),
|
|
321
|
+
terminalStates: terminalVerified
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
id: 'staging-qualified',
|
|
325
|
+
label: 'Staging release qualification is complete',
|
|
326
|
+
dependencies: [dep(['dev-proof'], 'Development proof precedes staging qualification.')],
|
|
327
|
+
applicability: { kind: 'always' },
|
|
328
|
+
allowedMutations: mutations(['write-evidence'], ['github-read', 'azure-read']),
|
|
329
|
+
evidence: evidence('staging-qualified.v1'),
|
|
330
|
+
approvalGate: approval('none', false),
|
|
331
|
+
invalidationInputs: ['workflow-source', 'security-evidence', 'live-readback'],
|
|
332
|
+
rollback: rollback('none', null, 'Qualification failures keep production blocked.'),
|
|
333
|
+
terminalStates: terminalVerified
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
id: 'production-rehearsed',
|
|
337
|
+
label: 'Production promotion and rollback are rehearsed',
|
|
338
|
+
dependencies: [dep(['staging-qualified'], 'Only a staging-qualified candidate may be rehearsed.')],
|
|
339
|
+
applicability: { kind: 'always' },
|
|
340
|
+
allowedMutations: mutations(['write-evidence'], ['github-read', 'azure-read']),
|
|
341
|
+
evidence: evidence('production-rehearsed.v1'),
|
|
342
|
+
approvalGate: approval('none', false),
|
|
343
|
+
invalidationInputs: ['live-readback', 'workflow-source'],
|
|
344
|
+
rollback: rollback('none', null, 'Rollback remains ungated and documented.'),
|
|
345
|
+
terminalStates: terminalVerified
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
id: 'green-red-proof',
|
|
349
|
+
label: 'Required checks are proven green and deliberately red',
|
|
350
|
+
dependencies: [dep(['production-rehearsed'], 'Promotion rehearsal precedes final context proof.')],
|
|
351
|
+
applicability: { kind: 'always' },
|
|
352
|
+
allowedMutations: mutations(['write-evidence'], ['github-read']),
|
|
353
|
+
evidence: evidence('green-red-proof.v1'),
|
|
354
|
+
approvalGate: approval('none', false),
|
|
355
|
+
invalidationInputs: ['security-evidence', 'workflow-source'],
|
|
356
|
+
rollback: rollback('none', null, 'Missing red proof prevents enforcement.'),
|
|
357
|
+
terminalStates: terminalVerified
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
id: 'enforcement-approved',
|
|
361
|
+
label: 'Final ruleset enforcement is approved',
|
|
362
|
+
dependencies: [dep(['green-red-proof'], 'Only exact green/red evidence may request enforcement.')],
|
|
363
|
+
applicability: { kind: 'always' },
|
|
364
|
+
allowedMutations: mutations(['write-activation-state', 'write-evidence']),
|
|
365
|
+
evidence: evidence('enforcement-approved.v1', false),
|
|
366
|
+
approvalGate: approval('enforcement', true),
|
|
367
|
+
invalidationInputs: ['approval-envelope', 'ruleset-readback'],
|
|
368
|
+
rollback: rollback('none', null, 'Approval expiry blocks ruleset application.'),
|
|
369
|
+
terminalStates: terminalApproved
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
id: 'rulesets-applied',
|
|
373
|
+
label: 'Repository rulesets are applied idempotently last',
|
|
374
|
+
dependencies: [dep(['enforcement-approved'], 'Final enforcement approval precedes ruleset mutation.')],
|
|
375
|
+
applicability: { kind: 'always' },
|
|
376
|
+
allowedMutations: mutations(['write-evidence'], ['github-ruleset-write', 'github-read']),
|
|
377
|
+
evidence: evidence('rulesets-applied.v1', true, ['github']),
|
|
378
|
+
approvalGate: approval('enforcement', true),
|
|
379
|
+
invalidationInputs: ['approval-envelope', 'ruleset-readback'],
|
|
380
|
+
rollback: rollback('reverse-to', 'green-red-proof', 'Rulesets can be disabled or repaired without approval-gating rollback.'),
|
|
381
|
+
terminalStates: terminalVerified
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
id: 'live-readback',
|
|
385
|
+
label: 'Live enforcement readback matches source',
|
|
386
|
+
dependencies: [dep(['rulesets-applied'], 'Live readback follows ruleset application.')],
|
|
387
|
+
applicability: { kind: 'always' },
|
|
388
|
+
allowedMutations: mutations(['write-evidence'], ['github-read']),
|
|
389
|
+
evidence: evidence('live-readback.v1'),
|
|
390
|
+
approvalGate: approval('none', false),
|
|
391
|
+
invalidationInputs: ['ruleset-readback', 'live-readback'],
|
|
392
|
+
rollback: rollback('reverse-to', 'rulesets-applied', 'Mismatched live readback blocks completion.'),
|
|
393
|
+
terminalStates: terminalVerified
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
id: 'bootstrap-state-disposed',
|
|
397
|
+
label: 'Retained local bootstrap state is disposed after day 30',
|
|
398
|
+
dependencies: [dep(['live-readback'], 'Disposal is scheduled only after live enforcement readback.')],
|
|
399
|
+
applicability: {
|
|
400
|
+
kind: 'conditional',
|
|
401
|
+
discriminator: 'state-path',
|
|
402
|
+
when: 'statePath=bootstrap-local',
|
|
403
|
+
inapplicableWhen: 'statePath!=bootstrap-local',
|
|
404
|
+
exclusiveWith: []
|
|
405
|
+
},
|
|
406
|
+
allowedMutations: mutations(['delete-local-state', 'write-evidence']),
|
|
407
|
+
evidence: evidence('bootstrap-state-disposed.v1'),
|
|
408
|
+
approvalGate: approval('destructive-disposal', true),
|
|
409
|
+
invalidationInputs: ['remote-state', 'approval-envelope'],
|
|
410
|
+
rollback: rollback('dispose', null, 'Deletion destroys only the local encryption key and records no payload.'),
|
|
411
|
+
terminalStates: ['disposed', 'failed', 'inapplicable']
|
|
412
|
+
}
|
|
413
|
+
]
|
|
414
|
+
};
|
|
415
|
+
function phaseBehavior(node) {
|
|
416
|
+
return {
|
|
417
|
+
id: node.id,
|
|
418
|
+
dependencies: node.dependencies,
|
|
419
|
+
applicability: node.applicability,
|
|
420
|
+
allowedMutations: node.allowedMutations,
|
|
421
|
+
evidence: node.evidence,
|
|
422
|
+
approvalGate: node.approvalGate,
|
|
423
|
+
invalidationInputs: node.invalidationInputs,
|
|
424
|
+
rollback: node.rollback,
|
|
425
|
+
terminalStates: node.terminalStates
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
export function phaseContractDigest(node) {
|
|
429
|
+
return sha256Hex(canonicalJson(phaseBehavior(node)));
|
|
430
|
+
}
|
|
431
|
+
export function phaseContractDigests(graph = canonicalPhaseGraph) {
|
|
432
|
+
return Object.fromEntries(graph.phases.map((node) => [node.id, phaseContractDigest(node)]));
|
|
433
|
+
}
|
|
434
|
+
export const canonicalPhaseGraphJson = canonicalJson(canonicalPhaseGraph);
|
|
435
|
+
export const canonicalPhaseGraphHash = canonicalSha256(canonicalPhaseGraph);
|
|
436
|
+
export const canonicalPhaseContractDigests = phaseContractDigests(canonicalPhaseGraph);
|
|
437
|
+
export const currentActivationIdentity = createActivationIdentity(canonicalPhaseGraphHash);
|
|
438
|
+
export const activationCompatibility = buildActivationCompatibilityMap([
|
|
439
|
+
currentActivationIdentity
|
|
440
|
+
]);
|
|
441
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/governance-activation/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ActivationIdentity } from './types.js';
|
|
2
|
+
export declare const liftoffActivationPackageVersion: '0.10.0';
|
|
3
|
+
export declare const liftoffManifestArtifactVersion: 7;
|
|
4
|
+
export declare const governanceActivationPolicyVersion: '6';
|
|
5
|
+
export declare const activationContractVersion: 1;
|
|
6
|
+
export declare const phaseGraphSchemaVersion: 1;
|
|
7
|
+
export declare const activationStateSchemaVersion: 1;
|
|
8
|
+
export declare const evidenceHeaderSchemaVersion: 1;
|
|
9
|
+
export declare const approvalEnvelopeSchemaVersion: 1;
|
|
10
|
+
export declare const supersessionSchemaVersion: 1;
|
|
11
|
+
export declare const credentialPolicySchemaVersion: 1;
|
|
12
|
+
export declare const knownActivationVersions: {
|
|
13
|
+
readonly liftoffVersion: readonly ["0.10.0"];
|
|
14
|
+
readonly manifestArtifactVersion: readonly [7];
|
|
15
|
+
readonly policyVersion: readonly ['5', "6"];
|
|
16
|
+
readonly activationContractVersion: readonly [1];
|
|
17
|
+
readonly phaseGraphSchemaVersion: readonly [1];
|
|
18
|
+
readonly activationStateSchemaVersion: readonly [1];
|
|
19
|
+
readonly evidenceHeaderSchemaVersion: readonly [1];
|
|
20
|
+
readonly approvalEnvelopeSchemaVersion: readonly [1];
|
|
21
|
+
readonly supersessionSchemaVersion: readonly [1];
|
|
22
|
+
readonly credentialPolicySchemaVersion: readonly [1];
|
|
23
|
+
};
|
|
24
|
+
export type ActivationCompatibilityMap = ReadonlyMap<string, ActivationIdentity>;
|
|
25
|
+
export declare function createActivationIdentity(phaseGraphHash: string): ActivationIdentity;
|
|
26
|
+
export declare function activationCompatibilityKey(identity: ActivationIdentity): string;
|
|
27
|
+
export declare function buildActivationCompatibilityMap(identities: readonly ActivationIdentity[]): ActivationCompatibilityMap;
|
|
28
|
+
export type ActivationCompatibilityResult = {
|
|
29
|
+
compatible: true;
|
|
30
|
+
identity: ActivationIdentity;
|
|
31
|
+
} | {
|
|
32
|
+
compatible: false;
|
|
33
|
+
reason: string;
|
|
34
|
+
};
|
|
35
|
+
export declare function resolveActivationCompatibility(identity: ActivationIdentity, compatibility: ActivationCompatibilityMap): ActivationCompatibilityResult;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { exactGlobalInstallCommand } from '../package-identity.js';
|
|
2
|
+
export const liftoffActivationPackageVersion = '0.10.0';
|
|
3
|
+
export const liftoffManifestArtifactVersion = 7;
|
|
4
|
+
export const governanceActivationPolicyVersion = '6';
|
|
5
|
+
export const activationContractVersion = 1;
|
|
6
|
+
export const phaseGraphSchemaVersion = 1;
|
|
7
|
+
export const activationStateSchemaVersion = 1;
|
|
8
|
+
export const evidenceHeaderSchemaVersion = 1;
|
|
9
|
+
export const approvalEnvelopeSchemaVersion = 1;
|
|
10
|
+
export const supersessionSchemaVersion = 1;
|
|
11
|
+
export const credentialPolicySchemaVersion = 1;
|
|
12
|
+
export const knownActivationVersions = {
|
|
13
|
+
liftoffVersion: [liftoffActivationPackageVersion],
|
|
14
|
+
manifestArtifactVersion: [liftoffManifestArtifactVersion],
|
|
15
|
+
policyVersion: ['5', governanceActivationPolicyVersion],
|
|
16
|
+
activationContractVersion: [activationContractVersion],
|
|
17
|
+
phaseGraphSchemaVersion: [phaseGraphSchemaVersion],
|
|
18
|
+
activationStateSchemaVersion: [activationStateSchemaVersion],
|
|
19
|
+
evidenceHeaderSchemaVersion: [evidenceHeaderSchemaVersion],
|
|
20
|
+
approvalEnvelopeSchemaVersion: [approvalEnvelopeSchemaVersion],
|
|
21
|
+
supersessionSchemaVersion: [supersessionSchemaVersion],
|
|
22
|
+
credentialPolicySchemaVersion: [credentialPolicySchemaVersion]
|
|
23
|
+
};
|
|
24
|
+
const tupleFields = [
|
|
25
|
+
'liftoffVersion',
|
|
26
|
+
'manifestArtifactVersion',
|
|
27
|
+
'policyVersion',
|
|
28
|
+
'activationContractVersion',
|
|
29
|
+
'phaseGraphSchemaVersion',
|
|
30
|
+
'phaseGraphHash',
|
|
31
|
+
'activationStateSchemaVersion',
|
|
32
|
+
'evidenceHeaderSchemaVersion',
|
|
33
|
+
'approvalEnvelopeSchemaVersion',
|
|
34
|
+
'supersessionSchemaVersion',
|
|
35
|
+
'credentialPolicySchemaVersion'
|
|
36
|
+
];
|
|
37
|
+
export function createActivationIdentity(phaseGraphHash) {
|
|
38
|
+
return {
|
|
39
|
+
liftoffVersion: liftoffActivationPackageVersion,
|
|
40
|
+
manifestArtifactVersion: liftoffManifestArtifactVersion,
|
|
41
|
+
policyVersion: governanceActivationPolicyVersion,
|
|
42
|
+
activationContractVersion,
|
|
43
|
+
phaseGraphSchemaVersion,
|
|
44
|
+
phaseGraphHash,
|
|
45
|
+
activationStateSchemaVersion,
|
|
46
|
+
evidenceHeaderSchemaVersion,
|
|
47
|
+
approvalEnvelopeSchemaVersion,
|
|
48
|
+
supersessionSchemaVersion,
|
|
49
|
+
credentialPolicySchemaVersion
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export function activationCompatibilityKey(identity) {
|
|
53
|
+
return tupleFields.map((field) => `${field}=${identity[field]}`).join('|');
|
|
54
|
+
}
|
|
55
|
+
export function buildActivationCompatibilityMap(identities) {
|
|
56
|
+
return new Map(identities.map((identity) => [activationCompatibilityKey(identity), identity]));
|
|
57
|
+
}
|
|
58
|
+
function knownVersion(field, value) {
|
|
59
|
+
return knownActivationVersions[field].includes(value);
|
|
60
|
+
}
|
|
61
|
+
export function resolveActivationCompatibility(identity, compatibility) {
|
|
62
|
+
for (const field of Object.keys(knownActivationVersions)) {
|
|
63
|
+
if (!knownVersion(field, identity[field])) {
|
|
64
|
+
const supported = knownActivationVersions[field]
|
|
65
|
+
.map((value) => JSON.stringify(value))
|
|
66
|
+
.join(', ');
|
|
67
|
+
return {
|
|
68
|
+
compatible: false,
|
|
69
|
+
reason: `Unsupported activation identity field ${field}: found ${JSON.stringify(identity[field])}; ` +
|
|
70
|
+
`supported values are ${supported}. Minimum Liftoff ${liftoffActivationPackageVersion} is required; ` +
|
|
71
|
+
`upgrade/remediate with ${exactGlobalInstallCommand(liftoffActivationPackageVersion)}.`
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const found = compatibility.get(activationCompatibilityKey(identity));
|
|
76
|
+
if (!found) {
|
|
77
|
+
const supportedTuples = [...compatibility.keys()].join('; ');
|
|
78
|
+
const graphHashes = [...new Set([...compatibility.values()].map((entry) => entry.phaseGraphHash))].join(', ');
|
|
79
|
+
return {
|
|
80
|
+
compatible: false,
|
|
81
|
+
reason: `Activation identity tuple is not present in the explicit compatibility map: found ${activationCompatibilityKey(identity)}; ` +
|
|
82
|
+
`supported tuples are ${supportedTuples}; recognized graph hashes are ${graphHashes}. ` +
|
|
83
|
+
`Minimum Liftoff ${liftoffActivationPackageVersion} is required; upgrade/remediate with ` +
|
|
84
|
+
`${exactGlobalInstallCommand(liftoffActivationPackageVersion)}.`
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return { compatible: true, identity: found };
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/governance-activation/identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * from './activation-state.js';
|
|
2
|
+
export * from './approvals.js';
|
|
3
|
+
export * from './canonical-json.js';
|
|
4
|
+
export * from './compatibility.js';
|
|
5
|
+
export * from './credentials.js';
|
|
6
|
+
export * from './evidence.js';
|
|
7
|
+
export * from './graph.js';
|
|
8
|
+
export * from './identity.js';
|
|
9
|
+
export * from './migration.js';
|
|
10
|
+
export * from './readiness.js';
|
|
11
|
+
export * from './reconciliation.js';
|
|
12
|
+
export * from './release-integrity.js';
|
|
13
|
+
export * from './seed-lifecycle.js';
|
|
14
|
+
export * from './source-of-truth.js';
|
|
15
|
+
export * from './task-projection.js';
|
|
16
|
+
export * from './transitions.js';
|
|
17
|
+
export * from './types.js';
|
|
18
|
+
export * from './validators.js';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from './activation-state.js';
|
|
2
|
+
export * from './approvals.js';
|
|
3
|
+
export * from './canonical-json.js';
|
|
4
|
+
export * from './compatibility.js';
|
|
5
|
+
export * from './credentials.js';
|
|
6
|
+
export * from './evidence.js';
|
|
7
|
+
export * from './graph.js';
|
|
8
|
+
export * from './identity.js';
|
|
9
|
+
export * from './migration.js';
|
|
10
|
+
export * from './readiness.js';
|
|
11
|
+
export * from './reconciliation.js';
|
|
12
|
+
export * from './release-integrity.js';
|
|
13
|
+
export * from './seed-lifecycle.js';
|
|
14
|
+
export * from './source-of-truth.js';
|
|
15
|
+
export * from './task-projection.js';
|
|
16
|
+
export * from './transitions.js';
|
|
17
|
+
export * from './types.js';
|
|
18
|
+
export * from './validators.js';
|
|
19
|
+
//# sourceMappingURL=index.js.map
|