@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,164 @@
1
+ import type { ActivationIdentity, GraphReconciliationRecord, ManagedPhaseGraph, PhaseEvidenceRecord, PhaseId, SupersessionRecord, UserActivationState } from './types.js';
2
+ import type { LiftoffManifest, SpecWorkflowId } from '../types.js';
3
+ export declare const governanceChangeMetadataFileName: 'liftoff-governance.json';
4
+ export declare const governanceSupersessionPathParts: readonly ['governance', 'supersessions'];
5
+ export declare const governanceReconciliationPathParts: readonly ['governance', 'reconciliation'];
6
+ export declare const governanceSourceOfTruthMarker: 'liftoff-governance-source-of-truth';
7
+ export declare const governanceChangeMetadataSchemaVersion: 1;
8
+ export interface GovernancePhaseTaskMapping {
9
+ phaseId: PhaseId;
10
+ taskId: string;
11
+ marker: `<!-- liftoff-phase: ${PhaseId} -->`;
12
+ policy: 'evidence-projection-v1';
13
+ }
14
+ export interface GovernanceChangeMetadata {
15
+ schemaVersion: typeof governanceChangeMetadataSchemaVersion;
16
+ marker: typeof governanceSourceOfTruthMarker;
17
+ changeId: string;
18
+ workflowKind: SpecWorkflowId;
19
+ activationIdentity: ActivationIdentity;
20
+ phaseGraphHash: string;
21
+ baselineSha: string;
22
+ phaseTaskMapping: readonly GovernancePhaseTaskMapping[];
23
+ currentPolicy: {
24
+ phaseAuthority: 'managed-phase-graph';
25
+ taskCompletion: 'authoritative-evidence-projection';
26
+ approvalPolicy: 'approval-envelope-required-for-gated-phases';
27
+ };
28
+ createdFrom: {
29
+ kind: 'approved-phase-0-facts';
30
+ approvedFactDigest: string;
31
+ evidenceIds: readonly string[];
32
+ };
33
+ acknowledgedAt: string;
34
+ owner: string;
35
+ }
36
+ export interface ApprovedPhase0Fact {
37
+ id: string;
38
+ value: string | number | boolean | null;
39
+ }
40
+ export interface ApprovedPhase0Facts {
41
+ projectName: string;
42
+ repositoryId: string;
43
+ repositoryName: string;
44
+ defaultBranch: string;
45
+ workflowKind: SpecWorkflowId;
46
+ baselineSha: string;
47
+ evidenceIds: readonly string[];
48
+ approvedFacts: readonly ApprovedPhase0Fact[];
49
+ approvedAt: string;
50
+ approver: string;
51
+ }
52
+ export interface GovernanceChangeFilePlan {
53
+ pathParts: readonly string[];
54
+ content: string;
55
+ }
56
+ export interface GovernanceChangeWritePlan {
57
+ changeId: string;
58
+ workflowKind: SpecWorkflowId;
59
+ metadata: GovernanceChangeMetadata;
60
+ files: readonly GovernanceChangeFilePlan[];
61
+ transactionalWrite: {
62
+ functionName: 'writeGovernanceChangeArtifacts';
63
+ writesAllFilesOrThrows: true;
64
+ };
65
+ }
66
+ export type ActiveGovernanceCandidateStatus = 'compatible' | 'identity-mismatch' | 'invalid-metadata' | 'missing-metadata';
67
+ export interface ActiveGovernanceCandidate {
68
+ changeId: string;
69
+ workflowKind: SpecWorkflowId;
70
+ pathParts: readonly string[];
71
+ status: ActiveGovernanceCandidateStatus;
72
+ metadata?: GovernanceChangeMetadata;
73
+ issues: readonly string[];
74
+ }
75
+ export type GovernanceSourceOfTruthInspection = {
76
+ status: 'seed-blocked';
77
+ seedChangeId: string;
78
+ blockers: readonly string[];
79
+ selected: null;
80
+ candidates: readonly ActiveGovernanceCandidate[];
81
+ } | {
82
+ status: 'none';
83
+ selected: null;
84
+ candidates: readonly ActiveGovernanceCandidate[];
85
+ createPlan: GovernanceCreateChangePlanPreview;
86
+ } | {
87
+ status: 'selected';
88
+ selected: ActiveGovernanceCandidate;
89
+ candidates: readonly ActiveGovernanceCandidate[];
90
+ recordActiveChangeOnNextMutation: boolean;
91
+ reconciliation: GovernanceActiveReconciliationResult;
92
+ supersession: GovernanceSupersessionInspection;
93
+ } | {
94
+ status: 'ambiguous';
95
+ selected: null;
96
+ candidates: readonly ActiveGovernanceCandidate[];
97
+ blockers: readonly string[];
98
+ supersession: GovernanceSupersessionInspection;
99
+ } | {
100
+ status: 'incompatible';
101
+ selected: null;
102
+ candidates: readonly ActiveGovernanceCandidate[];
103
+ blockers: readonly string[];
104
+ reconciliation: GovernanceActiveReconciliationResult;
105
+ };
106
+ export interface GovernanceCreateChangePlanPreview {
107
+ status: 'ready' | 'blocked';
108
+ reason: string;
109
+ changeId: string;
110
+ workflowKind: SpecWorkflowId;
111
+ requiredFacts: readonly string[];
112
+ }
113
+ export interface GovernanceSupersessionInspection {
114
+ records: readonly SupersessionRecord[];
115
+ invalidRecords: readonly string[];
116
+ selectedChangeId: string | null;
117
+ issues: readonly string[];
118
+ }
119
+ export type GovernanceActiveReconciliationResult = {
120
+ status: 'not-required';
121
+ approvalRequired: false;
122
+ preservedPhaseIds: readonly PhaseId[];
123
+ invalidPhaseIds: readonly PhaseId[];
124
+ issues: readonly string[];
125
+ } | {
126
+ status: 'required';
127
+ approvalRequired: true;
128
+ fromIdentity: ActivationIdentity;
129
+ toIdentity: ActivationIdentity;
130
+ record: GraphReconciliationRecord;
131
+ preservedPhaseIds: readonly PhaseId[];
132
+ invalidPhaseIds: readonly PhaseId[];
133
+ evidenceToReview: readonly string[];
134
+ issues: readonly string[];
135
+ } | {
136
+ status: 'blocked';
137
+ approvalRequired: false;
138
+ issues: readonly string[];
139
+ preservedPhaseIds: readonly PhaseId[];
140
+ invalidPhaseIds: readonly PhaseId[];
141
+ };
142
+ export declare function validateGovernanceChangeMetadata(value: unknown): GovernanceChangeMetadata;
143
+ export declare function governancePhaseTaskMappings(): GovernancePhaseTaskMapping[];
144
+ export declare function approvedPhase0FactDigest(facts: ApprovedPhase0Facts): string;
145
+ export declare function deterministicGovernanceChangeId(facts: Pick<ApprovedPhase0Facts, 'projectName' | 'baselineSha' | 'workflowKind'>): string;
146
+ export declare function renderGovernanceChangeWritePlan(facts: ApprovedPhase0Facts): GovernanceChangeWritePlan;
147
+ export declare function writeGovernanceChangeArtifacts(projectRoot: string, plan: GovernanceChangeWritePlan): Promise<void>;
148
+ export declare function buildApprovedPhase0FactsFromState(manifest: LiftoffManifest, state: UserActivationState, evidence: readonly PhaseEvidenceRecord[]): ApprovedPhase0Facts | undefined;
149
+ export declare function reconcileActiveGovernanceChange(input: {
150
+ metadata: GovernanceChangeMetadata;
151
+ evidence: readonly PhaseEvidenceRecord[];
152
+ fromGraph?: ManagedPhaseGraph;
153
+ toGraph?: ManagedPhaseGraph;
154
+ toIdentity?: ActivationIdentity;
155
+ recognizedGraphHashes?: ReadonlySet<string>;
156
+ reconciledAt?: string;
157
+ }): GovernanceActiveReconciliationResult;
158
+ export declare function stateWithSelectedActiveChange(state: UserActivationState, selected: ActiveGovernanceCandidate): UserActivationState;
159
+ export declare function inspectGovernanceSourceOfTruth(input: {
160
+ projectRoot: string;
161
+ manifest: LiftoffManifest;
162
+ state: UserActivationState;
163
+ evidence: readonly PhaseEvidenceRecord[];
164
+ }): Promise<GovernanceSourceOfTruthInspection>;