File size: 11,264 Bytes
799b74b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
export const DEFAULT_PROFILE = 'cpp';

const PROFILE_LABELS = {
  cpp: 'C++ 路 latest published result per dataset and method',
  java: 'Java 路 imported published results',
  python: 'Python 路 imported published results',
};

const FINITE = value => typeof value === 'number' && Number.isFinite(value);
const METRIC_AVAILABLE = (row,key) => key==='rank_coverage'?FINITE(row?.[key])&&row[key]>0:FINITE(row?.[key]);
const STRICT_COMPLETE_COLUMNS = new Set(['compression_time','decompression_time','normalized_compression_time','normalized_decompression_time','composite_score']);
const sourceRows = row => Array.isArray(row?.source) ? row.source : [];
const timingAdmitted = record => /^timing_admitted_/i.test(String(record?.timing_profile_status ?? ''));

export function profileLabel(profile, fallback = profile) {
  return PROFILE_LABELS[profile] || fallback;
}

export function isByteOnlyProfile(profile) {
  return false;
}

export function defaultColumnVisible(profile, column) {
  return Boolean(column.defaultVisible);
}

export function timingAvailability(row) {
  const source = sourceRows(row),evidence=source.length?source:[row];
  if (evidence.some(record => !timingAdmitted(record))) {
    return {
      code: 'timing_not_admitted',
      short: 'Timing not admitted',
      detail: 'Timing exists only as diagnostic or unqualified evidence for at least one selected dataset and is excluded from timing and composite rankings.',
    };
  }
  if (!FINITE(row?.compression_time) || !FINITE(row?.decompression_time)) {
    return {
      code: 'incomplete_timing',
      short: 'Incomplete timing',
      detail: 'At least one selected dataset lacks a complete admitted compression/decompression timing pair.',
    };
  }
  return {code: 'available', short: 'Available', detail: 'All selected timing inputs are admitted.'};
}

export function metricAvailability(row, key) {
  if (FINITE(row?.[key])) return {code: 'available', short: '', detail: ''};
  if (['compression_time_timed_subset', 'decompression_time_timed_subset'].includes(key)) {
    const status=row?.timing_subset_status;
    if(status==='no_admitted_timing')return {code:status,short:'No admitted timing',detail:'None of the current winning rate records has admitted timing.'};
    if(status==='mixed_timing_contracts')return {code:status,short:'Mixed timing contracts',detail:'Admitted timing comes from different source profiles, hosts, or timing contracts and is not averaged.'};
    if(status==='unbound_timing_source')return {code:status,short:'Timing source unbound',detail:'Source profile, host, and timing contract are not all bound, so subset timing is withheld.'};
    if(status==='mixed_timing_aggregation')return {code:status,short:'Mixed timing basis',detail:'Column-level and dataset-level timing aggregation cannot be mixed.'};
    return {code:'incomplete_timing',short:'Incomplete timing',detail:'A valid timed subset is unavailable.'};
  }
  if (['compression_time', 'decompression_time'].includes(key)) return timingAvailability(row);
  if (['normalized_compression_time', 'normalized_decompression_time', 'composite_score'].includes(key)) {
    const timing = timingAvailability(row);
    if (timing.code !== 'available') return timing;
    if (Number(row?.workload_signature_count) > 1) return {
      code: 'support_mismatch',
      short: 'Support mismatch',
      detail: `Composite metrics are withheld because this view contains ${Number(row.workload_signature_count).toLocaleString('en-US')} distinct dataset/support signatures.`,
    };
    return {code: 'not_eligible', short: 'Not eligible', detail: 'No eligible normalization cohort is available for this row.'};
  }
  if (key === 'average_rank') {
    const timing = timingAvailability(row);
    if (timing.code !== 'available') return timing;
    return {code: 'support_mismatch', short: 'Support mismatch', detail: 'No matched dataset/support cohort provides a rank for this row.'};
  }
  if (['overall_rate', 'compressed_bytes', 'original_bytes'].includes(key)) return {
    code: 'incomplete_bytes', short: 'Incomplete bytes', detail: 'Complete compressed/original byte totals are unavailable for the selected records.',
  };
  return {code: 'unavailable', short: 'Unavailable', detail: 'This metric is unavailable for the selected records.'};
}

export function summarizeAvailability(rows, requestedColumns) {
  const total = rows.length;
  const counts = Object.fromEntries(requestedColumns.map(column => [column.key, rows.filter(row => METRIC_AVAILABLE(row,column.key)).length]));
  const hidden = requestedColumns.filter(column => (counts[column.key] || 0) === 0);
  const timingNotAdmitted = rows.filter(row => timingAvailability(row).code === 'timing_not_admitted').length;
  const incompleteTiming = rows.filter(row => timingAvailability(row).code === 'incomplete_timing').length;
  const supportMismatch = rows.filter(row =>
    !FINITE(row?.composite_score) && timingAvailability(row).code === 'available' && Number(row?.workload_signature_count) > 1
  ).length;
  const noComparableCohort = rows.filter(row =>
    !FINITE(row?.composite_score) && timingAvailability(row).code === 'available' && Number(row?.workload_signature_count) <= 1 && Number(row?.normalization_reference_rows) < 2
  ).length;
  const parts = [
    `${counts.compression_rate || 0}/${total} rates`,
    `${counts.compression_time || 0}/${total} admitted timings`,
    `${counts.average_rank || 0}/${total} matched-support ranks`,
    `${counts.composite_score || 0}/${total} composite scores`,
  ];
  const reasons = [];
  if (timingNotAdmitted) reasons.push(`${timingNotAdmitted} timing not admitted`);
  if (incompleteTiming) reasons.push(`${incompleteTiming} incomplete timing`);
  if (supportMismatch) {
    const signatures = Math.max(0, ...rows.map(row => Number(row?.workload_signature_count) || 0));
    reasons.push(`${supportMismatch} composite scores withheld across ${signatures} dataset/support signatures`);
  }
  if(noComparableCohort)reasons.push(`${noComparableCohort} lack a comparable normalization cohort`);
  return {total, counts, hidden, timingNotAdmitted, incompleteTiming, supportMismatch, noComparableCohort, parts, reasons};
}

export function visibleColumns(columns, rows, profile, showUnavailable, touched = new Set()) {
  const requested = columns.filter(column => touched.has(column.key) ? column.visible : defaultColumnVisible(profile, column));
  if (showUnavailable) return columns.filter(column => touched.has(column.key) ? column.visible : Boolean(column.defaultVisible));
  return requested.filter(column => STRICT_COMPLETE_COLUMNS.has(column.key)?rows.length>0&&rows.every(row=>METRIC_AVAILABLE(row,column.key)):rows.some(row => METRIC_AVAILABLE(row,column.key)));
}

export function profileScopeText({profile, measuredDatasets, catalogDatasets}) {
  const prefix = `${profileLabel(profile)} 路 ${measuredDatasets} measured datasets in this profile / ${catalogDatasets} catalog datasets.`;
  if (profile === DEFAULT_PROFILE) return `${prefix} Duplicate C++ dataset/method pairs use the latest receipt-bound authority. Source profile and host remain visible in details and CSV. Strict timing and scores require complete same-contract coverage; partial admitted timing is labeled as a timed subset.`;
  return `${prefix} These imported published results retain their original evidence boundaries; unqualified timing is not promoted into rankings.`;
}

export function timingSourceIdentity(record) {
  const profile = record?.source_comparison_profile ?? record?.comparison_profile ?? record?.runtime ?? '';
  const host = record?.source_execution_host ?? record?.execution_host ?? '';
  const contract = record?.timing_contract ?? record?.timing_profile_status ?? '';
  return `${profile}\u0000${host}\u0000${contract}`;
}

export function aggregateTimedSubset(source) {
  const denominator = new Set(sourceRows({source}).map(record => record.dataset)).size;
  const admitted = sourceRows({source}).filter(record =>
    timingAdmitted(record) && FINITE(record?.compression_time) && FINITE(record?.decompression_time) &&
    Number(record.compression_time) >= 0 && Number(record.decompression_time) >= 0
  );
  const boundIdentity = record => {
    const profile=record?.source_comparison_profile ?? record?.comparison_profile ?? record?.runtime ?? '';
    const host=record?.source_execution_host ?? record?.execution_host ?? '';
    const contract=record?.timing_contract ?? record?.timing_profile_status ?? '';
    return profile && host && contract;
  };
  const identities = [...new Set(admitted.map(timingSourceIdentity))];
  const base = {
    timing_subset_coverage: new Set(admitted.map(record => record.dataset)).size,
    timing_subset_denominator: denominator,
    timing_subset_source_identity: identities.length === 1 ? identities[0] : '',
    timing_subset_source_profiles: [...new Set(admitted.map(record => record.source_comparison_profile ?? record.comparison_profile ?? record.runtime ?? ''))].filter(Boolean),
    timing_subset_hosts: [...new Set(admitted.map(record => record.source_execution_host ?? record.execution_host ?? ''))].filter(Boolean),
  };
  if (!admitted.length) return {...base, compression_time_timed_subset:null, decompression_time_timed_subset:null, timing_subset_status:'no_admitted_timing'};
  if (!admitted.every(boundIdentity)) return {...base, compression_time_timed_subset:null, decompression_time_timed_subset:null, timing_subset_status:'unbound_timing_source'};
  if (identities.length !== 1) return {...base, compression_time_timed_subset:null, decompression_time_timed_subset:null, timing_subset_status:'mixed_timing_contracts'};
  const completeColumnTiming = admitted.every(record => record.timing_aggregation === 'column_mean' && Number.isInteger(record.timing_column_count) && record.timing_column_count > 0);
  const completeDatasetTiming = admitted.every(record => record.timing_aggregation === 'dataset_aggregate' && record.timing_column_count === 0);
  if (!completeColumnTiming && !completeDatasetTiming) return {...base, compression_time_timed_subset:null, decompression_time_timed_subset:null, timing_subset_status:'mixed_timing_aggregation'};
  const aggregate = key => completeColumnTiming
    ? admitted.reduce((sum,record) => sum + Number(record[key]) * record.timing_column_count, 0) / admitted.reduce((sum,record) => sum + record.timing_column_count, 0)
    : admitted.reduce((sum,record) => sum + Number(record[key]), 0) / admitted.length;
  return {
    ...base,
    compression_time_timed_subset:aggregate('compression_time'),
    decompression_time_timed_subset:aggregate('decompression_time'),
    timing_subset_status:completeColumnTiming?'column_mean':'dataset_mean',
  };
}

export function strictTimingMode(source) {
  const rows=sourceRows({source});
  if(!rows.length||rows.some(record=>!timingAdmitted(record)||!FINITE(record?.compression_time)||!FINITE(record?.decompression_time)))return 'unavailable';
  const subset=aggregateTimedSubset(rows),datasetCount=new Set(rows.map(record=>record.dataset)).size;
  if(subset.timing_subset_coverage!==datasetCount)return 'unavailable';
  return ['column_mean','dataset_mean'].includes(subset.timing_subset_status)?subset.timing_subset_status:'unavailable';
}