From 988d0a306e03496168d5bc7bcf3d1048f69efdb8 Mon Sep 17 00:00:00 2001 From: Flotapponnier Date: Sun, 20 Sep 2026 20:43:01 +0200 Subject: [PATCH] ledger: ledger_reliability: false hides the Success and Reliability columns and labels an unpublished row Filling (threshold wording) instead of Unresponsive (probe wording); the dense layout stays inside its card instead of bleeding 80 to 128 px past it; bench 268 opts in Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01L4rjxemTvgRwrCG6D2iK5D --- benchmarks/terminal-fill-quality.yml | 1 + src/components/ledger-table.tsx | 77 +++++++++++++++++----------- src/lib/materialize/load.ts | 1 + src/lib/spec-schema.ts | 5 ++ src/types/benchmark.ts | 2 + 5 files changed, 55 insertions(+), 31 deletions(-) diff --git a/benchmarks/terminal-fill-quality.yml b/benchmarks/terminal-fill-quality.yml index 1b6ed21d7..4be396b1a 100644 --- a/benchmarks/terminal-fill-quality.yml +++ b/benchmarks/terminal-fill-quality.yml @@ -186,6 +186,7 @@ metric_panels: tab: false description: "Priced swaps in the rolling window." +ledger_reliability: false ledger_columns: - { label: "Value lost", slot: p50 } - { label: "Median swap", panel: trade_usd } diff --git a/src/components/ledger-table.tsx b/src/components/ledger-table.tsx index 3f43d5456..d4fe54f87 100644 --- a/src/components/ledger-table.tsx +++ b/src/components/ledger-table.tsx @@ -123,6 +123,9 @@ export function LedgerTable({ // story), tightens cell padding and keeps the tag and embed button for // xl screens. const dense = !!customCols && customCols.length >= 5; + // Reliability columns (Success, Errors) only when the success query is a + // probe success rate; a publication gate reads 100 % or 0 % everywhere. + const showRel = benchmark.ledgerReliability !== false; const cellPad = dense ? "px-2" : "px-3"; const panelById = useMemo( () => new Map((benchmark.metricPanels ?? []).map((p) => [p.id, p])), @@ -363,7 +366,7 @@ export function LedgerTable({ return (
{hasWindows && (
@@ -433,13 +436,15 @@ export function LedgerTable({ > {customCols ? colLabel(customCols[0]) : activePanel ? "Value" : "p50"} - - Reliability - + {showRel && ( + + Reliability + + )} )} - - Success - - {!dense && ( + {showRel && ( + + Success + + )} + {!dense && showRel && ( ({ v: colValueW(r, c), unit: colUnit(c), @@ -727,6 +735,7 @@ export function LedgerTable({ function Row({ dense = false, + showRel = true, r, i, unit, @@ -747,6 +756,8 @@ function Row({ embedRegion, embedKind, }: { + /** false: hide the Success and Errors cells (publication-gate benches). */ + showRel?: boolean; r: ProviderResult; i: number; unit: string; @@ -902,10 +913,10 @@ function Row({ )} {isUnresponsive && ( - + - Unresponsive + {showRel ? "Unresponsive" : "Filling"} )} @@ -969,7 +980,7 @@ function Row({ {isOffline ? ( )} - - {r.successRate.toFixed(2)}% - - {!dense && ( + {showRel && ( + + {r.successRate.toFixed(2)}% + + )} + {!dense && showRel && ( {errorCount(r)?.toLocaleString("en-US") ?? "—"} @@ -1082,10 +1095,12 @@ function Row({ {isUnranked ? "—" : fieldValue > 0 ? `${deltaSign}${Math.abs(deltaPct).toFixed(0)}%` : "-"} )} - - {isUnranked ? "—" : `${r.successRate.toFixed(2)}%`} - - {!dense && ( + {showRel && ( + + {isUnranked ? "—" : `${r.successRate.toFixed(2)}%`} + + )} + {!dense && showRel && ( {isUnranked ? "—" : (errorCount(r)?.toLocaleString("en-US") ?? "—")} diff --git a/src/lib/materialize/load.ts b/src/lib/materialize/load.ts index 65cd03b73..2f8bf020b 100644 --- a/src/lib/materialize/load.ts +++ b/src/lib/materialize/load.ts @@ -172,6 +172,7 @@ export function buildEditorial( dimensions: spec.dimensions, aggregateFilters: spec.aggregate_filters, ledgerColumns: spec.ledger_columns, + ledgerReliability: spec.ledger_reliability, providerNotes: spec.provider_notes, }; } diff --git a/src/lib/spec-schema.ts b/src/lib/spec-schema.ts index 6c4901ee5..69c56a6d0 100644 --- a/src/lib/spec-schema.ts +++ b/src/lib/spec-schema.ts @@ -614,6 +614,11 @@ export const SpecSchema = z * `panel` reads the values of a metric_panels entry by id. The first * column is the headline (sort key, data bar, mobile column). */ + /** false when the providers' `success` query is a publication gate + * (0 or 1) rather than a probe success rate: the ledger then hides + * the Success and Reliability columns and describes an unpublished + * row as under its threshold, not as a dead endpoint. */ + ledger_reliability: z.boolean().default(true), ledger_columns: z .array( z diff --git a/src/types/benchmark.ts b/src/types/benchmark.ts index 98ed02d7a..424e617c5 100644 --- a/src/types/benchmark.ts +++ b/src/types/benchmark.ts @@ -377,6 +377,8 @@ export type Benchmark = { * so the table headers describe what each slot actually holds. The * first column is the headline (sort key, data bar, mobile column). */ ledgerColumns?: LedgerColumn[]; + /** false: the success query is a publication gate; hide Success and Reliability. */ + ledgerReliability?: boolean; }; export type LedgerColumn = {