Taxonomy Domains
Taxonomy Domains
Section titled “Taxonomy Domains”RETIRED — DR-130 (2026-08-05). The platform-global subject vocabulary is retired as a platform-core concept:
taxonomy_domainsis DROPPED in the id-417 DR-130 retirement wave, along with the per-document subject-classification stage and the domain/subtopic filter surfaces. Subject “aboutness” is display-level derived metadata — the driving axes are scope (scope_tag), semantics, and concept membership. If a client ever needs a subject vocabulary it returns as an R6 client-overlay CV in the client bundle. This file is a historic record of the IMS-era vocabulary; nothing below is current.
Definition
Section titled “Definition”Top-level domain vocabulary used to classify source_documents along the primary/secondary classification axis (pre-ID-131, this classified content_items; the table has since been dropped — see §Relationships). Domains anchor the platform’s two-level hierarchy with taxonomy_subtopics (CV 02) as children. Each row carries a provenance enum (baseline / client / recommended) so the platform can ship sensible defaults while letting clients extend without code changes — this is the precedent that all hybrid CVs in KH mirror.
Synonyms / Acronyms
Section titled “Synonyms / Acronyms”None formalised. Sector-intelligence shorthand may use sector codes — to be captured in entity_aliases (CV 18) when defined.
Baseline values
Section titled “Baseline values”| key | label | provenance |
|---|---|---|
| security | Security | core |
| compliance | Compliance | core |
| implementation | Implementation | core |
| support | Support | core |
| corporate | Corporate | core |
| product-feature | Product Feature | core |
| methodology | Methodology | core |
(Verified S236 W1 against the live taxonomy_domains table — 7 baseline-provenance domains observed. The 8 client-provenance domains (e.g. safeguarding-*, multi-academy-trusts, education, products-services, legislation-policy, market-intelligence, sector-news) are intentionally out-of-scope for the platform baseline; they are Phew tenant-specific rows that should not ship as core.)
Relationships
Section titled “Relationships”taxonomy_domainstable — DB row source (columnsid,name,display_name,display_order,colour,provenance,is_active). Snapshot atscripts/tests/fixtures/taxonomy_snapshot.jsondomains[].source_documents.primary_domain—character varying(50)DEFAULT'unclassified'NOT NULL, referencingtaxonomy_domains.name. Re-homed offcontent_items.primary_domainat ID-131 M3 (20260628191700_id131_sd_classification_cols);content_itemsitself was DROPPED at ID-131 M6 (S450 GO) — the table no longer exists on any env.source_documents.secondary_domain—character varying(50), nullable secondary classification axis (same FK target); added in the same M3 migration.- Finding 2 —
q_a_pairscarries no domain column. Domain for a Q&A pair is derived one hop away viarecord_lifecycle.domain: therecord_lifecycle_domain_synctrigger (20260628191701_id131_record_lifecycle_domain_sync) write-time-syncsrecord_lifecycle.domainfrom the owningsource_documents.primary_domain(owner_kind='source_document'rows), or, forowner_kind='q_a_pair'rows, from that pair’s linked source document’sprimary_domain(falling back to'unclassified'when no linked source document exists). Win-rate / governance-config domain-policy joins over Q&A pairs readrecord_lifecycle.domain, not a directq_a_pairscolumn. taxonomy_subtopics.domain_id— FK totaxonomy_domains.idfrom CV 02 (parent-child).classification_disputes— references domain values for review queue.- Bound to Layer 3 hierarchy (parent of taxonomy_subtopics) and Layer 5 (consumed by every domain entity carrying
primary_domain/secondary_domain).
Consumers
Section titled “Consumers”contexts/taxonomy-context.tsx— React context for app-side reads (DB-driven taxonomy per CLAUDE.md).lib/taxonomy/taxonomy.ts— 24-line re-export shim (content types and platforms only — taxonomy domains read from the DB context).scripts/generate-taxonomy-snapshot.ts— emitstaxonomy_snapshot.jsonfor the Python pipeline (separate snapshot pattern per CLAUDE.md “Taxonomy dual-source”).scripts/kb_pipeline/classifier.py— reads taxonomy snapshot for ML domain classification.- Filter UI:
components/browse/filter-panel.tsxchips + admin CRUD viaapp/api/taxonomy/*routes. lib/mcp/tools/content.ts— MCP search/filter input.
- Already carries
provenanceenum — model precedent for all hybrid CVs. - Sector-intelligence implies sector verticalisation; clients in different sectors will add their own domains.
- Granularity governance not yet formalised (when to add a new domain vs. reuse an existing one) — ad-hoc today per source §2.3.
- No SKOS / ISO 25964 broader-term / narrower-term encoding yet (see source §2.3 “what’s missing”).
- Total live row count (S236 W1 verification): 15 active domains across the 3 provenance values (
baseline7,client8). Baseline rows are the platform-shipped set above; client rows belong to the tenant (Phew today) and ship via the admin UI rather than the core seed.