fw-10 step 01 — Fixed heights, then dynamic

Tasks

  1. 100,000 logical rows, small DOM window: viewport → visible index range → render window + overscan.
  2. Position the window with transform or absolute positioning. Choose deliberately and justify it from bi-09's property-tree argument.
  3. Dynamic heights: measure rendered rows, cache by item id, not index (indices shift).
  4. Replace the naive running total with a prefix-sum / Fenwick structure. Measure offset-lookup cost at 100,000 rows both ways.
  5. Correct the estimate as measurements arrive.

Done when

  • Fixed and dynamic modes both working at 100,000 rows
  • O(n) vs O(log n) offset lookup measured
  • The transform vs top choice justified from mechanism