Source
One data source of the catalog: a table or view of the warehouse, its id AnalyticsCatalogContext.sourceIdOf of (connection, database, table), so each physical table is one source.
An analyst's table ((b)): DraftSource reads its columns from the warehouse; ReviseSource declares its tenant column (required), owner and space columns, and the columns that refer to an aggregate the catalog knows; ReviewSourceSensitivity records each string column's protection; MarkSourceReviewed completes the review (draft → reviewed). Revising a reviewed source, or its table changing under it, takes it back to its draft.
A Wow table (②③): SyncSource adopts the table's
wow_catalogrow that the trust rules accept (CatalogTrust): the scope, references and sensitivity the Sink wrote, never lower than the source gave before; a lowered or vanished protection is kept and pending until ApproveSensitivityChange. An analyst may only tighten it (ReviewSourceSensitivity); a table that has a trusted row is not an analyst's to draft, and an analyst's source of a table that gets one becomes a Wow source. Refusals, adoptions and losses are events: the audit.
Every source is in the platform's tenant (AnalyticsCatalogContext.TENANT_ID, the type's fixed tenant), a resource of that tenant (Ownership.TENANT); who may send what is the service's authorizer's to say.