Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions apps/website/__tests__/components/ReceiptsBand.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,15 @@ it("renders the receipts headline numbers", () => {
expect(screen.getByText("9ms")).toBeInTheDocument();
});

it("renders the streaming-pipeline capability anchor (B2 follow-up #7)", () => {
render(<ReceiptsBand />);
// After S5/S7 cross-validation showed AG Grid ties on raw streaming
// numerics, the fourth slot is a capability anchor (the integration
// pretable ships, not a throughput number).
expect(screen.getByText(/streaming sources/i)).toBeInTheDocument();
expect(screen.getByText(/openai/i)).toBeInTheDocument();
});

it("does not render the positioning cards anymore (moved to CredibilityCards)", () => {
render(<ReceiptsBand />);
expect(screen.queryByText(/ai-native/i)).not.toBeInTheDocument();
Expand Down
16 changes: 12 additions & 4 deletions apps/website/app/components/ComparisonTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,13 @@ const NA_MARKER = "n/a";
// Same slice for pretable + mui at 20 repeats. Confirms parity (mean
// diff −0.065 ms, well inside the 2σ noise floor of 0.40 ms).
//
// status/milestones/2026-05-09-b2-s5-s7-cross-validation.hypotheses.json
// S5/updates × {1000, 25000}/sec and S7/scroll × 4 adapters × 3 repeats.
// Cross-validates H1 on S7 (satisfied) and surfaces H13/H14/H15 as
// directional — AG Grid's native applyTransaction matches pretable on
// streaming p95, the 25k/sec envelope, and visible-row drift. The
// streaming-uniqueness wedge is package surface, not raw throughput.
//
// status/milestones/2026-05-10-b2-sort-filter-summary.json
// S2/hypothesis/Chromium × 3 repeats × 4 adapters × 3 interaction
// scripts. Pretable beats AG Grid 3-3.5× and MUI 2× across sort,
Expand All @@ -34,9 +41,9 @@ const NA_MARKER = "n/a";
// The wedge: parity with the best full-grid comparator (MUI) on raw frame
// p95, with ~1.7× headroom over AG Grid + TanStack, and the only adapter
// here that combines zero blank gaps + zero anchor shift + ≤1 px row-height
// fidelity at full-grid feature weight. Streaming rows are absent until a
// future runset captures comparative S5 evidence — see
// project_b2_followups.md item 6.
// fidelity at full-grid feature weight. The streaming row is capability-
// anchored (not numeric): pretable ships the SSE/partial-JSON/batcher/
// applyTransaction pipeline; AG Grid users wire that themselves.
const ROWS: readonly Row[] = [
{
metric: "frame p95 (ms) — wrapped scroll",
Expand Down Expand Up @@ -103,7 +110,8 @@ const ROWS: readonly Row[] = [
budget: "—",
},
{
metric: "purpose-built streaming pipeline",
metric:
"streaming pipeline (SSE → partial JSON → batcher → applyTransaction)",
pretable: "yes",
agGrid: NA_MARKER,
tanstack: NA_MARKER,
Expand Down
2 changes: 1 addition & 1 deletion apps/website/app/components/FeatureGrid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const FEATURES: readonly Feature[] = [
{
title: "Stream-aware",
description:
"Token-by-token rendering for OpenAI, Anthropic, your own SSE — sustained from 100 to 25,000 updates/sec.",
"Token-by-token rendering for OpenAI, Anthropic, and your own SSE. The full pipeline — partial-JSON parser, frame-budget batcher, applyTransaction wiring — ships as one import.",
marker: "black",
markerLabel: "Advanced — bring your own SSE",
},
Expand Down
31 changes: 23 additions & 8 deletions apps/website/app/components/ReceiptsBand.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,41 @@ interface Stat {
caption: string;
/** First stat anchors with accent color (warm orange) on the dark band. */
accent?: boolean;
/**
* Render the value at a smaller size for non-numeric labels (e.g., a
* source list). The grid still uses four cells; this slot just trades
* hero-number weight for legible text.
*/
compact?: boolean;
}

// Receipts snapshot — numbers from the committed B2 comparative runset
// and its high-repeat correction:
// and its high-repeat correction; final slot is a capability anchor.
//
// status/milestones/2026-05-09-b2-h1-high-repeat-correction.json
// S2/hypothesis/scroll × 20 repeats. Pretable mean p95 = 9.07 ms ± 0.20;
// parity with MUI X DataGrid Community. Quality wedge: 0 blank gaps,
// 0 anchor shift, ≤1 px row-height drift.
//
// status/milestones/2026-05-01-streaming-revalidated.hypotheses.json
// S5/updates × 6 rates × 3 repeats. Pretable max sustained update rate
// = 25k/sec (pretable's own — comparative S5 evidence pending; see
// project_b2_followups.md item 6).
// status/milestones/2026-05-09-b2-s5-s7-cross-validation.hypotheses.json
// S5/updates × 4 adapters × 3 repeats. AG Grid Community matches
// pretable on raw streaming throughput (9.2 ms p95, 25k/sec, 0 drift),
// so the streaming wedge is reframed as the shipped pipeline rather
// than the throughput number. Final receipts slot is the source list
// pretable ships integrations for.
//
// First stat (0) anchors the quality wedge with accent (warm orange). All
// numbers are pretable's own; the comparative ranking lives on the /bench
// numerics are pretable's own; the comparative ranking lives on the /bench
// page and ComparisonTable.
const STATS: readonly Stat[] = [
{ value: "0", caption: "blank gaps under scroll", accent: true },
{ value: "9ms", caption: "frame p95 / wrapped scroll" },
{ value: "≤1px", caption: "row-height fidelity" },
{ value: "25k/s", caption: "max sustained update rate" },
{
value: "OpenAI · Anthropic · SSE",
caption: "streaming sources, one import",
compact: true,
},
];

export function ReceiptsBand() {
Expand All @@ -43,7 +55,10 @@ export function ReceiptsBand() {
<li key={stat.caption} className="border-t-2 border-accent pt-4">
<div
className={[
"font-display text-[44px] leading-[0.95] tracking-[-0.02em] md:text-[56px]",
"font-display leading-[0.95] tracking-[-0.02em]",
stat.compact
? "text-[20px] md:text-[24px]"
: "text-[44px] md:text-[56px]",
stat.accent ? "text-accent" : "text-bg-page",
].join(" ")}
>
Expand Down
14 changes: 14 additions & 0 deletions docs/research/repo-memory.md
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,20 @@ No other hypothesis status changed (S2-dependent ones — H1, H6–H8, H10–H12
- Editorial homepage refresh (potentially repopulating the deleted streaming row from this evidence) — distinct prose work.
- Comparative interaction scripts (sort, filter-text, filter-metadata, cell-renderer) on S7 — still pretable-only per the supportedScripts gate; tracked as B2 follow-up #5.

### B2 follow-up #7: streaming wedge reframed as capability-anchored

Direct consequence of follow-up #6's finding. AG Grid Community matches pretable on every measured streaming numeric (frame p95, 25k/sec envelope, visible-row drift), so the homepage can no longer claim a numeric streaming win. The wedge moves to package surface: pretable ships the SSE → partial-JSON → batcher → applyTransaction pipeline as a single import; AG Grid expects you to wire that yourself.

Three editorial edits across `apps/website`:

- **`ComparisonTable.tsx`** — the streaming row was titled `purpose-built streaming pipeline` (vague). Renamed to `streaming pipeline (SSE → partial JSON → batcher → applyTransaction)` to spell the wedge out concretely. Still capability-anchored (`yes / n/a / n/a / n/a`); no numeric streaming row added because the n=3 numerics tie.
- **`ReceiptsBand.tsx`** — replaced the `25k/s · max sustained update rate` hero stat (no longer pretable-unique) with `OpenAI · Anthropic · SSE · streaming sources, one import`. Added a `compact: true` flag to the `Stat` interface so the longer label renders at a smaller font size, preserving the four-cell grid without overflowing the hero font scale.
- **`FeatureGrid.tsx`** — Stream-aware card: dropped the "sustained from 100 to 25,000 updates/sec" tail; rewrote the description around the pipeline that ships as one import.

Test added: `ReceiptsBand.test.tsx` regression-guards the new capability anchor (`streaming sources` + `openai`). The `verdictFor` / trail-marker tests are unchanged.

The "Stream-aware" card in FeatureGrid retained its `markerLabel: "Advanced — bring your own SSE"` because that's still accurate — pretable ships the post-SSE pipeline; the SSE source itself is consumer-supplied.

## 2026-05-10

### B2 follow-up #5a: cell-renderer scripts opened to comparators
Expand Down