Before walking the methodology, here's how to drive the canvas: click, drag, zoom, focus pills, animated flow edges, kind filters, and search.
Click a node
Selects it. The graph fades all unrelated edges, traces upstream ancestors AND downstream descendants, and opens the right-side AI Analyst panel with the node summary, source file, metrics, and connected relationships.
Drag to pan, scroll to zoom
Pan with left-click drag anywhere on the canvas. Zoom with the scroll wheel (centered on the cursor). Drag a node body to reposition it — positions persist for the session.
Focus pills (top-left of the canvas)
ROOT / ACQUISITION / CONVERSION jump and re-center on Branches 0, 8, and 9 respectively. Use them when you get lost or want to demo the three main views.
Animated flow edges
Computational edges (calculates, converts, applies_ratio, sequences_into, produces_output, depends_on, etc.) animate continuously — even with no selection — so the workflow visibly moves. Static edges (supports, derives, narrative, validates) only animate when their endpoints are selected.
Kind filters (left rail)
Toggle node kinds on/off to declutter (e.g. hide narrative + challenge to focus on data flow). Hidden kinds also remove any edges that depend on them.
Search
Search filters the graph in place: matched nodes stay bright, everything else dims. Useful for finding a specific dataset by filename or a sub-step by name.
Status filter chips (left rail, top)
Three toggles — Real / Partial / Placeholder — directly above the Layers list. Click one to hide every node of that status from the canvas. Hiding Placeholder leaves only the load-bearing real spine; hiding Real leaves only the work that still needs doing. The chip dims and strikes through when its status is hidden, and the chip border color always matches the Inspector status badge so the two views stay in sync. Status classification is derived from the Status Ledger (step 2): explicit overrides for root, b6_defens, conv_s10, the CoStar sources, b9_conv, and the formula nodes; the rest is inferred by id-prefix (def_* → placeholder, conv_s*/f* → real, cl_*/cal_*/prop_*/narr_*/ch_*/acq_* → partial).
Min-confidence slider (left rail)
Drag from 0% to 100%. Any node whose confidence falls below the threshold is removed from the canvas (not dimmed — actually filtered, so its edges disappear too). At 0% you see everything. At ~80% you see only the load-bearing nodes the methodology really stands on. The current threshold is shown in tabular numerals to the right of the label so you can quote the exact filter when describing a screenshot.
Lineage tab (right Inspector → Lineage)
Selecting a node opens the right-side Inspector. The Lineage tab lists every direct upstream node (Derives from / supported by) and every direct downstream consumer (Feeds into), with the edge kind (supports, derives, validates, calculates, converts, etc.) shown under each row. Click any lineage row to jump to that node — the Inspector follows the selection so you can walk the chain hand-over-hand without losing context.
Status badge + Breadcrumb trail
Two passive readouts that always reflect the current selection. (a) Status badge: in the Inspector header next to the title, a pill colored Real (green) / Partial (amber) / Placeholder (red) tells you at a glance how much to trust the node. (b) Breadcrumb: at the top-left of the canvas, the path ROOT → … → selected-node renders as clickable chips colored by node kind, so you always know where you are in the hierarchy and can jump back to any ancestor with one click.
Status badge → Status Ledger (one-click jump)
The Real/Partial/Placeholder pill in the Inspector header is itself a link (↗ icon on the right). Click it and the Guide opens straight to the Status Ledger step with the matching row scrolled into view and ringed in primary color. Exact match by node id when the ledger lists that node by name; for sub-nodes that aren't listed individually (e.g. a calibration step under b2_calib), the nearest branch row is highlighted instead. This closes the loop between 'I see this node is a placeholder' and 'here is exactly why, and the concrete fix.'
Reset filters (left rail, Status header)
A small Reset filters button appears in the top-right of the Status section, but only when at least one filter is active (any status hidden, any layer hidden, or confidence threshold > 0%). One click clears all three filter sets at once and returns the canvas to its default full-graph view. Use this when a reviewer's view feels empty or when handing the screen back to a fresh viewer.
Empty-state overlay (canvas)
If the combined filters (status + layers + confidence threshold) hide every node, the canvas does not just go black — a centered card appears reading 'No nodes match the current filters' and points to the Reset filters button. This prevents the 'why is the graph empty?' confusion when filters stack up.
Collapse the left & right panels (one click each)
Both side panels collapse to a thin 36px rail with a single button. Left rail: click the PanelLeftClose icon in the Status header to hide all filters; click the rail to bring them back. Right rail: same pattern on the Inspector. Use this when you want more horizontal room for the canvas but still need quick access to one side. The collapsed state is encoded in the URL (lp=0, ins=0) so a shared link preserves the layout.
Focus mode — max canvas in one click (top bar)
The Maximize icon in the top bar (between Export and Settings) collapses BOTH side panels at once, giving you the full screen width for the graph. Click again (now a Minimize icon, primary-tinted) to restore both panels. Use this for demos, presentations, screenshots, or when you just want to see the whole graph without distractions. Also URL-persisted, so a focus-mode link reopens in focus mode.