Improve large graph responsiveness #124

Open
lost-rob0t wants to merge 16 commits from perf/large-graph-responsiveness into main
lost-rob0t commented 2026-07-28 21:51:19 +00:00 (Migrated from github.com)

Draft performance branch. Benchmark results and before/after measurements will be added before review. Do not merge yet.

Draft performance branch. Benchmark results and before/after measurements will be added before review. Do not merge yet.
lost-rob0t (Migrated from github.com) reviewed 2026-07-28 23:08:24 +00:00
lost-rob0t (Migrated from github.com) left a comment

Audit review: performance branch is not merge-ready

The differential reconciliation direction is sound, but this draft still has correctness and measurement blockers:

  1. #129 — renderer policy is frozen at initial mount. Switching between small and very large graphs reuses the renderer options selected for the first graph.
  2. #130 — dragged positions can snap back. High-frequency writes bypass React state, while graph projection still rebuilds from stale workspace.positions.
  3. #131 — benchmark gate can false-green. Missing scenarios/metrics are skipped, FPS improvement direction is reversed in the report, and no baseline is mandatory.
  4. #135 — benchmark source is outside the Prettier gate. scripts/** and most application code are not checked by format:check.

Required before this leaves draft:

- Fix renderer-tier lifecycle and mixed-size graph switching.
- Make the non-React position source authoritative during reconciliation.
- Add drag -> corpus refresh -> graph switch/remount regression tests.
- Make benchmark schema/scenario validation fail closed.
- Check in and enforce a reviewed baseline.
- Add an end-to-end benchmark through GraphPage/store, not only the low-level Cytoscape harness.

Do not merge #124 based on the current benchmark report; the gate cannot yet prove that all required scenarios ran or that the application lifecycle is correct.

## Audit review: performance branch is not merge-ready The differential reconciliation direction is sound, but this draft still has correctness and measurement blockers: 1. **#129 — renderer policy is frozen at initial mount.** Switching between small and very large graphs reuses the renderer options selected for the first graph. 2. **#130 — dragged positions can snap back.** High-frequency writes bypass React state, while graph projection still rebuilds from stale `workspace.positions`. 3. **#131 — benchmark gate can false-green.** Missing scenarios/metrics are skipped, FPS improvement direction is reversed in the report, and no baseline is mandatory. 4. **#135 — benchmark source is outside the Prettier gate.** `scripts/**` and most application code are not checked by `format:check`. Required before this leaves draft: ```text - Fix renderer-tier lifecycle and mixed-size graph switching. - Make the non-React position source authoritative during reconciliation. - Add drag -> corpus refresh -> graph switch/remount regression tests. - Make benchmark schema/scenario validation fail closed. - Check in and enforce a reviewed baseline. - Add an end-to-end benchmark through GraphPage/store, not only the low-level Cytoscape harness. ``` Do not merge #124 based on the current benchmark report; the gate cannot yet prove that all required scenarios ran or that the application lifecycle is correct.
nsaspy changed title from WIP: Improve large graph responsiveness to Improve large graph responsiveness 2026-08-27 19:57:35 +00:00
This pull request has changes conflicting with the target branch.
  • package.json
  • src/components/GraphPage.jsx
  • src/lib/graph-style.js
  • src/lib/graph-workspaces.js
  • src/lib/graph.js
  • src/store.jsx
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin perf/large-graph-responsiveness:perf/large-graph-responsiveness
git switch perf/large-graph-responsiveness

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff perf/large-graph-responsiveness
git switch perf/large-graph-responsiveness
git rebase main
git switch main
git merge --ff-only perf/large-graph-responsiveness
git switch perf/large-graph-responsiveness
git rebase main
git switch main
git merge --no-ff perf/large-graph-responsiveness
git switch main
git merge --squash perf/large-graph-responsiveness
git switch main
git merge --ff-only perf/large-graph-responsiveness
git switch main
git merge perf/large-graph-responsiveness
git push origin main
Sign in to join this conversation.
No description provided.