
A warehouse exposes four layers of information: names, lineage, schema, and meaning. The first three are visible to any system that can query the metadata. The fourth is missing, and it's the only one that makes the other three useful.
Table names suggest content: accounts, users, revenue_monthly, events_v2. They don't define it. A table named revenue_monthly might contain gross revenue, net revenue, or contracted revenue, and the name won't tell you which.
Lineage shows sources: accounts from Salesforce, revenue_monthly from Stripe. It doesn't explain business rules. Knowing where a table came from doesn't tell you which events were included, which were excluded, or how disputes and refunds were handled.
Schema describes shape: account_id: int, status: varchar, mrr: float. Status could mean billing state, engagement state, or support queue state depending on which table you're looking at. Shape and meaning aren't the same thing.
Meaning is the missing layer. Which status counts as active for this report? Which MRR is finance-approved? Which accounts are excluded from customer counts? Which join path is canonical? Names, lineage, and schema don't answer these questions. The people who built the system do, and that knowledge needs to be accessible to the systems that use it.