@msn-control/liftoff 0.9.9 → 0.10.0

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.
Files changed (106) hide show
  1. package/DEVELOPER.md +142 -0
  2. package/README.md +26 -18
  3. package/assets/governance/single-maintainer-gitflow/policy.md +13 -11
  4. package/dist/args.js +21 -0
  5. package/dist/args.js.map +1 -1
  6. package/dist/artifact-lifecycle.d.ts +1 -1
  7. package/dist/artifact-lifecycle.js +5 -0
  8. package/dist/artifact-lifecycle.js.map +1 -1
  9. package/dist/commands.js +355 -13
  10. package/dist/commands.js.map +1 -1
  11. package/dist/file-system.js +100 -13
  12. package/dist/file-system.js.map +1 -1
  13. package/dist/governance-activation/activation-state.d.ts +32 -0
  14. package/dist/governance-activation/activation-state.js +165 -0
  15. package/dist/governance-activation/activation-state.js.map +1 -0
  16. package/dist/governance-activation/approvals.d.ts +188 -0
  17. package/dist/governance-activation/approvals.js +508 -0
  18. package/dist/governance-activation/approvals.js.map +1 -0
  19. package/dist/governance-activation/canonical-json.d.ts +3 -0
  20. package/dist/governance-activation/canonical-json.js +36 -0
  21. package/dist/governance-activation/canonical-json.js.map +1 -0
  22. package/dist/governance-activation/commands.d.ts +10 -0
  23. package/dist/governance-activation/commands.js +1023 -0
  24. package/dist/governance-activation/commands.js.map +1 -0
  25. package/dist/governance-activation/compatibility.d.ts +68 -0
  26. package/dist/governance-activation/compatibility.js +447 -0
  27. package/dist/governance-activation/compatibility.js.map +1 -0
  28. package/dist/governance-activation/credentials.d.ts +160 -0
  29. package/dist/governance-activation/credentials.js +403 -0
  30. package/dist/governance-activation/credentials.js.map +1 -0
  31. package/dist/governance-activation/doctor.d.ts +10 -0
  32. package/dist/governance-activation/doctor.js +379 -0
  33. package/dist/governance-activation/doctor.js.map +1 -0
  34. package/dist/governance-activation/evidence.d.ts +49 -0
  35. package/dist/governance-activation/evidence.js +246 -0
  36. package/dist/governance-activation/evidence.js.map +1 -0
  37. package/dist/governance-activation/graph.d.ts +397 -0
  38. package/dist/governance-activation/graph.js +441 -0
  39. package/dist/governance-activation/graph.js.map +1 -0
  40. package/dist/governance-activation/identity.d.ts +35 -0
  41. package/dist/governance-activation/identity.js +89 -0
  42. package/dist/governance-activation/identity.js.map +1 -0
  43. package/dist/governance-activation/index.d.ts +18 -0
  44. package/dist/governance-activation/index.js +19 -0
  45. package/dist/governance-activation/index.js.map +1 -0
  46. package/dist/governance-activation/migration.d.ts +44 -0
  47. package/dist/governance-activation/migration.js +268 -0
  48. package/dist/governance-activation/migration.js.map +1 -0
  49. package/dist/governance-activation/readiness.d.ts +23 -0
  50. package/dist/governance-activation/readiness.js +158 -0
  51. package/dist/governance-activation/readiness.js.map +1 -0
  52. package/dist/governance-activation/reconciliation.d.ts +11 -0
  53. package/dist/governance-activation/reconciliation.js +58 -0
  54. package/dist/governance-activation/reconciliation.js.map +1 -0
  55. package/dist/governance-activation/release-integrity.d.ts +11 -0
  56. package/dist/governance-activation/release-integrity.js +49 -0
  57. package/dist/governance-activation/release-integrity.js.map +1 -0
  58. package/dist/governance-activation/seed-lifecycle.d.ts +116 -0
  59. package/dist/governance-activation/seed-lifecycle.js +609 -0
  60. package/dist/governance-activation/seed-lifecycle.js.map +1 -0
  61. package/dist/governance-activation/source-of-truth.d.ts +164 -0
  62. package/dist/governance-activation/source-of-truth.js +986 -0
  63. package/dist/governance-activation/source-of-truth.js.map +1 -0
  64. package/dist/governance-activation/task-projection.d.ts +21 -0
  65. package/dist/governance-activation/task-projection.js +75 -0
  66. package/dist/governance-activation/task-projection.js.map +1 -0
  67. package/dist/governance-activation/transitions.d.ts +163 -0
  68. package/dist/governance-activation/transitions.js +2128 -0
  69. package/dist/governance-activation/transitions.js.map +1 -0
  70. package/dist/governance-activation/type-contract.d.ts +1 -0
  71. package/dist/governance-activation/type-contract.js +27 -0
  72. package/dist/governance-activation/type-contract.js.map +1 -0
  73. package/dist/governance-activation/types.d.ts +390 -0
  74. package/dist/governance-activation/types.js +108 -0
  75. package/dist/governance-activation/types.js.map +1 -0
  76. package/dist/governance-activation/validators.d.ts +17 -0
  77. package/dist/governance-activation/validators.js +1305 -0
  78. package/dist/governance-activation/validators.js.map +1 -0
  79. package/dist/init-filesystem.js +5 -1
  80. package/dist/init-filesystem.js.map +1 -1
  81. package/dist/planner.js +3 -3
  82. package/dist/planner.js.map +1 -1
  83. package/dist/power-apps-templates.js +14 -1
  84. package/dist/power-apps-templates.js.map +1 -1
  85. package/dist/process-runner.d.ts +3 -0
  86. package/dist/process-runner.js +68 -10
  87. package/dist/process-runner.js.map +1 -1
  88. package/dist/repository-governance.d.ts +13 -3
  89. package/dist/repository-governance.js +357 -51
  90. package/dist/repository-governance.js.map +1 -1
  91. package/dist/telemetry/contract.d.ts +1 -1
  92. package/dist/telemetry/contract.js +6 -0
  93. package/dist/telemetry/contract.js.map +1 -1
  94. package/dist/templates.js +320 -25
  95. package/dist/templates.js.map +1 -1
  96. package/dist/types.d.ts +14 -6
  97. package/docs/cli-reference.md +60 -12
  98. package/docs/configuration-and-manifests.md +40 -16
  99. package/docs/existing-repositories.md +22 -11
  100. package/docs/getting-started.md +46 -10
  101. package/docs/project-structure.md +34 -5
  102. package/docs/repository-governance.md +200 -245
  103. package/docs/safety-and-consent.md +24 -2
  104. package/docs/troubleshooting.md +55 -4
  105. package/docs/workloads.md +1 -1
  106. package/package.json +2 -1
@@ -0,0 +1,188 @@
1
+ import type { ApprovalCostCeiling, ApprovalDestinationScope, ApprovalEnvelope, ApprovalEvaluation, ApprovalGateKind, ApprovalResourceScope, EvidenceTransitionIdentity, HumanAuthorityQuestionKind, PhaseGraphNode, RequestedTransitionPlan, UserActivationState } from './types.js';
2
+ type ApprovalScope = ApprovalEnvelope | RequestedTransitionPlan;
3
+ export declare const approvalEnvelopeV1Schema: {
4
+ readonly $schema: 'https://json-schema.org/draft/2020-12/schema';
5
+ readonly $id: 'https://mission-control.local/liftoff/governance/approval-envelope.schema.v1.json';
6
+ readonly title: 'Liftoff governance approval envelope v1';
7
+ readonly type: 'object';
8
+ readonly additionalProperties: false;
9
+ readonly required: readonly ['schemaVersion', 'id', 'phaseId', 'gateKind', 'identity', 'baselineSha', 'planDigest', 'resources', 'destinations', 'permissions', 'costCeiling', 'policyExceptions', 'destructiveScope', 'expiresAt', 'approvedAt', 'approver'];
10
+ readonly properties: {
11
+ readonly schemaVersion: {
12
+ readonly const: number;
13
+ };
14
+ readonly id: {
15
+ readonly type: 'string';
16
+ readonly minLength: 1;
17
+ };
18
+ readonly phaseId: {
19
+ readonly type: 'string';
20
+ };
21
+ readonly gateKind: {
22
+ readonly type: 'string';
23
+ };
24
+ readonly identity: {
25
+ readonly type: 'object';
26
+ readonly additionalProperties: false;
27
+ readonly required: string[];
28
+ readonly properties: {
29
+ liftoffVersion: {
30
+ const: string;
31
+ };
32
+ manifestArtifactVersion: {
33
+ const: number;
34
+ };
35
+ policyVersion: {
36
+ const: string;
37
+ };
38
+ activationContractVersion: {
39
+ const: number;
40
+ };
41
+ phaseGraphSchemaVersion: {
42
+ const: number;
43
+ };
44
+ phaseGraphHash: {
45
+ const: string;
46
+ };
47
+ activationStateSchemaVersion: {
48
+ const: number;
49
+ };
50
+ evidenceHeaderSchemaVersion: {
51
+ const: number;
52
+ };
53
+ approvalEnvelopeSchemaVersion: {
54
+ const: number;
55
+ };
56
+ supersessionSchemaVersion: {
57
+ const: number;
58
+ };
59
+ credentialPolicySchemaVersion: {
60
+ const: number;
61
+ };
62
+ };
63
+ };
64
+ readonly baselineSha: {
65
+ readonly type: 'string';
66
+ readonly pattern: '^[a-f0-9]{64}$';
67
+ };
68
+ readonly planDigest: {
69
+ readonly type: 'string';
70
+ readonly pattern: '^[a-f0-9]{64}$';
71
+ };
72
+ readonly resources: {
73
+ readonly type: 'array';
74
+ readonly items: {
75
+ readonly type: 'object';
76
+ readonly additionalProperties: false;
77
+ readonly required: readonly ['type', 'identity'];
78
+ readonly properties: {
79
+ readonly type: {
80
+ readonly type: 'string';
81
+ readonly minLength: 1;
82
+ };
83
+ readonly identity: {
84
+ readonly type: 'string';
85
+ readonly minLength: 1;
86
+ };
87
+ };
88
+ };
89
+ };
90
+ readonly destinations: {
91
+ readonly type: 'array';
92
+ readonly items: {
93
+ readonly type: 'object';
94
+ readonly additionalProperties: false;
95
+ readonly required: readonly ['type', 'identity', 'repository', 'subscriptionId'];
96
+ readonly properties: {
97
+ readonly type: {
98
+ readonly enum: readonly ['repository', 'subscription', 'environment', 'tenant', 'local', 'external'];
99
+ };
100
+ readonly identity: {
101
+ readonly type: 'string';
102
+ readonly minLength: 1;
103
+ };
104
+ readonly repository: {
105
+ readonly type: readonly ['string', 'null'];
106
+ };
107
+ readonly subscriptionId: {
108
+ readonly type: readonly ['string', 'null'];
109
+ };
110
+ };
111
+ };
112
+ };
113
+ readonly permissions: {
114
+ readonly type: 'array';
115
+ readonly items: {
116
+ readonly type: 'string';
117
+ readonly minLength: 1;
118
+ };
119
+ };
120
+ readonly costCeiling: {
121
+ readonly type: 'object';
122
+ readonly additionalProperties: false;
123
+ readonly required: readonly ['currency', 'fixedMonthlyCents', 'usageMonthlyCents'];
124
+ readonly properties: {
125
+ readonly currency: {
126
+ readonly type: 'string';
127
+ readonly pattern: '^[A-Z]{3}$';
128
+ };
129
+ readonly fixedMonthlyCents: {
130
+ readonly type: 'integer';
131
+ readonly minimum: 0;
132
+ };
133
+ readonly usageMonthlyCents: {
134
+ readonly type: 'integer';
135
+ readonly minimum: 0;
136
+ };
137
+ };
138
+ };
139
+ readonly policyExceptions: {
140
+ readonly type: 'array';
141
+ readonly items: {
142
+ readonly type: 'string';
143
+ readonly minLength: 1;
144
+ };
145
+ };
146
+ readonly destructiveScope: {
147
+ readonly type: 'array';
148
+ readonly items: {
149
+ readonly type: 'string';
150
+ readonly minLength: 1;
151
+ };
152
+ };
153
+ readonly expiresAt: {
154
+ readonly type: 'string';
155
+ readonly format: 'date-time';
156
+ };
157
+ readonly approvedAt: {
158
+ readonly type: 'string';
159
+ readonly format: 'date-time';
160
+ };
161
+ readonly approver: {
162
+ readonly type: 'string';
163
+ readonly minLength: 1;
164
+ };
165
+ };
166
+ };
167
+ export declare function normalizeApprovalCostCeiling(cost: ApprovalCostCeiling): ApprovalCostCeiling;
168
+ export declare function normalizeApprovalResources(resources: readonly ApprovalResourceScope[]): ApprovalResourceScope[];
169
+ export declare function normalizeApprovalDestinations(destinations: readonly ApprovalDestinationScope[]): ApprovalDestinationScope[];
170
+ export declare function normalizeApprovalPermissions(permissions: readonly string[]): string[];
171
+ export declare function normalizeApprovalPolicyExceptions(exceptions: readonly string[]): string[];
172
+ export declare function normalizeApprovalDestructiveScope(scope: readonly string[]): string[];
173
+ export declare function normalizeApprovalScope(scope: ApprovalScope): RequestedTransitionPlan;
174
+ /**
175
+ * Returns the hashable approval scope. Explicit approver, approval time, and
176
+ * envelope id are audit metadata and are intentionally excluded; changing them
177
+ * cannot force an implementation/API-shape retry to ask again.
178
+ */
179
+ export declare function canonicalApprovalEnvelopeScope(envelope: ApprovalEnvelope): Record<string, unknown>;
180
+ export declare function canonicalApprovalEnvelopeHash(envelope: ApprovalEnvelope): string;
181
+ export declare const approvalEnvelopeHash: typeof canonicalApprovalEnvelopeHash;
182
+ export declare function questionKindForApprovalGate(gateKind: ApprovalGateKind): HumanAuthorityQuestionKind | null;
183
+ export declare function determineHumanAuthorityQuestion(plan: RequestedTransitionPlan): HumanAuthorityQuestionKind | null;
184
+ export declare function evaluateApprovalForTransitionPlan(plan: RequestedTransitionPlan, envelopes: readonly ApprovalEnvelope[], options?: {
185
+ now?: Date;
186
+ }): ApprovalEvaluation;
187
+ export declare function transitionPlanForPhase(phase: PhaseGraphNode, state: UserActivationState, transition: EvidenceTransitionIdentity, _projectRoot?: string): RequestedTransitionPlan;
188
+ export {};