Skip to content

Loadpath review experience: history, graph overlays, and editor marks - #23

Merged
cursor[bot] merged 16 commits into
mainfrom
cursor/loadpath-experience-enrichment-96e3
Aug 16, 2026
Merged

cursor[bot] merged 16 commits into
mainfrom
cursor/loadpath-experience-enrichment-96e3

Conversation

@Modsofthenation

@Modsofthenation Modsofthenation commented Aug 15, 2026 •

Copy link
Copy Markdown
Owner

Walks stay the product. This implements the 18 review-experience items so a local git range can be read as a load path instead of a hunk list.

What changed

  1. Click-through brief → graph — findings, checklist items, and inspector neighbors select the same node on the impact graph.
  2. Open in editor — POST /api/open plus Cursor/VS Code URLs from the brief and inspector.
  3. Review history — list stored walks, reopen one, and diff it against the previous walk.
  4. Changed vs downstream coloring — seed nodes are filled; downstream nodes get a distinct border; graph legend labels both.
  5. Contract serializer/Zod side-by-side — field table on the contract panel (aligned / missing_client / missing_server).
  6. Test overlay + copy suggested tests — dim non-test nodes; copy a sketch from the brief or checklist.
  7. Merge-readiness checklist + top-bar merge box — checklist from findings, untested sinks, contract, and auth; compact confidence chip in the toolbar.
  8. Command palette — ⌘/Ctrl+K for tabs, review, index, watch, export, nodes, history.
  9. j/k read-order — skipped when focus is an input.
  10. Watch working tree — poll fingerprint and re-walk when files change.
  11. Visual loadpath.yml editor — contexts, rules, and waivers on the Architecture tab; PUT /api/config.
  12. PR list Loadpath result + CODEOWNERS — last matching walk chip on each PR; CODEOWNERS owners merged into suggested reviewers.
  13. HTML export — Save HTML from the brief (POST /api/export/html and GET /api/reviews/{id}/html).
  14. Path isolate + node search + 2D neighborhood — isolate source-to-sinks, find a node, focus neighbors.
  15. Inspector mini-walk — click inputs/outputs, pin a node, isolate path to sinks.
  16. Architecture health sparkline — findings over stored reviews, per context.
  17. VS Code/Cursor gutter extension — editors/vscode polls /api/marks (S/!/C/✓/→).
  18. Restore last review on launch — localStorage.loadpath.lastReviewId reopens the last walk.

Faster indexed-workspace load

Opening a large already-indexed repo no longer waits on a full graph + source-tree rehash:

  • GET /api/architecture?graph=0 returns the brief (findings, counts, contexts).
  • GET /api/architecture/graph fills nodes/edges with a type-filtered SQL read.
  • GET /api/repos uses a cheap index card (no rule evaluation, no hashing).
  • Drift on load uses file mtimes instead of SHA-256 of every source file.
  • The UI paints the architecture brief as soon as the summary arrives and shows “Drawing the architecture map…” until the graph lands.
  • Responses are gzip-compressed.

What-if walks

What if this changes starts a hypothetical walk from one node. It does not use Base/Head and it is not a filter of the current map (that is Isolate path to sinks).

  • Inspector hint contrasts the two actions.
  • A banner names the seed node and explains the walk is hypothetical.
  • Back to git range restores the last real review (or Back to architecture if there was none).
  • Command palette: “Back to git-range walk”.
  • Post to PR is disabled while a what-if is on screen.

Index progress bar

The determinate bar used each phase’s own done/total, so it could climb during scan, drop to empty when extract started, then jump to 100%. Scan/extract/boot/stitch now map onto one 0–100 scale, a new run resets to 0, and the bar never rewinds.

Distinct graph edges

Orthogonal edges in a column gap used to share one vertical, so two route→view links looked like a single bus. Overlapping left-to-right edges now get separate smooth-step tracks in the gap right after the source column (spread 0.2–0.8). Skip-column links bend in that same first gap instead of landing on the next column’s tracks.

Architecture graph with staggered verticals between route and view columns
Zoomed architecture graph showing separate verticals in the route-to-view gap

Dual-model review follow-ups

Addressed the confirmed findings from an adversarial pass:

  • Watch fingerprint ignores .loadpath/ so indexing does not retrigger reviews; watch reviews send dirty=true immediately.
  • POST /api/open, PUT /api/config, and POST /api/config/waiver require a loopback origin.
  • CODEOWNERS keeps .github/… paths; empty rules: [] stays empty; adding a waiver no longer rewrites the whole manifest with defaults.
  • Architecture health per-context series is chronological; failed graph fetches clear the loading placeholder; Indexed architecture drops review isolate/overlays.
  • Reopen diffs against the previous walk; the command palette cannot run an off-screen action.

Tests

  • Unit: CODEOWNERS, roles, contract sides, checklist, isolate, history diff, architecture load/graph SQL/mtime drift, monotonic index percent, staggered edge step positions, loopback writes, empty rules, waiver round-trip
  • API e2e: checklist, reviews, marks, health, HTML, waiver, architecture summary vs graph split
  • UI e2e: merge box, checklist, palette, node search, test overlay, HTML export, workspace loading banner, brief-before-graph, what-if banner and back-to-git-range, index bar does not jump backwards, architecture LTR edges do not share overlapping verticals
  • Desktop: vscode: / cursor: URLs allowed in the shell

To show artifacts inline, enable in settings.

Open in Web Open in Cursor 

Summary by CodeRabbit

  • New Features

    • Added editor gutter integration for VS Code and Cursor, with file-role badges and refresh controls.
    • Added review history, restoration, diffs, HTML export, checklists, waivers, CODEOWNERS, and suggested reviewers.
    • Added command palette, graph search, node pinning, path isolation, editor navigation, and what-if analysis.
    • Added configuration editing, working-tree status, architecture health, and improved indexing progress.
    • Added MCP tools for marks, stored reviews, and configuration updates.
  • Bug Fixes

    • Improved graph readability with separated edge lanes.
    • Prevented progress indicators from moving backward.
    • Restricted editor links to supported, credential-free protocols.

…marks.

Walks stay the product: click-through brief to graph, seed vs downstream
coloring, contract field sides, merge checklist, command palette, j/k
read-order, working-tree watch, loadpath.yml editor, HTML export, restore
on launch, architecture health, CODEOWNERS, and VS Code/Cursor gutter marks.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
@coderabbitai

coderabbitai Bot commented Aug 15, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@cursor[bot], you've reached your PR review limit, so we couldn't start this review.

Next review available in: 52 minutes

Limit details: You’ve used all 1 included review currently available under your plan.

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Free

Run ID: 49cb2b4b-c91f-4b72-b670-34b3187a1836

📥 Commits

Reviewing files that changed from the base of the PR and between 13c8dbd and fcdfada.

📒 Files selected for processing (2)
  • tests/e2e/conftest.py
  • tests/e2e/test_ui_flows.py
ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Free

Run ID: e4a13980-422c-4f7e-b236-c8db556564d9

📥 Commits

Reviewing files that changed from the base of the PR and between d520a4d and 13c8dbd.

📒 Files selected for processing (51)
  • CONTRIBUTING.md
  • README.md
  • desktop/main.mjs
  • desktop/urls.mjs
  • desktop/urls.test.mjs
  • editors/vscode/README.md
  • editors/vscode/extension.js
  • editors/vscode/package.json
  • src/loadpath/architecture/snapshot.py
  • src/loadpath/config.py
  • src/loadpath/graph/store.py
  • src/loadpath/index.py
  • src/loadpath/mcp/compact.py
  • src/loadpath/mcp/server.py
  • src/loadpath/mcp/tools.py
  • src/loadpath/progress.py
  • src/loadpath/review/codeowners.py
  • src/loadpath/review/editor.py
  • src/loadpath/review/engine.py
  • src/loadpath/review/experience.py
  • src/loadpath/review/whatif.py
  • src/loadpath/server/app.py
  • src/loadpath/static/assets/LayeredGraph3D-BkYe4qmj.js
  • src/loadpath/static/assets/index-DCcHASmi.css
  • src/loadpath/static/assets/index-PXVMaQl_.js
  • src/loadpath/static/assets/index-cvBsmXkd.js
  • src/loadpath/static/index.html
  • src/loadpath/workspace.py
  • tests/e2e/test_api_flow.py
  • tests/e2e/test_ui_flows.py
  • tests/e2e/test_ui_screenshots.py
  • tests/unit/test_architecture_load.py
  • tests/unit/test_experience.py
  • tests/unit/test_index_progress.py
  • tests/unit/test_scm_oauth.py
  • ui/src/App.tsx
  • ui/src/CommandPalette.tsx
  • ui/src/ConfigEditor.tsx
  • ui/src/ImpactGraph.test.ts
  • ui/src/ImpactGraph.tsx
  • ui/src/api.ts
  • ui/src/experience.test.ts
  • ui/src/graphEdges.test.ts
  • ui/src/graphEdges.ts
  • ui/src/graphView.test.ts
  • ui/src/graphView.ts
  • ui/src/indexProgress.test.ts
  • ui/src/indexProgress.ts
  • ui/src/openEditor.ts
  • ui/src/styles.css
  • ui/src/types.ts

Included review availability: Your plan includes up to 1 review per rolling hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The change adds review-experience metadata, architecture and configuration APIs, interactive graph workflows, editor integration, progress tracking, MCP tools, frontend controls, documentation, bundled assets, and comprehensive tests.

Changes

Loadpath review and architecture experience

Layer / File(s) Summary
Graph, index, configuration, and progress foundations
src/loadpath/graph/store.py, src/loadpath/index.py, src/loadpath/config.py, src/loadpath/architecture/snapshot.py, src/loadpath/workspace.py, src/loadpath/progress.py
Adds graph caching and filtering, mtime-based drift checks, configuration writing and waivers, workspace fingerprints, summary-only architecture responses, and monotonic progress percentages.
Review enrichment and ownership analysis
src/loadpath/review/experience.py, src/loadpath/review/codeowners.py, src/loadpath/review/engine.py, src/loadpath/review/whatif.py
Adds graph roles, contract-side data, checklists, file marks, path isolation, review diffs, architecture health, pull-request matching, CODEOWNERS data, and enriched stored reviews.
Server routes and MCP operations
src/loadpath/server/app.py, src/loadpath/mcp/*.py
Adds typed API routes and MCP tools for reviews, architecture graphs, configuration, waivers, marks, health, workspace status, editor opening, exports, and graph isolation.
Editor URL validation and gutter integration
desktop/urls.mjs, desktop/main.mjs, src/loadpath/review/editor.py, editors/vscode/*
Validates editor deep links, opens repository files, and provides a VS Code extension that polls marks and renders file decorations.
UI contracts, API clients, and graph utilities
ui/src/types.ts, ui/src/api.ts, ui/src/graphView.ts, ui/src/graphEdges.ts, ui/src/indexProgress.ts, ui/src/openEditor.ts
Adds typed API models, graph search and isolation, edge lane routing, progress conversion, and editor URL/opening helpers.
Interactive review and architecture workflows
ui/src/App.tsx, ui/src/ImpactGraph.tsx, ui/src/CommandPalette.tsx, ui/src/ConfigEditor.tsx, ui/src/styles.css
Adds review history, what-if restoration, working-tree watching, command actions, asynchronous graph loading, graph selection and isolation, configuration editing, health displays, editor actions, and HTML export.
Validation, documentation, and frontend delivery
tests/unit/*, tests/e2e/*, README.md, CONTRIBUTING.md, src/loadpath/static/*
Adds coverage for the new behavior, documents the extension and application workflows, and updates compiled frontend assets and entry-point references.

Estimated code review effort: 5 (Critical) | ~120 minutes

Merge Risk: ⚪ Minimal · up to 13c8d

This PR adds loadpath review history, graph, editor, configuration, export, and navigation capabilities; no actionable merge-blocking risk remains beyond normal checks and review.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant Frontend
  participant Server
  participant GraphStore
  participant ReviewExperience
  participant Editor
  User->>Frontend: Open architecture or review workspace
  Frontend->>Server: Request summary, graph, and review data
  Server->>GraphStore: Load graph or stored review
  Server->>ReviewExperience: Enrich and summarize review
  ReviewExperience-->>Server: Roles, checklist, marks, health
  Server-->>Frontend: Typed response
  Frontend->>Editor: Open selected repository file
  Editor-->>Frontend: Launch status or fallback URL
Loading

Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.

Comment @coderabbitai help to get the list of available commands.

cursoragent and others added 14 commits August 15, 2026 23:23
The top-bar merge box also uses .level, so a page-wide locator is no longer unique.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Isolating a walk to sinks is a review-graph action; the indexed architecture
view should stay the full map when the user switches tabs.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
GET /api/architecture can return the brief first (findings, counts) while
GET /api/architecture/graph fills the map. Workspace listing no longer
re-hashes the tree or evaluates rules. Drift on load uses mtimes; node
and edge reads are cached and architecture edges are type-filtered in SQL.
The UI paints the architecture brief as soon as the summary arrives.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
…light.

Trust graph_pending from the summary payload, and delay the graph fetch in
the UI test inside window.fetch so Playwright is not blocked on the route.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
What-if is a hypothetical walk from one node, not a filter of the current map. Show that in the inspector and a banner, and add Back to git range so the previous review is not lost.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Scan, extract, boot, and stitch each used their own done/total, so the bar could hit 50–100% then drop to 0% when the next phase started. Map those phases onto one 0–100 scale, reset at the start of a run, and ignore a leftover done payload so the bar never rewinds.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Smooth-step edges all bent at the same midpoint, so vertical segments stacked into one line. Overlapping edges in a column gap now get different bend positions.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Collinear smooth-step edges still stacked when their y-ranges did not overlap. Assign a unique bend per corridor, widen busy column gaps, and draw those paths with a custom step edge.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Close the inspector before clicking InvoicePage in the review-graph e2e,
and check that parallel left-to-right edges use distinct verticals.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
…dge.

Stacked route-to-view links that would read as one dashed bus get lanes
at 0.2 and 0.8. Far-apart segments in the same gap can share an x.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Skip-column links used to pick an independent bend and land on top of
the next-column routes. Overlapping y-ranges now share one 0.2–0.8
gutter so stacked buses stay readable.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
A lone route-to-view skip used the midpoint of the whole jump, so its
vertical sat on the next column's tracks. Lanes now stay in the gutter
immediately after the source column.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
A 0.08 floor made several long edges share one x just past the handle
offset. Lane x is now inverted through the smooth-step formula so
stacked skips stay in distinct first-gap tracks.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Keep CODEOWNERS paths under .github, ignore .loadpath in the watch
fingerprint, sort architecture-health series newest-last, persist empty
rules, write waivers without exploding loadpath.yml, and require
loopback for config/open writes. Watch reviews now use the dirty ref,
failed graph loads clear the placeholder, architecture mode drops
review isolate, reopen diffs the previous walk, and the palette cannot
run an off-screen action.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
@Modsofthenation
Modsofthenation marked this pull request as ready for review August 16, 2026 01:19
CI timed out on a visible-edge check after InvoicePage painted. Fall
back to an attached path so a clipped pane still counts as drawn.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
@cursor
cursor Bot merged commit 2f0e2ae into main Aug 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants