Metric ambiguity. "Revenue" means net of refunds in one department, gross in another, recognized-only in a third. An agent that answers "what was Q1 revenue?" without disambiguation is wrong most of the time, even when the SQL runs. Fix: every metric has one canonical definition, expressed in the semantic layer, with synonym mapping.
Deprecated logic still in use. A segmentation rule was replaced last quarter but the old view still exists in the warehouse. The agent, reasoning over schema alone, picks it up. Fix: the semantic layer is the source of truth; deprecated definitions are marked or removed; the agent only sees what's current.
Missing definitions. The semantic layer covers 40% of commonly asked questions; the other 60% the agent infers. Coverage gaps are where hallucination lives. Fix: measure semantic coverage against your actual question distribution, not against your schema.
Join logic the agent can't see. Business-critical joins (customer-to-account, order-to-cohort) often live in analyst scripts, not in modeled relationships. An agent that has to invent joins invents them wrong. Fix: formalize relationships in the semantic layer alongside metrics.