Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions docs/audit/2026-09-08-audit-report.html
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,9 @@ <h2>Trạng thái xử lý - cập nhật đến Round 4 (2026-09-16)</h2>
<tr><td><span class="badge b-crit">ĐÃ FIX (Round 4 - 2026-09-16)</span></td><td>HI-09, CR-08 (hoàn tất), LO-13 (một phần)</td><td>HI-09: workflow mới <code>fork-ci.yml</code> (type-check + lint + unit test) chạy trên PR + push dev/main của DOS/Crove-Cal; <code>deploy-docker.yml</code> thêm job <code>ci-gate</code> (type-check) mà build-and-push phải chờ. CR-08: Dockerfile/docker-compose bỏ default secret từ Round trước; Round 4 thay 4 giá trị secret thật trong <code>apps/api/v2/.env.example</code> bằng placeholder. LO-13: JWT example trong README-PLATFORM.md thay bằng placeholder</td></tr>
<tr><td><span class="badge b-crit">ĐÃ FIX (Round 5 - 2026-09-16, PR #74)</span></td><td>HI-12 phần runner</td><td>Runner stage chạy <code>USER node</code> (app tree copy với <code>--chown=node:node</code>, không tạo layer copy-up) sau bước apt chạy root; <code>.dockerignore</code> chặn <code>.env*</code>/<code>*.pem</code>/<code>*.key</code>/<code>*.p12</code>/<code>*.pfx</code>/<code>.husky</code> - bảo vệ cả image web lẫn api/v2 (cùng context root). Verify: <code>docker build --check</code> sạch (4 warning là ARG build-time placeholder đã xử lý ở CR-08), image build + publish sau gate thành công trên dev (run 35127273831)</td></tr>
<tr><td><span class="badge b-crit">ĐÃ FIX (Round 6 - 2026-09-17, PR #76)</span></td><td>MD-30, LO-04, LO-05</td><td>LO-04/05: 3 vị trí dùng CALENDSO_ENCRYPTION_KEY thiếu một cách âm thầm (signJwt + login getServerSideProps encode thành secret 0-byte mà jose vẫn ký/verify được; verifyCodeUnAuthenticated seed degrade thành hàm của email nạn nhân) - giờ throw theo pattern next.config.ts; start.sh prod đã refuse boot khi thiếu key từ trước nên chỉ local setup sai mới thấy lỗi. MD-30: xoá Stripe secrets.png (590KB, account ID Stripe lộ, không có chỗ nào reference); lưu ý: vẫn nên rotate test-mode keys trên Stripe dashboard vì account ID còn trong git history</td></tr>
<tr><td><span class="badge b-crit">ĐÃ FIX (Round 7 - 2026-09-19, PR #81)</span></td><td>MD-28 (phần fork chain)</td><td>Mọi action ngoài (checkout, cache, cache/restore, setup-node, docker setup-buildx/login/build-push) trong chuỗi CI + deploy của fork được pin theo commit SHA của bản release mới nhất trong cùng major (không jump major), kèm comment version để nâng cấp sau. Workflows upstream khác (labeler, cache-clean v.v.) không thuộc chuỗi chạy của fork nên giữ nguyên chờ sync.<code>deploy-docker</code>/<code>deploy-api-v2-docker</code> (giữ packages:write) không còn tag di động nào.</td></tr>
<tr><td><span class="badge b-med">CHỜ QUYẾT ĐỊNH</span></td><td>HI-13, HI-14, HI-16, HI-10</td><td>HI-13: 61 migrations cần biết DB prod dùng schema nào (lưu ý: upstream đã đóng source 2026-04 nên áp lực sync giảm). HI-14: wire workflows dispatcher là quyết định feature - tham khảo Cal.com Workflows 2.0 (v6.9) trong report feature-gap cùng ngày. HI-16: branding hardcode - giờ upstream đóng source nên việc giữ branding riêng có chủ đích là phương án hợp lý, cần chốt. HI-10: bật crons cần cấu hình secrets riêng (CRON_SECRET v.v.) trước. Khi deploy: rotate secret Supabase + env mới (CRON_SECRET, OIDC_*, BREVO/CROVE/DOS_SYNC_WEBHOOK_SECRET, DATABASE_SSL_REJECT_UNAUTHORIZED=false nếu pooler cần) + prisma migrate deploy</td></tr>
<tr><td><span class="badge b-low">CÒN LẠI (TAIL)</span></td><td>Docker phần dở + perf/cosmetic</td><td>HI-12 phần còn lại (pin actions theo SHA - trùng MD-28; turbo prune để bỏ dev deps khỏi image), LO-13 phần dở (prisma/.env symlink, pin trigger.dev), MD-16…22 (frontend perf), MD-27/28 (CI supply-chain hygiene), MD-30 (Stripe png), MD-31/32 (latent), LO-01/04/05/06/07 (một phần)/08/09/11/14</td></tr>
<tr><td><span class="badge b-low">CÒN LẠI (TAIL)</span></td><td>Docker phần dở + perf/cosmetic</td><td>HI-12 phần còn lại (pin actions theo SHA - trùng MD-28; turbo prune để bỏ dev deps khỏi image), LO-13 phần dở (prisma/.env symlink, pin trigger.dev), MD-16…22 (frontend perf), MD-27 (CI immutable installs), MD-30 đã xử lý ở Round 6, MD-31/32 (latent), LO-01/04/05/06/07 (một phần)/08/09/11/14</td></tr>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Several items in the remaining (TAIL) list are outdated or redundant:

  1. MD-30 is already marked as fixed in Round 6, so it should be completely removed from the remaining list instead of having a note.
  2. LO-04 and LO-05 were also fixed in Round 6, so they should be removed from the LO-01/04/05... list.
  3. Since MD-28 (pin actions to SHA) is now fixed in Round 7, the corresponding part of HI-12 is also resolved and can be removed from the description.
Suggested change
<tr><td><span class="badge b-low">CÒN LẠI (TAIL)</span></td><td>Docker phần dở + perf/cosmetic</td><td>HI-12 phần còn lại (pin actions theo SHA - trùng MD-28; turbo prune để bỏ dev deps khỏi image), LO-13 phần dở (prisma/.env symlink, pin trigger.dev), MD-16…22 (frontend perf), MD-27 (CI immutable installs), MD-30 đã xử lý ở Round 6, MD-31/32 (latent), LO-01/04/05/06/07 (một phần)/08/09/11/14</td></tr>
<tr><td><span class="badge b-low">CÒN LẠI (TAIL)</span></td><td>Docker phần dở + perf/cosmetic</td><td>HI-12 phần còn lại (turbo prune để bỏ dev deps khỏi image), LO-13 phần dở (prisma/.env symlink, pin trigger.dev), MD-16…22 (frontend perf), MD-27 (CI immutable installs), MD-31/32 (latent), LO-01/06/07 (một phần)/08/09/11/14</td></tr>

</tbody>
</table>

Expand Down Expand Up @@ -438,14 +439,15 @@ <h2>Danh sách phát hiện</h2>
"MD-01":"fixed","MD-02":"fixed","MD-03":"fixed","MD-04":"fixed","MD-05":"fixed","MD-06":"fixed","MD-07":"fixed","MD-08":"fixed","MD-09":"fixed",
"MD-10":"fixed","MD-11":"fixed","MD-12":"fixed","MD-13":"fixed","MD-14":"fixed","MD-15":"fixed",
"MD-16":"open","MD-17":"open","MD-18":"open","MD-19":"open","MD-20":"open","MD-21":"open","MD-22":"open",
"MD-23":"fixed","MD-24":"fixed","MD-25":"fixed","MD-26":"fixed","MD-27":"open","MD-28":"open","MD-29":"fixed","MD-30":"fixed","MD-31":"open","MD-32":"open",
"MD-23":"fixed","MD-24":"fixed","MD-25":"fixed","MD-26":"fixed","MD-27":"open","MD-28":"fixed","MD-29":"fixed","MD-30":"fixed","MD-31":"open","MD-32":"open",
"LO-01":"open","LO-02":"fixed","LO-03":"fixed","LO-04":"fixed","LO-05":"fixed","LO-06":"open","LO-07":"partial","LO-08":"open","LO-09":"open","LO-10":"open","LO-11":"open","LO-12":"fixed","LO-13":"partial","LO-14":"open"
};
const ST_LABEL = {fixed:["ĐÃ FIX","st-yes"], partial:["FIX 1 PHẦN","st-part"], decision:["CHỜ QUYẾT ĐỊNH","st-dec"], open:["CÒN MỞ","st-no"]};
const ST_NOTE = {
"MD-30":"Round 6 (PR #76): file đã xoá, không còn reference. Test-mode keys trong ảnh vẫn nên rotate trên Stripe dashboard (account ID còn trong git history).",
"LO-04":"Round 6 (PR #76): signJwt + login getServerSideProps throw khi thiếu CALENDSO_ENCRYPTION_KEY (pattern next.config.ts).",
"LO-05":"Round 6 (PR #76): bỏ fallback chuỗi rỗng, throw khi thiếu key; thuật toán md5 giữ nguyên để không vô hiệu code đã phát.",
"MD-28":"Round 7 (PR #81): pin SHA mọi action trong chuỗi CI/deploy của fork, comment kèm version. Còn phần workflow upstream không chạy trên fork.",
"CR-08":"Round 2 bỏ ARG defaults + comment studio; Round 4 (2026-09-16) thay 4 giá trị thật trong apps/api/v2/.env.example bằng placeholder.",
"HI-09":"Round 4 (2026-09-16): fork-ci.yml (type-check + lint + unit) chạy trên PR/push dev/main; deploy-docker.yml thêm ci-gate. Cron xem HI-10.",
"HI-10":"Cần cấu hình secrets riêng cho fork (CRON_SECRET…) rồi mới bật được - không bật khi thiếu secret.",
Expand Down
Loading