04 — Local-Governance-Island Risk Review (per artifact)
04 — Local-Governance-Island Risk Review (Branch D)
For each proposed/active Registries-Pivot artifact: is it a governed object? central owner? capability? approval path? DOT rule? audit? rollback? issue/event path? island risk? disposition (REUSE/EXTEND/WRAP/NEW/DEFER/REJECT). Disposition reflects reuse-first + Đ37 + the live evidence.
LGIR = LOCAL_GOVERNANCE_ISLAND_RISK.
| # | Artifact | Governed object? | Central owner (recommended) | Capability/law | Approval path (Đ32) | DOT (Đ35) | Audit | Rollback | Issue/Event | Island risk | Disposition |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | registry_grouping_policy | yes (would be) | GOV-COUNCIL | classification (Đ24/29) | rule_change/schema_add |
propose+apply DOT | DOT-GOV-VERIFY | superseded_by | label_grouping_required | designed-away (subsumed) | REJECT as standalone → fold into Đ24/Đ29 |
| 2 | display_policy (50 ceiling) | yes | GOV-COUNCIL | none (LAW_GAP) | schema_add+rule_change |
A-tier read; B-tier seed | none yet | rehearsed BEGIN..ROLLBACK | label_grouping_required | HIGH LGIR (designed as standalone, no owner_gov binding) | EXTEND Đ24/Đ29 + DEFER commit until law clause |
| 3 | registry_pin (pin/watch) | yes | GOV-COUNCIL (global) / self-service (user/role/team) | none (LAW_GAP+DOMAIN_GAP) | global=Đ32 schema_add; scoped=self-service |
apply DOT for global | none yet | active soft-retire | pin.created/removed (new) |
HIGH LGIR (standalone NEW table, owner=future TODO) | DEFER → needs a pin/personalization law clause first |
| 4 | phantom definition | yes (concept) | GOV-COUNCIL (define) + GOV-SIV (detect) | LAW_DEFINITION_GAP | rule_change+amend (council_review) |
A-tier detect | Đ31 contract | n/a (read-only detect) | phantom_candidate/confirmed (new); reuse apr_phantom_applied |
MEDIUM (routed to council/RG4, not local — good) | DEFER → council enacts source_model-aware definition |
| 5 | threshold policy | = #2 | GOV-COUNCIL | none (LAW_GAP) | as #2 | as #2 | — | rehearsed | as #2 | HIGH LGIR | EXTEND Đ24/Đ29 (per-species ungrouped ceiling) |
| 6 | label grouping / dimensions | yes | GOV-COUNCIL | Đ24 primary ✅ | reclassify/rule_change |
label DOT (exists) | Đ24 enforcement (4 DOTs) | status/replaced_by | label-farming→system_issues | LOW (already central by Đ24 reuse) | REUSE |
| 7 | pivot coverage repair (PIV-500/301/302/303/311/321) | yes | GOV-SIV (health) via GOV-DOT exec | Đ26 primary ✅ | new_dot/schema_add (new pivot rows) |
dot-pivot-declare↔dot-pivot-health |
Đ26 enforcement (8 DOTs) | is_active=false + drop row | PIVOT_MISSING (new issue type) | LOW-MEDIUM (central engine; new-pivot lacks approval today) | REUSE engine + EXTEND (gate new pivots via approval) |
| 8 | orphan policy / scanner | yes | GOV-SIV | Đ19/Đ23/Đ26 (live) | n/a (read-only detect) | fn_refresh_orphan_* (live) |
Đ31 contract | n/a | data_fault halves (live) | LOW | REUSE |
| 9 | count-integrity contract | yes | GOV-SIV | Đ31 | n/a (detection auto) | Đ31 watchdog (22 DOTs) | self (Đ31) | n/a | system_issues + event_outbox | LOW | REUSE/WRAP as Đ31 contract |
| 10 | grouping DOTs (scan/propose/apply/audit) | yes | GOV-DOT | Đ35 | apply=B-tier(approval); scan/audit=A-tier(auto) | THE Đ35 model | dot-dot-health | backup+regress | dot_bug→system_issues | MEDIUM (not yet designed → must NOT be built local) | NEW under Đ35 (paired, never bypass) |
| 11 | Registries-Pivot UI route | yes | GOV-MOUT | Đ28 (design_templates) | route string=approval (RG8) | template-coverage DOT | Đ28 §VIII scanner | template lifecycle | render_fault | LOW (shipped via dedicated UTable) | REUSE Đ28 template registry |
| 12 | Registries-Pivot API (Nitro) | yes | GOV-MOUT/Đ28 + Đ41 | Đ28 + Đ41 (API exception) | API-exception approval | n/a | Đ31 truth-check | revert endpoint | render_fault | MEDIUM (direct-pg Pool bypasses PG→Directus→Nuxt) | WRAP + get explicit Đ41 API-exception approval |
| 13 | Directus/API exposure | yes | GOV-MOUT | Đ28/Đ36 | Directus write approval (RG7) | n/a | — | drop collection reg | — | LOW (not done; PK-less view 403 blocks) | DEFER (needs view PK or PG-exception ratified) |
| 14 | legacy retirement (/registries,/pivot) | yes | GOV-MOUT/Đ28 | Đ28/Đ30 | retire + parity gate (RG9) |
redirect DOT | Đ30 regression suite | snapshot+301 revert | render_fault | LOW (old routes intact) | DEFER retire-after-replace |
| 15 | notification/cleanup trigger | yes | GOV-SIV (raise) + GOV-COUNCIL (act) | Đ45 | new issue/event types=approval; cleanup act=Đ32 | scanner never self-acts | Đ45 register-before-emit | n/a | new types in registries | MEDIUM (new types unregistered) | EXTEND (INSERT new issue/event types, approval-gated) |
| 16 | no-hardcode enforcement | yes | GOV-SIV/Đ28 | Đ28 (NT-D1/D3) + Đ31 | n/a | CI gate + coverage DOT | Đ28 Test-4 | n/a | hardcode_violation (live) | LOW | REUSE |
| 17 | production acceptance suite | yes | GOV-SIV/Đ28+Đ30 | Đ28 Test-4 + Đ30 + Đ31 | n/a | E2E (Đ30 Playwright) | Đ30/Đ31 | n/a | verify_failed | LOW | REUSE |
Gap classification for artifacts with no central path
- display_policy / threshold (#2/#5):
LAW_GAP(no law defines a max-ungrouped ceiling) +GOVERNANCE_OWNER_GAP(classification agency-orphaned) +LGIR. - registry_pin (#3):
LAW_GAP+DOMAIN_GAP(no domain) +GOVERNANCE_OWNER_GAP+LGIR. - phantom (#4):
LAW_GAP(LAW_DEFINITION_GAP) +ISSUE_EVENT_GAP(no phantom issue type) — but owner-routing to council is correct. - grouping DOTs (#10):
DOT_AUTHORITY_GAPonly in the sense "not yet authored"; the authority model (Đ35) exists. - pivot coverage / new-pivot (#7):
APPROVAL_PATH_GAP— pivots are created via DOT but without an approval gate today (birth_orphan auto-apply only). - notification types (#15):
ISSUE_EVENT_GAP(additive INSERT). - classification/pivot agency ownership (cross-cutting):
GOVERNANCE_OWNER_GAP+AUDIT_GAP(governance_audit_log unused). - direct-pg API (#12): process exception needing explicit approval (not a data island, a convention island).
Verdict
The two artifacts that genuinely risk a local island are display_policy and registry_pin — both were designed as standalone tables with no relational governance binding and no law home. Everything else is either already central (label/orphan/pivot-engine/integrity/display) or correctly routed to council (phantom). The fix is not to add owner_gov_code columns (that pattern exists nowhere); it is to (a) assign agency owners to the classification/pivot domains, (b) give threshold/pin/phantom a law clause, and (c) route every change through the existing Đ32 spine. Until (a)–(c), display_policy / registry_pin / phantom-definition / new-pivot commits must DEFER.