Funnel click-to-Yggdrasil — a plan node points down into the system-DAG
What this is. In the 🗂 Funnel tab's 2-D plan-DAG, clicking a node selects it and its system-DAG anchor — the RAG-grounded
file::symbolthe planner attached (the node'stargets) — surfaces instate_json. That anchor is the edge from the plan-DAG (what to build) down into Yggdrasil (what exists): the warehouse graph (symbol_facts/call_edges). Source:src/viz/funnel_tab.rs.
The seam
- Each
FunnelNodealready carriestargets(filled byfunnel::decompose::anchor_subtasks— LLM proposes → RAG anchors). FunnelViewerheader is aselectable_label; a click recordsclicked, drained intoFunnelTabState::selected_node.- Remote-control handle:
FunnelTabState::select_node(id)sets the selection in code — so a robot/test drives the click over the seam, not only by clicking the canvas. state_json(LAW 6):anchored_nodes(count of plan nodes that edge into Yggdrasil) +selected_node={ id, anchors: [file::symbol…], anchored }(null until a node is selected).
Coverage (in code, AI-free at runtime)
- unit:
viz::funnel_tab::tests::selected_node_surfaces_its_yggdrasil_anchor— anchored count, select → anchor surfaces, unknown selection → un-anchored. - robot:
tests/robot_funnel_journey.rs::robot_funnel_anchor_state_is_exposed— drives the demo, assertsanchored_nodesis a live count +selected_nodenull until clicked (headless matrix +watch-visible on DISPLAY:0).
Follow-up (visual polish, noted)
Draw the actual connective line/badge from the selected node down to its anchored symbol node in the system-DAG view (Metro/CallGraph) — the state is already there; this is the on-canvas edge render.