Skip to content

bench: pretable renders no rows after the row-model migration (#321) — scroll control is dead #332

Description

@blove

Summary

The pretable adapter renders no rows in the bench. scroll reports partial with rendered_rows_peak: 0 at every scale, and pretable's own scroll benchmark — the control the comparative runsets are measured against — produces no numbers at all.

Bisected to #321.

Bisect

S2, pretable, scroll, dev scale, one repeat each:

commit status rendered_rows_peak scroll_frame_p95_ms
4bd57b3f (72e7d47d~1) completed 12 16.7
72e7d47d — feat: complete incremental row-model migration (#321) partial 0 —
94a44d58 (#324) partial 0 —
ef59816e (#325) partial 0 —
8461c8d0 (current main) partial 0 —

Reproduce:

pnpm bench:matrix --adapters=pretable --scripts=scroll --scenarios=S2 --scale=dev --repeats=1

Confirmed at smoke, dev and hypothesis — all three partial, all rendered_rows_peak: 0.

Symptom detail

From the run summary:

scroll viewport unavailable for pretable in current runtime
internal telemetry rendered rows: 0
internal telemetry loaded rows: 3000
internal telemetry planned height: 0
internal telemetry viewport range: 0-0

The model loads its rows (3000) but the surface projects none: planned height 0, viewport range 0-0. So this is the row-model → surface projection, not data loading.

Relationship to #327

Same commit, and plausibly the same seam. #327 is the group script producing 0 group rows; this is the scroll path producing 0 rows of any kind. A probe against the library directly (setQuery({ rowGroups }) on PretableSurface) does produce group rows, and packages/react tests pass, so the library's own path works — which points at how the bench's externally-owned model (createBenchRowModelOwner + model.setQuery) attaches to the surface after the migration.

One inconsistency worth chasing rather than assuming away: the interaction scripts on the same adapter do render rows (rendered_rows_peak 12 at smoke, 7 at dev) while scroll renders none. Whatever the fix is, it has to explain that difference.

Why it wasn't caught

bench:matrix, bench:e2e and bench:budgets are not referenced by any workflow in .github/workflows/, so nothing in CI exercises this. scroll fails loudly as partial when run by hand; group fails silently as completed (#327, fixed by #326).

Impact

Blocks the comparative re-baseline outright: pretable is the control in that runset, and a control that renders nothing cannot carry the comparators beside it. It also means the last recorded pretable scroll figure (17.7 ms p95, 2026-08-11) is the last one that exists.

No evidence of user-facing impact — the library's own grouping and rendering tests pass and the deployed site is unaffected — but that should be confirmed rather than assumed, since the bench is the only place this surfaced.

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions