KB-18BD rev 2

H11a — Description Basic Missing (amended with description_policy filter)

4 min read Revision 2
h11adescription-governancedescription-policyamended-2026-05-04

id: H11a name: Description Basic Missing severity: CRITICAL category: description-governance law: dieu43-system-context-law §9.1 related: H11b, dieu3-metadata §2.5, dieu3-metadata §2.6 deployed: 2026-04-22 session: S178-Fix28 amended: 2026-05-04 (IU-0 Description Policy Tiering — file 15 rev2 §7.1)

H11a — Description Basic Missing (CRITICAL)

Ý nghĩa

Entity GOVERNED thuộc collection có description_policy = 'required_detailed'description IS NULL hoặc btrim(description) = ''. Đây là dấu hiệu hạ tầng auto-gen hỏng: trigger trg_desc_guard_<table> không chạy, hoặc lookup template 4 tầng trả NULL cho mọi tầng (Tier 1–4 đều thiếu). Severity CRITICAL vì hiến pháp NT6 yêu cầu mọi entity kiến trúc sinh ra phải có mô tả cơ bản.

★ 2026-05-04 amend: Chỉ flag cho collections có description_policy = 'required_detailed' (Tier A — thực thể kiến trúc). Collections structured_exempt (Tier B — IU data rows, bản ghi vận hành) được miễn vì có structured metadata thay thế. Collections unclassified (Tier C) cũng skip H11a CRITICAL — chưa classify thì chưa flag. Xem collection_registry.description_policy.

SQL Query

-- Count per table (★ amended: filter description_policy = 'required_detailed')
SELECT v.source_table,
       count(*) AS h11a_findings
FROM v_entity_full_classification v
JOIN collection_registry cr ON cr.collection_name = v.source_table
WHERE v.governance_role = 'governed'
  AND cr.description_policy = 'required_detailed'
  AND (v.description IS NULL OR btrim(v.description) = '')
GROUP BY v.source_table
ORDER BY h11a_findings DESC;

-- Detail list
SELECT v.source_table, v.entity_code, v.status
FROM v_entity_full_classification v
JOIN collection_registry cr ON cr.collection_name = v.source_table
WHERE v.governance_role = 'governed'
  AND cr.description_policy = 'required_detailed'
  AND (v.description IS NULL OR btrim(v.description) = '')
ORDER BY v.source_table, v.entity_code;

-- Count total
SELECT count(*) AS h11a_total
FROM v_entity_full_classification v
JOIN collection_registry cr ON cr.collection_name = v.source_table
WHERE v.governance_role = 'governed'
  AND cr.description_policy = 'required_detailed'
  AND (v.description IS NULL OR btrim(v.description) = '');

Hành động khi có finding

  1. Xác minh trigger trg_desc_guard_<table> tồn tại: \d <table> trong psql.
  2. Xác minh template: SELECT key FROM dot_config WHERE key LIKE 'desc_template_%'; — phải có ít nhất desc_template_default.
  3. Nếu cả hai OK mà vẫn có finding → backfill bằng UPDATE <table> SET description = '<computed>' qua fn_render_description_template(fn_description_context()).
  4. Nếu finding sau deploy hoàn tất Fix 28 Step 9 → alert CRITICAL ngay.

Viện dẫn liên luật

  • Đ3 §2.5: 2 mức mô tả (cơ bản + chi tiết). Description Policy Tiering (Tier A/B/C).
  • Đ3 §2.6: Lookup template 4 tầng SSOT dot_config.
  • Đ4 §2.1: Tiêu chí C1 (không rỗng). fn_description_birth_guard đọc description_policy.
  • Đ43 §9.1: Định nghĩa H11.
  • File 15: Description Policy Option 1 Execution Pack — collection_registry.description_policy.