Flat, predictable, hand-writable.
Every panel is a row in a list. Every interaction is a declarative
emit: edge. No JavaScript, no callbacks, no "now wire
the click handler to the store dispatcher." The format is small
enough to keep in your head and stable enough for an LLM to write
end-to-end on the first try.
emit: filter — click writes a value into a named filter; everything that depends re-queries.
emit: highlight — visual dim only, no re-query; works across renderers and pages.
select: brush — drag a range across a histogram; binds to @filter.from / .to.
affects: / affected_by: — explicit wiring when the wildcard is too broad.
That highlighted emit: highlight: ["*"] is the whole
cross-filter. Click a bar — every other panel on every page
dims non-matching marks at 0.25 opacity. No SQL
re-run.