Handoff S131 FINAL — Điều 31 + Dual-Trigger
Handoff S131 — Điều 31 Triển Khai (FINAL)
Ngày: 2026-03-24 | Session dài nhất: 8 missions, 14 PRs (#574-#587) Trạng thái: Hạ tầng ~90%. Vận hành chờ cron 3AM đêm nay.
TRẠNG THÁI
| Mission | Trạng thái | PRs |
|---|---|---|
| M1 Contracts | ✅ | #576 |
| M2 Dòng 11 + Migration | ✅ | #577 |
| PIPELINE-SLIM | ✅ | API |
| M3 Runner + Dedupe | ✅ | #578 |
| M3-FIX rsync + fields | ✅ | #579, #580 |
| M4 Cron + WATCHDOG | ✅ | #581-583 |
| M4B Layer 2 gom nhóm | ✅ | #584-586 |
| M5-FIX Foundation | ✅ 2/4 | #587 — Layer fix + legacy classified. Chờ cron. |
CHỜ VERIFY (đêm nay)
Cron 3AM VN = 20:00 UTC → runner chạy thật lần đầu. Sáng mai verify:
curl $DIRECTUS_URL/items/system_issues?filter[source_system][_eq]=dieu31-runner- WATCHDOG issue tồn tại?
- Dedupe occurrence_count tăng lần 2?
ROADMAP PHIÊN SAU
| # | Việc | Ưu tiên |
|---|---|---|
| 1 | Verify cron 3AM | 🔴 |
| 2 | Fix "Thành phần" Dòng 11 = "3 nhóm" | 🔴 |
| 3 | WATCHDOG visible UI (indicator 🟢/🔴/⚫) | 🔴 |
| 4 | M5 Coverage + final verify | 🔴 |
| 5 | Điều 32 draft — Luật Layer | 🟡 |
NGUYÊN TẮC KIẾN TRÚC MỚI (S131 — GHI NHỚ)
★ NGUYÊN TẮC DUAL-TRIGGER (anh Huyên, S131)
TẤT CẢ chương trình có trigger theo lịch (cron) trong toàn bộ hệ thống Incomex đều PHẢI thiết kế nhận SONG SONG 2 loại trigger:
- Trigger định kỳ (Cron): Chạy tự động theo lịch. Ví dụ: 3h sáng mỗi ngày.
- Trigger gọi (On-demand): Có thể gọi chạy BẤT KỲ LÚC NÀO bằng tay hoặc script.
Lý do: Nếu chỉ có cron → phải chờ đến lịch mới biết kết quả → mất thời gian debug. Có cửa phụ (on-demand) → test ngay, fix ngay, verify ngay. Production bình thường → cron tự chạy theo lịch.
Áp dụng: KHÔNG chỉ Điều 31 runner. Áp dụng cho TẤT CẢ: health check, backup, sync, WATCHDOG monitor, và BẤT KỲ chương trình nào chạy theo lịch trong tương lai.
Thiết kế chuẩn:
# Cron entry (trigger định kỳ)
0 20 * * * /path/to/script.sh >> /path/to/log 2>&1
# On-demand (trigger gọi — cùng script, chạy bất kỳ lúc nào)
bash /path/to/script.sh # local
ssh contabo "bash /path/to/script.sh" # remote
gh workflow dispatch integrity-recheck # GH Actions dispatch
curl -X POST /api/trigger/script-name # API trigger (nếu có)
Script PHẢI chạy được cả 2 cách mà KHÔNG cần sửa code. Cron gọi = on-demand gọi = cùng 1 script, cùng 1 logic.
Ý kiến kiến trúc khác (anh Huyên, S131)
- Điều 32 — Luật Layer: Registries đang làm tay từng dòng → không scale. Cần framework: thêm dòng = thêm config, không viết component.
- Thành phần Layer 1 = số nhóm con (3 nhóm, không phải 121 CRITICAL).
- WATCHDOG phải visible — đèn "SYSTEMS OK" trên cockpit. Cả 2 ông cùng ngủ = thảm họa.
- Cột linh hoạt — mỗi dòng có thể thêm label/cột riêng nhưng pattern nhất quán.
QUYẾT ĐỊNH KIẾN TRÚC ĐÃ CHỐT (S131)
1-11: Contract-driven, WATCHDOG, 5 types, dedupe, coverage, server-first, CI 2 tầng, E2E non-blocking, node scripts VPS, Layer consistency, runner trên VPS 12. Layer 1 "Thành phần" = số nhóm con 13. WATCHDOG phải visible trên UI 14. Điều 32 — Luật Layer (sau Điều 31) 15. Registries mỗi dòng mới = config 16. ★ Dual-Trigger: mọi cron PHẢI có on-demand trigger song song
CÁCH ĐỌC NHANH
| Tài liệu | Lệnh |
|---|---|
| Luật Điều 31 | search_knowledge("system integrity verification law v1.2") |
| Roadmap | search_knowledge("dieu31 roadmap") |
| Reports M1-M5 | search_knowledge("dieu31 M[N] report") |
| Design Feasibility | search_knowledge("design feasibility formula") |
Handoff S131 FINAL v2 | 8 missions, 14 PRs | Dual-Trigger principle added Phiên mới: search_knowledge("handoff S131") để restore context