Skip to content

Richer node inspector after OSS PR graph validation - #22

Merged
cursor[bot] merged 3 commits into
mainfrom
cursor/oss-pr-graph-validate-89eb
Aug 15, 2026
Merged

cursor[bot] merged 3 commits into
mainfrom
cursor/oss-pr-graph-validate-89eb

Conversation

@Modsofthenation

@Modsofthenation Modsofthenation commented Aug 15, 2026 •

Copy link
Copy Markdown
Owner

Ran Loadpath against 10 public Django (and Django+frontend) pull requests from distinct repos, then used those graphs to extend the selected-node inspector.

OSS graph checks (all 10)

  • Every impact and architecture edge endpoint exists (0 dangling).
  • Node file_paths exist on disk.
  • Isolated impact nodes (library/test-only diffs) still lay out at finite positions.
  • Hidden extras that reviewers need: nplusone, lookups, signal/sender, decorators, field kwargs.
Repo PR Impact Architecture
paperless-ngx 13637 388 / 598 3518 / 838
wagtail 14509 1246 / 1542 9204 / 3185
django-rest-framework 10021 634 / 843 2499 / 1867
netbox 22861 1253 / 1483 15756 / 11175
pretix 6476 6 / 0 10251 / 6233
django-oscar 4614 30 / 0 3636 / 1832
django-debug-toolbar 2437 39 / 0 453 / 78
django-cms 8779 295 / 349 2479 / 783
saleor 19654 18 / 0 16415 / 2311
django-guardian 1008 17 / 0 587 / 180

Inspector

  • Degree (N in · M out) and an edge-kind load-path summary.
  • N+1 and lookup hits (object lists, not dropped).
  • Model/view/serializer first-line docstring.
  • Field constraints: null, blank, default, max_length, max_digits, decimal_places, primary_key, help_text, choices.
  • Labels for signal, sender, decorators, template, basename, beat, HTMX blocks.

Review follow-up

  • Do not store default=None as a field fact.
  • Hide the path summary when the selected node has no neighbors in this graph.
  • Attach first-line docstrings on Ninja and FastAPI views.
  • Copy live null / blank / max_length (and related) constraints from the Django boot overlay.
  • UI e2e waits for a visible React Flow edge, not the first (often still hidden) edge in DOM order.

INDEX_REVISION bumped to 13 so incremental indexes pick up the extra-identity change.

Open in Web Open in Cursor 

Summary by CodeRabbit

  • New Features

    • Graph inspection now shows inbound and outbound connection counts, grouped connection types, path summaries, and richer metadata.
    • Django model information now includes field constraints, defaults, documentation, choices, and additional framework component documentation.
    • Inspector metadata includes routing, scheduling, WebSocket, HTMX, database, and query-related details with clearer formatting.
  • Bug Fixes

    • Improved handling and display of false null and blank values.
    • Isolated graph nodes now receive stable, non-overlapping positions.
  • Tests

    • Expanded coverage for graph inspection, Django metadata extraction, and UI layout behavior.

OSS PR graphs were consistent (no dangling edges) but hid N+1/lookup
hits and Django field kwargs. Extract null/blank/default/max_length and
docstrings, and render degree plus edge-kind summaries on the selected node.

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: 46 minutes

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: 6a2d2c19-8611-4821-83bd-d774f629b4a9

📥 Commits

Reviewing files that changed from the base of the PR and between 7079614 and 81cf563.

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

Configuration used: defaults

Review profile: CHILL

Plan: Free

Run ID: 5f22bff7-b8df-4b69-bb74-a2d0ccde2b00

📥 Commits

Reviewing files that changed from the base of the PR and between 2da5138 and 7079614.

📒 Files selected for processing (11)
  • src/loadpath/extractors/django.py
  • src/loadpath/extractors/django_boot.py
  • src/loadpath/index.py
  • src/loadpath/static/assets/LayeredGraph3D-DBrjUozl.js
  • src/loadpath/static/assets/index-PXVMaQl_.js
  • src/loadpath/static/index.html
  • tests/e2e/test_ui_flows.py
  • tests/unit/test_django_extractors.py
  • ui/src/ImpactGraph.tsx
  • ui/src/nodeInspector.test.ts
  • ui/src/nodeInspector.ts
🚧 Files skipped from review as they are similar to previous changes (6)
  • ui/src/ImpactGraph.tsx
  • tests/e2e/test_ui_flows.py
  • src/loadpath/static/index.html
  • ui/src/nodeInspector.ts
  • src/loadpath/extractors/django.py
  • ui/src/nodeInspector.test.ts

📝 Walkthrough

Walkthrough

The change adds Django field constraints and docstrings to extracted metadata. It expands graph inspection with edge degrees, grouped edge kinds, path summaries, and formatted object facts. The frontend renders these details, updates bundled assets, and adds unit, layout, and E2E coverage.

Changes

Metadata Extraction and Graph Inspection

Layer / File(s) Summary
Django metadata extraction
src/loadpath/extractors/django.py, src/loadpath/extractors/django_boot.py, tests/unit/test_django_extractors.py
Django extraction now records field constraints, defaults, help text, choices, and first-line docstrings across supported node types. Tests cover static and live field metadata.
Graph inspector facts and presentation
ui/src/nodeInspector.ts, ui/src/ImpactGraph.tsx, ui/src/styles.css, src/loadpath/static/assets/index-C3YNVD8c.css, tests/e2e/*, ui/src/nodeInspector.test.ts, ui/src/types.test.ts
The inspector now reports edge degrees, grouped edge kinds, directional paths, expanded metadata facts, and capped object lists. The UI renders the new values and tests cover inspection, layout, styling, and E2E flows.
Frontend bundle and index wiring
src/loadpath/static/assets/index-PXVMaQl_.js, src/loadpath/static/assets/LayeredGraph3D-DBrjUozl.js, src/loadpath/static/index.html, src/loadpath/index.py
The production bundle and hashed asset references were updated. The Three.js import points to the new bundle, and INDEX_REVISION changed from "11" to "13".

Estimated code review effort: 4 (Complex) | ~45 minutes

Merge Risk: ⚪ Minimal · up to 70796

This PR enriches the node inspector and Django graph metadata while updating the index revision; no actionable merge-blocking risk remains after normal checks and review.

Sequence Diagram(s)

sequenceDiagram
  participant DjangoExtractor
  participant GraphData
  participant inspectNode
  participant GraphInspector
  DjangoExtractor->>GraphData: attach constraints and documentation
  GraphData->>inspectNode: provide node facts and graph links
  inspectNode->>inspectNode: calculate degrees and path summary
  inspectNode->>GraphInspector: render inspection metadata
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.

@Modsofthenation
Modsofthenation marked this pull request as ready for review August 15, 2026 20:27
cursoragent and others added 2 commits August 15, 2026 22:11
Adversarial review of the inspector extras: do not store a field
default of None, attach Ninja/FastAPI docstrings, copy live null/blank
constraints from the Django boot overlay, and omit the path line when a
node has no neighbors in the current graph.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
The first edge in DOM order can stay visibility:hidden (unmeasured or
clipped) while other edges are on screen, which made CI time out even
when the graph had painted.

Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
@cursor
cursor Bot merged commit d520a4d into main Aug 15, 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