Taxonomy Subtopics
Taxonomy Subtopics
Section titled “Taxonomy Subtopics”RETIRED — DR-130 (2026-08-05). The platform-global subject vocabulary is retired as a platform-core concept:
taxonomy_subtopicsis 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”Subtopic vocabulary that lives one level below taxonomy_domains (CV 01). Forms the second tier of KH’s two-level domain hierarchy, used to refine primary/secondary classification on source_documents (pre-ID-131, this classified content_items; the table has since been dropped — see §Relationships). Like its parent, each subtopic row carries a provenance enum so platform-shipped subtopics can coexist with client-defined ones.
Synonyms / Acronyms
Section titled “Synonyms / Acronyms”None formalised. Sector-specific subtopics may include acronyms when introduced (e.g. SaaS sub-areas, regulatory schemes) — capture in entity_aliases when ratified.
Baseline values
Section titled “Baseline values”33 baseline-provenance subtopics shipped in the frontmatter baseline_values above (verified S236 W1 against taxonomy_subtopics; the earlier “31 baseline-provenance” prose figure was a count miss reconciled to the frontmatter shape S237 per Liam ruling). The full list lives in the frontmatter; the planned scripts/seed/baseline-taxonomy-subtopics.sql materialises these rows as a migration-time seed (see Notes — seed-file derivability is deferred to the Q-OQR1-16 combined PR per Liam ruling S237). Subtopics are grouped under the 7 baseline domains in CV 01 and follow the same kebab-case naming convention.
Relationships
Section titled “Relationships”taxonomy_subtopicstable — DB row source (columnsid,name,display_name,domain_id,display_order,provenance,is_active).taxonomy_subtopics.domain_id— FK totaxonomy_domains.id(CV 01).source_documents.primary_subtopic—character varying(50)DEFAULT'unclassified'NOT NULL, referencingtaxonomy_subtopics.name. Re-homed offcontent_items.primary_subtopicat 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_subtopic—character varying(50), nullable secondary classification axis (same FK target); added in the same M3 migration.q_a_pairscarries no subtopic column and norecord_lifecyclesync. Contrast CV 01’s Finding 2:record_lifecyclecarries adomaincolumn with a write-time sync trigger, but there is no equivalentsubtopiccolumn onrecord_lifecycle— Q&A pairs currently have no subtopic-level classification signal at all, derived or direct.classification_disputes— review queue for ambiguous subtopic assignments.- Bound to Layer 3 (child of taxonomy_domains in the hierarchy) and Layer 5 (consumed by
source_documents+ downstream filters).
Consumers
Section titled “Consumers”contexts/taxonomy-context.tsx— React context for app-side reads.lib/taxonomy/taxonomy.ts— re-export shim (content types and platforms only — taxonomy subtopics read from the DB context).scripts/generate-taxonomy-snapshot.ts— emitstaxonomy_snapshot.jsonfor the Python pipeline.scripts/kb_pipeline/classifier.py— reads taxonomy snapshot for ML subtopic classification.- Filter UI:
components/browse/filter-panel.tsxchips +app/api/taxonomy/*admin CRUD routes. lib/mcp/tools/content.ts— MCP search/filter input.- Classification disputes feed (
classification_disputes).
- Hierarchy is FK-only — no SKOS BT/NT encoding (source §2.3).
- Granularity governance shared with parent domain — ad-hoc per source §2.3.
- Per-product subsections (Product Overview, Key Features, etc.) cited as client-extensible examples in
Product_KB_Dev_Brief.md§“Sales Playbook Zone”. - Total live row count (S236 W1 verification): 57 active subtopics across the 3 provenance values; 33 are baseline-provenance per the frontmatter and ship as the platform default, with the remainder being tenant-specific client rows.
- Seed-file derivability (Ratified-S237):
scripts/seed/baseline-taxonomy-subtopics.sqllands in the Q-OQR1-16 combined PR (alongsideapplication_typesintroduce,kb_sectionretire, procurement rename,project_id → workspace_id,digests → change_reports,form_templatesrename, provenance enum retrofit). Generator emits the 33 frontmatter rows verbatim — the markdown is the source of truth; the SQL seed is derived. Validates the “markdown as source-of-truth” pattern end-to-end. Out of WP6 scope this session.