@shapeshift-labs/frontier-lang-compiler 0.2.155 → 0.2.156

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.
@@ -34,6 +34,10 @@ export interface JsTsProjectSafeMergeMissingEvidence {
34
34
  readonly semanticEquivalenceClaim: false;
35
35
  }
36
36
 
37
+ export type JsTsProjectSafeMergeAdmissionMatrixSurface = Record<string, unknown> & { readonly surface: string; readonly proofStatuses: Readonly<Record<string, string>>; readonly missingRouteIds?: readonly string[]; readonly nextMissingRouteId?: string };
38
+
39
+ export type JsTsProjectSafeMergeAdmissionMatrixAudit = Record<string, unknown> & { readonly kind: 'frontier.lang.jsTsProjectMergeAdmissionMatrixAudit'; readonly surfaces: readonly JsTsProjectSafeMergeAdmissionMatrixSurface[] };
40
+
37
41
  export interface JsTsProjectSafeMergeConfidenceSummary {
38
42
  readonly kind: 'frontier.lang.jsTsProjectMergeConfidence';
39
43
  readonly version: 1;
@@ -59,6 +63,7 @@ export interface JsTsProjectSafeMergeConfidenceSummary {
59
63
  readonly missingEvidence: readonly JsTsProjectSafeMergeMissingEvidence[];
60
64
  readonly missingEvidenceMatrix: JsTsProjectSafeMergeMissingEvidenceTelemetry;
61
65
  readonly routingCalibration: Record<string, unknown>;
66
+ readonly admissionMatrixAudit: JsTsProjectSafeMergeAdmissionMatrixAudit;
62
67
  readonly dimensions: Readonly<Record<string, string>>;
63
68
  readonly signals: Readonly<Record<string, number>>;
64
69
  }
@@ -51,14 +51,14 @@ export interface JsTsProjectSafeMergeFileInput {
51
51
  }
52
52
 
53
53
  export type JsTsProjectSafeMergeFileMap =
54
- | Readonly<Record<string, string | { readonly sourceText?: string; readonly text?: string; readonly parserTriviaEvidence?: ParserTriviaEvidenceInput }>>
54
+ | Readonly<Record<string,string | { readonly sourceText?: string; readonly text?: string; readonly parserTriviaEvidence?: ParserTriviaEvidenceInput }>>
55
55
  | ReadonlyMap<string, string | { readonly sourceText?: string; readonly text?: string; readonly parserTriviaEvidence?: ParserTriviaEvidenceInput }>
56
56
  | readonly { readonly sourcePath?: string; readonly path?: string; readonly sourceText?: string; readonly text?: string; readonly parserTriviaEvidence?: ParserTriviaEvidenceInput }[];
57
57
 
58
58
  export type JsTsProjectSafeMergeOutputProjectImports =
59
59
  | readonly NativeSourceImportResult[]
60
60
  | ReadonlyMap<string, NativeSourceImportResult>
61
- | Readonly<Record<string, NativeSourceImportResult>>;
61
+ | Readonly<Record<string,NativeSourceImportResult>>;
62
62
 
63
63
  export type JsTsProjectGraphStageName = 'base' | 'worker' | 'head' | 'output' | string;
64
64
 
@@ -133,8 +133,8 @@ export interface JsTsProjectSafeMergeInput {
133
133
  readonly headChangeSetId?: string;
134
134
  readonly policy?: JsTsSafeMemberMergePolicy | readonly JsTsSafeMemberMergePolicyRegion[];
135
135
  readonly mergePolicy?: JsTsSafeMemberMergePolicy | readonly JsTsSafeMemberMergePolicyRegion[];
136
- readonly policyByPath?: Readonly<Record<string, JsTsSafeMemberMergePolicy | readonly JsTsSafeMemberMergePolicyRegion[]>>;
137
- readonly mergePolicyByPath?: Readonly<Record<string, JsTsSafeMemberMergePolicy | readonly JsTsSafeMemberMergePolicyRegion[]>>;
136
+ readonly policyByPath?: Readonly<Record<string,JsTsSafeMemberMergePolicy | readonly JsTsSafeMemberMergePolicyRegion[]>>;
137
+ readonly mergePolicyByPath?: Readonly<Record<string,JsTsSafeMemberMergePolicy | readonly JsTsSafeMemberMergePolicyRegion[]>>;
138
138
  readonly requireSourceLedgerSpans?: boolean;
139
139
  readonly sourceLedgers?: Record<string, unknown>;
140
140
  readonly sourceLedgersByPath?: Record<string, Record<string, unknown>>;
@@ -244,13 +244,13 @@ export interface JsTsProjectGraphDeltaSummary {
244
244
  readonly reExportIdentityConflicts: number; readonly moduleDeclarationShapeConflicts: number; readonly exportAssignmentShapeConflicts: number;
245
245
  readonly importAttributeConflicts: number;
246
246
  readonly importTargetConflicts: number;
247
- readonly stageSummaries: Readonly<Record<string, JsTsProjectGraphDeltaStageSummary>>;
247
+ readonly stageSummaries: Readonly<Record<string,JsTsProjectGraphDeltaStageSummary>>;
248
248
  }
249
249
 
250
250
  export interface JsTsProjectGraphDelta {
251
251
  readonly kind: 'frontier.lang.jsTsProjectGraphDelta';
252
252
  readonly version: 1;
253
- readonly stages: Readonly<Record<string, JsTsProjectGraphDeltaStage>>;
253
+ readonly stages: Readonly<Record<string,JsTsProjectGraphDeltaStage>>;
254
254
  readonly summary: JsTsProjectGraphDeltaSummary;
255
255
  }
256
256
 
@@ -279,7 +279,7 @@ export interface JsTsProjectSafeMergeResult {
279
279
  readonly outputFiles: number;
280
280
  readonly projectGraphConflicts: number;
281
281
  readonly projectGraphDeltaEvidenceIncluded: number;
282
- readonly outputProjectGraphConflicts: number;
282
+ outputProjectGraphConflicts:number; projectGraphCssModuleUseSiteConflicts:number;
283
283
  readonly projectGraphDeltaConflicts: number;
284
284
  readonly projectGraphLimitConflicts: number;
285
285
  readonly projectGraphPublicContractConflicts: number;
@@ -297,11 +297,11 @@ export interface JsTsProjectSafeMergeResult {
297
297
  readonly outputDeclarationConflicts: number;
298
298
  readonly outputDeclarationDiagnosticErrors: number;
299
299
  readonly outputQualityGates: number; readonly outputQualityGateConflicts: number;
300
- readonly proofEvidenceRecords: number; readonly proofEvidencePassed: number; readonly proofEvidenceFailed: number; readonly proofEvidenceSkipped: number; readonly proofEvidenceUnknown: number; readonly proofEvidenceMissing: number; readonly proofEvidenceMissingLevels: readonly JsTsProjectMergeProofLevel[]; readonly semanticEquivalenceLevel: 'semantic-equivalence-unknown' | string; readonly evidenceRecords: number; readonly passedEvidenceRecords: number; readonly failedEvidenceRecords: number; readonly unknownEvidenceRecords: number; readonly confidenceScore: number; readonly confidenceLevel: string; readonly confidenceDimensions: Readonly<Record<string, string>>; readonly missingEvidenceMatrix: JsTsProjectSafeMergeMissingEvidenceTelemetry; readonly missingSignals: number; readonly nextMissingEvidenceCode?: string; readonly nextMissingEvidenceKind?: string; readonly nextMissingEvidenceScope?: string; readonly nextMissingProofLevel?: string; readonly nextMissingEvidenceAction?: string; readonly nextMissingEvidenceRouteId?: string; readonly nextMissingEvidenceRouteLane?: string; readonly nextMissingEvidenceRouteNext?: string;
300
+ readonly proofEvidenceRecords: number; readonly proofEvidencePassed: number; readonly proofEvidenceFailed: number; readonly proofEvidenceSkipped: number; readonly proofEvidenceUnknown: number; readonly proofEvidenceMissing: number; readonly proofEvidenceMissingLevels: readonly JsTsProjectMergeProofLevel[]; readonly semanticEquivalenceLevel: 'semantic-equivalence-unknown' | string; readonly evidenceRecords: number; readonly passedEvidenceRecords: number; readonly failedEvidenceRecords: number; readonly unknownEvidenceRecords: number; readonly confidenceScore: number; readonly confidenceLevel: string; readonly confidenceDimensions: Readonly<Record<string,string>>; readonly missingEvidenceMatrix: JsTsProjectSafeMergeMissingEvidenceTelemetry; readonly missingSignals: number; readonly nextMissingEvidenceCode?: string; readonly nextMissingEvidenceKind?: string; readonly nextMissingEvidenceScope?: string; readonly nextMissingProofLevel?: string; readonly nextMissingEvidenceAction?: string; readonly nextMissingEvidenceRouteId?: string; readonly nextMissingEvidenceRouteLane?: string; readonly nextMissingEvidenceRouteNext?: string;
301
301
  readonly projectMoveRenameClassifications: number; readonly projectFileMoveRenameClassifications: number; readonly projectSymbolMoveClassifications: number; readonly projectExportedSymbolMoveClassifications: number; readonly projectImportedSymbolMoveClassifications: number; readonly projectSymbolMoveAdmissions: number; readonly projectExportedSymbolMoveAdmissions: number; readonly projectImportedSymbolMoveAdmissions: number; readonly projectCrossFileSymbolRenameClassifications: number; readonly projectCrossFileSymbolRenameAdmissions: number;
302
302
  readonly projectSplitMergeClassifications: number; readonly projectModuleSplitClassifications: number; readonly projectModuleMergeClassifications: number; readonly projectClassSplitClassifications: number; readonly projectClassMergeClassifications: number; readonly projectSplitMergeAdmissions: number; readonly projectModuleSplitAdmissions: number; readonly projectModuleMergeAdmissions: number; readonly projectClassSplitAdmissions: number; readonly projectClassMergeAdmissions: number;
303
303
  readonly semanticArtifactFiles: number;
304
- readonly operations: Readonly<Record<string, number>>;
304
+ readonly operations: Readonly<Record<string,number>>;
305
305
  };
306
306
  readonly metadata?: Record<string, unknown> & {
307
307
  readonly projectMoveRenameClassifications?: {
@@ -10,6 +10,7 @@ const ProjectMergeMissingSignals = Object.freeze({
10
10
  semanticEditReplayProof: 'semantic-edit-replay-proof-not-produced',
11
11
  semanticEditReplayOutputMismatch: 'semantic-edit-replay-proof-output-mismatch',
12
12
  unsupportedJsTsSurface: 'unsupported-js-ts-surface-proof-not-available',
13
+ cssModuleUseSiteGraph: 'css-module-use-site-graph-proof-blocked',
13
14
  semanticEquivalenceProof: 'semantic-equivalence-proof-not-available'
14
15
  });
15
16
 
@@ -25,6 +26,7 @@ const ProjectMergeMissingEvidenceRoutes = Object.freeze({
25
26
  [ProjectMergeMissingSignals.semanticEditReplayProof]: route('produce-semantic-edit-replay-proof', 'source-files', 'run-semantic-edit-replay-diagnostics'),
26
27
  [ProjectMergeMissingSignals.semanticEditReplayOutputMismatch]: route('reject-semantic-edit-replay-output-mismatch', 'source-files', 'inspect-semantic-edit-replay-output-binding'),
27
28
  [ProjectMergeMissingSignals.unsupportedJsTsSurface]: route('prove-unsupported-js-ts-surface', 'semantic-proof', 'supply-unsupported-surface-evidence'),
29
+ [ProjectMergeMissingSignals.cssModuleUseSiteGraph]: route('prove-css-module-use-site-graph', 'layout-style-graph', 'supply-css-module-transform-and-use-site-proof'),
28
30
  [ProjectMergeMissingSignals.semanticEquivalenceProof]: route('external-semantic-equivalence-proof', 'semantic-proof', 'attach-external-equivalence-proof')
29
31
  });
30
32
 
@@ -37,6 +39,7 @@ const ProjectMergeAdmissionMatrixRows = Object.freeze([
37
39
  matrixRow('control-flow-effect-graph', 'partial', ['source-span-roundtrip', 'focused-test-passed'], [ProjectMergeMissingSignals.sourceSpanRoundtrip, ProjectMergeMissingSignals.semanticArtifacts, ProjectMergeMissingSignals.qualityGates, ProjectMergeMissingSignals.focusedTestGate]),
38
40
  matrixRow('generic-semantic-edit-admission', 'partial', ['source-span-roundtrip', 'semantic-edit-replay-clean'], [ProjectMergeMissingSignals.sourceSpanRoundtrip, ProjectMergeMissingSignals.semanticArtifacts, ProjectMergeMissingSignals.semanticEditReplayProof, ProjectMergeMissingSignals.semanticEditReplayOutputMismatch]),
39
41
  matrixRow('unsupported-js-ts-surface-coverage', 'partial', ['unsupported-js-ts-surface-review'], [ProjectMergeMissingSignals.unsupportedJsTsSurface]),
42
+ matrixRow('css-modules-use-site-graph', 'partial', ['css-module-use-site-graph', 'css-module-transform-proof', 'project-graph-evidence'], [ProjectMergeMissingSignals.cssModuleUseSiteGraph]),
40
43
  matrixRow('semantic-equivalence-proof', 'bounded-evidence', ['semantic-equivalence-external', 'semantic-equivalence-unknown'], [ProjectMergeMissingSignals.semanticEquivalenceProof]),
41
44
  matrixRow('cross-file-symbol-rename', 'partial', ['diagnostics-clean', 'declaration-output-stable', 'project-graph-delta'], [ProjectMergeMissingSignals.outputDiagnosticsGate, ProjectMergeMissingSignals.declarationGate, ProjectMergeMissingSignals.projectGraphEvidence, ProjectMergeMissingSignals.projectGraphDeltaEvidence]),
42
45
  matrixRow('symbol-move-between-files', 'partial', ['diagnostics-clean', 'declaration-output-stable', 'project-graph-delta'], [ProjectMergeMissingSignals.outputDiagnosticsGate, ProjectMergeMissingSignals.declarationGate, ProjectMergeMissingSignals.projectGraphEvidence, ProjectMergeMissingSignals.projectGraphDeltaEvidence]),
@@ -127,6 +130,11 @@ function missingEvidenceItems(summary, context = {}) {
127
130
  action: 'review',
128
131
  summary: 'Executable semantic equivalence is still unknown; keep semanticEquivalenceClaim false and require human or external proof for equivalence claims.'
129
132
  }));
133
+ if (summary.projectGraphCssModuleUseSiteConflicts) items.push(missingEvidenceItem({
134
+ code: ProjectMergeMissingSignals.cssModuleUseSiteGraph, scope: 'layout-style-graph', kind: 'css-module-use-site-proof', proofLevel: 'css-module-use-site-graph', action: 'review',
135
+ summary: `CSS Module use-site graph has ${summary.projectGraphCssModuleUseSiteConflicts} blocker(s); supply generated class maps, bundler transform identity, source-map proof, and narrow use-site evidence before admission.`,
136
+ suggestedInput: { includeOutputProjectSymbolGraph: true, cssModuleEvidence: true }
137
+ }));
130
138
  return items;
131
139
  }
132
140
 
@@ -240,7 +248,9 @@ function matrixProofStatus(level, summary, proofEvidence) {
240
248
  const levelStatuses = proofEvidence?.summary?.levelStatuses ?? summary.proofEvidenceLevelStatuses ?? {};
241
249
  if (levelStatuses[level]) return levelStatuses[level];
242
250
  if (level === 'project-graph-delta') return summary.projectGraphDeltaEvidenceIncluded ? (summary.projectGraphDeltaConflicts ? 'failed' : 'passed') : 'missing';
243
- if (level === 'project-graph-evidence') return summary.projectGraphConflicts ? 'failed' : summary.projectGraphDeltaEvidenceIncluded ? 'passed' : 'missing';
251
+ if (level === 'project-graph-evidence') return summary.projectGraphConflicts ? 'failed' : summary.projectGraphEvidenceIncluded || summary.projectGraphDeltaEvidenceIncluded ? 'passed' : 'missing';
252
+ if (level === 'css-module-use-site-graph') return summary.projectGraphCssModuleUseSiteConflicts ? 'failed' : summary.projectGraphCssModuleUseSiteGraphs ? 'passed' : summary.projectGraphEvidenceIncluded ? 'absent' : 'missing';
253
+ if (level === 'css-module-transform-proof') return summary.projectGraphCssModuleUseSiteConflicts ? 'failed' : summary.projectGraphCssModuleImportBindings ? 'passed' : summary.projectGraphEvidenceIncluded ? 'absent' : 'missing';
244
254
  if (level === 'semantic-artifacts') return summary.semanticArtifactFiles ? 'present' : 'missing';
245
255
  return 'absent';
246
256
  }
@@ -1,12 +1,12 @@
1
1
  import { compactMissingEvidenceTelemetry, confidenceRecommendedAction, createProjectMergeAdmissionMatrixAudit, missingEvidenceItems, missingEvidenceSignals, prioritizedMissingEvidence } from './js-ts-safe-project-merge-missing-evidence.js';
2
2
  import { failedEvidenceMissingItems, fileAdmissionEvidenceRecords } from './js-ts-safe-project-merge-evidence-routing.js'; import { compactProjectMergeRoutingCalibration } from './js-ts-safe-project-merge-routing-calibration.js';
3
3
 
4
- function projectSummary(files, graphConflicts = [], hasProjectGraphDelta = false, outputDiagnosticsGate = undefined, outputDeclarationGate = undefined, outputQualityGate = undefined, moveRenameSummary = undefined, proofEvidence = undefined, symbolRenameSummary = undefined, splitMergeSummary = undefined) {
4
+ function projectSummary(files, graphConflicts = [], hasProjectGraphDelta = false, outputDiagnosticsGate = undefined, outputDeclarationGate = undefined, outputQualityGate = undefined, moveRenameSummary = undefined, proofEvidence = undefined, symbolRenameSummary = undefined, splitMergeSummary = undefined, projectSymbolGraph = undefined) {
5
5
  const byOperation = {};
6
6
  for (const file of files) byOperation[file.operation] = (byOperation[file.operation] ?? 0) + 1;
7
7
  const limitConflicts = graphConflicts.filter((conflict) => conflict.gateId === 'project-graph-limit');
8
8
  const deltaConflicts = graphConflicts.filter((conflict) => conflict.gateId === 'project-graph-delta' || (hasProjectGraphDelta && conflict.gateId === 'project-graph-limit'));
9
- const outputConflicts = graphConflicts.filter((conflict) => conflict.gateId === 'project-symbol-graph' || (!hasProjectGraphDelta && conflict.gateId === 'project-graph-limit'));
9
+ const outputConflicts = graphConflicts.filter((conflict) => conflict.gateId === 'project-symbol-graph' || (!hasProjectGraphDelta && conflict.gateId === 'project-graph-limit')), cssModuleConflicts = graphConflicts.filter((conflict) => conflict.gateId === 'project-css-module-use-site-graph');
10
10
  const proofLevelStatuses = proofEvidence?.summary?.levelStatuses ?? {};
11
11
  return {
12
12
  files: files.length,
@@ -14,10 +14,10 @@ function projectSummary(files, graphConflicts = [], hasProjectGraphDelta = false
14
14
  blockedFiles: files.filter((file) => file.status === 'blocked').length,
15
15
  outputFiles: files.filter((file) => typeof file.outputSourceText === 'string').length,
16
16
  projectGraphConflicts: graphConflicts.length,
17
- projectGraphDeltaEvidenceIncluded: hasProjectGraphDelta ? 1 : 0,
18
- outputProjectGraphConflicts: outputConflicts.length,
19
- projectGraphDeltaConflicts: deltaConflicts.length,
20
- projectGraphLimitConflicts: limitConflicts.length,
17
+ projectGraphDeltaEvidenceIncluded: hasProjectGraphDelta ? 1 : 0, projectGraphEvidenceIncluded: projectSymbolGraph || hasProjectGraphDelta ? 1 : 0,
18
+ outputProjectGraphConflicts: outputConflicts.length, projectGraphCssModuleUseSiteConflicts: cssModuleConflicts.length,
19
+ projectGraphDeltaConflicts: deltaConflicts.length, projectGraphCssModuleUseSiteBlockers: projectSymbolGraph?.cssModuleUseSiteBlockers?.length ?? cssModuleConflicts.length,
20
+ projectGraphLimitConflicts: limitConflicts.length, projectGraphCssModuleUseSiteGraphs: projectSymbolGraph?.cssModuleUseSiteGraphs?.length ?? 0, projectGraphCssModuleUseSites: projectSymbolGraph?.cssModuleUseSites?.length ?? 0, projectGraphCssModuleImportBindings: projectSymbolGraph?.cssModuleImportBindings?.length ?? 0,
21
21
  projectGraphPublicContractConflicts: deltaConflicts.filter((conflict) => conflict.code === 'project-public-contract-delta-conflict').length,
22
22
  projectGraphSourceSpanConflicts: deltaConflicts.filter((conflict) => conflict.code === 'project-source-span-delta-conflict').length,
23
23
  projectGraphCompilerTypeConflicts: deltaConflicts.filter((conflict) => conflict.code === 'project-public-compiler-type-delta-conflict').length,
@@ -104,7 +104,7 @@ function safeMergeJsTsProject(input = {}) {
104
104
  ...fileResults.flatMap((file) => file.conflictKeys),
105
105
  ...outputConflicts.map((conflict) => conflict.details?.conflictKey)
106
106
  ]);
107
- const baseSummary = projectSummary(fileResults, graphConflicts, Boolean(projectGraphDelta), outputDiagnosticsGate, outputDeclarationGate, outputQualityGate, moveRenameSummary, proofEvidence, symbolRenameSummary, splitMergeSummary);
107
+ const baseSummary = projectSummary(fileResults, graphConflicts, Boolean(projectGraphDelta), outputDiagnosticsGate, outputDeclarationGate, outputQualityGate, moveRenameSummary, proofEvidence, symbolRenameSummary, splitMergeSummary, graphArtifacts?.projectSymbolGraph);
108
108
  const evidenceContext = {
109
109
  fileResults,
110
110
  outputDiagnosticsGate,
@@ -162,7 +162,7 @@ function safeMergeJsTsProject(input = {}) {
162
162
  outputProjectSymbolGraph: Boolean(graphArtifacts?.projectSymbolGraph),
163
163
  projectGraphDelta: Boolean(projectGraphDeltaWithConflicts),
164
164
  projectGraphConflicts: graphConflicts.length || undefined,
165
- outputProjectGraphConflicts: outputGraphConflicts.length || undefined,
165
+ outputProjectGraphConflicts: outputGraphConflicts.length || undefined, projectGraphCssModuleUseSiteConflicts: graphConflicts.filter((conflict) => conflict.gateId === 'project-css-module-use-site-graph').length || undefined,
166
166
  projectGraphDeltaConflicts: deltaGraphConflicts.length || undefined,
167
167
  projectGraphSourceSpanConflicts: deltaGraphConflicts.filter((conflict) => conflict.code === 'project-source-span-delta-conflict').length || undefined,
168
168
  projectGraphCompilerTypeConflicts: deltaGraphConflicts.filter((conflict) => conflict.code === 'project-public-compiler-type-delta-conflict').length || undefined,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapeshift-labs/frontier-lang-compiler",
3
- "version": "0.2.155",
3
+ "version": "0.2.156",
4
4
  "description": "Compiler facade for Frontier Lang source documents and language projection adapters.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",