11 — Gap Matrix
11 — Gap Matrix (Branch K)
Columns: Area · Current artifact · Law SSOT · Authority SSOT (agency) · Approval SSOT · DOT/exec SSOT · Issue/Event SSOT · UI boundary · Current owner · Recommended owner · Approval path · Audit path · Rollback path · Status · Gap · Severity · Recommendation.
Severity: 🔴 high (island risk / blocks correctness) · 🟠 medium · 🟢 low.
1. grouping policy
Law: Đ24 primary/Đ29 sec · Authority: none · Approval: reclassify/rule_change · DOT: classify(B) · Issue: label_grouping_required(new) · UI: Đ28 · Current owner: none · Rec owner: GOV-COUNCIL · Approval: Đ32 · Audit: DOT-GOV-VERIFY · RB: superseded_by · Status: designed · Gap: GOVERNANCE_OWNER_GAP · 🟠 · REUSE Đ24/29 + assign agency
2. display policy (50 ceiling)
Law: none · Authority: none · Approval: schema_add+rule_change · DOT: B seed · Issue: classification_required(new) · UI: Đ28 · Current owner: none · Rec: GOV-COUNCIL · Approval: Đ32 + council clause · Audit: — · RB: rehearsed B..RB · Status: rehearsed, deferred · Gap: LAW_GAP + OWNER_GAP + LGIR · 🔴 · EXTEND Đ24/29 (P2); DEFER commit
3. threshold policy
= #2 · Gap: LAW_GAP · 🔴 · EXTEND Đ24/29 per-species ceiling
4. label rules
Law: Đ24 ✅ · Authority: none · Approval: rule_change · DOT: label DOT(live) · Issue: label-farming→system_issues(live) · UI: Đ28 · Rec owner: GOV-COUNCIL · Approval: Đ32 · Audit: Đ24 4 DOTs · RB: status · Status: live · Gap: APPROVAL_PATH_GAP (rule changes ungated) · 🟠 · REUSE + add approval gate
5. taxonomy facets (dimensions)
Law: Đ24 ✅ · Authority: none · Approval: schema_add(new facet) · DOT: label · Issue: — · UI: Đ28 · Rec: GOV-COUNCIL · Status: live(10) · Gap: OWNER_GAP + new-dimension ungated · 🟠 · REUSE + gate new dimensions
6. entity labels
Law: Đ24 ✅ · Authority: none · Approval: n/a(volume) · DOT: auto-assign(capped) · Issue: farming→system_issues · Status: live(~755k) · Gap: stale/wrong-label scanner missing · 🟢 · REUSE + add Đ31 stale-label audit
7. registry pin
Law: none · domain none · Authority: none · Approval: global=Đ32; scoped=self-service · DOT: B(global) · Issue: pin.* (new event) · UI: Đ28 · Current owner: none(future TODO) · Rec: GOV-COUNCIL(global) · Audit: — · RB: soft-retire · Status: rehearsed, deferred · Gap: LAW_GAP + DOMAIN_GAP + OWNER_GAP + LGIR · 🔴 · DEFER (needs pin law clause)
8. phantom definition
Law: LAW_DEFINITION_GAP · Authority: none · Approval: council_review(amend) · DOT: A detect · Issue: phantom_candidate/confirmed(new) · Current owner: none · Rec: GOV-COUNCIL(define)+GOV-SIV(detect) · RB: n/a · Status: draft law-patch · Gap: LAW_GAP + ISSUE_EVENT_GAP · 🔴 · DEFER → council enacts (P1)
9. orphan scanner
Law: Đ19/Đ23/Đ29§V/Đ31 ✅ · Authority: GOV-SIV (via Đ31) · Approval: act=birth_orphan/retire · DOT: fn_refresh_orphan_*(live) · Issue: data_fault halves(live) · Status: live · Gap: none (agency = SIV ok) · 🟢 · REUSE
10. pivot coverage
Law: Đ26 ✅ · Authority: none · Approval: new_dot/schema_add · DOT: dot-pivot-declare↔health · Issue: pivot_missing(new) · UI: Đ28 · Current owner: none · Rec: GOV-SIV + GOV-DOT · Audit: Đ26 8 DOTs · RB: is_active=false · Status: views committed; pivot rows deferred · Gap: OWNER_GAP + APPROVAL_PATH_GAP · 🟠 · REUSE engine + gate new pivots
11. count integrity
Law: Đ31 ✅ · Authority: GOV-SIV · Approval: n/a(auto-detect) · DOT: Đ31 watchdog(22) · Issue: system_issues+event_outbox · Status: contract designed/views committed · Gap: count_integrity_failed issue type missing · 🟠 · REUSE + register issue type
12. DOT grouping scan/propose/apply/audit
Law: Đ35 ✅ · Authority: GOV-DOT · Approval: apply=Đ32, scan/audit=auto · DOT: Đ35 paired · Issue: dot_bug · Status: not authored · Gap: DOT_AUTHORITY_GAP (unbuilt, must be Đ35) · 🟠 · NEW under Đ35 (never local)
13. Registries-Pivot UI route
Law: Đ28 ✅ · Authority: GOV-MOUT · Approval: route string(RG8) · DOT: template-coverage · Issue: render_fault · UI: design_templates · Status: LIVE (dedicated UTable HTTP200) · Gap: route-approval not recorded · 🟢 · REUSE Đ28
14. Registries-Pivot API (Nitro)
Law: Đ28+Đ41 · Authority: GOV-MOUT · Approval: API-exception (Đ41) · DOT: — · Issue: render_fault · UI: — · Status: LIVE via direct pg Pool (rpGatewayDb.ts) · Gap: convention bypass (PG→Directus→Nuxt) unapproved · 🟠 · WRAP + get Đ41 API-exception approval
15. Directus/API exposure
Law: Đ28/Đ36 · Authority: GOV-MOUT · Approval: Directus-write(RG7) · Status: not done (PK-less view 403) · Gap: blocked by view PK · 🟢 · DEFER (add view PK or ratify pg-exception)
16. legacy retirement
Law: Đ28/Đ30 · Authority: GOV-MOUT · Approval: retire+parity(RG9) · DOT: redirect · Issue: render_fault · RB: 301 snapshot · Status: old routes intact · Gap: not retired (intended) · 🟢 · DEFER retire-after-replace
17. notification/cleanup trigger
Law: Đ45/Đ31/Đ23 · Authority: GOV-SIV(raise)+GOV-COUNCIL(act) · Approval: new types + cleanup=Đ32 · DOT: scanner never self-acts · Issue/Event: new types unregistered · Status: designed, zero emitted · Gap: ISSUE_EVENT_GAP (additive) · 🟠 · EXTEND (register types, approval-gated)
18. production acceptance
Law: Đ28 Test-4 + Đ30 + Đ31 ✅ · Authority: GOV-SIV · Approval: n/a · DOT: Đ30 Playwright E2E · Issue: verify_failed · Status: 8 tests rehearsed PASS · Gap: CI gate not installed · 🟢 · REUSE
Gap roll-up
| Gap type | Areas | Severity |
|---|---|---|
| LAW_GAP | display/threshold (2,3), pin (7), phantom (8) | 🔴 |
| GOVERNANCE_OWNER_GAP (agency-orphan) | grouping (1), classification facets (5), pivot coverage (10) | 🟠 |
| APPROVAL_PATH_GAP | label-rule changes (4), new dimensions (5), new pivots (10) | 🟠 |
| DOT_AUTHORITY_GAP | grouping DOTs unbuilt (12) | 🟠 |
| ISSUE_EVENT_GAP (additive) | pivot_missing (10), count_integrity_failed (11), phantom types (8), pin/notification (17) | 🟠 |
| AUDIT_GAP | governance_audit_log unused (1 row) | 🟠 |
| LGIR | display_policy (2), registry_pin (7) | 🔴 |
| Convention island | direct-pg API (14) | 🟠 |
| Schema/law drift | Đ37 v3.3 ↔ live tables (P-DRIFT) | 🟠 |
| Law-registry coverage | Đ20/23/45 unregistered | 🟢 |
Net: 4 🔴 (all = no-law-home items + their two island tables), the rest 🟠/🟢. No correctness gap is unaddressable; every one maps to a REUSE/EXTEND/DEFER under an existing law, never a NEW-local.