S178 Fix25 HC infrastructure deploy (Nhóm A)
S178 Fix25 — HC Infrastructure Deploy (Nhóm A)
Date: 2026-04-21
Scope: A1→A8 (Council 2-vòng APPROVE FINAL — 5 luật thống nhất HC về bảng system_health_checks)
DB: directus (PostgreSQL) | Schema: public
Quyết định kỹ thuật
1. Jurisdiction mapping
Task spec viết literal LAW-22/35/36/43. Nhưng normative_registry dùng prefix NRM-LAW- và versioned codes. FK constraint buộc match registry thật → map sang enacted codes:
| Task spec | Actual enacted code | Status |
|---|---|---|
| LAW-22 | NRM-LAW-22-V1P1 |
enacted (NRM-LAW-22 retired) |
| LAW-35 | NRM-LAW-35-V5P2 |
enacted (NRM-LAW-35 retired) |
| LAW-36 | NRM-LAW-36 |
enacted |
| LAW-43 | NRM-LAW-43 |
enacted |
2. Code conflict (A4)
context_pack_health_checks chứa H1-H9 + H11 (10 rows, không có H10). Đ35 task spec cũng dùng H10-H14 → H11 conflict với Đ43.
Quyết định: đổi tên Đ35 → DOT-H10..DOT-H14 (prefix DOT-). Executor ref giữ nguyên dot-dot-health:H10..H14 (đúng với service naming Đ35 §8.1).
Kết quả từng bước
| Bước | Mô tả | Status | Evidence |
|---|---|---|---|
| A1 | Verify normative_registry | PASS | 4 codes enacted xác nhận (mapping ở trên) |
| A2 | CREATE TABLE system_health_checks |
PASS | CREATE TABLE OK, 2 check constraints + FK |
| A3 | Migrate Đ43 H1-H11 | PASS | INSERT 0 10 — 10 rows (H1-H9, H11) |
| A4 | INSERT Đ35 DOT-H10..DOT-H14 | PASS | INSERT 0 5 — 5 rows, jurisdiction=NRM-LAW-35-V5P2 |
| A5 | INSERT HC-REG + HC-SCHEMA | PASS | INSERT 0 2 — jurisdiction=NRM-LAW-36 |
| A6 | INSERT HC-TRIGGER | PASS | INSERT 0 1 — detect_and_fix, auto_fix_action=auto_attach_trigger |
| A7 | dot_config.hc_trigger_autofix_enabled=false |
PASS | INSERT 0 1 |
| A8 | Upload 3 SQL queries vào KB | PASS | 3 × status:created, revision:1 tại knowledge/current-state/queries/ |
Verify cuối cùng
jurisdiction | count | codes
------------------+-------+---------------------------------------------
NRM-LAW-22-V1P1 | 1 | HC-TRIGGER
NRM-LAW-35-V5P2 | 5 | DOT-H10, DOT-H11, DOT-H12, DOT-H13, DOT-H14
NRM-LAW-36 | 2 | HC-REG, HC-SCHEMA
NRM-LAW-43 | 10 | H1, H11, H2, H3, H4, H5, H6, H7, H8, H9
total: 18 rows
hc_trigger_autofix_enabled | false
Tổng: 18 rows = 10 (Đ43) + 5 (Đ35) + 2 (Đ36) + 1 (Đ22). ✓
KB uploads
knowledge/current-state/queries/hc-trigger-enforcement-gap.sql(rev 1)knowledge/current-state/queries/hc-reg-unregistered-tables.sql(rev 1)knowledge/current-state/queries/hc-schema-missing-description-column.sql(rev 1)
Parent folder: knowledge/current-state/queries. API: POST /documents?upsert=true, mime_type=text/plain.
Follow-ups
- Đ43 table retire:
context_pack_health_checksvẫn tồn tại — chưa drop. Scope Fix25 Nhóm A không cover; chờ Nhóm B để migrate consumers trước khi drop. - HC-TRIGGER autofix: default
false. Sau khi verify manual 1-2 lần, flip sangtruetrong dot_config. - Đ35 code rename: nếu Đ35 service code hardcode tên
H10..H14, cần update để đọc theo code mớiDOT-H10..DOT-H14hoặc map lại. Executor_ref hiện giữdot-dot-health:H10(không prefix) — consumer phân biệt bằngexecutor_refnên OK về mặt runtime.