jzxiao commited on
Commit
d52f140
·
verified ·
1 Parent(s): 3d62f04

Publish lossless DBP native-float remeasurement

Browse files

Complete 169-dataset native float audit: 162 measured datasets and 4096 nonempty float columns. All C++, Java and Python native values verified bit-exact. Encode and decode timing include scale/mode processing; frame bytes include dtype/mode/scale/count metadata. New column downloads and audit page remain separate from historical Overall ranks. Timing is a shared-server single-pass diagnostic with four workers.

.gitattributes CHANGED
@@ -34,3 +34,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  data.json filter=lfs diff=lfs merge=lfs -text
 
 
 
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  data.json filter=lfs diff=lfs merge=lfs -text
37
+ dbp-audit-columns.csv filter=lfs diff=lfs merge=lfs -text
38
+ dbp-audit.json filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -25,7 +25,7 @@ python3 deploy/huggingface-compressionbenchmark/apply_dataset_scope.py
25
  python3 deploy/huggingface-compressionbenchmark/build_ui_payload.py
26
  ```
27
 
28
- Publish `README.md`, `index.html`, `style.css`, `app.js`, `ranking.js`, `reference-catalog.json`, `dataset-catalog.json`, `data.json`, `ui-data.json`, `manifest.json`, `export_results.py`, `apply_dataset_scope.py`, and `build_ui_payload.py` to the static Space. The manifest records the exact source-file identities and metric boundaries. The compact browser payload retains the full snapshot's measurements and SHA-256 identity. The reference and dataset catalogs are independent documentation payloads and do not create benchmark measurements.
29
 
30
  Only measurements in the authoritative current project scope are exported. Missing metrics and missing coverage are displayed explicitly. Existing results do not imply independently verified round trips or uniform hardware environments unless those checks are recorded in the source.
31
 
@@ -37,6 +37,7 @@ Only measurements in the authoritative current project scope are exported. Missi
37
  - Dataset-level method details, snapshot provenance, and metric definitions
38
  - Searchable 169-dataset catalog grouped into six source categories, with explicit measurement availability and source links
39
  - Overall composite score and average dataset Rank, with 36 valid positive one-decimal weight combinations
 
40
  - Searchable Methods documentation and a 30-family operator catalog with 102 implementation-directory entries, references, I/O contracts, examples, and status
41
 
42
  The dataset catalog and the measured benchmark scope are separate. All 169 catalog entries are searchable and selectable, while only datasets with published measurements participate in the leaderboard; pending entries show **No published measurements** and are never converted to zero-valued results. The default family view selects the best measured compression-rate configuration independently for each measured dataset. Switch to **Exact configuration** to hold a configuration fixed. Runtime results stay separate.
@@ -44,3 +45,11 @@ The dataset catalog and the measured benchmark scope are separate. All 169 catal
44
  The Overall score is `a × average rate + b × normalized average encode time + c × normalized average decode time`. Time normalization is linear min–max across all eligible rows in the selected runtime, scope and row mode; an equal-time range normalizes to zero. Search, family and coverage filters only hide rows and never change the reference. Average Rank averages per-dataset composite-score ranks with dataset-local time normalization and fractional ties. Missing results are omitted. Coverage and candidate counts can differ across datasets; method details expose dataset scores, ranks and candidate counts. CSV downloads include weights, normalization bounds and rank coverage. The default weights are `a=0.4, b=0.3, c=0.3`.
45
 
46
  Source project: https://github.com/xjz17/web_compression
 
 
 
 
 
 
 
 
 
25
  python3 deploy/huggingface-compressionbenchmark/build_ui_payload.py
26
  ```
27
 
28
+ Publish `dbp-audit.html`, `dbp-audit.js`, `dbp-audit.schema.json`, `dbp-audit.json`, `dbp-audit-columns.csv`, and `dbp-audit-build-receipt.json` alongside `README.md`, `index.html`, `style.css`, `app.js`, `ranking.js`, `reference-catalog.json`, `dataset-catalog.json`, `data.json`, `ui-data.json`, `manifest.json`, `export_results.py`, `apply_dataset_scope.py`, and `build_ui_payload.py` to the static Space. The manifest records the exact source-file identities and metric boundaries. The compact browser payload retains the full snapshot's measurements and SHA-256 identity. The reference and dataset catalogs are independent documentation payloads and do not create benchmark measurements.
29
 
30
  Only measurements in the authoritative current project scope are exported. Missing metrics and missing coverage are displayed explicitly. Existing results do not imply independently verified round trips or uniform hardware environments unless those checks are recorded in the source.
31
 
 
37
  - Dataset-level method details, snapshot provenance, and metric definitions
38
  - Searchable 169-dataset catalog grouped into six source categories, with explicit measurement availability and source links
39
  - Overall composite score and average dataset Rank, with 36 valid positive one-decimal weight combinations
40
+ - Independent DBP native-float audit with complete frame sizes, encode/decode boundaries, bitwise verification, runtime and dtype filters, per-column JSON/CSV downloads, and source/build receipts
41
  - Searchable Methods documentation and a 30-family operator catalog with 102 implementation-directory entries, references, I/O contracts, examples, and status
42
 
43
  The dataset catalog and the measured benchmark scope are separate. All 169 catalog entries are searchable and selectable, while only datasets with published measurements participate in the leaderboard; pending entries show **No published measurements** and are never converted to zero-valued results. The default family view selects the best measured compression-rate configuration independently for each measured dataset. Switch to **Exact configuration** to hold a configuration fixed. Runtime results stay separate.
 
45
  The Overall score is `a × average rate + b × normalized average encode time + c × normalized average decode time`. Time normalization is linear min–max across all eligible rows in the selected runtime, scope and row mode; an equal-time range normalizes to zero. Search, family and coverage filters only hide rows and never change the reference. Average Rank averages per-dataset composite-score ranks with dataset-local time normalization and fractional ties. Missing results are omitted. Coverage and candidate counts can differ across datasets; method details expose dataset scores, ranks and candidate counts. CSV downloads include weights, normalization bounds and rank coverage. The default weights are `a=0.4, b=0.3, c=0.3`.
46
 
47
  Source project: https://github.com/xjz17/web_compression
48
+
49
+ ## DBP native-float remeasurement
50
+
51
+ [DBP full-wire audit](https://thulab-compressionbenchmark.static.hf.space/dbp-audit.html) publishes a separate frozen 169-dataset native-float campaign across C++, Java, and Python. Exact float32 and float64 widths are retained. Encode timing includes scale search, conversion, allocation, and the entire DBF1/DBF2 frame; decode timing includes header parsing, allocation, and inverse scaling or IEEE reconstruction. Frame sizes include the 10-byte dtype/mode/scale/count header per block. Validity sidecars are accounted for separately. Every valid value must match the original native IEEE bits after decoding, and all three implementations must produce the same complete-frame sequence digest per aggregate.
52
+
53
+ This campaign uses a different typed input and column scope from the historical leaderboard CSVs. It therefore does not replace their DBP rows or participate in their Overall scores and Average Rank. Timings are single-repeat diagnostics on a shared server, with warmup and CPU affinity recorded; they are not controlled publication-level runtime comparisons.
54
+
55
+ The source checkout includes `scripts/build_dbp_audit_payload.py`. Its complete-publication mode requires the frozen campaign binding, source receipts, normalized three-runtime result records, execution-artifact manifest, and environment receipt. It rejects incomplete scope, missing results, changed inputs or artifacts, unequal frame hashes, incorrect native widths, and unverified values. Its optional partial-output mode is restricted to a directory outside the deployment payload.
app.js CHANGED
@@ -83,7 +83,7 @@ function refresh() {
83
  currentRows=aggregate(filteredRecords(true));
84
  const audit=snapshot.benchmark?.method_audits?.DBP;
85
  $('audit-notice').hidden=!audit||!currentRows.some(r=>r.family==='DBP');
86
- $('audit-notice').textContent=audit?'DBP measurement audit: '+audit.timing+' '+audit.storage+' Float end-to-end losslessness is not established. See method details.':'';
87
  const weights=parseWeights($('weights').value);
88
  $('score-note').textContent=`Score = ${weights[0].toFixed(1)} × average rate + ${weights[1].toFixed(1)} × normalized encode + ${weights[2].toFixed(1)} × normalized decode. Lower is better. Time normalization: (time − minimum) / (maximum − minimum), across all measured rows in this runtime, scope and row mode. Search and visibility filters keep the reference fixed. Average Rank: mean of per-dataset score ranks with dataset-local time normalization; ties share their average position. Missing results are omitted. Dataset candidate counts differ, so compare rank coverage and inspect method details.`;
89
  const s=state(),scope=scopeKey(),measuredCount=new Set(records.map(r=>r.dataset)).size,ds=s.dataset==='all'?`all ${measuredCount} measured datasets`:datasetDisplayName(s.dataset);
@@ -111,7 +111,7 @@ function showMethod(method,focus=false) {
111
  if(!row){selectedMethod=null;detail.hidden=true;return;}selectedMethod=method;
112
  const meta=methods.get(method)??methods.get(row.source[0].configuration), pipeline=meta?.operator_pipeline, audit=snapshot.benchmark?.method_audits?.[row.family];
113
  const source=row.source.slice().sort((a,b)=>a.dataset.localeCompare(b.dataset));
114
- detail.innerHTML=`<div class="detail-head"><div><h2 id="detail-title">${escape(method)}</h2><p class="muted">${escape(row.family)} · ${escape(runtimeName(row.runtime))} · ${row.coverage} measured datasets</p></div><button id="close-detail" class="quiet-button">Close details</button></div><div class="detail-grid"><div><strong>${fmt(row.compression_rate,4)}</strong><span>average compression rate</span></div><div><strong>${fmt(row.compression_time,2)}</strong><span>encoding ns/point</span></div><div><strong>${fmt(row.decompression_time,2)}</strong><span>decoding ns/point</span></div><div><strong>${row.coverage} / ${row.totalDatasets}</strong><span>dataset coverage</span></div></div>${audit?`<div class="notice"><strong>Measurement audit · ${escape(audit.audited_at)}</strong>${[audit.implementation,audit.timing,audit.storage,audit.roundtrip,audit.comparison].map(n=>`<p>${escape(n)}</p>`).join('')}</div>`:''}${pipeline&&!audit?`<p class="source-code">Interpretive operator mapping: ${escape(typeof pipeline==='string'?pipeline:JSON.stringify(pipeline))}</p>`:''}<p class="muted">Dataset metrics below come from the published result files. Independent round-trip evidence and hardware are ${snapshot.benchmark?.roundtrip_evidence?'documented in the manifest':'not reported for this snapshot'}.</p><div class="detail-table"><table><thead><tr><th>Dataset</th><th>Configuration</th><th>Rate ↓</th><th>Encode ns/point ↓</th><th>Decode ns/point ↓</th><th>Original bytes</th><th>Compressed bytes</th><th>Dataset score ↓</th><th>Dataset Rank ↓</th><th>Rank candidates</th></tr></thead><tbody>${source.map(r=>`<tr><td>${escape(r.dataset)}</td><td>${escape(r.configuration)}</td><td class="numeric">${fmt(r.compression_rate,4)}</td><td class="numeric">${fmt(r.compression_time,2)}</td><td class="numeric">${fmt(r.decompression_time,2)}</td><td class="numeric">${fmt(r.original_bytes,0)}</td><td class="numeric">${fmt(r.compressed_bytes,0)}</td><td class="numeric">${fmt(r.dataset_score,4)}</td><td class="numeric">${fmt(r.dataset_rank,2)}</td><td class="numeric">${fmt(r.dataset_candidate_count,0)}</td></tr>`).join('')}</tbody></table></div>`;
115
  detail.hidden=false;$('close-detail').addEventListener('click',()=>{detail.hidden=true;selectedMethod=null;});
116
  if(focus){detail.scrollIntoView({block:'nearest',behavior:'auto'});detail.focus({preventScroll:true});}
117
  }
@@ -180,7 +180,7 @@ function renderMethodDocumentation() {
180
  const rows=families.map(family=>{const entry=catalogMethod(family)||{},names=configurations.get(family),note=publicNote(entry.notes),search=[family,entry.display_name,entry.description,note,...names,referenceSearchText(entry.reference_ids)].join(' ').toLowerCase();return {family,entry,names,note,search};}).filter(row=>!query||row.search.includes(query));
181
  const described=families.filter(family=>catalogMethod(family)?.description).length;
182
  status.textContent=`${rows.length} of ${families.length} measured method families shown · ${described} descriptions available`;
183
- container.innerHTML=rows.length?rows.map(({family,entry,names,note})=>{const display=entry.display_name||family;return `<article class="documentation-card"><div class="documentation-card-head"><div><h3>${escape(display)}</h3>${display!==family?`<span class="documentation-code">${escape(family)}</span>`:''}</div><span class="documentation-count">${names.length} configuration${names.length===1?'':'s'}</span></div><p class="documentation-description">${escape(entry.description||'A reference description is not available for this measured family.')}</p>${note?`<p class="documentation-note">${escape(note)}</p>`:''}${renderReferences(entry.reference_ids)}<details class="configuration-details"><summary>Published configurations (${names.length})</summary><ul>${names.map(name=>`<li>${escape(name)}</li>`).join('')}</ul></details></article>`;}).join(''):'<p class="documentation-empty">No method documentation matches this search.</p>';
184
  }
185
  function renderOperatorDocumentation() {
186
  const container=$('operator-catalog'),status=$('operator-doc-status');
@@ -312,5 +312,5 @@ function setupTheme() {
312
  setupTheme();
313
  void loadReferenceCatalog();
314
  void loadDatasetCatalog();
315
- try { const response=await fetch('./ui-data.json?v=20261008-scope169-v1',{cache:'no-cache'});if(!response.ok)throw new Error(`Snapshot request returned ${response.status}`);snapshot=await response.json();init(); }
316
  catch(e){$('load-error').hidden=false;$('load-error').textContent=`The result snapshot could not be loaded. Please reload the page or download the JSON from the repository. ${e.message}`;$('snapshot').textContent='Snapshot unavailable';$('leaderboard').querySelector('tbody').innerHTML='<tr><td class="empty-cell">Results unavailable.</td></tr>';}
 
83
  currentRows=aggregate(filteredRecords(true));
84
  const audit=snapshot.benchmark?.method_audits?.DBP;
85
  $('audit-notice').hidden=!audit||!currentRows.some(r=>r.family==='DBP');
86
+ $('audit-notice').innerHTML=audit?`<strong>Historical DBP leaderboard snapshot.</strong> ${escape(audit.timing)} ${escape(audit.storage)} The separate DBF1/DBF2 native-float audit uses the latest frozen typed dataset receipts and is excluded from Overall scores and Average Rank. <a href="./dbp-audit.html">Open the full-wire audit →</a>`:'';
87
  const weights=parseWeights($('weights').value);
88
  $('score-note').textContent=`Score = ${weights[0].toFixed(1)} × average rate + ${weights[1].toFixed(1)} × normalized encode + ${weights[2].toFixed(1)} × normalized decode. Lower is better. Time normalization: (time − minimum) / (maximum − minimum), across all measured rows in this runtime, scope and row mode. Search and visibility filters keep the reference fixed. Average Rank: mean of per-dataset score ranks with dataset-local time normalization; ties share their average position. Missing results are omitted. Dataset candidate counts differ, so compare rank coverage and inspect method details.`;
89
  const s=state(),scope=scopeKey(),measuredCount=new Set(records.map(r=>r.dataset)).size,ds=s.dataset==='all'?`all ${measuredCount} measured datasets`:datasetDisplayName(s.dataset);
 
111
  if(!row){selectedMethod=null;detail.hidden=true;return;}selectedMethod=method;
112
  const meta=methods.get(method)??methods.get(row.source[0].configuration), pipeline=meta?.operator_pipeline, audit=snapshot.benchmark?.method_audits?.[row.family];
113
  const source=row.source.slice().sort((a,b)=>a.dataset.localeCompare(b.dataset));
114
+ detail.innerHTML=`<div class="detail-head"><div><h2 id="detail-title">${escape(method)}</h2><p class="muted">${escape(row.family)} · ${escape(runtimeName(row.runtime))} · ${row.coverage} measured datasets</p></div><button id="close-detail" class="quiet-button">Close details</button></div><div class="detail-grid"><div><strong>${fmt(row.compression_rate,4)}</strong><span>average compression rate</span></div><div><strong>${fmt(row.compression_time,2)}</strong><span>encoding ns/point</span></div><div><strong>${fmt(row.decompression_time,2)}</strong><span>decoding ns/point</span></div><div><strong>${row.coverage} / ${row.totalDatasets}</strong><span>dataset coverage</span></div></div>${audit?`<div class="notice"><strong>Historical measurement audit · ${escape(audit.audited_at)}</strong>${[audit.implementation,audit.timing,audit.storage,audit.roundtrip,audit.comparison].map(n=>`<p>${escape(n)}</p>`).join('')}${row.family==='DBP'?'<p>The latest DBF1/DBF2 native-float audit has a separate typed-data scope and does not replace these rows or enter their rankings.</p><a href="./dbp-audit.html">Open the independent full-wire audit →</a>':''}</div>`:''}${pipeline&&!audit?`<p class="source-code">Interpretive operator mapping: ${escape(typeof pipeline==='string'?pipeline:JSON.stringify(pipeline))}</p>`:''}<p class="muted">Dataset metrics below come from the published result files. Independent round-trip evidence and hardware are ${snapshot.benchmark?.roundtrip_evidence?'documented in the manifest':'not reported for this snapshot'}.</p><div class="detail-table"><table><thead><tr><th>Dataset</th><th>Configuration</th><th>Rate ↓</th><th>Encode ns/point ↓</th><th>Decode ns/point ↓</th><th>Original bytes</th><th>Compressed bytes</th><th>Dataset score ↓</th><th>Dataset Rank ↓</th><th>Rank candidates</th></tr></thead><tbody>${source.map(r=>`<tr><td>${escape(r.dataset)}</td><td>${escape(r.configuration)}</td><td class="numeric">${fmt(r.compression_rate,4)}</td><td class="numeric">${fmt(r.compression_time,2)}</td><td class="numeric">${fmt(r.decompression_time,2)}</td><td class="numeric">${fmt(r.original_bytes,0)}</td><td class="numeric">${fmt(r.compressed_bytes,0)}</td><td class="numeric">${fmt(r.dataset_score,4)}</td><td class="numeric">${fmt(r.dataset_rank,2)}</td><td class="numeric">${fmt(r.dataset_candidate_count,0)}</td></tr>`).join('')}</tbody></table></div>`;
115
  detail.hidden=false;$('close-detail').addEventListener('click',()=>{detail.hidden=true;selectedMethod=null;});
116
  if(focus){detail.scrollIntoView({block:'nearest',behavior:'auto'});detail.focus({preventScroll:true});}
117
  }
 
180
  const rows=families.map(family=>{const entry=catalogMethod(family)||{},names=configurations.get(family),note=publicNote(entry.notes),search=[family,entry.display_name,entry.description,note,...names,referenceSearchText(entry.reference_ids)].join(' ').toLowerCase();return {family,entry,names,note,search};}).filter(row=>!query||row.search.includes(query));
181
  const described=families.filter(family=>catalogMethod(family)?.description).length;
182
  status.textContent=`${rows.length} of ${families.length} measured method families shown · ${described} descriptions available`;
183
+ container.innerHTML=rows.length?rows.map(({family,entry,names,note})=>{const display=entry.display_name||family,isDBP=family.toUpperCase()==='DBP';return `<article class="documentation-card"><div class="documentation-card-head"><div><h3>${escape(display)}</h3>${display!==family?`<span class="documentation-code">${escape(family)}</span>`:''}</div><span class="documentation-count">${names.length} configuration${names.length===1?'':'s'}</span></div><p class="documentation-description">${escape(entry.description||'A reference description is not available for this measured family.')}</p>${note?`<p class="documentation-note">${escape(note)}</p>`:''}${renderReferences(entry.reference_ids)}${isDBP?'<a class="quiet-button documentation-action" href="./dbp-audit.html">Open DBF1 / DBF2 full-wire audit →</a>':''}<details class="configuration-details"><summary>Published configurations (${names.length})</summary><ul>${names.map(name=>`<li>${escape(name)}</li>`).join('')}</ul></details></article>`;}).join(''):'<p class="documentation-empty">No method documentation matches this search.</p>';
184
  }
185
  function renderOperatorDocumentation() {
186
  const container=$('operator-catalog'),status=$('operator-doc-status');
 
312
  setupTheme();
313
  void loadReferenceCatalog();
314
  void loadDatasetCatalog();
315
+ try { const response=await fetch('./ui-data.json?v=20261009-dbp-audit-v1',{cache:'no-cache'});if(!response.ok)throw new Error(`Snapshot request returned ${response.status}`);snapshot=await response.json();init(); }
316
  catch(e){$('load-error').hidden=false;$('load-error').textContent=`The result snapshot could not be loaded. Please reload the page or download the JSON from the repository. ${e.message}`;$('snapshot').textContent='Snapshot unavailable';$('leaderboard').querySelector('tbody').innerHTML='<tr><td class="empty-cell">Results unavailable.</td></tr>';}
data.json CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:7618054cc2699fd855f673bfd41f7f5b94ee466028043bc669e457ead1984f63
3
- size 34661683
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7b5bd2bf29b7794a6b08e545cbc2a9244f7a0efcf9bad68e6e8355455327ca37
3
+ size 34662206
dbp-audit-build-receipt.json ADDED
@@ -0,0 +1,176 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema": "dbp-native-float-audit-build-v1",
3
+ "status": "passed",
4
+ "created_at_utc": "2026-10-09T03:41:20.288512+00:00",
5
+ "mode": "complete",
6
+ "summary": {
7
+ "dataset_receipt_count": 169,
8
+ "measured_dataset_count": 162,
9
+ "n_a_dataset_count": 7,
10
+ "schema_aggregate_count": 4190,
11
+ "nonempty_aggregate_count": 4096,
12
+ "n_a_aggregate_count": 94,
13
+ "datasets_with_float_schema_count": 163,
14
+ "no_float_schema_dataset_count": 6,
15
+ "float32_aggregate_count": 2332,
16
+ "float64_aggregate_count": 1858,
17
+ "all_null_nonempty_aggregate_count": 92,
18
+ "zero_row_aggregate_count": 2,
19
+ "valid_value_count": 1482485088,
20
+ "native_values_bytes": 9748288680,
21
+ "float32_native_values_bytes": 2111592024,
22
+ "float64_native_values_bytes": 7636696656,
23
+ "validity_bytes": 208277366,
24
+ "logical_blocks": 5405223,
25
+ "header_bytes": 54052230
26
+ },
27
+ "gates": {
28
+ "scope": {
29
+ "status": "passed",
30
+ "failure_count": 0
31
+ },
32
+ "compact_collection": {
33
+ "status": "passed",
34
+ "failure_count": 0
35
+ },
36
+ "input_scope_receipt": {
37
+ "status": "passed",
38
+ "failure_count": 0
39
+ },
40
+ "source_manifest_coverage": {
41
+ "status": "passed",
42
+ "failure_count": 0
43
+ },
44
+ "source_manifest": {
45
+ "status": "passed",
46
+ "failure_count": 0
47
+ },
48
+ "source_preflight": {
49
+ "status": "passed",
50
+ "failure_count": 0
51
+ },
52
+ "source_authority": {
53
+ "status": "passed",
54
+ "failure_count": 0
55
+ },
56
+ "source_aggregate_uniqueness": {
57
+ "status": "passed",
58
+ "failure_count": 0
59
+ },
60
+ "source_aggregate_shape": {
61
+ "status": "passed",
62
+ "failure_count": 0
63
+ },
64
+ "source_counts": {
65
+ "status": "passed",
66
+ "failure_count": 0
67
+ },
68
+ "column_inventory": {
69
+ "status": "passed",
70
+ "failure_count": 0
71
+ },
72
+ "dtype_width": {
73
+ "status": "passed",
74
+ "failure_count": 0
75
+ },
76
+ "native_bytes": {
77
+ "status": "passed",
78
+ "failure_count": 0
79
+ },
80
+ "header_bytes": {
81
+ "status": "passed",
82
+ "failure_count": 0
83
+ },
84
+ "dataset_runtime_receipts": {
85
+ "status": "passed",
86
+ "failure_count": 0
87
+ },
88
+ "runtime_coverage": {
89
+ "status": "passed",
90
+ "failure_count": 0
91
+ },
92
+ "runtime_totals": {
93
+ "status": "passed",
94
+ "failure_count": 0
95
+ },
96
+ "source_result_exactness": {
97
+ "status": "passed",
98
+ "failure_count": 0
99
+ },
100
+ "bitwise_verification": {
101
+ "status": "passed",
102
+ "failure_count": 0
103
+ },
104
+ "mode_counts": {
105
+ "status": "passed",
106
+ "failure_count": 0
107
+ },
108
+ "n_a_semantics": {
109
+ "status": "passed",
110
+ "failure_count": 0
111
+ },
112
+ "frame_sequence_sha256": {
113
+ "status": "passed",
114
+ "failure_count": 0
115
+ },
116
+ "cross_runtime": {
117
+ "status": "passed",
118
+ "failure_count": 0
119
+ },
120
+ "campaign_run_receipt": {
121
+ "status": "passed",
122
+ "failure_count": 0
123
+ },
124
+ "artifact_manifest": {
125
+ "status": "passed",
126
+ "failure_count": 0
127
+ },
128
+ "campaign_binding": {
129
+ "status": "passed",
130
+ "failure_count": 0
131
+ },
132
+ "frame_verification": {
133
+ "status": "passed",
134
+ "failure_count": 0
135
+ },
136
+ "environment": {
137
+ "status": "passed",
138
+ "failure_count": 0
139
+ }
140
+ },
141
+ "errors": [],
142
+ "suppressed_error_count": 0,
143
+ "inputs": {
144
+ "scope_sha256": "0fabc01f25d62ddb49585b3208103543b16c6e50340195360a0516411fa148b4",
145
+ "source_column_inventory_sha256": "f94ed9a9dfd95a74f5c48986d650f30a8f867a21e1a18ef02be6610206a21453",
146
+ "artifact_manifest_sha256": "65c71e76b36196328ae7ecc6b2c456e941226ef9b7e300dd623ce32a6a3d2cf2",
147
+ "campaign_binding_sha256": "8bbc012129798d7d8af52c39872d6453863df56684c20b507ae3d226bdbd084c",
148
+ "frame_verification_receipt_sha256": "8bcf811178f8b76e3e379ee659b01061420b0c55e7808a81b9c7e245240fb7d2",
149
+ "compact_collection_receipt_sha256": "969a6b417d0ff541eb1583f51861ca79bc6f8e70a0c9e818efbe95e3f3fb4c93",
150
+ "input_scope_receipt_sha256": "e1a7955aa457dfbda38f182806bde4dcc8c87d58d90c031dd5e65e346c669c00",
151
+ "campaign_run_receipt_sha256": "22a89a5f6abddcdbdfabe8b7826ac6fa80a681812559cc1f0707e66beee0a227",
152
+ "campaign_progress_sha256": "a926e03715d60c9858b5899fac25756e25451f1e53c851ec1d5067db9c353af1",
153
+ "environment_sha256": "472c685502e53d740e45730ab4ceaaebf87cbb539ba0666e479b43b97c807c2c",
154
+ "source_evidence_chain_sha256": "9a9972cb684000d6c9788865c2e949a3a69cae11a17342caef00a718f1583ab7",
155
+ "runtime_result_chain_sha256": {
156
+ "cpp": "1425ca9522347fe60ad2c83481779a1a595fcd7635e2dccc04a95483357a4f9a",
157
+ "java": "a7a55d5e216cfa82cf8513d665a8e551c41f2b7ce1e1d7415295bd856fa390c1",
158
+ "python": "1c8813058d1d946d910cadb62141b75adff197d74dbd923135a7ad8a1c6db995"
159
+ },
160
+ "dataset_run_receipt_chain_sha256": "e35abb086077d8797981d0812ec117f207f55a1ad5a4c0d83e3453b7a55a7478",
161
+ "source_file_count": 338,
162
+ "recorded_block_manifest_count": 169,
163
+ "runtime_result_file_count": 507,
164
+ "compact_collection_file_count": 1022
165
+ },
166
+ "outputs": {
167
+ "dbp-audit.json": {
168
+ "bytes": 24243804,
169
+ "sha256": "febe0d4494cf3778bb3e386ac8674f24406e29d1d7d9b47bd834b332b0e201fb"
170
+ },
171
+ "dbp-audit-columns.csv": {
172
+ "bytes": 11753491,
173
+ "sha256": "ed617bab971dfaa2e398aca2ad9fb73ee5b0d5b8c614667d3c95fa3e02247d7f"
174
+ }
175
+ }
176
+ }
dbp-audit-columns.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ed617bab971dfaa2e398aca2ad9fb73ee5b0d5b8c614667d3c95fa3e02247d7f
3
+ size 11753491
dbp-audit.html ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <meta name="description" content="Independent DBP DBF1 and DBF2 full-wire native floating-point audit for the THULab compression benchmark.">
7
+ <meta name="color-scheme" content="light dark">
8
+ <title>THULab | DBP Full-wire Audit</title>
9
+ <link rel="stylesheet" href="style.css?v=20261009-dbp-audit-v1">
10
+ <script src="dbp-audit.js?v=20261009-dbp-audit-v1" type="module"></script>
11
+ </head>
12
+ <body>
13
+ <a class="skip-link" href="#audit-content">Skip to audit results</a>
14
+ <header class="site-header">
15
+ <a class="brand" href="./index.html#methods"><span class="brand-mark">THU</span><span>THULab <span class="brand-sub">Compression Benchmark</span></span></a>
16
+ <div class="header-links"><a href="./index.html#methods">Methods</a><a href="https://github.com/xjz17/web_compression" target="_blank" rel="noopener">Project code ↗</a><button id="theme" class="quiet-button" type="button" aria-label="Switch color theme">Theme</button></div>
17
+ </header>
18
+ <main id="audit-content" class="dbp-audit-main">
19
+ <section class="audit-hero" aria-labelledby="audit-title">
20
+ <div>
21
+ <p class="eyebrow">Independent native-float diagnostic</p>
22
+ <h1 id="audit-title">DBP full-wire audit</h1>
23
+ <p class="intro-text">Bit-exact DBF1 binary64 and DBF2 binary32 measurements across C++, Java, and Python.</p>
24
+ </div>
25
+ <div class="audit-state-card"><span>Page status</span><strong id="audit-state" class="status-chip status-unknown">Loading</strong><small id="audit-generated">Reading dbp-audit.json…</small></div>
26
+ </section>
27
+
28
+ <div id="load-error" class="error-message" role="alert" hidden></div>
29
+ <section class="notice audit-scope-notice" aria-label="Scope boundary">
30
+ <strong>Separate evidence scope</strong>
31
+ <p>This audit uses the latest frozen typed dataset receipts. It does not replace the historical DBP kernel rows in the main leaderboard and does not participate in Overall scores or Average Rank.</p>
32
+ <p>Frame bytes include the 10-byte DBF header and integer body. Validity sidecars are reported separately, so frame bytes are not a full-storage total. Encoding includes scale selection and serialization; decoding includes header parsing and inverse scaling or IEEE-bit reconstruction.</p>
33
+ </section>
34
+
35
+ <section aria-labelledby="coverage-title">
36
+ <div class="section-heading"><div><h2 id="coverage-title">Receipt coverage</h2><p class="muted">Counts are read or derived from the loaded audit JSON. Declared/detail mismatches are shown below.</p></div><a href="dbp-audit.json" download>Download full result JSON</a></div>
37
+ <div id="audit-summary" class="audit-summary" aria-live="polite"></div>
38
+ <p id="scope-validation" class="documentation-status"></p>
39
+ </section>
40
+
41
+ <section class="audit-meta-grid" aria-label="Measurement context">
42
+ <article><h2>Measurement boundary</h2><dl id="measurement-meta" class="audit-definitions"></dl></article>
43
+ <article><h2>Server and load</h2><dl id="environment-meta" class="audit-definitions"></dl></article>
44
+ </section>
45
+
46
+ <section aria-labelledby="runtime-title">
47
+ <div class="section-heading"><div><h2 id="runtime-title">Runtime status</h2><p class="muted">Every published runtime status comes directly from the audit receipt.</p></div></div>
48
+ <div id="runtime-status" class="runtime-status-grid"></div>
49
+ </section>
50
+
51
+ <section class="audit-results" aria-labelledby="column-title">
52
+ <div class="section-heading">
53
+ <div><h2 id="column-title">Column results</h2><p class="muted">Native-width denominators use 4 bytes per float32 value and 8 bytes per float64 value. No cross-runtime ranking is computed.</p></div>
54
+ <div class="toolbar-actions"><button id="download-column-json" class="quiet-button" type="button" disabled>Filtered JSON</button><button id="download-column-csv" class="primary-button" type="button" disabled>Filtered CSV</button></div>
55
+ </div>
56
+ <div class="audit-filters">
57
+ <label>Runtime<select id="audit-runtime"><option value="all">All runtimes</option></select></label>
58
+ <label>Native dtype<select id="audit-dtype"><option value="all">float32 and float64</option><option value="float32">float32</option><option value="float64">float64</option></select></label>
59
+ <label>Measurement status<select id="audit-status"><option value="all">All statuses</option></select></label>
60
+ <label>Dataset or column<input id="audit-search" type="search" placeholder="Dataset, column, or aggregate ID" autocomplete="off"></label>
61
+ </div>
62
+ <div class="table-footer"><span id="column-result-count" aria-live="polite">Waiting for results…</span><span><a href="dbp-audit-columns.csv" download>Full column CSV</a> · DBF frame bytes exclude validity sidecars.</span></div>
63
+ <div class="table-wrap audit-table-wrap" tabindex="0" aria-label="Scrollable DBP audit results">
64
+ <table id="audit-table">
65
+ <thead><tr><th>Status</th><th>Runtime</th><th>Dataset</th><th>Column</th><th>Dtype</th><th>Native bytes</th><th>DBF frame bytes</th><th>Rate ↓</th><th>Encode ns/value ↓</th><th>Decode ns/value ↓</th><th>Modes</th><th>Bitwise verified</th></tr></thead>
66
+ <tbody><tr><td colspan="12" class="loading-cell">Loading DBP audit results…</td></tr></tbody>
67
+ </table>
68
+ </div>
69
+ <div class="audit-pagination"><button id="audit-prev" class="quiet-button" type="button" disabled>Previous</button><span id="audit-page">Page 1</span><button id="audit-next" class="quiet-button" type="button" disabled>Next</button></div>
70
+ </section>
71
+
72
+ <section aria-labelledby="dataset-receipt-title">
73
+ <div class="section-heading"><div><h2 id="dataset-receipt-title">Dataset receipt status</h2><p class="muted">Dataset status is tracked separately for each runtime, including datasets with no native-float schema.</p></div><span id="dataset-receipt-count" class="muted"></span></div>
74
+ <div id="dataset-receipts" class="dataset-receipt-grid"></div>
75
+ </section>
76
+
77
+ <section class="audit-reading-note" aria-labelledby="reading-title">
78
+ <h2 id="reading-title">How to read these diagnostics</h2>
79
+ <p>These are single-repeat diagnostics on a shared server. CPU affinity, concurrent load, clock, warmup, and runtime build details are shown when the receipt supplies them. Timing differences across runtimes can include runtime and system effects.</p>
80
+ <p>A scaled block is used only when decimal scaling and inverse reconstruction reproduce every native IEEE lane exactly. Otherwise the whole block stores its original IEEE words. Every measured block must pass a bitwise round trip.</p>
81
+ <p><a href="dbp-audit.schema.json">Audit JSON schema</a> · <a href="./index.html#methods">Return to Methods</a></p>
82
+ </section>
83
+ <noscript><p class="error-message">Enable JavaScript to inspect the audit. You can download <a href="dbp-audit.json">dbp-audit.json</a> directly.</p></noscript>
84
+ <footer><span>THULab · DBP native-float audit</span><span>Independent from the historical leaderboard</span></footer>
85
+ </main>
86
+ </body>
87
+ </html>
dbp-audit.js ADDED
@@ -0,0 +1,218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const $ = (id) => document.getElementById(id);
2
+ const escapeHtml = (value) => String(value ?? '').replace(/[&<>"']/g, (character) => ({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[character]));
3
+ const finiteNumber = (value) => value !== null && value !== '' && Number.isFinite(Number(value)) ? Number(value) : null;
4
+ const integer = (value) => finiteNumber(value) === null ? null : Math.trunc(Number(value));
5
+ const countFormat = (value) => finiteNumber(value) === null ? 'Not reported' : Number(value).toLocaleString('en-US',{maximumFractionDigits:0});
6
+ const metricFormat = (value,digits=3) => finiteNumber(value) === null ? 'N/A' : Number(value).toLocaleString('en-US',{minimumFractionDigits:digits,maximumFractionDigits:digits});
7
+ const runtimeLabel = (runtime) => ({cpp:'C++',java:'Java',python:'Python'}[runtime] || String(runtime || 'Unknown'));
8
+ const successfulStatus = (value) => ['ok','complete','passed'].includes(normalizeStatus(value));
9
+ const PAGE_SIZE = 100;
10
+ const EXPECTED_RUNTIMES = ['cpp','java','python'];
11
+ const EXPECTED_COMPLETE_SUMMARY = {dataset_receipt_count:169,measured_dataset_count:162,n_a_dataset_count:7,schema_aggregate_count:4190,nonempty_aggregate_count:4096,n_a_aggregate_count:94};
12
+ const REQUIRED_EVIDENCE_SHA_FIELDS = ['scope_sha256','source_column_inventory_sha256','runtime_artifact_manifest_sha256','campaign_binding_sha256','frame_verification_receipt_sha256','compact_collection_receipt_sha256','input_scope_receipt_sha256','campaign_run_receipt_sha256','campaign_progress_sha256','environment_receipt_sha256','source_evidence_chain_sha256'];
13
+ const REQUIRED_COLUMN_SHA_FIELDS = ['frame_sequence_sha256','expected_sequence_chain_sha256','result_sha256','receipt_sha256','source_manifest_receipt_sha256','source_aggregates_sha256','source_blocks_sha256','source_block_catalog_sha256','runtime_artifact_manifest_sha256','source_column_inventory_sha256','scope_sha256'];
14
+ const SHA256_PATTERN = /^[0-9a-f]{64}$/;
15
+
16
+ let audit=null;
17
+ let columns=[];
18
+ let datasetReceipts=[];
19
+ let filteredColumns=[];
20
+ let page=1;
21
+
22
+ function normalizeStatus(value) {
23
+ const text=String(value??'').trim().toLowerCase().replace(/[\s/-]+/g,'_');
24
+ return text||'unknown';
25
+ }
26
+ function statusLabel(value) {
27
+ const status=normalizeStatus(value);
28
+ if(status==='n_a'||status==='na')return 'N/A';
29
+ return status.replaceAll('_',' ').replace(/\b\w/g,letter=>letter.toUpperCase());
30
+ }
31
+ function statusChip(value) {
32
+ const status=normalizeStatus(value),css=status.replaceAll('_','-');
33
+ return `<span class="status-chip status-${escapeHtml(css)}">${escapeHtml(statusLabel(status))}</span>`;
34
+ }
35
+ function normalizeDtype(value,width) {
36
+ const text=String(value??'').toLowerCase();
37
+ if(text.includes('32')||Number(width)===4)return 'float32';
38
+ if(text.includes('64')||Number(width)===8)return 'float64';
39
+ return text||'unknown';
40
+ }
41
+ function normalizeColumn(row) {
42
+ const valid=integer(row.valid_count??row.verified_values),nativeBytes=integer(row.native_bytes??row.original_bytes),frameBytes=integer(row.frame_bytes??row.compressed_bytes??row.codec_wire_bytes);
43
+ const encodeTotal=finiteNumber(row.encode_ns),decodeTotal=finiteNumber(row.decode_ns);
44
+ return {...row,
45
+ status:normalizeStatus(row.status),runtime:String(row.runtime??row.implementation_language??''),dataset:String(row.dataset??row.dataset_id??''),column:String(row.column??row.source_column??row.aggregate_id??''),aggregate_id:String(row.aggregate_id??''),dtype:normalizeDtype(row.dtype,row.width),
46
+ rows:integer(row.rows??row.row_count),valid_count:valid,missing_count:integer(row.missing_count),native_bytes:nativeBytes,frame_bytes:frameBytes,
47
+ compression_rate:finiteNumber(row.compression_rate??(nativeBytes>0&&frameBytes!==null?frameBytes/nativeBytes:null)),
48
+ encode_ns_per_value:finiteNumber(row.encode_ns_per_value??row.compression_time_ns_per_point??(valid>0&&encodeTotal!==null?encodeTotal/valid:null)),
49
+ decode_ns_per_value:finiteNumber(row.decode_ns_per_value??row.decompression_time_ns_per_point??(valid>0&&decodeTotal!==null?decodeTotal/valid:null)),
50
+ blocks:integer(row.blocks),scaled_blocks:integer(row.scaled_blocks),raw_blocks:integer(row.raw_blocks),validity_bytes:integer(row.validity_bytes),header_bytes:integer(row.header_bytes),verified_values:integer(row.verified_values),
51
+ frame_sequence_sha256:String(row.frame_sequence_sha256??''),receipt_sha256:String(row.receipt_sha256??''),message:String(row.message??'')};
52
+ }
53
+ function normalizeDatasetReceipt(row) {
54
+ return {...row,dataset:String(row.dataset??row.dataset_id??''),runtime:String(row.runtime??''),status:normalizeStatus(row.status),reason:String(row.reason??row.message??''),receipt_sha256:String(row.receipt_sha256??'')};
55
+ }
56
+ function uniqueAggregateKey(row) {
57
+ return row.aggregate_id||`${row.dataset}\0${row.column}\0${row.dtype}`;
58
+ }
59
+ function groupBy(items,keyFn) {
60
+ const groups=new Map();
61
+ for(const item of items){const key=keyFn(item);if(!groups.has(key))groups.set(key,[]);groups.get(key).push(item);}
62
+ return groups;
63
+ }
64
+ function summaryObservation(columnRows=columns,receiptRows=datasetReceipts) {
65
+ const datasetGroups=groupBy(receiptRows.filter(row=>row.dataset),row=>row.dataset);
66
+ const aggregateGroups=groupBy(columnRows.filter(row=>uniqueAggregateKey(row)),uniqueAggregateKey);
67
+ return {
68
+ dataset_receipt_count:datasetGroups.size,
69
+ measured_dataset_count:[...datasetGroups.values()].filter(rows=>rows.some(row=>successfulStatus(row.status))).length,
70
+ n_a_dataset_count:[...datasetGroups.values()].filter(rows=>rows.length&&rows.every(row=>row.status==='n_a')).length,
71
+ schema_aggregate_count:aggregateGroups.size,
72
+ nonempty_aggregate_count:[...aggregateGroups.values()].filter(rows=>rows.some(row=>(row.valid_count??0)>0&&successfulStatus(row.status))).length,
73
+ n_a_aggregate_count:[...aggregateGroups.values()].filter(rows=>rows.length&&rows.every(row=>row.status==='n_a')).length,
74
+ };
75
+ }
76
+ function renderSummary() {
77
+ const declared=audit.summary||{},observed=summaryObservation();
78
+ const definitions=[['Dataset receipts','dataset_receipt_count'],['Measured datasets','measured_dataset_count'],['Dataset N/A','n_a_dataset_count'],['Schema aggregates','schema_aggregate_count'],['Nonempty aggregates','nonempty_aggregate_count'],['Aggregate N/A','n_a_aggregate_count']];
79
+ $('audit-summary').innerHTML=definitions.map(([label,key])=>{const detail=integer(observed[key]),reported=integer(declared[key]),value=detail??reported,suffix=detail!==null&&reported!==null&&detail!==reported?` · JSON summary ${countFormat(reported)}`:'';return `<div><strong>${countFormat(value)}</strong><span>${escapeHtml(label+suffix)}</span></div>`;}).join('');
80
+ }
81
+ function auditValidationErrors(auditData,columnRows,receiptRows) {
82
+ const errors=[],add=(message)=>{if(errors.length<500)errors.push(message);},declared=auditData.summary||{},observed=summaryObservation(columnRows,receiptRows),complete=normalizeStatus(auditData.status)==='complete';
83
+ if(auditData.schema_version!=='dbp-native-float-audit-v1')add('schema_version is not dbp-native-float-audit-v1');
84
+ for(const key of Object.keys(EXPECTED_COMPLETE_SUMMARY)){const expected=integer(declared[key]),actual=integer(observed[key]);if(expected!==null&&actual!==null&&expected!==actual)add(`${key}: summary ${expected}, detail ${actual}`);}
85
+ if(!complete)return errors;
86
+ for(const [key,value] of Object.entries(EXPECTED_COMPLETE_SUMMARY)){if(integer(declared[key])!==value)add(`${key}: complete scope requires ${value}`);}
87
+ const runtimeRows=Array.isArray(auditData.runtimes)?auditData.runtimes:[],runtimeIds=runtimeRows.map(row=>String(row.runtime??''));
88
+ if(runtimeRows.length!==3||new Set(runtimeIds).size!==3||!EXPECTED_RUNTIMES.every(runtime=>runtimeIds.includes(runtime)))add('complete audit requires exactly C++, Java, and Python runtime receipts');
89
+ for(const row of runtimeRows){if(normalizeStatus(row.status)!=='complete')add(`${runtimeLabel(row.runtime)} runtime status is not complete`);if(!SHA256_PATTERN.test(String(row.result_sha256??'')))add(`${runtimeLabel(row.runtime)} runtime result chain SHA is absent`);}
90
+ const byDataset=groupBy(receiptRows.filter(row=>row.dataset),row=>row.dataset);
91
+ if(receiptRows.length!==507||byDataset.size!==169)add('complete audit requires 507 runtime receipts for 169 unique datasets');
92
+ for(const [dataset,rows] of byDataset){const ids=rows.map(row=>row.runtime);if(rows.length!==3||new Set(ids).size!==3||!EXPECTED_RUNTIMES.every(runtime=>ids.includes(runtime)))add(`${dataset}: dataset receipts are not exactly C++, Java, and Python`);if(rows.some(row=>!['ok','n_a'].includes(row.status)))add(`${dataset}: dataset receipt has a nonfinal status`);if(new Set(rows.map(row=>row.status)).size!==1)add(`${dataset}: runtime dataset statuses differ`);if(rows.some(row=>!SHA256_PATTERN.test(row.receipt_sha256)))add(`${dataset}: dataset run receipt SHA is absent`);}
93
+ const aggregateGroups=groupBy(columnRows.filter(row=>row.aggregate_id),row=>row.aggregate_id);
94
+ if(columnRows.length!==12570||aggregateGroups.size!==4190)add('complete audit requires 12,570 runtime rows for 4,190 unique aggregates');
95
+ const exactFields=['status','dataset','column','dtype','width','max_point','rows','valid_count','missing_count','native_bytes','frame_bytes','validity_bytes','header_bytes','blocks','scaled_blocks','raw_blocks','verified_values','frame_sequence_sha256','expected_sequence_chain_sha256','receipt_sha256','source_manifest_receipt_sha256','source_aggregates_sha256','source_blocks_sha256','source_block_catalog_sha256','runtime_artifact_manifest_sha256','source_column_inventory_sha256','scope_sha256'];
96
+ for(const row of columnRows){
97
+ const id=row.aggregate_id||'(missing aggregate_id)',width=row.dtype==='float32'?4:row.dtype==='float64'?8:null,expectedStatus=(row.valid_count??0)>0?'ok':'n_a';
98
+ if(!row.aggregate_id)add('a complete column row is missing aggregate_id');
99
+ if(!byDataset.has(row.dataset))add(`${id}: column dataset is absent from dataset receipts`);
100
+ for(const field of ['width','max_point','rows','valid_count','missing_count','native_bytes','frame_bytes','validity_bytes','header_bytes','encode_ns','decode_ns','blocks','scaled_blocks','raw_blocks','verified_values'])if(finiteNumber(row[field])===null)add(`${id} ${runtimeLabel(row.runtime)}: ${field} is absent or invalid`);
101
+ if(row.status!==expectedStatus)add(`${id} ${runtimeLabel(row.runtime)}: status does not match valid_count`);
102
+ if(!width||row.native_bytes!==width*row.valid_count)add(`${id} ${runtimeLabel(row.runtime)}: native-byte accounting differs`);
103
+ if(row.rows!==row.valid_count+row.missing_count)add(`${id} ${runtimeLabel(row.runtime)}: row accounting differs`);
104
+ if(row.header_bytes!==10*row.blocks)add(`${id} ${runtimeLabel(row.runtime)}: header-byte accounting differs`);
105
+ if(row.verified_values!==row.valid_count)add(`${id} ${runtimeLabel(row.runtime)}: verified value count differs`);
106
+ if(row.scaled_blocks+row.raw_blocks!==row.blocks)add(`${id} ${runtimeLabel(row.runtime)}: mode counts differ`);
107
+ if(row.valid_count>0&&(finiteNumber(row.compression_rate)===null||finiteNumber(row.encode_ns_per_value)===null||finiteNumber(row.decode_ns_per_value)===null))add(`${id} ${runtimeLabel(row.runtime)}: measured rate or timing is absent`);
108
+ for(const field of REQUIRED_COLUMN_SHA_FIELDS)if(!SHA256_PATTERN.test(String(row[field]??'')))add(`${id} ${runtimeLabel(row.runtime)}: ${field} is absent or invalid`);
109
+ }
110
+ for(const [aggregateId,rows] of aggregateGroups){const ids=rows.map(row=>row.runtime);if(rows.length!==3||new Set(ids).size!==3||!EXPECTED_RUNTIMES.every(runtime=>ids.includes(runtime)))add(`${aggregateId}: result rows are not exactly C++, Java, and Python`);for(const field of exactFields)if(new Set(rows.map(row=>JSON.stringify(row[field]??null))).size!==1)add(`${aggregateId}: ${field} differs across runtimes`);}
111
+ const evidence=auditData.evidence||{};
112
+ for(const field of REQUIRED_EVIDENCE_SHA_FIELDS)if(!SHA256_PATTERN.test(String(evidence[field]??'')))add(`evidence.${field} is absent or invalid`);
113
+ const runtimeChains=evidence.runtime_result_chain_sha256||{};for(const runtime of EXPECTED_RUNTIMES)if(!SHA256_PATTERN.test(String(runtimeChains[runtime]??'')))add(`evidence.runtime_result_chain_sha256.${runtime} is absent or invalid`);
114
+ if(integer(auditData.measurement?.repeats)!==1||integer(auditData.measurement?.warmup_blocks)!==20||integer(auditData.measurement?.header_bytes_per_block)!==10)add('complete audit measurement contract differs');
115
+ if(auditData.environment?.shared_server!==true||integer(auditData.environment?.cpu?.passed_receipts_at_capture)!==169)add('complete audit environment receipt does not cover all 169 dataset receipts');
116
+ return errors;
117
+ }
118
+ function validateScope() {
119
+ const errors=auditValidationErrors(audit,columns,datasetReceipts);
120
+ const complete=normalizeStatus(audit.status)==='complete';
121
+ $('scope-validation').className=`documentation-status ${errors.length&&complete?'audit-validation-error':'audit-validation-ok'}`;
122
+ $('scope-validation').textContent=errors.length?(complete?`Completed receipt has ${errors.length} consistency issue${errors.length===1?'':'s'}. ${errors.slice(0,3).join(' · ')}${errors.length>3?' · …':''}`:`Audit status is ${statusLabel(audit.status)}; ${errors.length} completeness check${errors.length===1?'':'s'} remain unresolved.`):'Loaded summary, runtime, dataset, aggregate, and cross-runtime frame-hash receipts are internally consistent.';
123
+ const rawPageStatus=normalizeStatus(audit.status),state=$('audit-state');state.textContent=errors.length&&complete?'Failed · inconsistent':successfulStatus(rawPageStatus)&&!complete?'Incomplete · invalid status':statusLabel(rawPageStatus);state.className=`status-chip status-${errors.length&&complete||rawPageStatus==='failed'?'failed':complete?'complete':'incomplete'}`;
124
+ }
125
+ function metadataValue(value) {
126
+ if(value===null||value===undefined||value==='')return 'Not reported';
127
+ if(Array.isArray(value))return value.join(', ');
128
+ if(typeof value==='object')return JSON.stringify(value);
129
+ return String(value);
130
+ }
131
+ function renderDefinitionList(target,entries) {
132
+ target.innerHTML=entries.map(([label,value])=>`<dt>${escapeHtml(label)}</dt><dd>${escapeHtml(metadataValue(value))}</dd>`).join('');
133
+ }
134
+ function renderMetadata() {
135
+ const measurement=audit.measurement||{},environment=audit.environment||{};
136
+ renderDefinitionList($('measurement-meta'),[
137
+ ['Context',measurement.context],['Repetitions',measurement.repetitions??measurement.repeats],['Warmup blocks',measurement.warmup_blocks],['Header bytes per block',measurement.header_bytes_per_block],['Clock',measurement.clock??environment.clock],['Encode timing',measurement.encode_boundary],['Decode timing',measurement.decode_boundary],['Ranking integration',measurement.ranking_integration],['Notes',measurement.notes]
138
+ ]);
139
+ renderDefinitionList($('environment-meta'),[
140
+ ['Hardware',environment.hardware],['CPU',environment.cpu],['CPU affinity',environment.cpu_affinity],['Operating system',environment.os],['Concurrent load',environment.concurrent_load??environment.load],['Shared server',environment.shared_server===true?'Yes':environment.shared_server===false?'No':null],['Captured at',environment.captured_at]
141
+ ]);
142
+ }
143
+ function renderRuntimeStatus() {
144
+ const runtimes=Array.isArray(audit.runtimes)?audit.runtimes:[];
145
+ $('runtime-status').innerHTML=runtimes.length?runtimes.map(row=>`<article class="runtime-status-card"><header><h3>${escapeHtml(runtimeLabel(row.runtime))}</h3>${statusChip(row.status)}</header>${row.version?`<p>${escapeHtml(row.version)}</p>`:''}${row.message?`<p>${escapeHtml(row.message)}</p>`:''}${row.result_sha256?`<p class="source-code">Result ${escapeHtml(String(row.result_sha256).slice(0,16))}…</p>`:''}</article>`).join(''):'<p class="documentation-empty">No runtime status receipts are available.</p>';
146
+ }
147
+ function populateFilters() {
148
+ const runtimeIds=[...new Set([...(audit.runtimes||[]).map(row=>row.runtime),...columns.map(row=>row.runtime)].filter(Boolean))];
149
+ $('audit-runtime').innerHTML='<option value="all">All runtimes</option>'+runtimeIds.map(runtime=>`<option value="${escapeHtml(runtime)}">${escapeHtml(runtimeLabel(runtime))}</option>`).join('');
150
+ const statuses=[...new Set(columns.map(row=>row.status).filter(status=>['ok','n_a'].includes(status)))].sort();
151
+ $('audit-status').innerHTML='<option value="all">All statuses</option>'+statuses.map(status=>`<option value="${escapeHtml(status)}">${escapeHtml(statusLabel(status))}</option>`).join('');
152
+ }
153
+ function filterState() {
154
+ return {runtime:$('audit-runtime').value,dtype:$('audit-dtype').value,status:$('audit-status').value,search:$('audit-search').value.trim().toLowerCase()};
155
+ }
156
+ function applyFilters(resetPage=true) {
157
+ const filters=filterState();
158
+ filteredColumns=columns.filter(row=>(filters.runtime==='all'||row.runtime===filters.runtime)&&(filters.dtype==='all'||row.dtype===filters.dtype)&&(filters.status==='all'||row.status===filters.status)&&(!filters.search||`${row.dataset} ${row.column} ${row.aggregate_id}`.toLowerCase().includes(filters.search)));
159
+ if(resetPage)page=1;
160
+ renderColumnTable();renderDatasetReceipts();
161
+ }
162
+ function renderColumnTable() {
163
+ const totalPages=Math.max(1,Math.ceil(filteredColumns.length/PAGE_SIZE));if(page>totalPages)page=totalPages;
164
+ const start=(page-1)*PAGE_SIZE,visible=filteredColumns.slice(start,start+PAGE_SIZE),tbody=$('audit-table').querySelector('tbody');
165
+ tbody.innerHTML=visible.length?visible.map(row=>`<tr><td>${statusChip(row.status)}</td><td>${escapeHtml(runtimeLabel(row.runtime))}</td><td>${escapeHtml(row.dataset||'Unknown')}</td><td>${escapeHtml(row.column||row.aggregate_id||'Unknown')}</td><td class="numeric">${escapeHtml(row.dtype)}</td><td class="numeric">${countFormat(row.native_bytes)}</td><td class="numeric">${countFormat(row.frame_bytes)}</td><td class="numeric">${metricFormat(row.compression_rate,4)}</td><td class="numeric">${metricFormat(row.encode_ns_per_value,2)}</td><td class="numeric">${metricFormat(row.decode_ns_per_value,2)}</td><td class="numeric">${countFormat(row.scaled_blocks)} scaled<span class="mode-count">${countFormat(row.raw_blocks)} raw · ${countFormat(row.blocks)} total</span></td><td class="numeric">${countFormat(row.verified_values)}</td></tr>`).join(''):'<tr><td colspan="12" class="empty-cell">No column result matches these filters.</td></tr>';
166
+ $('column-result-count').textContent=`${countFormat(filteredColumns.length)} of ${countFormat(columns.length)} runtime / column rows shown${filteredColumns.length?` · rows ${countFormat(start+1)}–${countFormat(Math.min(start+PAGE_SIZE,filteredColumns.length))}`:''}`;
167
+ $('audit-page').textContent=`Page ${page} of ${totalPages}`;$('audit-prev').disabled=page<=1;$('audit-next').disabled=page>=totalPages;$('download-column-json').disabled=!filteredColumns.length;$('download-column-csv').disabled=!filteredColumns.length;
168
+ }
169
+ function renderDatasetReceipts() {
170
+ const filters=filterState();
171
+ const visible=datasetReceipts.filter(row=>(filters.runtime==='all'||row.runtime===filters.runtime)&&(filters.status==='all'||row.status===filters.status)&&(!filters.search||`${row.dataset} ${row.label??''} ${row.reason}`.toLowerCase().includes(filters.search)));
172
+ $('dataset-receipt-count').textContent=`${countFormat(visible.length)} of ${countFormat(datasetReceipts.length)} runtime receipts · ${countFormat(new Set(visible.map(row=>row.dataset)).size)} datasets`;
173
+ $('dataset-receipts').innerHTML=visible.length?visible.map(row=>`<article class="dataset-receipt-card"><header><div><strong>${escapeHtml(row.label||row.dataset)}</strong><small>${escapeHtml(runtimeLabel(row.runtime))}${row.label&&row.label!==row.dataset?` · ${escapeHtml(row.dataset)}`:''}</small></div>${statusChip(row.status)}</header>${row.reason?`<p>${escapeHtml(row.reason)}</p>`:''}<p>${integer(row.schema_aggregate_count)!==null?`${countFormat(row.schema_aggregate_count)} schema · `:''}${integer(row.nonempty_aggregate_count)!==null?`${countFormat(row.nonempty_aggregate_count)} nonempty · `:''}${integer(row.n_a_aggregate_count)!==null?`${countFormat(row.n_a_aggregate_count)} N/A`:''}</p>${row.receipt_sha256?`<p class="source-code">Receipt ${escapeHtml(row.receipt_sha256.slice(0,16))}…</p>`:''}</article>`).join(''):'<p class="documentation-empty">No dataset receipt matches these filters.</p>';
174
+ }
175
+ function csvCell(value) {
176
+ let text=String(value??'');if(/^[=+@-]/.test(text))text=`'${text}`;return `"${text.replaceAll('"','""')}"`;
177
+ }
178
+ function downloadBlob(filename,type,text) {
179
+ const url=URL.createObjectURL(new Blob([text],{type})),anchor=document.createElement('a');anchor.href=url;anchor.download=filename;anchor.click();setTimeout(()=>URL.revokeObjectURL(url),1000);
180
+ }
181
+ const DOWNLOAD_FIELDS=[
182
+ 'status','runtime','dataset','column','source_column','aggregate_id','dtype','width','max_point','rows','valid_count','missing_count',
183
+ 'native_bytes','frame_bytes','validity_bytes','header_bytes','compression_rate','encode_ns','decode_ns','encode_ns_per_value','decode_ns_per_value',
184
+ 'blocks','scaled_blocks','raw_blocks','verified_values','frame_sequence_sha256','expected_sequence_chain_sha256','result_sha256','receipt_sha256',
185
+ 'source_manifest_receipt_sha256','source_aggregates_sha256','source_blocks_sha256','source_block_catalog_sha256','runtime_artifact_manifest_sha256',
186
+ 'source_column_inventory_sha256','scope_sha256','message'
187
+ ];
188
+ function downloadCsv() {
189
+ const rows=filteredColumns.map(row=>DOWNLOAD_FIELDS.map(field=>csvCell(row[field])).join(','));downloadBlob('THULab-DBP-audit-columns-filtered.csv','text/csv;charset=utf-8','\ufeff'+[DOWNLOAD_FIELDS.join(','),...rows].join('\r\n'));
190
+ }
191
+ function downloadJson() {
192
+ downloadBlob('THULab-DBP-audit-columns-filtered.json','application/json;charset=utf-8',JSON.stringify({schema_version:audit.schema_version,status:audit.status,filters:filterState(),columns:filteredColumns.map(row=>Object.fromEntries(DOWNLOAD_FIELDS.map(field=>[field,row[field]??null])))},null,2)+'\n');
193
+ }
194
+ function setupEvents() {
195
+ for(const id of ['audit-runtime','audit-dtype','audit-status'])$(id).addEventListener('change',()=>applyFilters(true));$('audit-search').addEventListener('input',()=>applyFilters(true));
196
+ $('audit-prev').addEventListener('click',()=>{if(page>1){page--;renderColumnTable();}});$('audit-next').addEventListener('click',()=>{if(page*PAGE_SIZE<filteredColumns.length){page++;renderColumnTable();}});
197
+ $('download-column-csv').addEventListener('click',downloadCsv);$('download-column-json').addEventListener('click',downloadJson);
198
+ }
199
+ function setupTheme() {
200
+ let stored;try{stored=localStorage.getItem('thulab-theme');}catch{}
201
+ const query=new URLSearchParams(location.search).get('__theme'),theme=stored||(['dark','light'].includes(query)?query:matchMedia('(prefers-color-scheme:dark)').matches?'dark':'light');document.documentElement.dataset.theme=theme;$('theme').textContent=theme==='dark'?'Light mode':'Dark mode';
202
+ $('theme').addEventListener('click',()=>{const next=document.documentElement.dataset.theme==='dark'?'light':'dark';document.documentElement.dataset.theme=next;$('theme').textContent=next==='dark'?'Light mode':'Dark mode';try{localStorage.setItem('thulab-theme',next);}catch{}});
203
+ }
204
+ function initialize() {
205
+ columns=(Array.isArray(audit.columns)?audit.columns:Array.isArray(audit.results)?audit.results:[]).map(normalizeColumn);datasetReceipts=(Array.isArray(audit.datasets)?audit.datasets:[]).map(normalizeDatasetReceipt);
206
+ $('audit-generated').textContent=audit.generated_at?`Generated ${String(audit.generated_at).replace('T',' ').replace('Z',' UTC')}`:'Generation time not reported';
207
+ renderSummary();renderMetadata();renderRuntimeStatus();populateFilters();setupEvents();applyFilters(true);validateScope();document.documentElement.dataset.ready='true';
208
+ }
209
+
210
+ async function loadAudit() {
211
+ try {
212
+ const response=await fetch('./dbp-audit.json?v=20261009-dbp-audit-v1',{cache:'no-cache'});if(!response.ok)throw new Error(`Audit request returned ${response.status}`);audit=await response.json();if(!audit||typeof audit!=='object'||!audit.summary||!audit.measurement||!audit.environment)throw new Error('The audit JSON does not match the required top-level schema.');initialize();
213
+ } catch(error) {
214
+ $('load-error').hidden=false;$('load-error').textContent=`The independent DBP audit is not available yet. No completed result is inferred. ${error.message}`;$('audit-state').textContent='Unavailable';$('audit-state').className='status-chip status-incomplete';$('audit-generated').textContent='dbp-audit.json was not loaded';$('audit-table').querySelector('tbody').innerHTML='<tr><td colspan="12" class="empty-cell">Audit results unavailable.</td></tr>';$('scope-validation').textContent='The historical leaderboard remains unchanged.';
215
+ }
216
+ }
217
+ if(typeof document!=='undefined'){setupTheme();loadAudit();}
218
+ if(typeof module!=='undefined'&&module.exports)module.exports={auditValidationErrors,normalizeColumn,normalizeDatasetReceipt,summaryObservation};
dbp-audit.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:febe0d4494cf3778bb3e386ac8674f24406e29d1d7d9b47bd834b332b0e201fb
3
+ size 24243804
dbp-audit.schema.json ADDED
@@ -0,0 +1,353 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "dbp-audit.schema.json",
4
+ "title": "THULab DBP native-float full-wire audit",
5
+ "description": "Independent DBF1/DBF2 diagnostic results. These rows do not replace or participate in the historical leaderboard.",
6
+ "type": "object",
7
+ "required": [
8
+ "schema_version",
9
+ "status",
10
+ "summary",
11
+ "measurement",
12
+ "environment",
13
+ "runtimes",
14
+ "datasets",
15
+ "columns",
16
+ "evidence"
17
+ ],
18
+ "properties": {
19
+ "schema_version": {"const": "dbp-native-float-audit-v1"},
20
+ "status": {"enum": ["incomplete", "pending", "running", "partial", "complete", "failed"]},
21
+ "generated_at": {"type": ["string", "null"]},
22
+ "summary": {
23
+ "type": "object",
24
+ "required": [
25
+ "dataset_receipt_count",
26
+ "measured_dataset_count",
27
+ "n_a_dataset_count",
28
+ "schema_aggregate_count",
29
+ "nonempty_aggregate_count",
30
+ "n_a_aggregate_count"
31
+ ],
32
+ "properties": {
33
+ "dataset_receipt_count": {"type": "integer", "minimum": 0},
34
+ "measured_dataset_count": {"type": "integer", "minimum": 0},
35
+ "n_a_dataset_count": {"type": "integer", "minimum": 0},
36
+ "schema_aggregate_count": {"type": "integer", "minimum": 0},
37
+ "nonempty_aggregate_count": {"type": "integer", "minimum": 0},
38
+ "n_a_aggregate_count": {"type": "integer", "minimum": 0}
39
+ },
40
+ "additionalProperties": true
41
+ },
42
+ "measurement": {
43
+ "type": "object",
44
+ "required": [
45
+ "context",
46
+ "repeats",
47
+ "warmup_blocks",
48
+ "header_bytes_per_block",
49
+ "encode_boundary",
50
+ "decode_boundary",
51
+ "ranking_integration"
52
+ ],
53
+ "properties": {
54
+ "context": {"type": "string"},
55
+ "repeats": {"type": "integer", "minimum": 1},
56
+ "warmup_blocks": {"type": "integer", "minimum": 0},
57
+ "header_bytes_per_block": {"const": 10},
58
+ "encode_boundary": {"type": "string"},
59
+ "decode_boundary": {"type": "string"},
60
+ "ranking_integration": {"const": "separate"},
61
+ "notes": {"type": "array", "items": {"type": "string"}}
62
+ },
63
+ "additionalProperties": true
64
+ },
65
+ "environment": {
66
+ "type": "object",
67
+ "properties": {
68
+ "host": {"type": ["string", "null"]},
69
+ "hardware": {"type": ["string", "object", "null"]},
70
+ "cpu": {"type": ["string", "object", "null"]},
71
+ "os": {"type": ["string", "object", "null"]},
72
+ "load": {"type": ["string", "number", "object", "null"]},
73
+ "clock": {"type": ["string", "object", "null"]},
74
+ "cpu_affinity": {"type": ["string", "array", "null"]},
75
+ "concurrent_load": {"type": ["string", "number", "object", "null"]},
76
+ "shared_server": {"type": ["boolean", "null"]},
77
+ "captured_at": {"type": ["string", "null"]}
78
+ },
79
+ "additionalProperties": true
80
+ },
81
+ "runtimes": {
82
+ "type": "array",
83
+ "items": {
84
+ "type": "object",
85
+ "required": ["runtime", "status"],
86
+ "properties": {
87
+ "runtime": {"enum": ["cpp", "java", "python"]},
88
+ "status": {"$ref": "#/$defs/status"},
89
+ "version": {"type": ["string", "null"]},
90
+ "source_sha256": {"$ref": "#/$defs/nullableSha256"},
91
+ "result_sha256": {"$ref": "#/$defs/nullableSha256"},
92
+ "message": {"type": ["string", "null"]}
93
+ },
94
+ "additionalProperties": true
95
+ }
96
+ },
97
+ "datasets": {
98
+ "type": "array",
99
+ "items": {
100
+ "type": "object",
101
+ "required": ["dataset", "runtime", "status"],
102
+ "properties": {
103
+ "dataset": {"type": "string", "minLength": 1},
104
+ "runtime": {"enum": ["cpp", "java", "python"]},
105
+ "label": {"type": ["string", "null"]},
106
+ "status": {"$ref": "#/$defs/status"},
107
+ "reason": {"type": ["string", "null"]},
108
+ "receipt_sha256": {"$ref": "#/$defs/nullableSha256"},
109
+ "schema_aggregate_count": {"type": "integer", "minimum": 0},
110
+ "nonempty_aggregate_count": {"type": "integer", "minimum": 0},
111
+ "n_a_aggregate_count": {"type": "integer", "minimum": 0}
112
+ },
113
+ "additionalProperties": true
114
+ }
115
+ },
116
+ "columns": {
117
+ "type": "array",
118
+ "items": {"$ref": "#/$defs/columnResult"}
119
+ },
120
+ "evidence": {
121
+ "type": "object",
122
+ "properties": {
123
+ "scope_sha256": {"$ref": "#/$defs/nullableSha256"},
124
+ "source_column_inventory_sha256": {"$ref": "#/$defs/nullableSha256"},
125
+ "runtime_artifact_manifest_sha256": {"$ref": "#/$defs/nullableSha256"},
126
+ "campaign_binding_sha256": {"$ref": "#/$defs/nullableSha256"},
127
+ "frame_verification_receipt_sha256": {"$ref": "#/$defs/nullableSha256"},
128
+ "compact_collection_receipt_sha256": {"$ref": "#/$defs/nullableSha256"},
129
+ "input_scope_receipt_sha256": {"$ref": "#/$defs/nullableSha256"},
130
+ "campaign_run_receipt_sha256": {"$ref": "#/$defs/nullableSha256"},
131
+ "campaign_progress_sha256": {"$ref": "#/$defs/nullableSha256"},
132
+ "environment_receipt_sha256": {"$ref": "#/$defs/nullableSha256"},
133
+ "source_evidence_chain_sha256": {"$ref": "#/$defs/nullableSha256"},
134
+ "runtime_result_chain_sha256": {
135
+ "type": "object",
136
+ "properties": {
137
+ "cpp": {"$ref": "#/$defs/nullableSha256"},
138
+ "java": {"$ref": "#/$defs/nullableSha256"},
139
+ "python": {"$ref": "#/$defs/nullableSha256"}
140
+ },
141
+ "additionalProperties": false
142
+ }
143
+ },
144
+ "additionalProperties": true
145
+ }
146
+ },
147
+ "allOf": [
148
+ {
149
+ "if": {"properties": {"status": {"const": "complete"}}, "required": ["status"]},
150
+ "then": {
151
+ "properties": {
152
+ "summary": {
153
+ "properties": {
154
+ "dataset_receipt_count": {"const": 169},
155
+ "measured_dataset_count": {"const": 162},
156
+ "n_a_dataset_count": {"const": 7},
157
+ "schema_aggregate_count": {"const": 4190},
158
+ "nonempty_aggregate_count": {"const": 4096},
159
+ "n_a_aggregate_count": {"const": 94}
160
+ }
161
+ },
162
+ "measurement": {
163
+ "properties": {
164
+ "repeats": {"const": 1},
165
+ "warmup_blocks": {"const": 20},
166
+ "header_bytes_per_block": {"const": 10}
167
+ }
168
+ },
169
+ "environment": {
170
+ "required": ["hardware", "cpu", "clock", "cpu_affinity", "concurrent_load", "shared_server", "captured_at"],
171
+ "properties": {
172
+ "shared_server": {"const": true},
173
+ "cpu": {
174
+ "type": "object",
175
+ "required": ["passed_receipts_at_capture"],
176
+ "properties": {"passed_receipts_at_capture": {"const": 169}}
177
+ }
178
+ }
179
+ },
180
+ "runtimes": {
181
+ "minItems": 3,
182
+ "maxItems": 3,
183
+ "items": {
184
+ "allOf": [
185
+ {"$ref": "#/$defs/runtimeStatus"},
186
+ {"properties": {"status": {"const": "complete"}, "result_sha256": {"$ref": "#/$defs/sha256"}}, "required": ["result_sha256"]}
187
+ ]
188
+ },
189
+ "allOf": [
190
+ {"contains": {"properties": {"runtime": {"const": "cpp"}}, "required": ["runtime"]}, "minContains": 1, "maxContains": 1},
191
+ {"contains": {"properties": {"runtime": {"const": "java"}}, "required": ["runtime"]}, "minContains": 1, "maxContains": 1},
192
+ {"contains": {"properties": {"runtime": {"const": "python"}}, "required": ["runtime"]}, "minContains": 1, "maxContains": 1}
193
+ ]
194
+ },
195
+ "datasets": {
196
+ "minItems": 507,
197
+ "maxItems": 507,
198
+ "items": {
199
+ "allOf": [
200
+ {"$ref": "#/$defs/datasetReceipt"},
201
+ {"properties": {"status": {"enum": ["ok", "n_a"]}, "receipt_sha256": {"$ref": "#/$defs/sha256"}}, "required": ["receipt_sha256", "schema_aggregate_count", "nonempty_aggregate_count", "n_a_aggregate_count"]}
202
+ ]
203
+ }
204
+ },
205
+ "columns": {
206
+ "minItems": 12570,
207
+ "maxItems": 12570,
208
+ "items": {
209
+ "allOf": [
210
+ {"$ref": "#/$defs/columnResult"},
211
+ {
212
+ "properties": {
213
+ "status": {"enum": ["ok", "n_a"]},
214
+ "aggregate_id": {"type": "string", "minLength": 1},
215
+ "frame_sequence_sha256": {"$ref": "#/$defs/sha256"},
216
+ "expected_sequence_chain_sha256": {"$ref": "#/$defs/sha256"},
217
+ "result_sha256": {"$ref": "#/$defs/sha256"},
218
+ "receipt_sha256": {"$ref": "#/$defs/sha256"},
219
+ "source_manifest_receipt_sha256": {"$ref": "#/$defs/sha256"},
220
+ "source_aggregates_sha256": {"$ref": "#/$defs/sha256"},
221
+ "source_blocks_sha256": {"$ref": "#/$defs/sha256"},
222
+ "source_block_catalog_sha256": {"$ref": "#/$defs/sha256"},
223
+ "runtime_artifact_manifest_sha256": {"$ref": "#/$defs/sha256"},
224
+ "source_column_inventory_sha256": {"$ref": "#/$defs/sha256"},
225
+ "scope_sha256": {"$ref": "#/$defs/sha256"}
226
+ },
227
+ "required": ["aggregate_id", "width", "max_point", "encode_ns", "decode_ns", "frame_sequence_sha256", "expected_sequence_chain_sha256", "result_sha256", "receipt_sha256", "source_manifest_receipt_sha256", "source_aggregates_sha256", "source_blocks_sha256", "source_block_catalog_sha256", "runtime_artifact_manifest_sha256", "source_column_inventory_sha256", "scope_sha256"]
228
+ }
229
+ ]
230
+ }
231
+ },
232
+ "evidence": {
233
+ "required": ["scope_sha256", "source_column_inventory_sha256", "runtime_artifact_manifest_sha256", "campaign_binding_sha256", "frame_verification_receipt_sha256", "compact_collection_receipt_sha256", "input_scope_receipt_sha256", "campaign_run_receipt_sha256", "campaign_progress_sha256", "environment_receipt_sha256", "source_evidence_chain_sha256", "runtime_result_chain_sha256"],
234
+ "properties": {
235
+ "scope_sha256": {"$ref": "#/$defs/sha256"},
236
+ "source_column_inventory_sha256": {"$ref": "#/$defs/sha256"},
237
+ "runtime_artifact_manifest_sha256": {"$ref": "#/$defs/sha256"},
238
+ "campaign_binding_sha256": {"$ref": "#/$defs/sha256"},
239
+ "frame_verification_receipt_sha256": {"$ref": "#/$defs/sha256"},
240
+ "compact_collection_receipt_sha256": {"$ref": "#/$defs/sha256"},
241
+ "input_scope_receipt_sha256": {"$ref": "#/$defs/sha256"},
242
+ "campaign_run_receipt_sha256": {"$ref": "#/$defs/sha256"},
243
+ "campaign_progress_sha256": {"$ref": "#/$defs/sha256"},
244
+ "environment_receipt_sha256": {"$ref": "#/$defs/sha256"},
245
+ "source_evidence_chain_sha256": {"$ref": "#/$defs/sha256"},
246
+ "runtime_result_chain_sha256": {
247
+ "required": ["cpp", "java", "python"],
248
+ "properties": {"cpp": {"$ref": "#/$defs/sha256"}, "java": {"$ref": "#/$defs/sha256"}, "python": {"$ref": "#/$defs/sha256"}}
249
+ }
250
+ }
251
+ }
252
+ }
253
+ }
254
+ }
255
+ ],
256
+ "$defs": {
257
+ "status": {
258
+ "enum": ["incomplete", "pending", "running", "partial", "complete", "ok", "passed", "n_a", "failed", "skipped"]
259
+ },
260
+ "nullableSha256": {
261
+ "type": ["string", "null"],
262
+ "pattern": "^[0-9a-f]{64}$"
263
+ },
264
+ "sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
265
+ "runtimeStatus": {
266
+ "type": "object",
267
+ "required": ["runtime", "status"],
268
+ "properties": {
269
+ "runtime": {"enum": ["cpp", "java", "python"]},
270
+ "status": {"$ref": "#/$defs/status"},
271
+ "version": {"type": ["string", "null"]},
272
+ "result_sha256": {"$ref": "#/$defs/nullableSha256"}
273
+ },
274
+ "additionalProperties": true
275
+ },
276
+ "datasetReceipt": {
277
+ "type": "object",
278
+ "required": ["dataset", "runtime", "status"],
279
+ "properties": {
280
+ "dataset": {"type": "string", "minLength": 1},
281
+ "runtime": {"enum": ["cpp", "java", "python"]},
282
+ "status": {"$ref": "#/$defs/status"},
283
+ "receipt_sha256": {"$ref": "#/$defs/nullableSha256"}
284
+ },
285
+ "additionalProperties": true
286
+ },
287
+ "metric": {"type": ["number", "null"], "minimum": 0},
288
+ "columnResult": {
289
+ "type": "object",
290
+ "required": [
291
+ "status",
292
+ "runtime",
293
+ "dataset",
294
+ "column",
295
+ "dtype",
296
+ "native_bytes",
297
+ "frame_bytes",
298
+ "compression_rate",
299
+ "encode_ns_per_value",
300
+ "decode_ns_per_value",
301
+ "blocks",
302
+ "scaled_blocks",
303
+ "raw_blocks",
304
+ "rows",
305
+ "valid_count",
306
+ "missing_count",
307
+ "validity_bytes",
308
+ "header_bytes",
309
+ "verified_values"
310
+ ],
311
+ "properties": {
312
+ "status": {"$ref": "#/$defs/status"},
313
+ "runtime": {"enum": ["cpp", "java", "python"]},
314
+ "dataset": {"type": "string", "minLength": 1},
315
+ "column": {"type": "string", "minLength": 1},
316
+ "aggregate_id": {"type": ["string", "null"]},
317
+ "width": {"type": "integer", "enum": [4, 8]},
318
+ "max_point": {"type": "integer", "minimum": 0},
319
+ "encode_ns": {"type": "integer", "minimum": 0},
320
+ "decode_ns": {"type": "integer", "minimum": 0},
321
+ "dtype": {"enum": ["float32", "float64"]},
322
+ "native_bytes": {"type": "integer", "minimum": 0},
323
+ "frame_bytes": {"type": "integer", "minimum": 0},
324
+ "compression_rate": {"$ref": "#/$defs/metric"},
325
+ "encode_ns_per_value": {"$ref": "#/$defs/metric"},
326
+ "decode_ns_per_value": {"$ref": "#/$defs/metric"},
327
+ "blocks": {"type": "integer", "minimum": 0},
328
+ "scaled_blocks": {"type": "integer", "minimum": 0},
329
+ "raw_blocks": {"type": "integer", "minimum": 0},
330
+ "rows": {"type": "integer", "minimum": 0},
331
+ "valid_count": {"type": "integer", "minimum": 0},
332
+ "missing_count": {"type": "integer", "minimum": 0},
333
+ "verified_values": {"type": "integer", "minimum": 0},
334
+ "validity_bytes": {"type": "integer", "minimum": 0},
335
+ "header_bytes": {"type": "integer", "minimum": 0},
336
+ "frame_sequence_sha256": {"$ref": "#/$defs/nullableSha256"},
337
+ "expected_sequence_chain_sha256": {"$ref": "#/$defs/nullableSha256"},
338
+ "result_sha256": {"$ref": "#/$defs/nullableSha256"},
339
+ "receipt_sha256": {"$ref": "#/$defs/nullableSha256"},
340
+ "source_manifest_receipt_sha256": {"$ref": "#/$defs/nullableSha256"},
341
+ "source_aggregates_sha256": {"$ref": "#/$defs/nullableSha256"},
342
+ "source_blocks_sha256": {"$ref": "#/$defs/nullableSha256"},
343
+ "source_block_catalog_sha256": {"$ref": "#/$defs/nullableSha256"},
344
+ "runtime_artifact_manifest_sha256": {"$ref": "#/$defs/nullableSha256"},
345
+ "source_column_inventory_sha256": {"$ref": "#/$defs/nullableSha256"},
346
+ "scope_sha256": {"$ref": "#/$defs/nullableSha256"},
347
+ "message": {"type": ["string", "null"]}
348
+ },
349
+ "additionalProperties": true
350
+ }
351
+ },
352
+ "additionalProperties": true
353
+ }
export_results.py CHANGED
@@ -470,13 +470,14 @@ def main() -> int:
470
  "selection_note": "Configuration views retain measured configurations passing the project's method-name filter. This does not certify every result as lossless. Family views choose the lowest-rate configuration independently for each dataset, scope, and runtime.",
471
  "method_audits": {
472
  "DBP": {
473
- "audited_at": "2026-10-08",
474
- "label": "Kernel measurements",
475
- "implementation": "Project DBP encodes deltas with ZigZag and ULEB128; it is not Parquet miniblock bit-packing.",
476
- "timing": "Float preparation/scaling is outside the reported codec timer.",
477
- "storage": "Reported float payload sizes omit the scale/mode metadata needed for complete reconstruction.",
478
- "roundtrip": "Integer payload round-trip checks do not establish end-to-end bit-exact float reconstruction. Current Java/Python catalog scaling paths lack a bit-exact guard; current C++ has an exact-scaling check and IEEE-bit fallback, but old reports do not identify the exact executable revision.",
479
- "comparison": "Compared methods may use different columns or point counts. Check the per-dataset original byte counts before comparing results.",
 
480
  }
481
  },
482
  "notes": [
 
470
  "selection_note": "Configuration views retain measured configurations passing the project's method-name filter. This does not certify every result as lossless. Family views choose the lowest-rate configuration independently for each dataset, scope, and runtime.",
471
  "method_audits": {
472
  "DBP": {
473
+ "audited_at": "2026-10-09",
474
+ "label": "Historical kernel measurements",
475
+ "full_wire_audit_url": "./dbp-audit.html",
476
+ "implementation": "The historical project DBP snapshot encodes deltas with ZigZag and ULEB128. The separate DBF1/DBF2 native-float remeasurement adds a complete reconstruction header and a bit-exact scale-or-IEEE mode.",
477
+ "timing": "Historical leaderboard float preparation/scaling is outside the reported codec timer. The separate native-float audit measures scale selection, conversion, complete frame encoding, parsing and inverse reconstruction within their respective timers.",
478
+ "storage": "Historical leaderboard float payload sizes omit reconstruction scale/mode metadata. The separate native-float audit counts the entire DBF1/DBF2 frame, including its 10-byte header per block; validity sidecars are recorded separately.",
479
+ "roundtrip": "Historical integer-payload checks do not certify those leaderboard float rows. The new native-float audit verifies every valid value against its original float32 or float64 bit pattern and compares complete frame hashes across C++, Java and Python.",
480
+ "comparison": "Historical and newly frozen typed inputs have different column and dtype scopes. The native-float audit is published separately and does not enter the historical Overall scores or Average Rank.",
481
  }
482
  },
483
  "notes": [
index.html CHANGED
@@ -6,8 +6,8 @@
6
  <meta name="description" content="THULab time-series compression benchmark: measured compression rates, encoding and decoding costs, and dataset coverage.">
7
  <meta name="color-scheme" content="light dark">
8
  <title>THULab | Time Series Compression Benchmark</title>
9
- <link rel="stylesheet" href="style.css?v=20261008-scope169-v1">
10
- <script src="app.js?v=20261008-scope169-v1" type="module"></script>
11
  </head>
12
  <body>
13
  <a class="skip-link" href="#content">Skip to results</a>
 
6
  <meta name="description" content="THULab time-series compression benchmark: measured compression rates, encoding and decoding costs, and dataset coverage.">
7
  <meta name="color-scheme" content="light dark">
8
  <title>THULab | Time Series Compression Benchmark</title>
9
+ <link rel="stylesheet" href="style.css?v=20261009-dbp-audit-v1">
10
+ <script src="app.js?v=20261009-dbp-audit-v1" type="module"></script>
11
  </head>
12
  <body>
13
  <a class="skip-link" href="#content">Skip to results</a>
manifest.json CHANGED
@@ -28,8 +28,60 @@
28
  "source_report_file_count": 108
29
  },
30
  "data_file": "data.json",
31
- "data_sha256": "7618054cc2699fd855f673bfd41f7f5b94ee466028043bc669e457ead1984f63",
32
  "dataset_catalog_sha256": "a5930a8a0cd52cfbd15c176e8384184fbbdb8778b67ee8e3fe923d5c00cfac82",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  "excluded_content": [
34
  "raw datasets",
35
  "user uploads",
 
28
  "source_report_file_count": 108
29
  },
30
  "data_file": "data.json",
31
+ "data_sha256": "7b5bd2bf29b7794a6b08e545cbc2a9244f7a0efcf9bad68e6e8355455327ca37",
32
  "dataset_catalog_sha256": "a5930a8a0cd52cfbd15c176e8384184fbbdb8778b67ee8e3fe923d5c00cfac82",
33
+ "dbp_native_float_audit": {
34
+ "files": {
35
+ "dbp-audit-build-receipt.json": {
36
+ "bytes": 5292,
37
+ "sha256": "211958f34d280daea3ab6dde8c56ca5b4207cc78ad767a22a37910dc3b5cb892"
38
+ },
39
+ "dbp-audit-columns.csv": {
40
+ "bytes": 11753491,
41
+ "sha256": "ed617bab971dfaa2e398aca2ad9fb73ee5b0d5b8c614667d3c95fa3e02247d7f"
42
+ },
43
+ "dbp-audit.html": {
44
+ "bytes": 7245,
45
+ "sha256": "aca2a426b2a4fa56eb59ca2bfbc164ce9096ff13deb2bd5479e91c16a407b059"
46
+ },
47
+ "dbp-audit.js": {
48
+ "bytes": 25037,
49
+ "sha256": "9ae0d2a00500b1be7433981527618c0c31702b075d51387cf816fb3166693338"
50
+ },
51
+ "dbp-audit.json": {
52
+ "bytes": 24243804,
53
+ "sha256": "febe0d4494cf3778bb3e386ac8674f24406e29d1d7d9b47bd834b332b0e201fb"
54
+ },
55
+ "dbp-audit.schema.json": {
56
+ "bytes": 15210,
57
+ "sha256": "e3409dbf44c07b9edd6e855980ad56e70a526b2940df0a0e20e4f7c14415d10d"
58
+ }
59
+ },
60
+ "scope": "separate frozen typed data; excluded from historical Overall scores and Average Rank",
61
+ "source_scope_sha256": "0fabc01f25d62ddb49585b3208103543b16c6e50340195360a0516411fa148b4",
62
+ "summary": {
63
+ "all_null_nonempty_aggregate_count": 92,
64
+ "dataset_receipt_count": 169,
65
+ "datasets_with_float_schema_count": 163,
66
+ "float32_aggregate_count": 2332,
67
+ "float32_native_values_bytes": 2111592024,
68
+ "float64_aggregate_count": 1858,
69
+ "float64_native_values_bytes": 7636696656,
70
+ "header_bytes": 54052230,
71
+ "logical_blocks": 5405223,
72
+ "measured_dataset_count": 162,
73
+ "n_a_aggregate_count": 94,
74
+ "n_a_dataset_count": 7,
75
+ "native_values_bytes": 9748288680,
76
+ "no_float_schema_dataset_count": 6,
77
+ "nonempty_aggregate_count": 4096,
78
+ "schema_aggregate_count": 4190,
79
+ "valid_value_count": 1482485088,
80
+ "validity_bytes": 208277366,
81
+ "zero_row_aggregate_count": 2
82
+ },
83
+ "timing_context": "shared-server single-pass diagnostic"
84
+ },
85
  "excluded_content": [
86
  "raw datasets",
87
  "user uploads",
style.css CHANGED
@@ -14,3 +14,6 @@
14
  .dataset-catalog-panel{margin:18px 0 20px;padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.dataset-catalog-head{display:flex;align-items:end;justify-content:space-between;gap:24px}.dataset-catalog-head>div:first-child{min-width:0}.dataset-catalog-controls{display:grid;grid-template-columns:180px minmax(220px,320px);gap:10px;flex:0 0 auto}.dataset-catalog{max-height:430px;overflow:auto;padding-right:5px}.dataset-category{margin-top:18px}.dataset-category:first-child{margin-top:0}.dataset-category>h3{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:8px;margin:0;padding:8px 2px;background:var(--surface);border-bottom:1px solid var(--line);font-size:14px}.dataset-category>h3 span{padding:2px 6px;border-radius:999px;background:var(--soft);color:var(--muted);font-size:9px}.dataset-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding-top:8px}.dataset-entry{min-width:0;padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--bg)}.dataset-entry.measured{border-left:3px solid var(--accent)}.dataset-entry.selected{box-shadow:inset 0 0 0 1px var(--accent);background:var(--accent-soft)}.dataset-entry button{display:flex;align-items:start;justify-content:space-between;gap:8px;width:100%;padding:0;border:0;background:transparent;color:var(--text);text-align:left}.dataset-entry button:hover strong{color:var(--accent);text-decoration:underline}.dataset-entry strong{display:block;font-size:12px;line-height:1.35;overflow-wrap:anywhere}.dataset-entry small{display:block;margin-top:2px;color:var(--muted);font:9px "SFMono-Regular",Consolas,monospace;overflow-wrap:anywhere}.dataset-state{flex:0 0 auto;max-width:92px;padding:2px 5px;border-radius:4px;background:var(--soft);color:var(--muted);font-size:8px;line-height:1.35;text-align:right}.dataset-entry.measured .dataset-state{background:var(--accent-soft);color:var(--accent)}.dataset-entry p{margin:7px 0 0;color:var(--muted);font-size:9px;line-height:1.45}.dataset-entry .dataset-snapshot-note{color:#9a5a16}.dataset-links{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:6px}.dataset-links a,.dataset-source{font-size:9px;overflow-wrap:anywhere}
15
  @media(max-width:1000px){.operator-summary{grid-template-columns:repeat(3,1fr)}.dataset-list{grid-template-columns:repeat(2,minmax(0,1fr))}.dataset-catalog-head{align-items:stretch;flex-direction:column;gap:12px}.dataset-catalog-controls{width:100%;grid-template-columns:1fr 1.5fr}}
16
  @media(max-width:768px){.operator-summary{grid-template-columns:repeat(2,1fr)}.implementation-entry dl>div{grid-template-columns:1fr;gap:1px}.dataset-catalog-panel{padding:14px}.dataset-catalog-controls,.dataset-list{grid-template-columns:1fr}.dataset-catalog{max-height:520px}}
 
 
 
 
14
  .dataset-catalog-panel{margin:18px 0 20px;padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.dataset-catalog-head{display:flex;align-items:end;justify-content:space-between;gap:24px}.dataset-catalog-head>div:first-child{min-width:0}.dataset-catalog-controls{display:grid;grid-template-columns:180px minmax(220px,320px);gap:10px;flex:0 0 auto}.dataset-catalog{max-height:430px;overflow:auto;padding-right:5px}.dataset-category{margin-top:18px}.dataset-category:first-child{margin-top:0}.dataset-category>h3{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:8px;margin:0;padding:8px 2px;background:var(--surface);border-bottom:1px solid var(--line);font-size:14px}.dataset-category>h3 span{padding:2px 6px;border-radius:999px;background:var(--soft);color:var(--muted);font-size:9px}.dataset-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding-top:8px}.dataset-entry{min-width:0;padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--bg)}.dataset-entry.measured{border-left:3px solid var(--accent)}.dataset-entry.selected{box-shadow:inset 0 0 0 1px var(--accent);background:var(--accent-soft)}.dataset-entry button{display:flex;align-items:start;justify-content:space-between;gap:8px;width:100%;padding:0;border:0;background:transparent;color:var(--text);text-align:left}.dataset-entry button:hover strong{color:var(--accent);text-decoration:underline}.dataset-entry strong{display:block;font-size:12px;line-height:1.35;overflow-wrap:anywhere}.dataset-entry small{display:block;margin-top:2px;color:var(--muted);font:9px "SFMono-Regular",Consolas,monospace;overflow-wrap:anywhere}.dataset-state{flex:0 0 auto;max-width:92px;padding:2px 5px;border-radius:4px;background:var(--soft);color:var(--muted);font-size:8px;line-height:1.35;text-align:right}.dataset-entry.measured .dataset-state{background:var(--accent-soft);color:var(--accent)}.dataset-entry p{margin:7px 0 0;color:var(--muted);font-size:9px;line-height:1.45}.dataset-entry .dataset-snapshot-note{color:#9a5a16}.dataset-links{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:6px}.dataset-links a,.dataset-source{font-size:9px;overflow-wrap:anywhere}
15
  @media(max-width:1000px){.operator-summary{grid-template-columns:repeat(3,1fr)}.dataset-list{grid-template-columns:repeat(2,minmax(0,1fr))}.dataset-catalog-head{align-items:stretch;flex-direction:column;gap:12px}.dataset-catalog-controls{width:100%;grid-template-columns:1fr 1.5fr}}
16
  @media(max-width:768px){.operator-summary{grid-template-columns:repeat(2,1fr)}.implementation-entry dl>div{grid-template-columns:1fr;gap:1px}.dataset-catalog-panel{padding:14px}.dataset-catalog-controls,.dataset-list{grid-template-columns:1fr}.dataset-catalog{max-height:520px}}
17
+ .audit-notice a{font-weight:650}.documentation-action{display:inline-flex;margin-top:12px;font-size:11px}.dbp-audit-main{max-width:1440px}.audit-hero{display:flex;align-items:center;justify-content:space-between;gap:32px;padding:34px 0 24px}.audit-hero .intro-text{margin:0;max-width:820px}.audit-state-card{flex:0 0 230px;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.audit-state-card>span,.audit-state-card>small{display:block;color:var(--muted);font-size:10px}.audit-state-card>strong{display:inline-block;margin:7px 0}.status-chip{padding:3px 8px;border-radius:999px;border:1px solid var(--line);background:var(--soft);font-size:10px;line-height:1.4;text-transform:uppercase;letter-spacing:.05em}.status-complete,.status-ok,.status-passed{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.status-failed{border-color:#b34938;background:#b3493818;color:#b34938}.status-incomplete,.status-pending,.status-running,.status-partial,.status-skipped,.status-n-a,.status-na,.status-unknown{color:var(--muted)}.audit-scope-notice{margin:0 0 26px}.audit-scope-notice p{max-width:110ch;margin:6px 0 0}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin:24px 0 12px}.section-heading>div:first-child{min-width:0}.audit-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--line)}.audit-summary>div{padding:14px;background:var(--surface);text-align:center}.audit-summary strong{display:block;font-size:22px;line-height:1.2;font-variant-numeric:tabular-nums}.audit-summary span{display:block;margin-top:5px;color:var(--muted);font-size:10px}.audit-meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:24px 0}.audit-meta-grid article{padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.audit-meta-grid h2{margin-bottom:12px}.audit-definitions{display:grid;grid-template-columns:minmax(120px,.45fr) 1fr;margin:0}.audit-definitions dt,.audit-definitions dd{padding:7px 0;border-top:1px solid var(--line);font-size:11px;overflow-wrap:anywhere}.audit-definitions dt{color:var(--muted);font-weight:600}.audit-definitions dd{margin:0}.runtime-status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.runtime-status-card{padding:15px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.runtime-status-card header{display:flex;align-items:center;justify-content:space-between;gap:12px}.runtime-status-card h3{margin:0;font-size:15px}.runtime-status-card p{margin:8px 0 0;color:var(--muted);font-size:11px;overflow-wrap:anywhere}.audit-results{margin-top:26px}.audit-filters{display:grid;grid-template-columns:.8fr .9fr 1fr 1.8fr;gap:12px;padding:15px;border:1px solid var(--line);border-radius:var(--radius);background:var(--soft)}.audit-table-wrap{max-height:610px}.audit-table-wrap thead th:nth-child(3),.audit-table-wrap thead th:nth-child(4),.audit-table-wrap tbody td:nth-child(3),.audit-table-wrap tbody td:nth-child(4){text-align:left}.audit-table-wrap td{font-size:11px}.audit-table-wrap .mode-count{display:block;color:var(--muted);font-size:9px}.audit-pagination{display:flex;align-items:center;justify-content:center;gap:14px;padding:12px}.audit-pagination span{color:var(--muted);font-size:11px}.dataset-receipt-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:460px;overflow:auto;padding-right:5px}.dataset-receipt-card{min-width:0;padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--surface)}.dataset-receipt-card header{display:flex;align-items:start;justify-content:space-between;gap:8px}.dataset-receipt-card strong{display:block;font-size:11px;overflow-wrap:anywhere}.dataset-receipt-card small{display:block;color:var(--muted);font-size:9px}.dataset-receipt-card p{margin:6px 0 0;color:var(--muted);font-size:9px;line-height:1.45;overflow-wrap:anywhere}.audit-reading-note{max-width:100ch;margin:30px 0}.audit-reading-note p{color:var(--muted);font-size:12px}.audit-validation-error{color:#b34938}.audit-validation-ok{color:var(--muted)}
18
+ @media(max-width:1000px){.audit-summary{grid-template-columns:repeat(3,1fr)}.audit-filters{grid-template-columns:repeat(2,1fr)}.dataset-receipt-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
19
+ @media(max-width:768px){.audit-hero{align-items:stretch;flex-direction:column;padding-top:24px}.audit-state-card{flex:auto;width:100%}.audit-summary{grid-template-columns:repeat(2,1fr)}.audit-meta-grid,.runtime-status-grid,.audit-filters,.dataset-receipt-grid{grid-template-columns:1fr}.section-heading{align-items:stretch;flex-direction:column;gap:10px}.audit-definitions{grid-template-columns:1fr}.audit-definitions dd{padding-top:0;border-top:0}.audit-results .toolbar-actions{width:100%}.audit-results .toolbar-actions button{flex:1}}
ui-data.json CHANGED
The diff for this file is too large to render. See raw diff