07 — Topic Operational Workflows (hardened, semantic-uncertainty-aware)
07 — Topic Operational Workflows (hardened, semantic-uncertainty-aware)
Package:
one-roof-axis-auth-proposal-operational-hardening-build-ready-design-2026-06-02Mode: DESIGN ONLY · READ-ONLY · NO COMMIT · NO MUTATION Hardens: prior…-2026-06-01/06-topic-operational-workflow.md. Closes GPT review gap #3: "Topic promotion/birth rules need exact criteria: which candidate becomes born, who can promote, what minimum evidence is required."
7.0 What "topic" is, and what governance can and cannot do
A topic = a taxonomy node under FAC-08 "Chủ đề nội dung" (content topic), plus an axis_assignment (IU ↔ topic, with confidence/zone), plus KG discovery (universal_edges). FAC-08 is currently cardinality=single, max_labels_per_entity=0 — defined but not operationalized (doc 01).
Honest limit (forbidden claim guard): governance does not make a topic semantically correct. Semantic correctness is an open, uncertain problem. Governance makes topic assignment bounded, reviewed, owned, reversible, and correctable — it controls who may assert, what evidence is required, what is official vs candidate, and how errors are detected and fixed. AX-TOPIC is therefore an uncertain axis (doc 04 §4.2): proposal workflow, not validation.
7.1 Three entry paths (converge on one lifecycle)
| Path | Trigger | Initial store | Review |
|---|---|---|---|
| A — Human-requested | approval_requests.request_type_code='register_topic_node' |
candidate taxonomy row status='candidate' |
L1/L2 (human owner / council) |
| B — AI-proposed | approval_requests with proposed_action + assertion schema (doc 06 §6.4) |
taxonomy(status='candidate') + axis_assignment(zone='candidate'); no provenance ⇒ zone='quarantine' |
doc_reviews two-gate; AI proposes, never self-enacts |
| C — KG-assisted provisional | KG discovery (universal_edges/iu_relation) |
taxonomy(status='provisional'), axis_assignment(zone='candidate'), AI-facing only |
trust-scored; not official until promoted |
KG trust score (path C): trust = confidence × freshness_decay × provenance_weight × source_authority — a ranking signal for review prioritization, never an auto-promotion.
7.2 Promotion criteria — exact (GPT gap #3)
A topic candidate node becomes a born/official topic only if ALL hold:
- Provenance present —
provenance IS NOT NULL(else quarantine, never promoted). - Confidence ≥ axis threshold —
confidence ≥ coverage_rule(AX-TOPIC).min_confidence(a row incoverage_rule_ref, not a literal). - No unresolved blocking issue — no open
topic_overlap/wrong_topic/topic_duplicatefor the candidate (doc 09). - Approval — an L2 quorum-approved
approval_requests(proposed_action_code='register_topic_node', action='review')(≥1 president + ≥2 ai_council). - Named owner scope — an owner-per-scope assignment exists/queued (GOV-KG-SYS substrate, GOV-COUNCIL policy; SB-2).
- L3 grant — a valid
governance_build_authorizationfor the promotion step (doc 03).
Who may promote: propose — any agent/human (path A/B/C). Approve — L2 council (humans + AI-council votes). Apply (promote txn) — the sync agent under a valid L3 grant, granter ≠ executor. No agent self-promotes.
A topic ASSIGNMENT (IU↔topic) is promoted candidate→approved by the same gate at assignment grain: provenance + confidence-threshold + no blocking issue + (for already-born nodes) an L1/L2 approval per the axis's coverage_rule. Assignment promotion reconciles into entity_labels (doc 05 §5.5).
7.3 Merge / split / deprecate topic
- Merge two topics → keep one canonical, set the other
taxonomy.replaced_by, migrateaxis_assignment/entity_labelsto the survivor, record aniu_merge_set-style change-set. High-risk ⇒ L2/L3. - Split one topic → N → create children, distribute assignments by re-scoring (candidates re-reviewed),
iu_split_setchange-set. High-risk ⇒ L2/L3. - Deprecate →
taxonomy.status='deprecated'+replaced_by; excluded from official UI; assignments migrate; deprecate-not-delete (reversible). - All three are structural high-risk operations: route the ladder, carry rollback, deprecate-not-delete.
7.4 Topic quality detectors (feed doc 09)
wrong_topic, topic_low_confidence, topic_overlap/topic_duplicate/topic_alias (similarity via pg_trgm + KG), topic_too_broad/topic_too_narrow, topic_drift, topic_contradiction, topic_island (a topic with no owner / bypassing central APR). Severity computed (doc 09 §noise control); coalesced at governance grain.
7.5 Operational workflows (input/output/store/owner/approval/agent/quality/rollback/UI/coverage)
WF-1 — Approved topic → retrieve related IUs → UI reading → quality feedback
- Input: an active FAC-08 topic node. Output: ranked IU list + reader view. Store:
axis_assignment(zone='approved')+entity_labels+taxonomy. Owner: GOV-KG-SYS. Approval: read = none; feedback that changes an assignment = L1/L2. Agents: Quality (detect mis-assignment), Propose (correction). Quality checks: confidence/overlap. Rollback: corrections are new candidates (reversible). UI: official topic-detail + IU-list views (doc 10), candidate lane clearly separate. Coverage trigger: each approved assignment becomes governed (doc 09 §9.1).
WF-2 — Topic candidate → review → promotion → governance coverage
- Input: candidate/provisional node (path A/B/C). Output: born official topic. Store:
taxonomy(candidate→active)+birth_registry+ owner +axis_assignment(candidate→approved). Owner: GOV-KG-SYS+GOV-COUNCIL. Approval: L2register_topic_node+ L3 grant. Agents: Propose→Validate→Critique→(council)→Sync. Quality: §7.2 criteria. Rollback: deprecate-not-delete; revoke grant. UI: appears in official tree on promotion. Coverage trigger: scanner now expects an owner + no island (doc 09).
WF-3 — Dynamic AI/KG search that must NOT pollute official truth
- Input: an exploratory query. Output: provisional/candidate results. Store:
axis_assignment(zone='candidate')only; never writeszone='approved'orentity_labels. Owner: GOV-KG-SYS. Approval: none to explore; promotion needs WF-2. Agents: Propose/Quality. Rollback: candidates expire/retract. UI: candidate lane only (badged), excluded from official tree (doc 10 §critical rule). Coverage trigger: candidates are input-quality only — never governance orphans.
7.6 Division of labor across laws (no overlap, no island)
| Concern | Law / owner |
|---|---|
| Content anchoring from document text | Điều 38 (scaffold graph) |
| Semantic discovery & trust scoring | Điều 39 (KG) — GOV-KG-SYS |
| Alias / canonicalization (soft relations) | NĐ-36-01 / Điều 36 (citation flagged, doc 05 §5.7) — interim universal_edges |
| Controlled vocabulary | Điều 24 |
| Lifecycle / ownership / approval / UI / coverage / issues | One-Roof Governance (Điều 37 hub + Điều 32 approval + Điều 31 integrity + Điều 45 events) |
7.7 Open decisions & forbidden-compliance
- O-TOPIC-1: FAC-08
cardinality single→multipleandmax_labels_per_entity 0→N— council L2 data decision (an IU usually has several topics ⇒ likelymultiple). - O-TOPIC-2: per-axis
min_confidencethresholds (rows). - O-TOPIC-3: when KG-assisted (path C) topics may auto-create candidates vs require a human seed.
- Forbidden-compliance: design-only; no topic node/assignment/approval created; no claim that governance solves semantic correctness; read-only.