---
url: https://docs.nemo12.com/ops/ci-speed.md
description: >-
  Chương trình tăng tốc test và tích hợp từ 11.10.2026: số đo nền, các bước theo
  thứ tự, và bước nào đã xong.
---

# Tốc độ tích hợp

Chỉ đạo chủ dự án 11.10.2026 (SRC-1338): merge, xung đột, build, test đang làm chậm tiến độ; rà
toàn bộ rồi làm theo thứ tự lợi ích trên công sức.

## Số đo nền (30 ngày tới 11.10.2026)

| Đo | Giá trị |
| --- | --- |
| Commit | 960, khoảng 32/ngày |
| Commit chỉ để gỡ va chạm (`fix(ci)`, merge, đánh số lại, revert) | khoảng 1/20 |
| Job `E2E learn` (một shard, 2 worker) | 30-41 phút, 788 ca |
| Các job còn lại của `ci` | dưới 3 phút mỗi job |

Job e2e là đường găng của MỌI PR và mọi lượt deploy trên `main`: các cổng khác xong trong ba phút
rồi đứng chờ nó.

## Thứ tự làm

1. **Chia shard e2e** (SRC-1338). Chín shard song song: bộ learn trừ `mobileAudit` chia sáu,
   `mobileAudit` (~12 phút, một ca mỗi URL) chia ba, vì `--shard` cắt khúc liền nhau và để chung thì
   cả file rơi vào một shard (đo được: shard ấy 18 phút, các shard khác 5). Mỗi shard giữ 2 worker mặc
   định. Ba bộ nhỏ (tutors, marlins, cổng điện thoại web) mỗi bộ một shard. Tổng phút tính tiền
   gần như không đổi; thời gian chờ giảm khoảng năm lần. Đã thử 4 worker mỗi shard: năm ca chết vì
   timeout do tranh CPU, trong khi cùng bộ xanh 889/889 với 2 worker. Muốn nhanh hơn thì thêm shard. Đảo lại "một job,
   không thêm job" của SRC-1127 có chủ đích: khi ấy bộ e2e dài 15 phút.
2. **Sổ chung không còn điểm nóng ghi** (SRC-1339). Sổ intake đã chia mảnh từ SRC-1322; chỗ còn
   nóng là dòng con trỏ "Nguồn tiếp theo" trong `docs/intake.md` (244 commit/14 ngày). Bỏ con trỏ,
   mảnh sổ và `traceability.md` gộp bằng `merge=union` trong `.gitattributes`. Không chuyển sang
   "mỗi SRC một file": sau khi bỏ con trỏ thì union đã đủ, đổi 1.300 dòng thành 1.300 file là
   thêm việc mà không bớt xung đột nào.
3. **Migration bỏ luật dãy liền mạch** (SRC-1340), chỉ cấm trùng. Không đổi tên theo thời gian:
   luật liền mạch mới là thứ làm `main` đỏ khi hai nhánh gộp ngược thứ tự số; bỏ nó thì số giành
   trên remote (SRC-929) đã đủ, và không phải đổi tên 344 file đã áp lên production.
4. **Hàng đợi gộp tự dựng** (SRC-1341, [automerge](automerge.md)). Merge queue của GitHub cần gói trả
   phí; `automerge.yml` nay cập nhật nhánh PR và chờ CI mới khi `main` đã đổi ở cùng vùng code.
5. **Tách file code nóng** (SRC-1342). Đo 14 ngày: `apps/web/src/App.tsx` + `site/routes.ts` (99
   commit), `apps/learn/src/App.tsx` (42), `workers/api/src/index.ts` (36). Đã tách
   `apps/learn/src/App.tsx` (2.138 dòng) thành `learnRoutes.ts`, `LearnCockpit.tsx`, `LearnRoot.tsx`,
   `ProfilePage.tsx`; chỉ di chuyển code. Chọn file này trước vì không PR nào đang mở sửa nó, nên
   việc tách không làm vỡ nhánh của ai. `apps/web` và `workers/api` để sau: đang có PR mở sửa chúng,
   và thứ tự `app.route` của Hono có nghĩa nên không tự đăng ký route được nếu không kiểm từng chỗ.
6. **Gộp cổng kiểm**: không làm. Đo 11.10.2026, `check:docs` 9 giây, `check:code` 12 giây, đã chung
   một runner từ SRC-948. Mỗi cổng còn lại canh một tai nạn vẫn có thể xảy ra.
