"Revenue" is on the executive dashboard. Someone asks whether it is gross or net, whether refunds are in it, and who decided. In most organisations that question is answered by finding the person who built the tile. In InsightCompose it is answered by an ⓘ on the tile, and this is about what has to be true underneath for that ⓘ to be honest.
Three things that need to be the same thing
A governed number has three lives. It is a word the business uses — a glossary term with a definition in prose. It is a rule — a metric with an expression, the grain it is valid at, the filters it always carries, and the ways it is computed wrong here. And it is a value — the thing on the tile, produced by a query against the warehouse. BI tools keep those in three different places, and the links between them live in people's heads.
flowchart LR T["Glossary term
revenue
'sum of the transaction total, before refunds'"] -- "defines" --> M["Metrictotal_revenue
expression · grain · filters · traps
accepted by a person"] M -- "computed with" --> R["Every generated query
records which definitions
and which vocabulary it used"] M -- "shown on" --> D["Dashboard tile
pinned to the metric,
or inferred from its query"] D -. "ⓘ" .-> M M -. "ⓘ" .-> T style T fill:#fdf6ec,stroke:#e6c79c style M fill:#e6f7f2,stroke:#9fd8c9
1. The term and the metric
A metric carries the glossary term it defines. It is set by a person on the Metrics tab, matched automatically when a metric's name or synonym equals a term's name, or created the other way round: when a glossary term's description reads like a formula ("revenue divided by the number of transactions"), alignment opens it as a proposed metric with the definition already filled in and the expression left for someone to write and smoke-test. The term's own page shows the metric that defines it, the columns it is bound to, and the dashboards it appears on.
2. The run and the metric
When the engine writes a query it is told the agreed definitions the question invokes — only those, so a large metric layer costs nothing per question — and the confirmed vocabulary that applies. Every run now records which ones it used. That sounds like bookkeeping. It is the thing that makes the next section possible, and it is what lets a reviewer ask "which answers depended on the old definition of revenue?" and get a list rather than a shrug.
3. The tile and the metric
A dashboard panel names the metric it shows. Where nobody pinned one, it is inferred: the panel's Data API is a saved query, and if that query's SQL contains an accepted metric's expression, the link is drawn and marked inferred so a reader knows the difference. Either way the ⓘ on the tile opens the whole chain — definition, expression, grain, filters, traps, the glossary term, and the Data API with its owner and version.
Why the cache is now a governance feature
The engine remembers good answers. A question close enough to one it has answered before reuses that SQL — validated and executed again, but not regenerated — which is how a recurring question comes back in three or four seconds with no model call. The obvious objection is that a remembered answer is only as current as the knowledge it was written with.
Because runs record their lineage, that objection has a mechanical answer. When a person accepts a metric, the cached answers written without it are retired. When a curator confirms or rejects a term, the cached answers that embody the other reading are retired. And a stored query is never reused for a question that invokes a definition the query predates. The cache is not a shortcut around governance; it is bound by the same links as everything else.
What it does not do, yet
The chain covers questions, saved queries, dashboards and metrics. A Data API written by hand has no generation run behind it, so its metric is inferred from its SQL only. Discovered insights and notebooks are not on the chain yet. And the engine trusts a metric's expression as written — the run records that the definition was offered; the verifier checks the numbers; nothing yet re-parses the SQL to prove the formula was used verbatim. We would rather say that than imply otherwise.
The principle
A number you cannot trace is a number you cannot defend. Make the term, the rule and the value point at each other as data — then a dashboard can explain itself, and so can the cache.
Read next
Teaching the engine your vocabulary — how the glossaries you already wrote become the rules the engine enforces, and what a machine is never allowed to decide alone.