Quy tắc lưu trữ
Chủ dự án 18.10.2026 (SRC-1433): cần quy tắc file nào lên GitHub, file nào vào D1, R2 hay nơi khác. Bảng một nguồn: docs/ops/storage.
Vì sao phải chặn từ đầu
File nhị phân đã vào lịch sử git thì không gỡ được nếu không viết lại lịch sử (việc làm hỏng mọi worktree đang mở). Repo đang có 162 MB file theo dõi, phần lớn là media, seed SQL và nội dung.
Bảng tóm tắt
| Dạng | Nơi lưu |
|---|---|
| Code, config, test, migration D1 | Git |
| Docs, prototype UI | Git, trong thư mục app |
Asset app dùng, đã tối ưu (ảnh dưới 300 KB, .glb dưới 500 KB) | Git, public/ hoặc src/assets/ |
| Nội dung learner đọc (bài, câu hỏi, sách, bài SEO) | D1, nạp qua workflow seed-data (nguồn soạn và seed SQL dưới 1 MB ở git) |
Media nặng, file nguồn (video, audio bài học, .blend, PSD, render, ảnh gốc) | R2 nemo12-content/<app>/ kèm design/assets.json |
| Dữ liệu người dùng | D1 production, chỉ qua API |
| Bản sinh, log, ảnh chụp tạm | Không lưu |
| Bí mật (token, khoá) | GitHub Secrets, Cloudflare secrets |
Máy chặn
Cổng check-storage (tầng chặn) từ chối mọi file mới thuộc định dạng nguồn hoặc media (.psd, .blend, .fbx, .mp4, .mov, .wav, .zip, .sqlite...), ảnh trên 300 KB, .glb trên 500 KB và mọi file trên 1 MB. File có từ trước không bị xét (grandfathered). Ngoại lệ thật ghi vào scripts/storage-allow.json kèm lý do.