Appearance
Schema Census — live physical inventory (the substrate the domain model sits on)
STATUS: 🟢 GENERATED · Source: live probe of
xhqqcrobfittnsajqbgx(public schema) 2026-07-24 · Regenerate:scripts/atlas-census.py(exact SQL in its docstring; run the catalog query via Supabase MCP, feed the JSON to the script). Caveat — rowcounts arepg_class.reltuplesESTIMATES (Postgres planner stats), often stale or-1(never-analyzed). They indicate order-of-magnitude only. Exact counts must beSELECT count(*)probed per table (e.g. entity=2,438 · campaigns=48 · content_credit=32 — all diverge from the estimates below). Structure (tables/columns/FKs/enums) IS exact.
Totals
| tables | views | columns | foreign keys | indexes | pg enums |
|---|---|---|---|---|---|
| 184 | 13 | 2,296 | 200 | 598 | 9 |
But ~48 of the 184 base tables are ARCHIVE / SNAPSHOT / migration-backup tables (§C below) — the real domain surface is ~136 tables. A quarter of the "DB sprawl" is migration noise that is NOT part of the model.
§A — CORE domain tables (provisional pillar grouping — to be verified in W2 fold-in)
cols/idxare exact;~rowsis the unreliable estimate (▲ = estimate looks stale vs known exact count).
ENTITIES / people
entity (26c, ~2382▲ exact 2438) · entity_alias (6c,0) · entity_external_id (5c) · entity_departments (15c) · entity_people (14c) · pending_entity_people (21c) · entity_links (5c,11) · entity_ownership (12c,0) · entity_motion_identity (7c,493) · news_items (10c,8)
PRODUCTS / features
products (16c,~130) · product_features (11c,~1469) · product_feature_tags (6c,~1585) · entity_product_inclusions (6c,37)
POSITIONING / market ontology
macro_sectors · sectors · industries (64) · categories (238) · company_categories (50) · taxonomy_term(0) · taxonomy_alias(77) · taxonomy_closure(0) · taxonomy_review_state(277)
VENDORS / disciplines
creative_disciplines (19c,156) · content_disciplines (~15480) · content_segment_disciplines(0) · discipline_canonical_backfill_log(80) · content_credit (16c, exact 32) · v6_content_credits (12c,13) · content_roles (~27884)
GROUPINGS — campaigns / events / projects / identity
campaigns (16c, exact 48) · campaign_content(~289) · campaign_companies(46) · campaign_products(41) · campaign_events · campaign_source_evidence(64) · events_observances(1450) · event_instances · event_participations · event_categories(5) · event_subcategories(43) · relationship_events (10c, ~1300 — actively populated) · brand_guideline_sections(94) · brand_principle · project(2) · project_block/project_doc/project_item/membership (Workspace feature) · reels/reel_items · trackers(6)/tracker_items(311) · saved_searches(28)
CONTENT (the atomic unit + its ~40 classification satellites)
content_item (96c, 47idx, ~13923) + view content_items · links(33c,991) · collection_runs(4147) · website_content(144) · page_snapshots(0) · content_sections/content_content_sections/content_section_closure · classification satellites: content_entity(~23826) · content_entity_mention(763) · content_products(~8360) · content_features(1677) · content_themes(~77387) · content_concept(2818) · content_verbal_claims(~22180) · content_visual_cues(~9592) · content_proof_points(~13736) · content_risk_signals(4571) · content_audience_segments(~20821) · content_roles · content_tones · content_technique · content_expression · content_material · content_behavior · content_principle · content_substrate · content_writing_style · content_placement · content_product_surface · content_element · content_music(41c,133) · content_markers(24)/marker_mentions · content_taxonomy_tag(0) · content_type_category
MOMENTS (sub-asset grain)
content_segment (22c, ~3335) · content_scenes(4722) · content_segment_categories(4854) · content_segment_classifications(27c,3344) · content_segment_disciplines(0)
SIGNALS / INTELLIGENCE ⚠️ (CORRECTION — this layer EXISTS, contra earlier "zero tables")
content_observations (13c, ~36315) · content_signals (15c) · content_risk_signals(4571) · campaign_intelligence_runs · campaign_intelligence_claims(449) · campaign_intelligence_evidence_refs(1021) · intelligence_sessions(8) · relationship_events(~1300) · news_items(8). → The Observation→Signal→Insight→Implication spine is PARTIALLY built (content-anchored), NOT absent. Re-scope the §5 "signal pillar" fork accordingly.
PIPELINE / analysis infra (NOT domain pillars — supporting machinery)
analysis_batches · analysis_run(34c) · analysis_output · llm_responses · pipeline_events(~128546) · pipeline_executions(17c,~21431) · pipeline_routing(14) · content_routing(12) · prompt_sets/prompt_versions/prompt_bindings · workflows · schema_enums (22c, 1244 rows / 83 axes) · scheduler_cycles/scheduler_runtime_config · proxy_quota_state · page_type_tier_defaults · content_type_category
APP / infra (auth, billing, collab — NOT domain model)
profiles/membership/workspaces/workspace_content · subscriptions/stripe_webhook_events/beta_signups · notes/note_mentions/comments/comment_mentions/comment_read_state/notifications · ai_conversations/ai_messages · audit_events(1478) · presentations/project_doc/project_block · company_claims(0)/company_categories
§B — Foreign-key graph (the 200 real relationship edges, grouped by TARGET hub)
These ARE the physical relationships. Hub = most-referenced tables.
- →
content_item(the content hub, ~30 in-edges): analysis_run · campaign_content · campaign_source_evidence · campaign_intelligence_evidence_refs · content_audience_segments · content_behavior · content_concept · content_credit · content_disciplines · content_element · content_entity · content_entity_mention · content_events · content_expression · content_features · content_markers · content_material · content_music · content_observations · content_placement · content_principle · content_product_surface · content_products · content_proof_points · content_risk_signals · content_roles · content_scenes · content_segment(parent_content_id) · content_segment_classifications · content_substrate · content_taxonomy_tag · content_technique · content_themes · content_tones · content_verbal_claims · content_visual_cues · content_writing_style · event_participations · llm_responses · pipeline_events · pipeline_executions · v6_content_credits · workspace_content · content_item.analysis_source_id (self) - →
entity(the actor hub, ~25 in-edges): brand_guideline_sections · brand_principle · campaign_companies · campaigns · company_categories · content_credit · content_entity · content_entity_mention · content_music(artist+song) · content_signals · entity_alias · entity_departments · entity_external_id · entity_links · entity_motion_identity · entity_ownership(owner+owned) · entity_people(entity+person) · entity_product_inclusions · event_instances(host) · event_participations(entity+project) · links(company+entity) · news_items · pending_entity_people(entity+person) · products(entity+brand) · relationship_events(primary+secondary) · v6_content_credits · website_content · entity.parent_entity_id (self) - →
content_segment: analysis_run · content_behavior · content_concept · content_element · content_expression · content_material · content_principle · content_product_surface · content_substrate · content_technique · content_writing_style · content_segment_categories · content_segment_classifications · content_segment_disciplines · entity_motion_identity · content_segment.parent_segment_id (self) · content_segment.source_scene_id→content_scenes - →
campaigns: campaign_companies · campaign_content · campaign_events · campaign_products · campaign_source_evidence · campaign_intelligence_claims · campaign_intelligence_evidence_refs · campaign_intelligence_runs - →
products: campaign_products · content_products · entity_product_inclusions · links · product_feature_tags · website_content · products.parent_product_id (self) - →
creative_disciplines: content_credit · content_disciplines · content_segment_disciplines · creative_disciplines.parent_id (self, single-parent TREE — confirms A2's DAG question is a real change) - →
product_features: content_features · product_feature_tags · product_features.parent_id (self) - →
analysis_run: analysis_output · content_credit · content_entity(first_seen) · content_entity_mention · content_item(chosen_run) · content_taxonomy_tag · llm_responses · v6_content_credits - ontology chain: categories→industries→sectors→macro_sectors · company_categories→(categories,entity) · event_subcategories→event_categories · events_observances→(event_categories,event_subcategories)
- event chain: event_instances→(events_observances, entity host) · event_participations→(event_instance, entity, entity project, content_item) · campaign_events→(campaigns, event_instances)
- prompt/pipeline: prompt_versions↔prompt_sets · prompt_bindings→prompt_versions · pipeline_routing/content_routing→prompt_sets · workflows→prompt_sets
- taxonomy: taxonomy_alias→schema_enums · taxonomy_closure→taxonomy_term(ancestor+descendant) · taxonomy_term.parent_id (self)
- trackers/reels: tracker_items→(trackers, content_markers) · reel_items→(reels, content_markers)
§Enums (9 pg enums — the hard-typed vocab; the SOFT vocab is schema_enums 1,244 rows/83 axes)
entity_kind: company · brand · product · person · event · org · place · song · artist · music_label ⚠️(10 permitted; only company/person/song/artist used — the A4-ratified "kind=company, brand is a role" conflict)credit_entity_type: company_internal · agency · creative_studio · production_company · post_house · individualcontent_status: queued · uploaded · normalizing · normalized · analyzed · failed · active · archivedsegment_status: pending · extracting · extracted · analyzing · analyzed · failedsegment_source: youtube_chapters · scene_detection · llm_detection · manual · transcript_analysisreview_status_enum: pending · approved · rejected · auto_approvedllm_response_status: success · invalid_json · validation_failed · timeout · rate_limited · errorcollection_status: pending · running · completed · failedbatch_status: pending · running · completed · failed · cancelled
§C — ARCHIVE / SNAPSHOT tables (~48 — EXCLUDE from the domain model; migration backups)
These are
git-for-the-DB: point-in-time snapshots from migrations (P0/chunk/dogfood/pbatch runs). They inflate the table count and should be ignored by the model (candidates for a future cleanup sweep, NOT part of any pillar).archive_content_type_lookup_p0_2·archive_creative_disciplines_pre_{c7_renames,c7v2_2,m1a_defs,mint_r2}_2026072x·archive_csc_dogfood_dn147·archive_p0_{3_placement_remap,4_category_strays,4_intent_map,5_stage_split,6_channel_recut,6_links_channel_recut}·archive_platform_content_type_mapping_p0_2·archive_schema_enums_pre_e1_tombstone_20260721·archive_segment_dogfood_dn147·campaign_products_snapshot_pbatch_20260720·cd_chunk{2_disposition,3_collapse,4_pk}_snapshot_*·cd_snapshot_pbatch_ux_fold_20260720·content_disciplines_{genre_exec,rigging}_snapshot_*·content_entity_multiprimary_snapshot_d3c1_20260713·content_item_r1_sora_snapshot_d3_20260713·content_segment_categories_multiprimary_snapshot_*·content_segment_disciplines_genre_exec_snapshot_*·craft_snapshot_{3dpr_move,611_kinetic_typo,doorway_retire}_20260718·creative_disciplines_snapshot_{chunk2,p1,p1b,p1c,p1d,pbatch}_*·csc_chunk2_hygiene_snapshot_20260718·csc_{pdem_rollup_batch,product_demonstration_rollup}_snapshot_*·csd_{chunk2_disposition,dogfood}_snapshot_*·market_snapshot_{chunk2_*,chunk3_moves,mpn,nbatch_cat,nbatch_ind}_*·schema_enums_hygiene_snapshot_d3c1_20260713·v6_content_credits_snapshot_pbatch_20260720