KB-4123

03 — Governance Attachment Model (two-layer)

3 min read Revision 1
registries-pivotgovernanceattachment-modeltwo-layerno-islanddieu24dieu292026-06-03

03 — Governance Attachment Model (Objective B)

Two-layer model (production has two governance layers at different readiness): L1 Classification (Đ24/Đ29): taxonomy_facets(10)/taxonomy(58)/entity_species(42)/label_rules(38)/entity_labels(820k) — LIVE — RP attaches NOW read-only. L2 Object-ownership (Gov Phase-1): ownership/gap/axis/topic/scanner/events, gate=ospa — INERT/gated — RP attaches only after ospa≥1 rollout. RP classification confusion = L1 problem (solvable today by mapping). Group accountability/ownership = L2 problem (must wait).

Three attachment paths: (1) production-live L1 read-only (PROD-LIVE label); (2) clone-proven future L2 design/test (CLONE-PROVEN label, /tmp/clone_finalized_2026-06-03.dump via ssh); (3) post-rollout L2 live (POST-ROLLOUT label).

Per-field spec:

  • registry_group: SPLIT. domain → L1 taxonomy FAC-02 (LBL-101/104/105 exact; quy_trình/dữ_liệu provisional). shape → RP-local pivot_kind (NOT governed). Validation: domain value must exist in taxonomy under active facet. Forbidden: don't map shape-kinds to facets; don't claim owned (L2 gap=210).
  • species: → L1 entity_species.species_code (42 governed). Validation: non-null must equal active species_code; null only on matrix pivots. Forbidden: species='species' is governed meta-species, keep don't auto-delete.
  • composition_level: → L1 entity_species.composition_level canonical {atom,molecule,compound,meta}. Validation: should equal governed species' composition; material/building/product invalid; matrix is RP-local shape. Forbidden: don't treat drill-depth as composition.

No-island guarantees (G3/G5): RP reads entity_species/taxonomy/scopes/registry; creates no parallel vocab/ownership tables; mapping view LEFT JOINs (copies nothing); Đ26 honored (pivots DOT-executed, KHÔNG INSERT tay).

Reconciliation of bridge: bridge said vocab for registry_group/species/composition = axis-absent/clone-only; LIVE read corrects — L1 FAC-02 + entity_species are LIVE (axis was wrong layer). Ownership still gated (L2) unchanged. No guardrail weakened.

Back to Knowledge Hub knowledge/dev/reports/architecture/registries-pivot-governance-attach-and-mapping-build-2026-06-03/03-governance-attachment-model.md