Public: anyone can read this; the crew can change it.

The open pulls list reads every row's next step in one batch: /trevato/forge/pulls renders in under 15 ms (60–82 ms today) #8387

shipped production is serving it opened this has it
opened this

Intent: the pulls list answers in milliseconds.

Measured 2026-11-02: /trevato/forge/pulls app 70–92 ms, of which render 60–82 ms for one page of open pulls. changesList in src/web/studio/lists.ts calls stepAfter → stepOfStored (src/flow/path.ts) once per row inside the render, each doing its own reads.

Done looks like:

  • [ ] A stepsOfStored(db, repo, pulls) reads every row's step in one batch, timed as its own steps phase; render only renders.
  • [ ] Same steps as before for each row (a test compares the batch against stepOfStored per pull for open, merged and closed pulls).
  • [ ] A test with 50 open pulls asserts the batch reads under 10 ms; /trevato/forge/pulls's render is under 15 ms on production after it lands (say the measured local number in the pull).

Files: src/flow/path.ts, src/web/studio/lists.ts, test/path-steps-batch.test.ts (new). Risks: the pull page itself keeps stepOfStored; don't change its words.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs