KB-148A

06 — Topic Operational Workflow (human/AI/KG paths, candidate→active, merge/split, Điều 38/39, design-only, 2026-06-02)

9 min read Revision 1
one-roof-governancetopicFAC-08taxonomyworkflowcandidatepromotionmerge-splitdieu38dieu39kgconfidencedesign-only2026-06-01

06 — Topic Operational Workflow (Branch F)

Branch F. End-to-end workflow for the topic / content-semantic axis (AX-TOPIC = FAC-08), the most uncertain axis. Topic = taxonomy nodes under facet FAC-08 + axis_assignment (IU↔topic, with confidence/zone) + KG semantic discovery. Not a new island. Verdict: RECOMMENDED. Three entry paths (human / AI / KG) converge on one lifecycle; deterministic structure (Điều 38) anchors content, KG (Điều 39) discovers candidates, governance owns lifecycle/approval/UI/coverage.


06.0 Where topic lives (recap, doc 01/03/04)

  • Facet: taxonomy_facets FAC-08 "Chủ đề nội dung?" (currently cardinality='single', max_labels_per_entity=0 = defined-but-not-operationalized).
  • Nodes: taxonomy rows with facet_id=FAC-08, status, parent_id/parent_facet (hierarchy), replaced_by (supersession).
  • Assignment (IU↔topic): axis_assignment (new, doc 04) with zone∈{approved,candidate,quarantine}, match_score, confidence, evidence, provenance, valid_time; legacy rule-labels in entity_labels; IU tags in iu_metadata_tag.
  • Topic↔topic relations: taxonomy.parent_id + universal_edges/entity_relations (semantic).
  • Owner: GOV-KG-SYS (substrate/vocabulary) + GOV-COUNCIL (policy) — to be ratified under SB-2/OP-B.

06.1 The three entry paths (priority-ordered)

Per GPT direction: human-specified topic is highest priority; AI-proposed needs approval before UI-fixed status; KG-assisted stays provisional/AI-facing.

Path A — Human-requested topic (highest authority)

  1. Human requests a topic (via Directus/UI) → approval_requests (request_type_code='register_topic_node', proposed_action = the node spec).
  2. A candidate taxonomy row is created (status='candidate', FAC-08) — not born yet.
  3. Review = L1/L2 (technical owner or council per scope — doc 02). Human-origin = high trust, but still APR-gated because it changes classification truth.
  4. On approve → promote (§06.3): status='active' + Birth entry + coverage trigger.

Path B — AI-proposed topic

  1. An agent (Điều 38 Text-as-Code analysis of IU bodies, or clustering) proposes a topic → approval_requests with evidence + confidence + provenance (Điều 39 A8: no provenance ⇒ quarantine).
  2. Candidate taxonomy row (status='candidate'), axis_assignment rows in zone='candidate' for the IUs it would tag.
  3. Review via doc_reviews two-gate (AI gate 1 = quality/dup check; human gate 2 = decision) + apr_approvals. AI may propose, never self-enact (Điều 39 Golden Rule).
  4. On approve → promote. On reject → candidate retained for audit (zone/status flips to retracted), never silently deleted (NĐ-36-01 temporal).

Path C — KG-assisted dynamic topic (provisional, AI-facing)

  1. The KG (Điều 39) clusters universal_edges/iu_relation + embeddings (Qdrant) and surfaces emergent topics, scored by trust_score = confidence × freshness_decay × provenance_weight × source_authority.
  2. These live as provisional taxonomy rows (status='provisional') and axis_assignment.zone='candidate'usable for AI retrieval/search, not for the official human UI tree.
  3. A provisional topic is promotable via Path B review when it stabilizes (recurs, high trust, human confirms).

06.2 Topic candidate state

A candidate is taxonomy.status∈{candidate,provisional}. It is:

  • governed only as input quality (doc 09) — never a governance orphan;
  • visible in AI/search and in a clearly-marked "candidate" UI lane (doc 10), never the official tree;
  • carries confidence/evidence/provenance; below threshold ⇒ stays candidate; missing provenance ⇒ quarantine.

06.3 Promotion to born object

Promotion (candidate/provisional → active/born) is an L3 build (doc 02):

  1. recorded L2 approval (register_topic_node);
  2. COMMIT: taxonomy.status='active' + birth_registry entry + owner assigned (GOV-KG-SYS) + coverage status set (GOV) ;
  3. its axis_assignment rows for that topic flip zone='candidate'→'approved' (and reconcile into entity_labels for the topic facet);
  4. it becomes UI-visible (doc 10) and APR-gated for future edits.

06.4 Topic relations

  • Hierarchy: taxonomy.parent_id/parent_facet (broader/narrower), APR-gated, DAG-capable (multi-parent topics allowed).
  • Semantic (related/synonym/contradiction): universal_edges now; entity_relations when built (NĐ-36-01 soft relations: Đồng nghĩa/Bao hàm/Mâu thuẫn). Each carries confidence/provenance/valid_time.

06.5 Topic↔IU assignment

axis_assignment(axis_code='AX-TOPIC', entity_kind='information_unit', entity_ref=canonical_address, node_ref=taxonomy.code, zone, match_score, confidence, evidence, provenance, valid_time). Cardinality bounded by FAC-08 (single today; council may widen to multiple — a data change). match_score (technical) is separated from zone (governance) per NĐ-36-01 §MT4.

06.6 Topic merge / split / deprecate

Topic ontology change = L2 (AI proposes, human chots — NĐ-36-01 §MT8):

  • Merge: iu_merge_set-style record over taxonomy (merged → source_codes[], change_set_id, idempotency_key, rollback); winner node keeps identity; losers status='deprecated', replaced_by=winner; all axis_assignment.node_ref re-pointed (with revision bump, valid_time closed on old).
  • Split: iu_split_set-style (source → child_codes[]); assignments re-distributed by review.
  • Deprecate: status='deprecated' + replaced_by (never deleted — temporal/audit, NĐ-36-01).

06.7 Wrong-topic / drift detection (quality loops)

Runs as scanner DOTs (doc 09), raising system_issues/KG-quality findings:

  • wrong/low-confidence assignment: axis_assignment.confidence < threshold or zone='quarantine'.
  • overlap / duplicate / alias: two topics with near-identical assignment sets or fuzzy-equal names (pg_trgm); candidate for merge.
  • too-broad / too-narrow: assignment count vs governed ceilings (label_rules.skip_wide_warning; max_ungrouped).
  • drift: topic membership changes over time beyond a bound (KG kg_quality_log).
  • contradiction: conflicting semantic edges ⇒ quarantine (Điều 39 A6).
  • island: a topic used in UI but not registered/owned ⇒ axis_unregistered/coverage gap (doc 09).

06.8 Owner / approval / governance

  • Owner: GOV-KG-SYS (substrate/vocabulary), GOV-COUNCIL (policy/grouping ceilings), GOV-SIV (quality/integrity). Render via GOV-MOUT (interim).
  • Approval: all topic mutations route the L0–L4 ladder (doc 02): low-risk auto-tag = L0; routine node edit = L1/L2; merge/split/new-facet = L2; ontology-law change = L4.
  • Coverage: active topics are governed objects (doc 09); candidates are input-quality only.

06.9 Search / retrieval

  • Active/born topics → human UI tree + Qdrant + KG (full retrieval).
  • Provisional/candidate topics → AI-facing retrieval + search only (clearly marked), excluded from official navigation until promoted.
  • Vector boundary: one vector/chunk = one IU (charter); topic membership augments retrieval, never replaces IU identity.

06.10 How Điều 38 and Điều 39 participate (division of labor)

Concern Owner Role in topic workflow
content/topic anchoring from text Điều 38 (Text-as-Code, metadata L3, iu_metadata_tag, binding) derives candidate topic signals deterministically from IU bodies; "máy trước, người sau"; agent proposes, DOT/system confirms
semantic discovery & trust Điều 39 (KG: universal_edges, kg_*) clusters/links to surface candidate topics; computes trust_score; quarantines no-provenance; proposes, never self-enacts
alias / canonicalization / soft relations NĐ-36-01 (entity_relations, abbreviation_dict) dedup topic names, synonym/subsumption; 3-zone; substrate unbuilt — interim manual/universal_edges
vocabulary Điều 24 (taxonomy, facets) the topic node vocabulary itself
lifecycle / ownership / approval / UI / coverage / issues One-Roof Governance (this design) candidate→active, owner, APR, UI exposure, coverage trigger, quality issues

* unbuilt (doc 01). Topic determination thus relies on Điều 38 + Điều 39; governance does not try to compute semantic correctness itself — it owns the process (proposal/review/promotion/coverage), exactly as GPT directed.

06.11 Verdict

RECOMMENDED. The topic workflow is fully expressible on existing substrate + the two new tables (axis_registry, axis_assignment): three entry paths, one candidate→provisional→active lifecycle, merge/split/deprecate via existing change-set primitives, quality loops via the scanner, all under the L0–L4 ladder. Topic is an un-activated facet being operationalized, not an island.

Back to Knowledge Hub knowledge/dev/reports/architecture/one-roof-axis-proposal-authorization-operating-substrate-design-2026-06-01/06-topic-operational-workflow.md