§2.6c KS.2 — Mốc 2026-03-10 hypothesis bác
§2.6c KS.2 — MỐC 2026-03-10 HYPOTHESIS BỊ BÁC
Part of: PG Reform Tools — S176 mission Prev: 04-ks1-ddl-audit-gap.md ← | → Next: 06-ks3-metadata-shells.md Khối điều tra: KS.2 (K2 supplement — verify 2026-03-10 hypothesis) Kết quả: Hypothesis bác. 2 TD mới phát sinh.
Tóm tắt
K0 hypothesis: "2 bảng system_issues + registry_changelog bắt đầu cùng ngày 2026-03-10, trùng mốc 3 ngày trước migration S115 → có thể bị reset hoặc TRUNCATE".
KS.2 verdict: KHÔNG. Cả 2 collection được TẠO MỚI HOÀN TOÀN ngày 2026-03-10, là sản phẩm của 2 PR cùng sprint S108:
- PR #471
f66fb2910:41 +0700 — feat: S108-WATCHDOG — registry changelog - PR #473
edf7fe712:30 +0700 — feat: S108-SELFHEAL — system issues
Bằng chứng cứng
git log --diff-filter=A— 0 commit tạo trước 2026-03-10 cho cả 2 scriptdot-schema-{registry-changelog,system-issues}-ensure- Header script tự khai:
v1.0.0 (2026-03-10): Initial version for Watchdog/SelfHeal System directus_activity41 events IP14.162.130.216ngày 2026-03-10:- Cụm A (registry_changelog): 03:17:35 → 03:18:12 UTC — create collection + 14 fields trong 37s, tweak 4 field 7 phút sau
- Cụm B (system_issues): 05:06:30 → 05:07:07 UTC — create collection + 14 fields trong 37s, tweak 5 field 1 phút sau
- Grep toàn repo 0 match
CREATE/TRUNCATE/DROP TABLEcho 2 bảng → không có raw SQL nào - Data liên tục từ ngày tạo → hiện tại, không có khoảng đứt
5 WHY
WHY-1 — K0 đoán nhầm vì thấy trùng mốc
MIN(detected_at) của bảng = ngày tạo bảng. Trùng MIN có thể là "cùng sinh ra 1 ngày", không phải bị reset. Bài học: trước khi suy diễn "reset", phải check git log --diff-filter=A + header script.
WHY-2 — SELF-HEALING-LATE (bài học lớn nhất KS.2)
System self-healing layer (system_issues, registry_changelog, watchdog flows) chỉ tồn tại từ 2026-03-10. Trước đó 4 tháng (2025-12-07 → 2026-03-10 = 93 ngày) directus_activity đã ghi 100k+ events nhưng KHÔNG có cơ chế phát hiện vi phạm nào. NT5 "Tự phát hiện, tự sửa" codify quá muộn — HP v4.4.0 ban hành 2026-03-30, hạ tầng self-healing dựng 2026-03-10, nhưng window 4 tháng tối không thể truy cứu pattern lỗi cũ.
WHY-3 — S108 chia 2 PR cách 2 giờ
Chuẩn DOT, không có gì sai. Nhưng tạo khó khăn cho audit "ngày X tạo bảng nào" — phải grep git log như KS.2 đã làm.
WHY-4 — Operator chạy script 13 phút TRƯỚC khi commit (10:17 vs 10:30)
Workflow "test trên cloud Directus → xanh → commit → merge". Fast iteration. Nhưng tạo cửa sổ schema drift nếu quên commit. DOT-067 dot-schema-diff + DOT-075 dot-schema-snapshot lý thuyết catch được, nhưng last_executed=bulk-set không tin được.
WHY-5 (ARGUMENT MẠNH NHẤT CHO PHƯƠNG ÁN C)
2 collection được tạo qua Directus API (curl) → có vết directus_activity → KS.2 truy được. NẾU chúng được tạo qua psql trực tiếp như dot-schema-taxonomy-pg-apply (K1), KS.2 sẽ rơi vào INVISIBLE AUDIT GAP của KS.1 và KHÔNG THỂ truy. → Tuyến L1 qua Directus API là tuyến forensic khả thi DUY NHẤT hiện nay. Đây là argument mạnh nhất cho Single Writer Gateway: ép tất cả qua 1 cổng duy nhất để có audit trail.
TD đã đóng
- TD-S176-2026-03-10-RESET → CLOSED (không có reset, K0 hypothesis bị bác)
2 TD mới phát sinh từ KS.2
| TD | Priority | Mô tả |
|---|---|---|
| TD-S176-SELF-HEALING-LATE | 🟡 Medium | 4 tháng "tối" 2025-12-07 → 2026-03-10 không có cơ chế phát hiện. NT5 codify quá muộn. Fix: (1) backfill chạy lại checker trên snapshot cũ, HOẶC (2) chấp nhận ghi nhãn "data ≤ 2026-03-10 không qua self-healing". Decide trong DESIGN. |
| TD-S176-RUN-BEFORE-COMMIT | 🟡 Medium | Operator chạy script production 13 phút TRƯỚC commit. Workflow "test cloud → xanh → commit". Tạo cửa sổ schema drift nếu quên commit. Fix: pre-commit hook HOẶC daily cron diff alert. KS.6 verify snapshot + Đợt 7. |
Bonus K4 từ KS.2
6 file SQL chưa có marker .sql-applied/ — xem 03-k2-bypass-writers.md §2.4 L3-2.
File 05 — §2.6c KS.2 | Index | S176 | Living doc