Handoff S178 Fix 29 → Fix 30
Phiên: S178 Fix 29 | Ngày: 2026-04-22 → 04-23
HP: v4.6.3 (14 NT) | Đ22: v1.2 Fix 29 (rev 21) | Đ43: v1.2 FINAL rev 6
§0. TÓM TẮT 1 CÂU
Auto-heal H11a DONE (y tá trực vào ca) + Đ22 §1.1 Issue Lifecycle enacted (sổ bệnh 5 cases: insert/idempotent+stamp/reopen/auto-close/noop). Executor v1.5.0. Luật Đ22 rev 21 sạch. A11 DROP chờ gate ngày 23/4.
§1. ĐÃ LÀM
| # |
Việc |
Status |
Commits |
| 1 |
H11 split PG: H11 cũ deactivated, H11a (critical, detect_and_fix) + H11b (warn, detect_only) seed trong system_health_checks. threshold_config khớp dispatch_sql contract. |
✅ |
dot d2d2f16, main 0dea298 |
| 2 |
Auto-heal H11a (y tá trực): Handler autofix_heal_description_basic trong executor. PG introspection (pg_constraint) cho PK. Anti-loop guard (post-heal empty → CRITICAL + DỪNG). 7 guards. Companion trigger UPDATE gap → caller INSERT entity_labels PROV-DOT. |
✅ |
dot d2d2f16, main 0dea298 |
| 3 |
Config gate flip: hc_heal_description_basic_autofix_enabled = 'true'. Y tá vào ca trực. |
✅ |
SQL direct |
| 4 |
Đ22 §1.1 Issue Lifecycle — auto-close (phase 1): Constraint 'resolved' + resolved_at + resolved_by. Auto-close logic: composite matching key (source, entity_type, entity_code) + success gate + scope guard + config gate. |
✅ |
dot 54d41a8→a85d148, main aadd5d3→d1c40f5 |
| 5 |
Đ22 §1.1 Case C rework (phase 3): Sửa từ "tạo mới" → REOPEN cùng row + reopen_count+1. NT1 SSOT: 1 entity + 1 check = 1 issue mãi mãi. |
✅ |
dot 6564795 (v1.5.0), main 27010e3 |
| 6 |
Case B last_seen_at metadata: Sửa luật §1.1 Case B từ "KHÔNG LÀM GÌ" → "UPDATE last_seen_at=NOW()". Schema +last_seen_at TIMESTAMPTZ. Executor đã implement từ trước — luật retroactive cho phép. |
✅ |
KB rev 19-21, SQL direct |
| 7 |
Archive row 5385: Duplicate từ phase 2 (tạo mới thay reopen). status='archived'. |
✅ |
SQL direct |
| 8 |
APR id=24: Đã xử lý từ trước — retroactive_documented, retroactive_apr_id=252, deadline 2026-04-23 22:44 UTC. |
✅ |
Đã có |
| 9 |
Dọn rác luật Đ22: Header chồng 2 bản, nhãn "5 trường hợp" trùng, metadata title v1.1. Sửa sạch rev 18→21. |
✅ |
KB rev 16-21 |
§2. QUYẾT ĐỊNH KỸ THUẬT
| # |
Quyết định |
Lý do |
| 1 |
H11a detect_and_fix thay vì detect_only |
NT12 DOT cặp: detect + heal hoàn chỉnh |
| 2 |
PG introspection cho PK (pg_constraint) thay vì hardcode WHERE code = |
NT4+NT11+NT13: không phải bảng nào cũng có cột code. Tham chiếu fn_description_context commit 8d11e88 |
| 3 |
REOPEN thay vì tạo issue MỚI khi finding tái xuất |
NT1 SSOT + Đ14: 1 entity + 1 check = 1 issue row. Tạo mới = phình DB + vòng lặp tạo-đóng vô nghĩa |
| 4 |
Case B stamp last_seen_at thay vì SKIP hoàn toàn |
Auto-close cần biết finding còn sống lần cuối. Metadata only, không đổi status/severity |
| 5 |
Sửa chui Đ22 thay vì Council |
Bổ sung HOW cho WHAT đã có (bước ④ thiếu spec từ v1.0). Không thay đổi triết lý |
| 6 |
fn_log_issue p_source = check_code thay vì 'dot-hc-executor' |
Matching key §1.1 cần source cụ thể. Agent tự phát hiện và sửa đúng |
§3. LUẬT SỬA TRONG PHIÊN
| Luật |
Version |
Thay đổi |
KB rev |
| Đ22 |
v1.2 Fix 29 |
+§1.1 Vòng đời Issue: 5 cases, matching key composite, success gate, reopen, last_seen_at, reopen_count, config hc_auto_close_enabled |
rev 21 |
§4. SỐ LIỆU PRODUCTION
system_issues: open=1374, resolved=661, archived=20
H11a findings: 0 (PASS)
H11b findings: 1238 (WARN)
system_health_checks: 29 active (H11 inactive, H11a+H11b active)
executor: v1.5.0 (+145 dòng từ v1.3.0 ban đầu)
reopen_count > 0: 1 row (id 5335, reopen_count=1)
§5. PHIÊN SAU CẦN LÀM
| # |
Việc |
Effort |
Ghi chú |
| 1 |
A11 DROP bảng cũ |
Low |
Gate mở 2026-04-23T08:17 UTC. Prompt prompt-a11 sẵn từ Fix 26. 1 câu DROP + verify. |
| 2 |
Reclassify 58 issues cũ |
Low |
source='dot-hc-executor' (label chung) → cần UPDATE source thành check_code cụ thể hoặc archive. Scope guard hiện filter hết 58 rows này. |
| 3 |
resolved_at timestamp → timestamptz |
Low |
Pre-existing, server UTC nên chưa sai. ALTER COLUMN khi tiện. Ghi TD. |
| 4 |
§4.3 trùng số |
Low |
Retrofit clause (§4.3) trùng với Hạ tầng HC (§4.3). Retrofit nên đổi thành §4.5. Lỗi từ Fix 24, ngoài scope Fix 29. |
| 5 |
B2 Backfill description AI enrichment |
High |
1,238 entity H11b WARNING. Chia batch ≤ 30, theo lớp Đ0-B. |
| 6 |
B3 Project Identity trang bìa |
Low |
Sau B2. |
| 7 |
B4 Architecture Annotation 4 lớp |
Medium |
Sau B2. |
| 8 |
Đ43 Phase 4a build script |
High |
P3+ còn lại. |
| 9 |
TD backlog |
Low |
TD-S178-31, TD-S178-32. |
§6. BÀI HỌC
| # |
Bài học |
| 1 |
Cùng bệnh lặp lại: WHERE code = hardcode — vừa chữa trong template (Fix 28) mà 10 phút sau viết lại trong prompt auto-heal. Gốc: soạn prompt ở mức logic flow, quên rà từng token đối chiếu NT. |
| 2 |
Deployment gap: Luật tách H11→H11a/H11b, KB docs tạo, nhưng PG chưa cập nhật. Assembly First vi phạm. Kiểm tra PG trước khi claim "done". |
| 3 |
Agent đọc cache cũ: Patch luật nhiều lần chồng chéo → agent photo bản cũ trước khi patch cuối → implement theo spec cũ (tạo mới thay reopen). Luật phải sạch TRƯỚC khi giao prompt. |
| 4 |
Sửa luật phải verify: Patch_document API dễ để rác (header chồng, section trùng). Sau MỖI patch → đọc lại toàn bộ file. Không bỏ qua. |
| 5 |
"Không chắc đúng = sai" áp dụng cho Desktop: Thông tin có sẵn trên KB (báo cáo fix28-h11-split-deployment-gap.md) nhưng Desktop lười không đọc → tự phân tích lại mất thời gian → cùng kết luận. Search KB TRƯỚC khi suy đoán. |
| 6 |
Luật thiếu logic = code tắc: §1.1 ban đầu nói "tái xuất → tạo MỚI" + "cùng source" matching → 48 issues rác/ngày + close nhầm. Phải tư duy NT14 (agent viết code) khi soạn luật. |
| 7 |
Sửa chui có giá trị: Đ22 §1.1 sửa chui tiết kiệm 2-3 vòng Council. Nhưng sửa chui = Desktop phải tự rà kỹ hơn vì không có AI reviewer bổ sung. |
§7. FILE THAY ĐỔI
VPS /opt/incomex/dot
| Commit |
Nội dung |
| d2d2f16 |
H11 split + auto-heal handler |
| 54d41a8 |
Auto-close phase 1 |
| a85d148 |
Auto-close phase 2 (composite key + success gate) |
| 6564795 |
Case C reopen + reopen_count (v1.5.0) |
VPS /opt/incomex
| Commit |
Nội dung |
| 0dea298 |
H11 split + auto-heal |
| aadd5d3 |
Auto-close phase 1 |
| d1c40f5 |
Auto-close phase 2 |
| 27010e3 |
Case C reopen + reopen_count |
KB
| Path |
Rev |
Nội dung |
| knowledge/dev/laws/law-22-self-healing.md |
21 |
§1.1 Issue Lifecycle, dọn rác header |
§8. ĐỌC PHIÊN SAU
search_knowledge("handoff fix29")
search_knowledge("H11 split deployment gap")
search_knowledge("Đ22 §1.1 vòng đời issue 5 trường hợp reopen")