KB-1D95

S145 Phase 3B Report — CHECK 11 Blocking + Reconciliation

4 min read Revision 1
reports145phase3bcheck11blockingreconciliation

S145: Phase 3B — CHECK 11 Blocking Mode + Reconciliation

Date: 2026-03-19 Status: COMPLETE PR: #550 (merged)

Pre-check S144 Results

# Item Result
1 Layer 5 click navigate PASS — 6 headings, pages 200
2 Layer 1-4 no regression PASS — all 200
3 lifecycle_log DOT entry PASS — tested deprecate/reactivate LBL-506, lifecycle_log id=834
4 Smoke test PASS — HTTP 200

Part A: CHECK 11 Blocking Mode

is_blocking Changes

Rule Name Violations Before After
1 Identity 0 true true
2 Registry 0 true true
3 Classification 221 true false
4 Connectivity 586 false false
5 Countability 0 true true
6 Birth Control 0 true true
7 Visibility -1 false false
8 Liveness 23 true false
9 Uniqueness 0 true true
10 Traceability 0 false false

Key change: Rule 8 (Liveness) changed from true to false — it now has 23 violations (was 0 in earlier check).

CHECK 11 Logic Change

Before: Always PASS (INFO mode) After: FAIL (exit 1) when blocking_violations > 0

Since blocking rules (1,2,5,6,9) all have 0 violations → CHECK 11 will PASS.

Part B: Reconciliation

fn_reconcile_fk_vs_edges() Results

Source FK Column Target FK Count Edge Count Missing Orphan Status
label_rules facet_id taxonomy_facets 37 0 37 0 DRIFT
taxonomy facet_id taxonomy_facets 55 0 55 0 DRIFT
taxonomy parent_facet taxonomy 21 21 0 0 OK
taxonomy parent_id taxonomy 21 21 0 0 OK
taxonomy replaced_by taxonomy 0 21 0 21 DRIFT
taxonomy_matrix facet_id taxonomy_facets 36 0 36 0 DRIFT

4 DRIFT, 2 OK. DRIFT expected — taxonomy_facets FK sync triggers not yet created for these collections.

fn_reconcile_rules_vs_views() Results

7/10 rule sources exist. 3 MISSING:

  • Rule 2: check_registry_coverage() — function exists but proname lookup fails
  • Rule 5: verify_counts() — same
  • Rule 7: DOT:scan_question_A — external tool, not PG object

DRV Registration

Code Name
DRV-006 fn_reconcile_fk_vs_edges
DRV-007 fn_reconcile_rules_vs_views

CHECK 13 (INFO mode)

Added to health check workflow. Reports edge counts by type (BELONGS_TO, CONTAINS, USES). Never fails — INFO only.

Verification

# Condition Result
1 Pre-check S144: 4/4 PASS
2 CHECK 11 = blocking PASS (blocking rules all 0)
3 is_blocking flags correct PASS (5 true, 5 false)
4 fn_reconcile_fk_vs_edges() runs PASS (6 rows)
5 DRIFT documented 4 DRIFT entries noted
6 DRV-006 + DRV-007 PASS
7 CHECK 13 added PASS
8 verify_counts 0 MISMATCH PASS (19/19 OK)
9 CI GREEN + PR merged PASS (#550)

New TD: taxonomy_facets FK sync triggers

label_rules.facet_id, taxonomy.facet_id, taxonomy_matrix.facet_id all have FK to taxonomy_facets but no edge sync triggers. This causes 128 missing edges (DRIFT). Recommend creating sync triggers in future mission.