KB-2C19

§2.6c KS.2 — Mốc 2026-03-10 hypothesis bác

5 min read Revision 1
s176pg-reconfigks2self-healing-latehypothesis-debunked

§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 f66fb29 10:41 +0700 — feat: S108-WATCHDOG — registry changelog
  • PR #473 edf7fe7 12:30 +0700 — feat: S108-SELFHEAL — system issues

Bằng chứng cứng

  1. git log --diff-filter=A — 0 commit tạo trước 2026-03-10 cho cả 2 script dot-schema-{registry-changelog,system-issues}-ensure
  2. Header script tự khai: v1.0.0 (2026-03-10): Initial version for Watchdog/SelfHeal System
  3. directus_activity 41 events IP 14.162.130.216 ngà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
  4. Grep toàn repo 0 match CREATE/TRUNCATE/DROP TABLE cho 2 bảng → không có raw SQL nào
  5. 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-RESETCLOSED (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