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

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 (47) 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/import-adapter-core.d.ts +6 -0
  4. package/dist/declarations/native-project-admission.d.ts +43 -22
  5. package/dist/declarations/semantic-edit-replay-diagnostics.d.ts +24 -0
  6. package/dist/declarations/semantic-edit-script.d.ts +20 -15
  7. package/dist/declarations/semantic-lineage.d.ts +3 -21
  8. package/dist/declarations/semantic-merge-candidates.d.ts +39 -0
  9. package/dist/declarations/semantic-sidecar-admission.d.ts +14 -0
  10. package/dist/declarations/semantic-sidecar.d.ts +12 -14
  11. package/dist/internal/index-impl/bidirectionalTargetRoundtripEvidence.js +200 -0
  12. package/dist/internal/index-impl/createBidirectionalTargetChangeRecord.js +62 -17
  13. package/dist/internal/index-impl/createLightweightNativeImport.js +9 -1
  14. package/dist/internal/index-impl/createNativeSourcePreservation.js +16 -1
  15. package/dist/internal/index-impl/createProjectImportAdmissionRecord.js +151 -1
  16. package/dist/internal/index-impl/createSemanticImportSidecar.js +5 -0
  17. package/dist/internal/index-impl/createSemanticImportSidecarAdmission.js +29 -11
  18. package/dist/internal/index-impl/importNativeSource.js +14 -14
  19. package/dist/internal/index-impl/nativeChangeProjectionEndpoint.js +56 -16
  20. package/dist/internal/index-impl/nativeImportSemanticIndex.js +33 -0
  21. package/dist/internal/index-impl/projectImportAdmissionMergeScore.js +26 -74
  22. package/dist/internal/index-impl/projectImportAdmissionProjectionCoverage.js +74 -0
  23. package/dist/internal/index-impl/projectSemanticEditScriptToSource.js +39 -13
  24. package/dist/internal/index-impl/replaySemanticEditProjection.js +65 -23
  25. package/dist/internal/index-impl/semanticEditInsertionAnchors.js +8 -5
  26. package/dist/internal/index-impl/semanticEditReplayDiagnostics.js +167 -0
  27. package/dist/internal/index-impl/semanticEditSourceRanges.js +94 -15
  28. package/dist/internal/index-impl/semanticHistoryLineageResolution.js +21 -2
  29. package/dist/internal/index-impl/semanticLineageHashEvidence.js +97 -0
  30. package/dist/internal/index-impl/semanticLineageInferenceMatching.js +8 -0
  31. package/dist/internal/index-impl/semanticLineageResolutionRecords.js +18 -1
  32. package/dist/internal/index-impl/semanticMergeCandidateRecords.js +22 -2
  33. package/dist/internal/index-impl/semanticMergeCandidateScoreFacets.js +221 -0
  34. package/dist/internal/index-impl/semanticPatchBundleOverlaps.js +23 -1
  35. package/dist/internal/index-impl/sourcePreservationFromProjectionContext.js +9 -2
  36. package/dist/native-import-language-profiles.js +10 -2
  37. package/dist/native-region-scanner-js-helpers.js +8 -2
  38. package/dist/native-region-scanner-js-imports.js +7 -0
  39. package/dist/native-region-scanner-js.js +4 -4
  40. package/dist/native-region-scanner.js +2 -1
  41. package/dist/semantic-import-regions.js +18 -5
  42. package/dist/semantic-import-sidecar-admission-types.d.ts +14 -0
  43. package/dist/semantic-import-sidecar-entry.js +151 -7
  44. package/dist/semantic-import-sidecar-types.d.ts +18 -13
  45. package/dist/semantic-import-source-preservation-utils.js +55 -0
  46. package/dist/semantic-import-source-preservation.js +98 -3
  47. package/package.json +1 -1
@@ -3,12 +3,10 @@ import type { NativeImportLossSummary } from './native-import-losses.js';
3
3
  import type { NativeImportResultContract } from './native-import-contracts.js';
4
4
  import type { NativeProjectImportResult } from './native-project.js';
5
5
  import type { SemanticMergeCandidateAdmissionRecord, SemanticMergeCandidateOverlapRecord, SemanticMergeCandidateProjectionRisk } from './semantic-merge-candidates.js';
6
-
7
6
  export type NativeProjectImportAdmissionAction = 'admit' | 'prioritize' | 'reject';
8
7
  export type NativeProjectImportAdmissionPriority = 'low' | 'normal' | 'high' | 'critical' | 'blocker';
9
8
  export type NativeProjectImportAdmissionRisk = 'low' | 'medium' | 'high' | 'unknown';
10
9
  export type NativeProjectSourcePreservationQuality = 'exact' | 'lossy' | 'missing' | 'stale' | 'empty';
11
-
12
10
  export interface NativeProjectAdmissionParserEvidence {
13
11
  readonly parser?: string;
14
12
  readonly astFormat?: string;
@@ -24,7 +22,6 @@ export interface NativeProjectAdmissionParserEvidence {
24
22
  readonly evidenceRecords: number;
25
23
  readonly missing: boolean;
26
24
  }
27
-
28
25
  export interface NativeProjectAdmissionParserEvidenceSummary {
29
26
  readonly parsers: readonly string[];
30
27
  readonly byParser: Readonly<Record<string, number>>;
@@ -39,7 +36,6 @@ export interface NativeProjectAdmissionParserEvidenceSummary {
39
36
  readonly missingParserSources: number;
40
37
  readonly evidenceRecords: number;
41
38
  }
42
-
43
39
  export interface NativeProjectAdmissionSemanticMergeScoreSummary {
44
40
  readonly sourceCount: number;
45
41
  readonly min: number;
@@ -48,7 +44,6 @@ export interface NativeProjectAdmissionSemanticMergeScoreSummary {
48
44
  readonly sortKey: number;
49
45
  readonly lowestSourcePaths: readonly string[];
50
46
  }
51
-
52
47
  export interface NativeProjectAdmissionMissingEvidenceHint {
53
48
  readonly evidenceKey?: string;
54
49
  readonly task: string;
@@ -60,7 +55,6 @@ export interface NativeProjectAdmissionMissingEvidenceHint {
60
55
  readonly lossClasses: readonly string[];
61
56
  readonly readiness: SemanticMergeReadiness;
62
57
  }
63
-
64
58
  export interface NativeProjectAdmissionTaskHint {
65
59
  readonly id?: string;
66
60
  readonly task: string;
@@ -73,7 +67,6 @@ export interface NativeProjectAdmissionTaskHint {
73
67
  readonly lossClasses: readonly string[];
74
68
  readonly evidenceKeys: readonly string[];
75
69
  }
76
-
77
70
  export interface NativeProjectAdmissionSourceSummary {
78
71
  readonly id?: string;
79
72
  readonly language: FrontierSourceLanguage | string;
@@ -97,7 +90,6 @@ export interface NativeProjectAdmissionSourceSummary {
97
90
  readonly nextMissingTask?: NativeProjectAdmissionTaskHint;
98
91
  readonly nextMissingTasks: readonly NativeProjectAdmissionTaskHint[];
99
92
  }
100
-
101
93
  export interface NativeProjectAdmissionLanguageReadinessSummary {
102
94
  readonly language: FrontierSourceLanguage | string;
103
95
  readonly readiness: SemanticMergeReadiness;
@@ -109,7 +101,6 @@ export interface NativeProjectAdmissionLanguageReadinessSummary {
109
101
  readonly topMissingEvidence: readonly NativeProjectAdmissionMissingEvidenceHint[];
110
102
  readonly nextMissingTasks: readonly NativeProjectAdmissionTaskHint[];
111
103
  }
112
-
113
104
  export interface NativeProjectAdmissionLanguageSummary {
114
105
  readonly language: FrontierSourceLanguage | string;
115
106
  readonly sourceCount: number;
@@ -128,7 +119,6 @@ export interface NativeProjectAdmissionLanguageSummary {
128
119
  readonly topMissingEvidence: readonly NativeProjectAdmissionMissingEvidenceHint[];
129
120
  readonly nextMissingTasks: readonly NativeProjectAdmissionTaskHint[];
130
121
  }
131
-
132
122
  export interface NativeProjectAdmissionLanguages {
133
123
  readonly total: number;
134
124
  readonly byReadiness: Readonly<Record<string, number>>;
@@ -143,7 +133,6 @@ export interface NativeProjectAdmissionLanguages {
143
133
  readonly readinessRows: readonly NativeProjectAdmissionLanguageReadinessSummary[];
144
134
  readonly rows: readonly NativeProjectAdmissionLanguageSummary[];
145
135
  }
146
-
147
136
  export interface NativeProjectAdmissionSemanticEvidence {
148
137
  readonly empty: boolean;
149
138
  readonly emptySourceCount: number;
@@ -154,7 +143,42 @@ export interface NativeProjectAdmissionSemanticEvidence {
154
143
  readonly facts: number;
155
144
  readonly evidenceRecords: number;
156
145
  }
157
-
146
+ export type NativeProjectAdmissionSourceStalenessReason =
147
+ | 'source-hash-mismatch'
148
+ | 'content-hash-mismatch'
149
+ | 'source-preservation-hash-mismatch'
150
+ | 'source-hash-unverified'
151
+ | 'base-hash-mismatch'
152
+ | 'dirty-workspace';
153
+ export interface NativeProjectAdmissionSourceStalenessRecord {
154
+ readonly sourcePath?: string;
155
+ readonly sourceHash?: string;
156
+ readonly declaredSourceHash?: string;
157
+ readonly contentHash?: string;
158
+ readonly declaredContentHash?: string;
159
+ readonly baseHash?: string;
160
+ readonly expectedBaseHash?: string;
161
+ readonly currentBaseHash?: string;
162
+ readonly staleByContentHash: boolean;
163
+ readonly staleByBaseHash: boolean;
164
+ readonly dirtyWorkspace: boolean;
165
+ readonly unverifiedSourceHash: boolean;
166
+ readonly reasonCodes: readonly NativeProjectAdmissionSourceStalenessReason[];
167
+ }
168
+ export interface NativeProjectAdmissionSourceStaleness {
169
+ readonly total: number;
170
+ readonly stale: number;
171
+ readonly contentHashStale: number;
172
+ readonly baseHashStale: number;
173
+ readonly dirtyWorkspace: number;
174
+ readonly unverified: number;
175
+ readonly staleSourcePaths: readonly string[];
176
+ readonly contentHashStaleSourcePaths: readonly string[];
177
+ readonly baseHashStaleSourcePaths: readonly string[];
178
+ readonly dirtyWorkspaceSourcePaths: readonly string[];
179
+ readonly unverifiedSourcePaths: readonly string[];
180
+ readonly records: readonly NativeProjectAdmissionSourceStalenessRecord[];
181
+ }
158
182
  export interface NativeProjectAdmissionSourcePreservation {
159
183
  readonly quality: NativeProjectSourcePreservationQuality;
160
184
  readonly total: number;
@@ -168,11 +192,16 @@ export interface NativeProjectAdmissionSourcePreservation {
168
192
  readonly stale: number;
169
193
  readonly missing: number;
170
194
  readonly lossy: number;
195
+ readonly contentHashStale: number;
196
+ readonly baseHashStale: number;
197
+ readonly dirtyWorkspace: number;
171
198
  readonly staleSourcePaths: readonly string[];
199
+ readonly contentHashStaleSourcePaths: readonly string[];
200
+ readonly baseHashStaleSourcePaths: readonly string[];
201
+ readonly dirtyWorkspaceSourcePaths: readonly string[];
172
202
  readonly lossySourcePaths: readonly string[];
173
203
  readonly byQuality: Readonly<Record<string, number>>;
174
204
  }
175
-
176
205
  export interface NativeProjectAdmissionOwnership {
177
206
  readonly total: number;
178
207
  readonly changed: number;
@@ -187,7 +216,6 @@ export interface NativeProjectAdmissionOwnership {
187
216
  readonly byPrecision: Readonly<Record<string, number>>;
188
217
  readonly byLanguage: Readonly<Record<string, number>>;
189
218
  }
190
-
191
219
  export interface NativeProjectAdmissionMergeCandidates {
192
220
  readonly total: number;
193
221
  readonly readiness: SemanticMergeReadiness;
@@ -217,7 +245,6 @@ export interface NativeProjectAdmissionMergeCandidates {
217
245
  readonly projectionRisk?: SemanticMergeCandidateProjectionRisk;
218
246
  readonly patchRisk?: NativeProjectImportAdmissionRisk;
219
247
  }
220
-
221
248
  export type NativeProjectAdmissionScoreComponentKey =
222
249
  | 'semanticEvidence'
223
250
  | 'sourcePreservation'
@@ -225,9 +252,7 @@ export type NativeProjectAdmissionScoreComponentKey =
225
252
  | 'ownershipChange'
226
253
  | 'proofReadiness'
227
254
  | 'targetProjectionCoverage';
228
-
229
255
  export type NativeProjectAdmissionScoreComponentStatus = 'strong' | 'partial' | 'weak' | 'blocked';
230
-
231
256
  export interface NativeProjectAdmissionScoreComponent {
232
257
  readonly key: NativeProjectAdmissionScoreComponentKey;
233
258
  readonly score: number;
@@ -237,7 +262,6 @@ export interface NativeProjectAdmissionScoreComponent {
237
262
  readonly reasons: readonly string[];
238
263
  readonly signals: Record<string, unknown>;
239
264
  }
240
-
241
265
  export interface NativeProjectAdmissionMergeScoreComponents {
242
266
  readonly semanticEvidence: NativeProjectAdmissionScoreComponent;
243
267
  readonly sourcePreservation: NativeProjectAdmissionScoreComponent;
@@ -246,7 +270,6 @@ export interface NativeProjectAdmissionMergeScoreComponents {
246
270
  readonly proofReadiness: NativeProjectAdmissionScoreComponent;
247
271
  readonly targetProjectionCoverage: NativeProjectAdmissionScoreComponent;
248
272
  }
249
-
250
273
  export interface NativeProjectAdmissionMergeScore {
251
274
  readonly schema: 'frontier.lang.semanticMergeScore.v1';
252
275
  readonly version: 1;
@@ -261,7 +284,6 @@ export interface NativeProjectAdmissionMergeScore {
261
284
  readonly components: NativeProjectAdmissionMergeScoreComponents;
262
285
  readonly penalties: readonly string[];
263
286
  }
264
-
265
287
  export interface NativeProjectImportAdmission {
266
288
  readonly kind: 'frontier.lang.projectImportAdmission';
267
289
  readonly version: 1;
@@ -274,6 +296,7 @@ export interface NativeProjectImportAdmission {
274
296
  readonly sourceCount: number;
275
297
  readonly languages: NativeProjectAdmissionLanguages;
276
298
  readonly semanticEvidence: NativeProjectAdmissionSemanticEvidence;
299
+ readonly sourceStaleness: NativeProjectAdmissionSourceStaleness;
277
300
  readonly sourcePreservation: NativeProjectAdmissionSourcePreservation;
278
301
  readonly ownership: NativeProjectAdmissionOwnership;
279
302
  readonly mergeCandidates: NativeProjectAdmissionMergeCandidates;
@@ -281,12 +304,10 @@ export interface NativeProjectImportAdmission {
281
304
  readonly reasons: readonly string[];
282
305
  readonly metadata: Record<string, unknown>;
283
306
  }
284
-
285
307
  export interface CreateProjectImportAdmissionRecordOptions {
286
308
  readonly importResultContract?: NativeImportResultContract;
287
309
  readonly lossSummary?: NativeImportLossSummary;
288
310
  }
289
-
290
311
  export declare function createProjectImportAdmissionRecord(
291
312
  projectResult: NativeProjectImportResult,
292
313
  options?: CreateProjectImportAdmissionRecordOptions
@@ -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;