KB-6949
Clone Finalization — 02 Label/Projection Drift Resolution (facet-aware) (2026-06-03)
3 min read Revision 1
one-roof-governanceclone-finalizationlabel-reconcilefacet-orthogonalitydecision-register2026-06-03
02 — Label / Projection Drift Resolution (Objective A)
Findings (entry): 4 divergent + 1 projection gap
- agents/ai-ops: topic→{LBL-006,LBL-061 facet1} vs rule {LBL-104 facet2} → divergent
- tasks/ai-ops: {LBL-006,LBL-061 f1} vs {LBL-102 f2} → divergent
- modules/workflow: {LBL-004 f1} vs {LBL-101 f2} → divergent
- workflows/workflow: {LBL-004 f1} vs {LBL-103 f2, LBL-304 f4} → divergent
- governance_registry/registry-kg: {LBL-101 f2} vs (none) → no_label_rule (projection gap, has owner)
- iu_staging_record/ai-ops: {LBL-006,LBL-061} vs (none) → no_label_rule (quarantined)
Root cause (key insight)
Cross-facet category error. The topic axis maps facet-1 (domain) labels via topic_taxonomy_map; collection label_rules assign facet-2/4 (structural) labels. They are orthogonal facets that should never intersect — flagging "divergent" was a defect in the original view logic, not a governance conflict.
Resolution (sql/A_reconcile_decision.sql, committed, reversible)
- Decision register
topic_label_reconcile_decision(coll,topic_value,decision_kind,rationale,decided_by,decided_at,tag). 6 decisions: 4×accept_orthogonal_facet, 1×accept_projection_pending (governance_registry), 1×accept_quarantine_hold (iu_staging_record). - Facet-aware v_reconcile_collection_topic_vs_label: computes facet sets via taxonomy.facet_id; classifies consistent / orthogonal_facet / divergent; honors decisions → reconciled_<kind>.
- v_reconcile_topic_projection_gap excludes accept_projection_pending / accept_quarantine_hold.
Result (verified, self-guarded before COMMIT)
All 6 → reconciled_*. v_reconcile_summary: divergent_collections=0, projection_gaps=0; topics_without_label=2, labels_without_topic=48. Critical=0. The 6 structural projection_lag drift findings dropped to 0.
Intentionally NOT changed
Did not mutate operational label_rules (app-owned). Recorded the decision instead of fabricating an app rule. topics_without_label=2 and labels_without_topic=48 left as honest separate signals.