# TRẠNG THÁI DỰ ÁN EHD S2S trên CFSv2 — chốt 2026-09-02 tối

Tài liệu bàn giao. Nhật ký chi tiết theo trình tự ở `developing.txt`.
Trạng thái chuỗi chạy đêm: **`STATUS_AUTO.md`** (tự cập nhật 5 phút/lần).

## 1. Một câu
Đã dựng xong toàn bộ đường ống từ GRIB thô đến kỹ năng theo tuần, và đã đo được
kỹ năng nền của CFS. **W1 nằm trong tầm đạt chỉ tiêu; W2–W6 nhiều khả năng không.**
Chuỗi chạy đêm đang trả lời ba câu hỏi còn lại.

## 2. Con số quan trọng nhất (3 năm kiểm định, 726 init, 541 điểm)
| Tuần | AUC 1 biến | AUC 16 biến | AUC cần | Khoảng cách |
|---|---|---|---|---|
| W1 | 0.752 | **0.779** | 0.838 | **−0.059** |
| W2 | 0.612 | 0.627 | 0.875 | −0.248 |
| W3 | 0.559 | 0.568 | 0.876 | −0.308 |
| W4 | 0.549 | 0.544 | 0.876 | −0.332 |
| W5 | 0.532 | 0.539 | 0.873 | −0.334 |
| W6 | 0.535 | 0.515 | 0.873 | −0.373 |

Hệ ECMWF (mô hình mạnh hơn) sau toàn bộ nỗ lực đạt W1 0.871 và W2–W6
0.766/0.702/0.695/0.677/0.662 — cũng không đạt 0.876. Đây là giới hạn THÔNG TIN.

## 3. Các quyết định đã ĐÓNG BĂNG
- Tập mẫu **3086 init** (flux ∩ pgb), 13 năm, đều 12 tháng — `outputs/meta/init_both.txt`
- **VALID_YEARS = [2001, 2006, 2009]** — chọn để tần suất nền khớp toàn tập
  (0.1293 vs 0.1274), xếp hạng bằng ngưỡng nền 1969–1998 nằm NGOÀI tập mẫu
- Lưới đích = **chính lưới VnGAD 0.25°**, 541 điểm, 7 vùng — không nội suy quan trắc
- Căn ngày: cách **A** (bucket 06/12/18Z ngày D + 00Z ngày D+1). Đã kiểm: A và B
  chênh 0.0002 tương quan ⇒ không quan trọng. Chỉ số hạn đúng (cực đại tại δ=0).
- Tuần: W1 = hạn 0–10, W2 = 11–17, W3 = 18–24, W4 = 25–31, W5 = 32–38, W6 = 39–45
- Khí hậu học **chỉ khớp trên năm huấn luyện** (mean/std là đại lượng được khớp ⇒ rò rỉ)

## 4. Dữ liệu đã có
| Đường dẫn | Nội dung |
|---|---|
| `outputs/Flux6h/` | 3086 init × 184 bước × 16 biến bề mặt, 27 GB, **đủ, 0 lỗi** |
| `outputs/Pgb2x/` | 40 biến mực áp suất, 2 lần/ngày — **đang trích tiếp** |
| `outputs/Cube/flux_daily.f4` | (3086, 46, 16, 32, 27) — gộp ngày, căn A |
| `outputs/Cube/weekly.npz` | Max Tx tuần mô hình/quan trắc + nhãn EHDE |
| `outputs/Cube/weekly_feats.npz` | 16 biến flux gộp tuần tại 541 điểm |
| `outputs/Obs/` | Tx quan trắc, ngưỡng `thr_hist` và `thr_train` |

## 5. Ba cái bẫy đã mắc — đừng mắc lại
1. **`find -type d` không đi theo symlink.** cfs_pgb 2001 & 2005–2011 là symlink
   sang NAS; đếm sai làm tôi kết luận nhầm "pgb chỉ có 5 năm". Luôn dùng `find -L`.
2. **Kho GRIB gốc có file hỏng** — cắt cụt, và file đủ cỡ nhưng thiếu record.
   wgrib2 KHÔNG tái đồng bộ được, nó bỏ phần còn lại của luồng mà không báo lỗi.
   `src/grib_read.py` đặt record theo DANH TÍNH (valid time, biến, mực), không theo
   vị trí, và thử lại theo lô.
3. **Ngưỡng chặn tuyệt đối lên đại lượng có đơn vị vật lý.** `sd > 1e-3` xoá sạch
   `prate` (kg m⁻² s⁻¹, sd ~1e-5). Luôn dùng ngưỡng tương đối.
4. **`pkill -f` khớp cả dòng lệnh của chính nó** và tự giết shell. Dùng `[e]xtract`.

## 6. Hạ tầng
- `/mnt/data` (NAS) **chỉ mount trên login node**, không có trên compute node
  (xác nhận bằng job 1400800). pgb các năm 2001, 2005–2011 phải trích ở login node.
- SLURM `workq`, 11 node × 20 core. `/work` còn 36 TB; `/home` chỉ còn ~100 GB
  ⇒ `outputs/` là symlink sang `/work/projects/G09/QG.25.196/claude_cfs/outputs`.
- Môi trường: `conda activate ehd` (Python 3.11, sklearn 1.9, lightgbm 4.7, torch 2.6).

## 7. Chuỗi chạy đêm — `./run_overnight.sh`
Idempotent, chạy lại là tiếp tục chỗ dừng. Theo dõi: `cat STATUS_AUTO.md`.
| Stage | Việc | Đầu ra |
|---|---|---|
| 1 | trích nốt pgb (login node, thử lại tối đa 6 lượt) | `outputs/Pgb2x/` |
| 2 | dẫn xuất biến cao không theo điểm, gộp tuần | `Cube/pgb_weekly.npz` |
| 3 | biến cao không và mô hình phi tuyến mua được bao nhiêu AUC | `AI_Results/exp_features.json` |
| 4 | thang downscaling D0 / D1 (BCSD) / D2 (ML) | `AI_Results/bcsd.json` |

## 8. Sáng mai đọc gì trước
1. `STATUS_AUTO.md` — chuỗi chạy tới đâu, có lỗi không
2. `outputs/AI_Results/exp_features.json` — **câu hỏi then chốt**: biến cao không
   và mô hình phi tuyến có kéo W1 từ 0.779 lên ≥ 0.838 không? Có nhấc được W2 không?
3. `outputs/AI_Results/bcsd.json` — BCSD có sửa được `exc_ratio` về ~1 không, và
   D2 (ML có điều kiện) có hơn D1 nhiều hơn mức trần 0.59 °C cho phép không?

## 9. Hai ngã rẽ tuỳ kết quả stage 3
- **Nếu W1 ≥ 0.838**: chốt kiến trúc, chuyển sang hiệu chỉnh ngưỡng ngoài mẫu
  (quét tỷ lệ phát báo r, KHÔNG chốt ở FBI = 1) và đóng gói nghiệp vụ cho W1.
- **Nếu W2–W6 vẫn ~0.55–0.65**: dừng dò ngưỡng và dừng đổi lớp mô hình. Phát hành
  W2–W6 dưới dạng **trường xác suất** đã hiệu chuẩn, và ghi rõ trần tín hiệu trong
  báo cáo. Hướng còn chưa đụng: tổ hợp trễ (init liên tiếp cùng ngày hiệu lực) —
  nguồn thông tin về độ bất định duy nhất mà hệ hiện chưa dùng.
