KB-3CA3 rev 6

Dự thảo sửa luật FINAL — SSOT Nội dung Luật + Hạ tầng HC — S178 Fix 24 — COUNCIL APPROVED

7 min read Revision 6
law-draftfinalcouncil-approveddieu37dieu22dieu43dieu35dieu36health-checkssots178-fix24

DỰ THẢO SỬA LUẬT — SSOT NỘI DUNG LUẬT + HẠ TẦNG HEALTH CHECK — FINAL

Phiên: S178 Fix 24 | Ngày: 2026-04-21 Trạng thái: COUNCIL APPROVE FINAL (Gemini 9.8 + GPT 9.7) Rev: rev 1 → rev 2 (8 feedback R1) → rev 2b (+§4.14) → FINAL (3 minor patch R2)


CHANGELOG

Rev Nội dung
rev 1 Dự thảo gốc: 5 luật
rev 2 8 feedback Council R1: FK, check_kind, 7 guards, pg_%, 6 bước, tiêu chí luật gốc
rev 2b +Đ37 §4.14 tham chiếu liên luật
FINAL 3 minor patch R2: (1) constraint 2 chiều, (2) format chuẩn header §4.14, (3) HC-REG +temp_%
FINAL-NT14 Soi NT14 6 câu hỏi: +3 câu enforcement cho Đ37 §4.12 (tham chiếu DOT-GOV-CONFLICT), §4.13 (sai→system_issues), §4.14 (enforcement hiện tại/tương lai)

I. SỬA ĐIỀU 37 — +3 nguyên tắc tổ chức luật (§4.12, §4.13, §4.14)

File: dieu37-governance-organization-law.md

§4.12 — SSOT NỘI DUNG LUẬT (Jurisdiction Consolidation)

Một nội dung chuyên môn chỉ được MỘT luật quản lý. Khi phát hiện chồng chéo → 6 bước:

  1. Xác định luật gốc — phát hiện qua DOT-GOV-CONFLICT (§6) + MTX-LAW-OVERLAP (§7): 2+ luật coverage_type='primary' trên cùng domain trong law_jurisdiction. Xác định luật gốc theo 4 tiêu chí: (a) sở hữu khái niệm bản chất, (b) sở hữu vòng đời/chính sách, (c) sở hữu bảng PG chuẩn nhất, (d) hòa → Hội đồng quyết + ghi biên bản
  2. Freeze nguồn cũ — no-new-write, không tạo row mới ở hạ tầng cũ
  3. Chuyển giao — ưu tiên config, migrate tối thiểu nếu hardcode cũ
  4. Verify parity — đối chiếu rows/logic trước và sau
  5. Deprecate/DROP sau 48h stable + parity pass
  6. Ghi nhận vào governance_audit_log

§4.13 — TRANG BỊ ĐỦ CÔNG CỤ (Jurisdiction Completeness)

Luật sở hữu chuyên môn → PHẢI có đủ PG table + DOT + HC. Luật khác chỉ INSERT rows.

Enforcement: Luật enacted + 0 DOT active = DOT-GOV-LAW-HEALTH (§6) ghi system_issues severity WARNING. Kiểm tra PG table presence là trách nhiệm Council khi review luật mới (NT14 HP).

§4.14 — THAM CHIẾU LIÊN LUẬT TƯỜNG MINH (Reference Traceability)

Mọi luật PHẢI khai báo dependency ở 2 mức:

Mức 1 — Block khai báo ĐẦU LUẬT (format chuẩn ★ FINAL):

## THAM CHIẾU LIÊN LUẬT
- **SSOT chính:** [luật này sở hữu nội dung gì]
- **Phụ thuộc bắt buộc:** [Đxx, Đyy — luật phải đọc trước]
- **Mượn SSOT từ:** [nội dung A → Đxx §m.n, nội dung B → Đyy §p]
- **Ưu tiên khi xung đột:** [theo HP và luật gốc đã xác định tại Đ37 §4.12]

Mức 2 — Inline TẠI CHỖ DÙNG: "theo Đ22 §4.3" / "SSOT tại Đ43 §5.8".

Không đủ nếu chỉ 1 trong 2 mức. Khi Đ38/Đ39 triển khai → metadata hóa thành FK/edge.

Enforcement hiện tại: Council review khi duyệt luật mới — reject nếu thiếu header block hoặc thiếu inline reference. Tương lai khi Đ38/Đ39 enacted: DOT quét tự động header block presence + inline reference coverage.

Sửa "KHÔNG PHẢI NHIỆM VỤ":

Self-healing CỤ THỂ PER-DOMAIN (Đ22 quản lý hạ tầng HC chung, từng luật quản lý NỘI DUNG check)


II. SỬA ĐIỀU 22 — Hạ tầng HC + HC-TRIGGER

File: law-22-self-healing.md

§4.3 — system_health_checks (★ FINAL: constraint 2 chiều):

CREATE TABLE system_health_checks (
  code TEXT PRIMARY KEY,
  name TEXT NOT NULL,
  jurisdiction TEXT NOT NULL REFERENCES normative_registry(code),
  check_kind TEXT NOT NULL DEFAULT 'detect_only'
    CHECK (check_kind IN ('detect_only','detect_and_fix','verify_only')),
  executor_type TEXT NOT NULL CHECK (executor_type IN ('builtin','sql','function')),
  executor_ref TEXT NOT NULL,
  threshold_config JSONB NOT NULL DEFAULT '{}',
  severity_on_fail TEXT NOT NULL CHECK (severity_on_fail IN ('warn','critical')),
  auto_fix_action TEXT,
  is_active BOOLEAN NOT NULL DEFAULT true,
  order_index INT NOT NULL,
  description TEXT,
  _dot_origin TEXT NOT NULL DEFAULT 'unknown',
  CONSTRAINT chk_sql_executor_path CHECK (
    executor_type != 'sql' OR executor_ref LIKE 'knowledge__current-state__queries__%'
  ),
  CONSTRAINT chk_kind_fix_consistency CHECK (
    (check_kind = 'detect_and_fix' AND auto_fix_action IS NOT NULL)
    OR (check_kind IN ('detect_only','verify_only') AND auto_fix_action IS NULL)
  )
);

§4.4 — HC-TRIGGER (7 guards):

Query PG native phát hiện bảng governed có cột description nhưng thiếu trigger. 7 guards: function exists, config gate, idempotency, lock timeout 5s, exclude scope (views/foreign tables/partitions/materialized views — chỉ BASE TABLE), post-attach verify, audit trail.

§5 bổ sung: Đ22 sở hữu hạ tầng, luật khác INSERT. Definition ≠ runtime (NT1).


III. Đ43 — Chuyển giao H1-H11 → jurisdiction='LAW-43'

IV. Đ36 — INSERT HC-REG + HC-SCHEMA → jurisdiction='LAW-36'

HC-REG filter (★ FINAL: +temp_%):

AND t.table_name NOT LIKE 'directus_%'
AND t.table_name NOT LIKE 'pg_%'
AND t.table_name NOT LIKE 'temp_%'

V. Đ35 — Chuyển H10-H14 → jurisdiction='LAW-35'


VI. THỨ TỰ THỰC HIỆN

  1. Đ37 sửa trước — nền tảng pháp lý
  2. Đ22 CREATE TABLE system_health_checks
  3. Đ43 migrate INSERT INTO...SELECT + dual-read 48h
  4. Đ35 migrate H10-H14
  5. Đ36 INSERT HC-REG + HC-SCHEMA
  6. Upload SQL queries 3 HC mới
  7. Chạy HC lần đầu → auto-fix
  8. DROP context_pack_health_checks sau 48h stable

VII. HOTFIX SONG SONG (không trong scope Council)

HP NT14 "THỰC THI ĐƯỢC NGAY" + Đ1 v3.2 +NT14 — codify bài học đã proven.

VIII. PHỤ LỤC TRIỂN KHAI (★ NT14 compliance)

File: reports/phu-luc-trien-khai-du-thao-ssot-hc-fix24.md

Bổ sung sau Council soi NT14 (Gemini + GPT đều yêu cầu). 3 appendix:

  • Appendix A — HC-TRIGGER: Detect query đầy đủ + auto-attach pseudocode PL/pgSQL + config key hc_trigger_autofix_enabled + post-verify query + fail path 6 tình huống + orchestration (DOT nào, cron nào).
  • Appendix B — Transfer Parity: Mapping cột cũ→mới (context_pack_health_checks → system_health_checks) + migration SQL INSERT...SELECT + parity check query (count + field match) + dual-read bash script + cut-over rules 3 điều kiện + DB target (directus, public).
  • Appendix C — Header Reference: Ví dụ mẫu hoàn chỉnh block header Đ22 + 3 ví dụ inline reference + rule coverage tối thiểu.

Agent triển khai ĐỌC phụ lục này cùng dự thảo chính = đủ thông tin để code không hỏi lại.