KB-E85C

S145 Verify Report — Post-Deploy + Violations Investigation

4 min read Revision 1
reports145verifyviolationsreconciliation

S145-VERIFY: Post-Deploy Verification + Violations Investigation

Date: 2026-03-19 Status: VERIFIED

PHẦN 1: PRODUCTION VERIFY

Check Result
Nuxt website 200
Directus health 200
Registries page 200
Layer 5 SSR headings 1 heading found (SSR OK)
verify_counts 19/19 OK, 0 MISMATCH

Production stable: YES

PHẦN 2: VIOLATIONS INVESTIGATION

Rule 8 (Liveness): 23 violations — EXPLAINED

Root cause: 22 new trigger_registry entries (TRG-BIRTH-001..016 + TRG-EDGE-001..006) created on 2026-03-19 (S140 edge sync triggers) + 1 meta_catalog CAT-100 (leftover test from S143). None have lifecycle_log entries because they were created via direct INSERT (not through fn_transition_lifecycle).

Breakdown:

  • 16 TRG-BIRTH-* (birth gate triggers from S139)
  • 6 TRG-EDGE-* (edge sync triggers from S140)
  • 1 CAT-100 (S143 test record — cannot delete due to guard)

Conclusion: NOT regressions. These are entities created before lifecycle_log backfill covered trigger_registry. Need: fn_backfill_lifecycle_log for trigger_registry collection.

Rule 3 (Classification): 221 violations — EXPLAINED

Entities missing classification field value:

  • trigger_registry: 107 (entire collection — no classification field exists)
  • taxonomy: 55
  • checkpoint_instances: 44
  • meta_catalog: 15

Conclusion: Pre-existing — these collections either don't have a classification field or it's not populated. Not caused by S142-S145.

Rule 4 (Connectivity): 586 violations — EXPLAINED

Entities with no edges in universal_edges:

  • entity_dependencies: 141
  • dot_tools: 111
  • trigger_registry: 106
  • collection_registry: 105
  • ui_pages: 36
  • meta_catalog: 29
  • taxonomy: 26
  • checkpoint_types: 19
  • agents: 6
  • modules: 3
  • checkpoint_sets: 2
  • tasks: 2

Conclusion: Pre-existing — universal_edges only has FK-mirrored edges (450). Most collections don't have FK relationships pointing to/from them, so they have no edges. This will decrease as more edge types are added.

Stored vs Live Comparison

Rule Stored Open Live (fn_run_all_rules)
3 221 221
4 586 586
8 23 23

Stored matches live — no stale data.

PHẦN 3: RECONCILIATION DRIFT

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 cause: No FK-to-edge sync triggers exist for taxonomy_facets FK relationships. The taxonomy.replaced_by orphan edges (21) are from taxonomy self-referential sync that generates edges for parent_facet/parent_id but the replaced_by column has 0 non-null values while 21 edges exist — likely edge count mismatch from related trigger.

KẾT LUẬN

  • Production stable: YES
  • Violations explained: YES — all pre-existing, no regressions from S142-S145
  • Blocking rules (1,2,5,6,9): All 0 violations — CHECK 11 blocking safe
  • Action needed:
    1. TD: Backfill lifecycle_log for trigger_registry (22 entities)
    2. TD: Create FK-to-edge sync triggers for taxonomy_facets relationships (128 missing edges)
    3. TD: Clean up CAT-100 test record (needs deprecate_entity workaround since DELETE blocked)