export type JsTsProjectSafeMergeRecommendedAction = 'apply' | 'review' | 'block' | string; export interface JsTsProjectSafeMergeMissingEvidenceRoute { readonly id: string; readonly lane: string; readonly next: string; } export interface JsTsProjectSafeMergeMissingEvidenceTelemetry { readonly total: number; readonly byScope: Readonly>; readonly byKind: Readonly>; readonly byStatus: Readonly>; readonly byAction: Readonly>; readonly byRoute: Readonly>; readonly byLane: Readonly>; } export interface JsTsProjectSafeMergeMissingEvidence { readonly code: string; readonly kind: string; readonly scope: string; readonly status: 'missing' | string; readonly action: 'review' | string; readonly proofLevel?: string; readonly route?: JsTsProjectSafeMergeMissingEvidenceRoute; readonly routeId?: string; readonly routeLane?: string; readonly routeNext?: string; readonly relatedSignals?: readonly string[]; readonly summary?: string; readonly suggestedInput?: Record; readonly autoMergeClaim: false; readonly semanticEquivalenceClaim: false; } export type JsTsProjectSafeMergeAdmissionMatrixSurface = Record & { readonly surface: string; readonly proofStatuses: Readonly>; readonly missingRouteIds?: readonly string[]; readonly nextMissingRouteId?: string }; export type JsTsProjectSafeMergeAdmissionMatrixAudit = Record & { readonly kind: 'frontier.lang.jsTsProjectMergeAdmissionMatrixAudit'; readonly surfaces: readonly JsTsProjectSafeMergeAdmissionMatrixSurface[] }; export interface JsTsProjectSafeMergeConfidenceSummary { readonly kind: 'frontier.lang.jsTsProjectMergeConfidence'; readonly version: 1; readonly schema: 'frontier.lang.jsTsProjectMergeConfidence.v1'; readonly id: string; readonly score: number; readonly level: string; readonly higherIsBetter: true; readonly reviewRequired: boolean; readonly autoApplyCandidate: boolean; readonly recommendedAction: JsTsProjectSafeMergeRecommendedAction; readonly reviewRecommended: boolean; readonly blockRecommended: boolean; readonly autoApplyEvidenceComplete: boolean; readonly autoMergeClaim: false; readonly semanticEquivalenceClaim: boolean; readonly evidenceIds: readonly string[]; readonly reasonCodes: readonly string[]; readonly conflictKeys: readonly string[]; readonly missingSignals: readonly string[]; readonly nextMissingSignal?: string; readonly nextMissingEvidence?: JsTsProjectSafeMergeMissingEvidence; readonly missingEvidence: readonly JsTsProjectSafeMergeMissingEvidence[]; readonly missingEvidenceMatrix: JsTsProjectSafeMergeMissingEvidenceTelemetry; readonly routingCalibration: Record; readonly admissionMatrixAudit: JsTsProjectSafeMergeAdmissionMatrixAudit; readonly dimensions: Readonly>; readonly signals: Readonly>; }