Skip to content

Ngoài skills thì còn cần nâng cấp cái gì ​

Rà soát ngày 2026-09-04, cùng đợt với nâng cấp bộ skill. Mỗi mục dưới đây là một con số đo được, không phải cảm giác. Xếp theo mức rủi ro: cái đứng trên là cái đang có thể làm hỏng production hoặc đang giấu lỗi.

1. Cổng chất lượng có lỗ theo phạm vi (rủi ro cao) ​

ci.yml chỉ chạy cổng cho phần bị đụng — đúng về chi phí, nhưng đã tạo lỗ thật:

  • Cổng last_reviewed (SRC-416) chỉ chạy khi commit đụng docs/. Sáng 04/09 hai doc (design-system/index.md, traceability.md) bị sửa mà không cập nhật ngày, và main đang đỏ cho tới lúc rà soát này vá. Đây là lần thứ hai một cổng "có nhưng không chạy đúng lúc" để lỗi lên main (lần trước: 408 em dash, Audit #013 I-5).
  • Đề xuất: các cổng rẻ và không phụ thuộc mạng (check-no-emdash, last_reviewed, check-no-clobber) nên chạy không điều kiện. Chúng tốn vài giây; một lần main đỏ tốn hàng giờ của mọi phiên.

2. Test: backend được gác, frontend gần như không ​

VùngTestFile nguồn
workers/api77193
workers/foundry13~40
apps/learn29 + e2e112
apps/marlins7111
apps/web244
apps/mentors · coral · admin · b21 · ielts0114

apps/marlins có Thư viện ebook, khoá bố mẹ, tiến độ đọc — 111 file nguồn, 7 test, không có e2e. Đây là app đứng thứ hai về lưu lượng và là app duy nhất không có cổng nào bắt lỗi runtime. Đề xuất: sao chép apps/learn/playwright.config.ts + hai spec sang marlins, nối vào scope.sh. Một buổi làm, đổi lấy cổng cho 111 file.

3. Nội dung đang nằm trong code ​

apps/marlins/src/parentCourses.ts 5.051 dòng, ebookLibrary.ts 2.915 dòng, một bài học đơn lẻ 2.271 dòng. Đây là nội dung học liệu nằm trong bundle JavaScript:

  • Sửa một câu chữ = một lần build + deploy toàn app.
  • Không ai ngoài phiên Claude Code sửa được.
  • Chữ lọt qua cổng nội dung của D1 (check-dictation, chuẩn item) vì nó không đi đường đó.

Đề xuất: đưa về content/ hoặc D1 như curriculum đã làm (Pearl là bản dẫn xuất — SRC-497), app đọc qua API. Việc lớn, nên tách SRC riêng chứ đừng làm kèm.

4. scripts/ đã thành bãi chứa ​

341 file: 166 .mjs, 143 .json dữ liệu, 25 .sql. Dữ liệu nội dung (item, lab, curriculum, whale) nằm lẫn với script chạy một lần và script còn dùng. Không phân biệt được cái nào là công cụ, cái nào là kho.

Đề xuất: scripts/data/ cho JSON, scripts/seed/ cho seed đang dùng, scripts/archive/ cho script chạy một lần đã xong. Không xoá — lịch sử nạp dữ liệu là thứ phải dựng lại được.

5. Nợ có trần đang sát trần ​

  • REQ mồ côi: nợ khai báo 112 / trần 112 — sát trần tuyệt đối. REQ mới tiếp theo mà không khai satisfies: là CI đỏ ngay. Nợ nội dung 75/77.
  • shadcn: 246 chỗ còn dùng lớp n12-* (learn 97, marlins 66/72, mentors 37, coral 33, web 13).
  • 199 migration trong một sequence duy nhất; migrate:dryrun chạy lại toàn bộ từ D1 rỗng mỗi lần commit đụng migrations/. Còn chạy tốt, nhưng là đường cong sẽ chạm trần thời gian CI.

Trần chỉ có ích khi có người hạ nó. Đề xuất: mỗi phiên đụng vào một vùng có trần thì hạ trần đó một nấc, không chỉ tránh nâng.

6. Cây làm việc đang bẩn ​

  • wt-ref/ (54MB) và .claude/worktrees/ (62MB) là bản sao repo nằm trong cây chính. Chúng làm mọi lệnh find/grep toàn repo trả kết quả nhân đôi — lượt đếm test đầu tiên của đợt rà soát này bị sai gấp đôi đúng vì chúng.
  • workers/api/src/index.ts đang sửa dở chưa commit của một phiên khác, kèm một file migration số 0196 chưa commit (nên chưa có trong repo) trong khi sequence đã tới 199 — đó là một xung đột số đang chờ xảy ra.

Đề xuất: thêm wt-ref/ và .claude/worktrees/ vào .gitignore nếu chưa có, và dọn bằng npm run wt -- --remove; chủ dự án quyết định số phận file migration 0196 chưa commit kia.

7. Còn chờ dashboard (không tự làm được) ​

AI Gateway nemo12 chưa tạo, trong khi QG-010 đòi 100% AI call đi qua gateway và AI_GATEWAY_ID đã khai sẵn trong workers/api/wrangler.jsonc. Xưởng nội dung (foundry) đang gọi model mà không có chỗ đo chi phí tập trung.

Thứ tự đề nghị làm ​

  1. Cổng rẻ chạy không điều kiện (mục 1) — nửa buổi, chặn được loại lỗi đã tái diễn hai lần.
  2. e2e cho marlins (mục 2) — một buổi.
  3. Dọn cây làm việc + quyết file migration chưa commit (mục 6) — một giờ.
  4. Sắp lại scripts/ (mục 4) — một buổi, thuần cơ học.
  5. Nội dung ra khỏi code (mục 3) — việc lớn, cần SRC riêng và quyết định của chủ dự án.