@shapeshift-labs/frontier-lang-compiler 0.2.100 → 0.2.101

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 (43) hide show
  1. package/dist/declarations/bidirectional-target-change-evidence.d.ts +299 -0
  2. package/dist/declarations/bidirectional-target-change.d.ts +19 -120
  3. package/dist/declarations/native-project-admission.d.ts +43 -22
  4. package/dist/declarations/semantic-edit-replay-diagnostics.d.ts +24 -0
  5. package/dist/declarations/semantic-edit-script.d.ts +20 -15
  6. package/dist/declarations/semantic-lineage.d.ts +3 -21
  7. package/dist/declarations/semantic-merge-candidates.d.ts +39 -0
  8. package/dist/declarations/semantic-sidecar-admission.d.ts +14 -0
  9. package/dist/declarations/semantic-sidecar.d.ts +12 -14
  10. package/dist/internal/index-impl/bidirectionalTargetRoundtripEvidence.js +200 -0
  11. package/dist/internal/index-impl/createBidirectionalTargetChangeRecord.js +62 -17
  12. package/dist/internal/index-impl/createNativeSourcePreservation.js +16 -1
  13. package/dist/internal/index-impl/createProjectImportAdmissionRecord.js +151 -1
  14. package/dist/internal/index-impl/createSemanticImportSidecar.js +5 -0
  15. package/dist/internal/index-impl/createSemanticImportSidecarAdmission.js +29 -11
  16. package/dist/internal/index-impl/nativeChangeProjectionEndpoint.js +56 -16
  17. package/dist/internal/index-impl/projectImportAdmissionMergeScore.js +26 -74
  18. package/dist/internal/index-impl/projectImportAdmissionProjectionCoverage.js +74 -0
  19. package/dist/internal/index-impl/projectSemanticEditScriptToSource.js +39 -13
  20. package/dist/internal/index-impl/replaySemanticEditProjection.js +65 -23
  21. package/dist/internal/index-impl/semanticEditInsertionAnchors.js +8 -5
  22. package/dist/internal/index-impl/semanticEditReplayDiagnostics.js +167 -0
  23. package/dist/internal/index-impl/semanticEditSourceRanges.js +94 -15
  24. package/dist/internal/index-impl/semanticHistoryLineageResolution.js +21 -2
  25. package/dist/internal/index-impl/semanticLineageHashEvidence.js +97 -0
  26. package/dist/internal/index-impl/semanticLineageInferenceMatching.js +8 -0
  27. package/dist/internal/index-impl/semanticLineageResolutionRecords.js +18 -1
  28. package/dist/internal/index-impl/semanticMergeCandidateRecords.js +22 -2
  29. package/dist/internal/index-impl/semanticMergeCandidateScoreFacets.js +221 -0
  30. package/dist/internal/index-impl/semanticPatchBundleOverlaps.js +23 -1
  31. package/dist/internal/index-impl/sourcePreservationFromProjectionContext.js +9 -2
  32. package/dist/native-import-language-profiles.js +10 -2
  33. package/dist/native-region-scanner-js-helpers.js +8 -2
  34. package/dist/native-region-scanner-js-imports.js +7 -0
  35. package/dist/native-region-scanner-js.js +4 -4
  36. package/dist/native-region-scanner.js +2 -1
  37. package/dist/semantic-import-regions.js +6 -4
  38. package/dist/semantic-import-sidecar-admission-types.d.ts +14 -0
  39. package/dist/semantic-import-sidecar-entry.js +151 -7
  40. package/dist/semantic-import-sidecar-types.d.ts +18 -13
  41. package/dist/semantic-import-source-preservation-utils.js +55 -0
  42. package/dist/semantic-import-source-preservation.js +98 -3
  43. package/package.json +1 -1
@@ -0,0 +1,24 @@
1
+ import type { SemanticEditReplayStatus } from './semantic-edit-script.js';
2
+
3
+ export type SemanticEditReplayDiagnosticCategory = 'stale-anchor' | 'overlap' | 'missing-source' | 'projection-mismatch' | 'matched-source' | 'reanchored' | 'replay' | string;
4
+ export type SemanticEditReplayDiagnosticSeverity = 'info' | 'warning' | 'error' | string;
5
+ export type SemanticEditReplayDiagnosticScope = 'replay' | 'edit' | string;
6
+
7
+ export interface SemanticEditReplayDiagnostic {
8
+ readonly code: string;
9
+ readonly category: SemanticEditReplayDiagnosticCategory;
10
+ readonly severity: SemanticEditReplayDiagnosticSeverity;
11
+ readonly scope: SemanticEditReplayDiagnosticScope;
12
+ readonly status?: SemanticEditReplayStatus | string;
13
+ readonly operationId?: string;
14
+ readonly sourcePath?: string;
15
+ readonly symbolName?: string;
16
+ readonly symbolKind?: string;
17
+ readonly editKind?: 'replace' | 'insert' | 'delete' | string;
18
+ readonly start?: number;
19
+ readonly end?: number;
20
+ readonly expectedHash?: string;
21
+ readonly actualHash?: string;
22
+ readonly replacementHash?: string;
23
+ readonly overlapOperationIds?: readonly string[];
24
+ }
@@ -1,9 +1,21 @@
1
1
  import type { EvidenceRecord, FrontierSourceLanguage, SemanticMergeReadiness, SourceSpan } from '@shapeshift-labs/frontier-lang-kernel';
2
2
  import type { ImportNativeSourceOptions, NativeSourceImportResult } from './import-adapter-core.js';
3
-
3
+ import type { SemanticEditReplayDiagnostic } from './semantic-edit-replay-diagnostics.js';
4
+ export type * from './semantic-edit-replay-diagnostics.js';
4
5
  export type SemanticEditScriptOperationStatus = 'candidate' | 'portable' | 'already-applied' | 'covered' | 'needs-port' | 'conflict' | 'stale' | 'blocked';
5
6
  export type SemanticEditScriptAdmissionStatus = 'auto-merge-candidate' | 'needs-port' | 'conflict' | 'stale' | 'blocked' | 'evidence-only';
6
-
7
+ export interface SemanticEditInsertionAnchorCandidate {
8
+ readonly mode?: 'before' | 'after' | 'file-start' | 'file-end' | string;
9
+ readonly anchorKey?: string;
10
+ readonly anchorSymbolId?: string;
11
+ readonly anchorSymbolName?: string;
12
+ readonly anchorSymbolKind?: string;
13
+ readonly baseSpan?: SourceSpan;
14
+ readonly workerAnchorSpan?: SourceSpan;
15
+ readonly headSpan?: SourceSpan;
16
+ readonly sourcePath?: string;
17
+ readonly reasonCodes?: readonly string[];
18
+ }
7
19
  export interface SemanticEditScriptOperation {
8
20
  readonly id: string;
9
21
  readonly kind: string;
@@ -19,6 +31,7 @@ export interface SemanticEditScriptOperation {
19
31
  readonly mode?: 'before' | 'after' | 'file-start' | 'file-end' | string;
20
32
  readonly anchorKey?: string; readonly anchorSymbolId?: string; readonly anchorSymbolName?: string; readonly anchorSymbolKind?: string;
21
33
  readonly baseSpan?: SourceSpan; readonly workerAnchorSpan?: SourceSpan; readonly headSpan?: SourceSpan; readonly sourcePath?: string;
34
+ readonly anchorCandidates?: readonly SemanticEditInsertionAnchorCandidate[];
22
35
  readonly insertedSymbolId?: string; readonly insertedSymbolName?: string; readonly insertedSymbolKind?: string;
23
36
  readonly insertedSourceSpan?: SourceSpan; readonly insertedSourcePath?: string;
24
37
  readonly reasonCodes?: readonly string[];
@@ -52,7 +65,6 @@ export interface SemanticEditScriptOperation {
52
65
  readonly evidenceIds?: readonly string[];
53
66
  readonly metadata?: Record<string, unknown>;
54
67
  }
55
-
56
68
  export interface SemanticEditScriptSummary {
57
69
  readonly operations: number;
58
70
  readonly byStatus: Readonly<Record<string, number>>;
@@ -71,7 +83,6 @@ export interface SemanticEditScriptSummary {
71
83
  readonly sourceIdentityHashes?: readonly string[];
72
84
  readonly operationContentHashes?: readonly string[];
73
85
  }
74
-
75
86
  export interface SemanticEditScriptAdmission {
76
87
  readonly status: SemanticEditScriptAdmissionStatus;
77
88
  readonly action: 'run-gates-and-apply' | 'reanchor-or-human-port' | 'record-evidence' | 'block' | string;
@@ -83,7 +94,6 @@ export interface SemanticEditScriptAdmission {
83
94
  readonly conflictKeys: readonly string[];
84
95
  readonly evidenceIds: readonly string[];
85
96
  }
86
-
87
97
  export interface SemanticEditScript {
88
98
  readonly kind: 'frontier.lang.semanticEditScript';
89
99
  readonly version: 1;
@@ -105,7 +115,6 @@ export interface SemanticEditScript {
105
115
  readonly evidence: readonly EvidenceRecord[];
106
116
  readonly metadata?: Record<string, unknown>;
107
117
  }
108
-
109
118
  export interface SemanticEditProjectionEdit {
110
119
  readonly operationId?: string;
111
120
  readonly status: 'applied' | 'already-applied';
@@ -143,9 +152,9 @@ export interface SemanticEditProjectionEdit {
143
152
  readonly insertionAnchorKey?: string;
144
153
  readonly insertionAnchorSymbolName?: string;
145
154
  readonly insertionAnchorSymbolKind?: string;
155
+ readonly insertionAnchorCandidates?: readonly SemanticEditInsertionAnchorCandidate[];
146
156
  readonly replacementText?: string;
147
157
  }
148
-
149
158
  export interface SemanticEditProjection {
150
159
  readonly kind: 'frontier.lang.semanticEditProjection';
151
160
  readonly version: 1;
@@ -171,9 +180,7 @@ export interface SemanticEditProjection {
171
180
  };
172
181
  readonly metadata?: Record<string, unknown>;
173
182
  }
174
-
175
183
  export type SemanticEditReplayStatus = 'accepted-clean' | 'already-applied' | 'conflict' | 'stale' | 'blocked' | 'needs-port' | 'evidence-only';
176
-
177
184
  export interface SemanticEditReplayEdit {
178
185
  readonly operationId?: string;
179
186
  readonly semanticKey?: string;
@@ -181,6 +188,8 @@ export interface SemanticEditReplayEdit {
181
188
  readonly sourceIdentityHash?: string;
182
189
  readonly editContentHash?: string;
183
190
  readonly editKind?: 'replace' | 'insert' | 'delete' | string;
191
+ readonly editOrder?: number;
192
+ readonly sourceRangeKind?: string;
184
193
  readonly sourcePath?: string;
185
194
  readonly symbolName?: string;
186
195
  readonly symbolKind?: string;
@@ -190,8 +199,8 @@ export interface SemanticEditReplayEdit {
190
199
  readonly replacementBytes?: number;
191
200
  readonly replacementText?: string;
192
201
  readonly reasonCodes: readonly string[];
202
+ readonly diagnostics?: readonly SemanticEditReplayDiagnostic[];
193
203
  }
194
-
195
204
  export interface SemanticEditReplay {
196
205
  readonly kind: 'frontier.lang.semanticEditReplay';
197
206
  readonly version: 1;
@@ -209,6 +218,7 @@ export interface SemanticEditReplay {
209
218
  readonly edits: readonly SemanticEditReplayEdit[];
210
219
  readonly appliedOperations: readonly string[];
211
220
  readonly skippedOperations: readonly string[];
221
+ readonly diagnostics?: readonly SemanticEditReplayDiagnostic[];
212
222
  readonly admission: {
213
223
  readonly status: SemanticEditReplayStatus;
214
224
  readonly action: 'apply' | 'skip' | 'rerun-semantic-import' | 'human-review' | 'block' | string;
@@ -230,7 +240,6 @@ export interface SemanticEditReplay {
230
240
  };
231
241
  readonly metadata?: Record<string, unknown>;
232
242
  }
233
-
234
243
  export interface ProjectSemanticEditScriptToSourceOptions {
235
244
  readonly id?: string;
236
245
  readonly script: SemanticEditScript;
@@ -239,7 +248,6 @@ export interface ProjectSemanticEditScriptToSourceOptions {
239
248
  readonly headSourcePath?: string;
240
249
  readonly metadata?: Record<string, unknown>;
241
250
  }
242
-
243
251
  export interface ReplaySemanticEditProjectionOptions {
244
252
  readonly id?: string;
245
253
  readonly projection?: SemanticEditProjection;
@@ -253,7 +261,6 @@ export interface ReplaySemanticEditProjectionOptions {
253
261
  readonly parser?: string;
254
262
  readonly metadata?: Record<string, unknown>;
255
263
  }
256
-
257
264
  export interface CreateSemanticEditScriptOptions {
258
265
  readonly id?: string;
259
266
  readonly language?: FrontierSourceLanguage | string;
@@ -296,11 +303,9 @@ export interface CreateSemanticEditScriptOptions {
296
303
  readonly evidenceId?: string;
297
304
  readonly metadata?: Record<string, unknown>;
298
305
  }
299
-
300
306
  export interface CreateSemanticEditScriptRuntimeOptions {
301
307
  readonly metadata?: Record<string, unknown>;
302
308
  }
303
-
304
309
  export declare const SemanticEditScriptAdmissionStatuses: readonly SemanticEditScriptAdmissionStatus[];
305
310
  export declare function createSemanticEditScript(input?: CreateSemanticEditScriptOptions, options?: CreateSemanticEditScriptRuntimeOptions): SemanticEditScript;
306
311
  export declare function projectSemanticEditScriptToSource(input: ProjectSemanticEditScriptToSourceOptions): SemanticEditProjection;
@@ -1,9 +1,7 @@
1
1
  import type { EvidenceRecord, FrontierSourceLanguage, SemanticMergeReadiness, SourceSpan } from '@shapeshift-labs/frontier-lang-kernel';
2
2
  import type { ImportNativeSourceOptions, NativeSourceImportResult } from './import-adapter-core.js';
3
-
4
3
  export type SemanticLineageEventKind = 'unchanged' | 'moved' | 'renamed' | 'split' | 'merged' | 'deleted' | 'recreated' | 'unknown' | string;
5
4
  export type SemanticLineageResolutionStatus = 'unchanged' | 'resolved' | 'ambiguous' | 'deleted' | 'recreated' | 'cycle' | 'max-depth' | 'not-found' | string;
6
-
7
5
  export interface SemanticAnchor {
8
6
  readonly id?: string; readonly key?: string; readonly kind?: string;
9
7
  readonly language?: FrontierSourceLanguage | string; readonly sourcePath?: string; readonly sourceHash?: string;
@@ -17,7 +15,6 @@ export interface SemanticAnchor {
17
15
  readonly lineageEventKinds?: readonly SemanticLineageEventKind[]; readonly lineageReasonCodes?: readonly string[];
18
16
  readonly metadata?: Record<string, unknown>;
19
17
  }
20
-
21
18
  export interface CreateSemanticAnchorInput extends SemanticAnchor {
22
19
  readonly ownershipKey?: string;
23
20
  readonly conflictKey?: string;
@@ -30,7 +27,6 @@ export interface CreateSemanticAnchorInput extends SemanticAnchor {
30
27
  readonly hash?: string;
31
28
  readonly span?: SourceSpan;
32
29
  }
33
-
34
30
  export interface SemanticLineageCrdtClock {
35
31
  readonly operationId?: string;
36
32
  readonly actor?: string;
@@ -40,7 +36,6 @@ export interface SemanticLineageCrdtClock {
40
36
  readonly stateVector?: Record<string, number>;
41
37
  readonly versionFrame?: Record<string, unknown>;
42
38
  }
43
-
44
39
  export interface SemanticLineageCrdtClockInput {
45
40
  readonly operationId?: string;
46
41
  readonly id?: string;
@@ -53,7 +48,6 @@ export interface SemanticLineageCrdtClockInput {
53
48
  readonly versionFrame?: Record<string, unknown>;
54
49
  readonly frame?: Record<string, unknown>;
55
50
  }
56
-
57
51
  export interface SemanticLineageEvidence {
58
52
  readonly pathMatch?: boolean;
59
53
  readonly signatureHashMatch?: boolean;
@@ -63,11 +57,9 @@ export interface SemanticLineageEvidence {
63
57
  readonly confidence?: number;
64
58
  readonly command?: string;
65
59
  }
66
-
67
60
  export interface SemanticLineageEvidenceInput extends SemanticLineageEvidence {
68
61
  readonly id?: string;
69
62
  }
70
-
71
63
  export interface SemanticLineageActor {
72
64
  readonly id?: string;
73
65
  readonly role?: string;
@@ -76,11 +68,9 @@ export interface SemanticLineageActor {
76
68
  readonly runId?: string;
77
69
  readonly metadata?: Record<string, unknown>;
78
70
  }
79
-
80
71
  export interface SemanticLineageActorInput extends SemanticLineageActor {
81
72
  readonly actorId?: string;
82
73
  }
83
-
84
74
  export interface SemanticLineageEvent {
85
75
  readonly kind: 'frontier.lang.semanticLineageEvent';
86
76
  readonly version: 1;
@@ -100,7 +90,6 @@ export interface SemanticLineageEvent {
100
90
  readonly conflictKeys: readonly string[];
101
91
  readonly metadata?: Record<string, unknown>;
102
92
  }
103
-
104
93
  export interface CreateSemanticLineageEventInput {
105
94
  readonly id?: string; readonly hash?: string; readonly createdAt?: number | string;
106
95
  readonly eventKind?: SemanticLineageEventKind; readonly event?: SemanticLineageEventKind; readonly kind?: SemanticLineageEventKind;
@@ -136,7 +125,6 @@ export interface CreateSemanticLineageEventInput {
136
125
  readonly conflictKeys?: readonly string[] | string;
137
126
  readonly metadata?: Record<string, unknown>;
138
127
  }
139
-
140
128
  export interface SemanticLineageMap {
141
129
  readonly kind: 'frontier.lang.semanticLineageMap';
142
130
  readonly version: 1;
@@ -154,7 +142,6 @@ export interface SemanticLineageMap {
154
142
  readonly eventKinds: readonly string[];
155
143
  };
156
144
  }
157
-
158
145
  export interface SemanticLineageResolutionQuery {
159
146
  readonly id?: string;
160
147
  readonly anchor?: SemanticAnchor | string;
@@ -168,7 +155,6 @@ export interface SemanticLineageResolutionQuery {
168
155
  readonly generatedAt?: number | string;
169
156
  readonly metadata?: Record<string, unknown>;
170
157
  }
171
-
172
158
  export interface SemanticLineageResolution {
173
159
  readonly kind: 'frontier.lang.semanticLineageResolution';
174
160
  readonly version: 1;
@@ -199,7 +185,6 @@ export interface SemanticLineageResolution {
199
185
  readonly reasonCodes: readonly string[];
200
186
  readonly metadata?: Record<string, unknown>;
201
187
  }
202
-
203
188
  export interface SemanticLineageQuery {
204
189
  readonly eventKind?: SemanticLineageEventKind | readonly string[];
205
190
  readonly anchorKey?: string | readonly string[];
@@ -211,7 +196,6 @@ export interface SemanticLineageQuery {
211
196
  readonly conflictKey?: string | readonly string[];
212
197
  readonly evidenceId?: string | readonly string[];
213
198
  }
214
-
215
199
  export interface SemanticLineageInferredAnchorSummary {
216
200
  readonly key?: string;
217
201
  readonly id?: string;
@@ -220,24 +204,24 @@ export interface SemanticLineageInferredAnchorSummary {
220
204
  readonly language?: FrontierSourceLanguage | string;
221
205
  readonly sourcePath?: string;
222
206
  readonly sourceHash?: string;
207
+ readonly identityHash?: string;
208
+ readonly semanticIdentityHash?: string;
209
+ readonly sourceIdentityHash?: string;
223
210
  readonly sourceSpan?: SourceSpan;
224
211
  readonly signatureHash?: string;
225
212
  readonly bodyHash?: string;
226
213
  readonly ownershipRegionKind?: string;
227
214
  }
228
-
229
215
  export interface SemanticLineageAmbiguousCandidate {
230
216
  readonly after: SemanticLineageInferredAnchorSummary;
231
217
  readonly confidence: number;
232
218
  readonly reasons: readonly string[];
233
219
  }
234
-
235
220
  export interface SemanticLineageAmbiguousMatch {
236
221
  readonly before: SemanticLineageInferredAnchorSummary;
237
222
  readonly candidates: readonly SemanticLineageAmbiguousCandidate[];
238
223
  readonly reasonCodes: readonly string[];
239
224
  }
240
-
241
225
  export interface SemanticLineageInferenceResult {
242
226
  readonly kind: 'frontier.lang.semanticLineageInference';
243
227
  readonly version: 1;
@@ -280,7 +264,6 @@ export interface SemanticLineageInferenceResult {
280
264
  readonly [key: string]: unknown;
281
265
  };
282
266
  }
283
-
284
267
  export interface InferSemanticLineageEventsOptions {
285
268
  readonly id?: string;
286
269
  readonly before?: NativeSourceImportResult | ImportNativeSourceOptions;
@@ -306,7 +289,6 @@ export interface InferSemanticLineageEventsOptions {
306
289
  readonly stateVector?: Record<string, number>;
307
290
  readonly metadata?: Record<string, unknown>;
308
291
  }
309
-
310
292
  export declare const SemanticLineageEventKinds: readonly SemanticLineageEventKind[];
311
293
  export declare const SemanticLineageResolutionStatuses: readonly SemanticLineageResolutionStatus[];
312
294
  export declare function createSemanticAnchor(input?: CreateSemanticAnchorInput | string, defaults?: Partial<SemanticAnchor>): SemanticAnchor | undefined;
@@ -9,6 +9,41 @@ import type { NativeSourceChangeKind, NativeSourceChangeSet } from './native-dif
9
9
  import type { SemanticMergeConflictSummary } from './semantic-merge-conflicts.js';
10
10
 
11
11
  export type SemanticMergeCandidateProjectionRisk = 'low' | 'medium' | 'high' | 'unknown';
12
+ export type SemanticMergeCandidateScoreFacetKey =
13
+ | 'ownership'
14
+ | 'staleStatus'
15
+ | 'testEvidence'
16
+ | 'overlap'
17
+ | 'size'
18
+ | 'semanticSidecarQuality';
19
+ export type SemanticMergeCandidateScoreFacetStatus = 'strong' | 'partial' | 'weak' | 'blocked';
20
+
21
+ export interface SemanticMergeCandidateScoreFacet {
22
+ readonly key: SemanticMergeCandidateScoreFacetKey;
23
+ readonly score: number;
24
+ readonly weight: number;
25
+ readonly weightedScore: number;
26
+ readonly status: SemanticMergeCandidateScoreFacetStatus;
27
+ readonly reasonCodes: readonly string[];
28
+ readonly signals: Record<string, unknown>;
29
+ }
30
+
31
+ export interface SemanticMergeCandidateScoreFacets {
32
+ readonly schema: 'frontier.lang.semanticMergeCandidateScoreFacets.v1';
33
+ readonly version: 1;
34
+ readonly higherIsBetter: true;
35
+ readonly value: number;
36
+ readonly risk: 'low' | 'medium' | 'high';
37
+ readonly components: Record<SemanticMergeCandidateScoreFacetKey, SemanticMergeCandidateScoreFacet>;
38
+ readonly summary: {
39
+ readonly value: number;
40
+ readonly risk: 'low' | 'medium' | 'high';
41
+ readonly lowestScore: number;
42
+ readonly weakFacets: readonly SemanticMergeCandidateScoreFacetKey[];
43
+ readonly blockedFacets: readonly SemanticMergeCandidateScoreFacetKey[];
44
+ readonly availableFacets: readonly SemanticMergeCandidateScoreFacetKey[];
45
+ };
46
+ }
12
47
 
13
48
  export interface SemanticMergeCandidateChangedRegion {
14
49
  readonly id?: string;
@@ -88,11 +123,13 @@ export interface SemanticMergeCandidateAdmissionRecord {
88
123
  readonly conflictKeys: readonly string[];
89
124
  readonly pairs: readonly SemanticMergeCandidateOverlapRecord[];
90
125
  };
126
+ readonly scoreFacets: SemanticMergeCandidateScoreFacets;
91
127
  readonly admission: {
92
128
  readonly readiness: SemanticMergeReadiness | string;
93
129
  readonly reviewRequired: boolean;
94
130
  readonly action: 'admit' | 'prioritize-review' | 'block' | string;
95
131
  readonly sortKey: number;
132
+ readonly scoreFacets: SemanticMergeCandidateScoreFacets;
96
133
  readonly reasonCodes: readonly string[];
97
134
  readonly conflictKeys: readonly string[];
98
135
  };
@@ -122,6 +159,7 @@ export interface SemanticMergeCandidateAdmissionRecord {
122
159
  readonly readiness: SemanticMergeReadiness | string;
123
160
  readonly projectionRisk: SemanticMergeCandidateProjectionRisk;
124
161
  readonly reviewRequired: boolean;
162
+ readonly scoreFacets: SemanticMergeCandidateScoreFacets['summary'];
125
163
  };
126
164
  readonly metadata?: Record<string, unknown> & {
127
165
  readonly conflictSummary?: SemanticMergeConflictSummary;
@@ -166,6 +204,7 @@ export type SemanticMergeCandidateWithAdmission = SemanticMergeCandidateRecord &
166
204
  readonly proofIds?: readonly string[];
167
205
  readonly projectionRisk?: SemanticMergeCandidateProjectionRisk;
168
206
  readonly readinessSortKey?: number;
207
+ readonly scoreFacets?: SemanticMergeCandidateScoreFacets;
169
208
  readonly mergeAdmission?: SemanticMergeCandidateAdmissionRecord;
170
209
  };
171
210
 
@@ -8,6 +8,16 @@ export interface SemanticImportSidecarQualityWarning {
8
8
  readonly sourcePaths: readonly string[];
9
9
  }
10
10
 
11
+ export type SemanticImportSidecarRecordClassification = 'useful' | 'expected-empty' | 'unexpectedly-empty' | 'missing' | string;
12
+
13
+ export interface SemanticImportSidecarQualityRecord {
14
+ readonly classification: SemanticImportSidecarRecordClassification;
15
+ readonly reasonCode: string;
16
+ readonly message: string;
17
+ readonly action: string;
18
+ readonly sourcePaths: readonly string[];
19
+ }
20
+
11
21
  export interface SemanticImportSidecarProofAdmissionSummary {
12
22
  readonly total: number;
13
23
  readonly obligations: number;
@@ -26,12 +36,14 @@ export interface SemanticImportSidecarProofAdmissionSummary {
26
36
  export interface SemanticImportSidecarQuality {
27
37
  readonly schema: 'frontier.lang.semanticSidecarQuality.v1';
28
38
  readonly expected: boolean;
39
+ readonly expectedEmpty: boolean;
29
40
  readonly expectedSatisfied: boolean;
30
41
  readonly expectedMissingReasonCodes: readonly string[];
31
42
  readonly selected: boolean;
32
43
  readonly eligible: boolean;
33
44
  readonly imported: boolean;
34
45
  readonly importCount: number;
46
+ readonly record: SemanticImportSidecarQualityRecord;
35
47
  readonly symbolCount: number;
36
48
  readonly ownershipRegionCount: number;
37
49
  readonly patchHintCount: number;
@@ -45,6 +57,7 @@ export interface SemanticImportSidecarQuality {
45
57
  export interface SemanticImportSidecarAdmission {
46
58
  readonly schema: 'frontier.lang.semanticSidecarAdmission.v1';
47
59
  readonly expected: boolean;
60
+ readonly expectedEmpty: boolean;
48
61
  readonly expectedSatisfied: boolean;
49
62
  readonly expectedMissingReasonCodes: readonly string[];
50
63
  readonly selected: boolean;
@@ -53,6 +66,7 @@ export interface SemanticImportSidecarAdmission {
53
66
  readonly importCount: number;
54
67
  readonly readiness: SemanticMergeReadiness;
55
68
  readonly action: string;
69
+ readonly record: SemanticImportSidecarQualityRecord;
56
70
  readonly counts: {
57
71
  readonly symbols: number;
58
72
  readonly ownershipRegions: number;
@@ -24,7 +24,7 @@ import type {
24
24
  UniversalAstLayerMap,
25
25
  UniversalAstLayerRecord
26
26
  } from '@shapeshift-labs/frontier-lang-kernel';
27
- import type { SemanticImportSidecarAdmission, SemanticImportSidecarQuality } from './semantic-sidecar-admission.js';
27
+ import type { SemanticImportSidecarAdmission, SemanticImportSidecarQuality, SemanticImportSidecarQualityRecord } from './semantic-sidecar-admission.js';
28
28
  import type { SemanticMergeCandidateAdmissionRecord, SemanticMergeCandidateProjectionRisk } from './semantic-merge-candidates.js';
29
29
  import type { SemanticMergeConflictClass, SemanticMergeConflictSummary } from './semantic-merge-conflicts.js';
30
30
  import type { SemanticImportImpactSummary } from './semantic-impact.js';
@@ -52,7 +52,6 @@ import type { JavaAstNativeImporterAdapterOptions, KotlinPsiNativeImporterAdapte
52
52
  import type { NativeTargetProjectionAdapterCoverageInput, NativeTargetProjectionAdapterSummary, NativeTargetProjectionAdapterInput, NativeTargetProjectionAdapterResult, NativeTargetProjectionAdapter, NativeTargetProjectionAdapterResolverInput, NativeTargetProjectionResult } from './target-adapters.js';
53
53
  import type { NativeProjectSourceInput, ImportNativeProjectOptions, NativeProjectImportResult, NativeSourceProjectionMode, ProjectNativeImportToSourceOptions, NativeSourceProjectionDeclaration, NativeSourceProjectionResult, NativeSourceCompileOutputMode, CompileNativeSourceOptions, NativeSourceCompileResult } from './native-project.js';
54
54
  import type { NativeImportRoundtripReadinessStatus, NativeImportRoundtripReadinessOptions, NativeImportRoundtripReadinessClassification } from './roundtrip.js';
55
-
56
55
  export interface SemanticImportOwnershipRegion {
57
56
  readonly id: string;
58
57
  readonly key: string;
@@ -71,7 +70,6 @@ export interface SemanticImportOwnershipRegion {
71
70
  readonly mergePolicy?: string;
72
71
  readonly metadata?: Record<string, unknown>;
73
72
  }
74
-
75
73
  export interface SemanticImportSidecarSymbol {
76
74
  readonly id: string;
77
75
  readonly name?: string;
@@ -87,7 +85,6 @@ export interface SemanticImportSidecarSymbol {
87
85
  readonly ownershipRegionKind?: NativeImportRegionTaxonomyKind;
88
86
  readonly readiness: SemanticMergeReadiness;
89
87
  }
90
-
91
88
  export interface SemanticImportRegionTaxonomySummary {
92
89
  readonly kinds: readonly NativeImportRegionTaxonomyKind[];
93
90
  readonly presentKinds: readonly NativeImportRegionTaxonomyKind[];
@@ -95,12 +92,12 @@ export interface SemanticImportRegionTaxonomySummary {
95
92
  readonly keys: readonly string[];
96
93
  readonly keysByKind: Readonly<Record<string, readonly string[]>>;
97
94
  }
98
-
99
95
  export interface SemanticImportPatchHint {
100
96
  readonly id: string;
101
97
  readonly kind: 'source-region-patch' | string;
102
98
  readonly ownershipRegionId: string;
103
99
  readonly ownershipKey: string;
100
+ readonly operation: string;
104
101
  readonly sourcePath?: string;
105
102
  readonly sourceHash?: string;
106
103
  readonly sourceSpan?: SourceSpan;
@@ -113,7 +110,6 @@ export interface SemanticImportPatchHint {
113
110
  readonly requiresSourceMap: boolean;
114
111
  };
115
112
  }
116
-
117
113
  export interface SemanticImportSidecarImportEntry {
118
114
  readonly id: string;
119
115
  readonly language?: FrontierSourceLanguage | string;
@@ -135,11 +131,17 @@ export interface SemanticImportSidecarImportEntry {
135
131
  readonly proofSpec: SemanticImportSidecarProofSpecSummary;
136
132
  readonly paradigmSemantics: SemanticImportSidecarParadigmSemanticsSummary;
137
133
  readonly dependencyRelationCount: number; readonly dependencyPredicates: readonly string[];
134
+ readonly semanticFactCount?: number;
135
+ readonly semanticFactPredicates?: readonly string[];
136
+ readonly semanticFactSummary?: Readonly<Record<string, number>>;
137
+ readonly patchHintCount?: number;
138
+ readonly patchHintOperations?: readonly string[];
139
+ readonly patchHints?: readonly SemanticImportPatchHint[];
138
140
  readonly readiness: SemanticMergeReadiness;
139
141
  readonly emptySemanticIndex: boolean;
142
+ readonly qualityRecord: SemanticImportSidecarQualityRecord;
140
143
  readonly regionTaxonomy?: SemanticImportRegionTaxonomySummary;
141
144
  }
142
-
143
145
  export interface SemanticImportSidecarSourcePreservationRecord {
144
146
  readonly id: string;
145
147
  readonly level: SourcePreservationLevel;
@@ -157,7 +159,6 @@ export interface SemanticImportSidecarSourcePreservationRecord {
157
159
  readonly evidenceIds: readonly string[];
158
160
  readonly reasons: readonly string[];
159
161
  }
160
-
161
162
  export interface SemanticImportSidecarUniversalAstLayerSummary {
162
163
  readonly total: number;
163
164
  readonly names: readonly string[];
@@ -165,7 +166,6 @@ export interface SemanticImportSidecarUniversalAstLayerSummary {
165
166
  readonly byName: Readonly<Record<string, number>>;
166
167
  readonly empty: boolean;
167
168
  }
168
-
169
169
  export interface SemanticImportSidecarProofSpecSummary {
170
170
  readonly total: number;
171
171
  readonly ids: readonly string[];
@@ -194,7 +194,6 @@ export interface SemanticImportSidecarProofSpecSummary {
194
194
  readonly byArtifactKind: Readonly<Record<string, number>>;
195
195
  readonly empty: boolean;
196
196
  }
197
-
198
197
  export interface SemanticImportSidecarParadigmSemanticsSummary {
199
198
  readonly total: number;
200
199
  readonly ids: readonly string[];
@@ -230,14 +229,12 @@ export interface SemanticImportSidecarParadigmSemanticsSummary {
230
229
  readonly hasLowering: boolean;
231
230
  readonly empty: boolean;
232
231
  }
233
-
234
232
  export interface SemanticImportDependencySummary {
235
233
  readonly total: number; readonly calls: number; readonly uses: number; readonly references: number;
236
234
  readonly imports: number; readonly extends: number; readonly implements: number; readonly includes: number; readonly requires: number;
237
235
  readonly byPredicate: Readonly<Record<string, number>>; readonly predicates: readonly string[];
238
236
  readonly ids: readonly string[]; readonly sourceSymbolIds: readonly string[]; readonly targetSymbolIds: readonly string[];
239
237
  }
240
-
241
238
  export interface SemanticImportSidecar {
242
239
  readonly kind: 'frontier.lang.semanticImportSidecar';
243
240
  readonly version: 1;
@@ -313,8 +310,9 @@ export interface SemanticImportSidecar {
313
310
  readonly semanticImpactRecords: number; readonly semanticImpactHighRiskRecords: number; readonly semanticImpactRequiredVerificationSteps: number;
314
311
  readonly patchHints: number;
315
312
  readonly evidenceWarnings: number;
316
- readonly semanticImportExpected: boolean; readonly semanticImportExpectedSatisfied: boolean; readonly semanticImportExpectedMissingReasonCodes: readonly string[];
313
+ readonly semanticImportExpected: boolean; readonly semanticImportExpectedEmpty: boolean; readonly semanticImportExpectedSatisfied: boolean; readonly semanticImportExpectedMissingReasonCodes: readonly string[];
314
+ readonly semanticImportRecordClassification: string; readonly semanticImportRecordReasonCode: string; readonly semanticImportRecordAction: string;
317
315
  readonly readiness: SemanticMergeReadiness; readonly emptySemanticIndex: boolean;
318
316
  };
319
317
  readonly metadata?: Record<string, unknown>; }
320
- export interface SemanticImportSidecarOptions { readonly id?: string; readonly generatedAt?: number; readonly regionPrefix?: string; readonly targetPath?: string; readonly expected?: boolean; readonly semanticImportExpected?: boolean; readonly metadata?: Record<string, unknown>; }
318
+ export interface SemanticImportSidecarOptions { readonly id?: string; readonly generatedAt?: number; readonly regionPrefix?: string; readonly targetPath?: string; readonly expected?: boolean; readonly semanticImportExpected?: boolean; readonly expectedEmpty?: boolean; readonly semanticImportExpectedEmpty?: boolean; readonly metadata?: Record<string, unknown>; }