Repository navigation
#270 — feat(render): explorer project pane — vars/config provenance/reference filter - #432
Conversation
…eference filter Surface the project definition on the EXPLORE page, mirroring what the report already shows report-side (#266/#267/#268): a project-info pane (name/version/require-dbt-version), a standing vars inventory (precedence-resolved values + per-tier reference counts), config provenance on the model detail pane, and a var/macro reference filter. Domain (additive, reuses the existing ProjectDefinition POD — R4): - vars::project_var_inventory → VarInventory{entries, footprint, var_models}, reusing the existing private var scanner so the explore inventory and the report's change panel never disagree on which models reference a var. - project_def::resolve_model_configs → ConfigProvenance per model, reusing fusion's get_config_for_fqn descent (resolve_key_for_fqn). Adapter (explore.rs): ProjectPanePayload (info + inventory + var/macro filter indices) rides the dag carrier + a tests.html carrier; per-model ConfigProvenance rides a config_provenance side-map (the seed_tables precedent). All serde-skip when no project file is read, so no-project-root goldens stay byte-identical. render_explore takes a new &ProjectFacts; macro.html emission extracted to render_macro_page. CLI: gather_explore_project_facts parses the working-tree dbt_project.yml (explicit --project-root, else derived from the manifest layout); fail-open — unreadable/unparseable degrades to no pane. Templates/JS (additive, in-place, zero-egress): project-pane shell + CSS on both explore pages (all 8 themes via shared tokens); explore-lineage.js renders the pane, adds config provenance to the detail card, and the var:/macro: reference filter (dims the complement, composes with the existing highlight vocabulary); explore-tests.js renders the pane. Dogfood: examples/explore-macro/{dag,tests}.html are now committed (rendered with --project-root playground-source) — the canonical proof of the project-pane surface; base explore + explore-seed goldens unchanged in shape. Headless: tests/headless_toggle.rs asserts the pane renders, themes on all 8 themes, shows config provenance, and the reference filter dims the complement; zero-egress covers the new pages. Closes #270 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…project_facts The pre-push docs gate runs `cargo doc --no-deps --document-private-items -D warnings`; the private gather fn's doc linked a bare [`ProjectDefinition`] not in scope there. Use the crate-qualified path so the link resolves under private-item docs too (the cargo-doc-gate-not-in-clippy lesson). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
|
Warning Review limit reached
More reviews will be available in 46 minutes and 57 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (21)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Ready to review this PR? Stage has broken it down into 7 individual chapters for you: Chapters generated by Stage for commit 718855f on Jun 14, 2026 4:55pm UTC. |
📄 Rendered report previewAll golden examples regenerated cleanly. 🟡 Golden examplesCommitted to
🐶 Live dogfood previewThis PR doesn't touch 🧭 Explore previewThe two-page 🟡 Golden exploreThe committed
🐶 Live exploreThis PR doesn't touch ▶ Open ↗ opens the report or explorer in your browser in one The Pages preview may take ~1 min to update after this comment Alternative: GitHub CLI# gh CLI >= 2.63 extracts into ./report-preview-playground/.
gh run download 27505719979 -R breezy-bays-labs/cute-dbt -n report-preview-playground
open report-preview-playground/playground-report.htmlPosted by |
There was a problem hiding this comment.
Code Review
This pull request implements a new project pane, standing vars inventory, and config provenance feature for the explore view (cute-dbt#270), integrating it across the DAG, tests, and macro pages. Feedback focuses on performance optimizations: simplifying provenance_for_fqn to a single-pass traversal, precomputing package names in project_var_inventory to avoid repeated lookups, and caching Cytoscape element lookups in filterByModels to prevent redundant queries on large lineage graphs.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
…roject-pane # Conflicts: # src/adapters/explore.rs
|
Merge debrief (#432 → #270) — squash Shipped: explorer project pane — vars inventory, config provenance, var/macro reference filter (explorer-side of the #262 dbt_project.yml ingestion). Bot disposition: 3 gemini medium perf threads (provenance_for_fqn single-pass, var-inventory package precompute, filterByModels Cytoscape lookup dedup) — all deferred to #433 (post-v0.1 perf pass). Rationale: correctness-neutral micro-opts on non-hot paths; cute-dbt is zero-compute on small artifacts and perf is the org's un-budgeted aspirational leg. Tracked, not dropped. Merge mechanics (load-bearing): resolved the Probe + gates: explore goldens regenerated, byte-identical to the auto-merge; full sweep green (2267 nextest, golden, zero-egress incl. macro-page + cytoscape, doc). Follow-up: #433 (perf). Report lane continues: #434 (DAG halo, rebasing) → #424. |
…recompute + filterByModels lookup dedup (#441) Three correctness-neutral traversal/lookup dedups on the #262 project-config surfaces (deferred from #432): provenance_for_fqn single-pass (O(K·L)->O(L), removes keys_along_fqn), project_var_inventory package precompute (O(V×M)->O(M)), filterByModels resolve-once. Behavior-neutral by construction; only the four JS-embedding explore goldens regenerated. All gates green incl. crap4rs + byte-identity. Closes #433 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
Surfaces the dbt project definition on the explore page, mirroring what the report already shows report-side (#266/#267/#268) — the C-arc explore surface of epic #262. Adds:
+materialized = view via models.healthcare_analytics);var:NAME/macro:NAMEchips + search, dimming the complement).All four consume the same
ProjectDefinitionPOD the report reads (AC R4) — render + explore-template work, not new ingestion.What changed
Domain (additive, reuses existing POD):
vars::project_var_inventory→VarInventory { entries, footprint, var_models }, reusing the existing private var scanner so the explore inventory and the report's change panel never disagree on which models reference a var.project_def::resolve_model_configs→ per-modelConfigProvenance, reusing fusion'sget_config_for_fqndescent (resolve_key_for_fqn).Adapter (
explore.rs):ProjectPanePayload(info + inventory + var/macro filter indices) rides the dag carrier + atests.htmlcarrier; per-modelConfigProvenancerides aconfig_provenanceside-map (theseed_tablesprecedent). All serde-skip when no project file is read, so no-project-root goldens stay byte-identical.render_exploretakes a new&ProjectFacts;macro.htmlemission extracted torender_macro_page.CLI:
gather_explore_project_factsparses the working-treedbt_project.yml(explicit--project-root, else derived from the manifest layout); fail-open — unreadable/unparseable degrades to no pane.Templates/JS (additive, in-place, zero-egress): project-pane shell + CSS on both explore pages (all 8 themes via shared tokens,
createElement/textContentonly);explore-lineage.jsrenders the pane, adds config provenance to the detail card, and the reference filter (composes with the existing highlight vocabulary);explore-tests.jsrenders the pane.Dogfood
examples/explore-macro/{dag,tests}.htmlare now committed (rendered with--project-root playground-source, which carries adbt_project.yml) — the canonical visual proof of the project-pane surface. The baseexplore+explore-seedgoldens keep their shape (no project pane without a project file; serde-skip).tests/common/mod.rsadds the two new pages to the zero-egress + resource-ref scan set.Gates (all pass, raw exit code)
fmt --check · clippy --all-targets --locked -D warnings · nextest (2256 tests) ·
cargo test --test bdd(226 scenarios) ·headless_toggle+headless_zero_egress(-- --ignored, real Chrome) ·cargo doc --no-deps --document-private-items -D warnings· cargo deny · crap4rs (render.rs/explore.rs) · resource-ref lint · example-report-check byte-identity on all 7 explore goldens.New headless test (
explore_project_pane_renders_inventory_provenance_and_reference_filter) asserts the pane renders against the committed golden, themes correctly on all 8 themes, shows config provenance on a model detail card, and the reference filter dims the complement.Closes #270