Skip to content

Audit #011 — 2026-08-22 (toàn hệ lần 5) ​

Chấm trên main @ 7187eed + production thật, theo Audit Standard v0.2. Đây là lần chấm toàn hệ thứ 5 (sau #001..#004); số hiệu #011 vì dãy #005..#010 đã dùng cho audit chuyên đề. Lần đầu chấm sau khi hệ tiêu chuẩn chất lượng 3 lớp (SRC-495) được dựng — mục tiêu đặt ra là quét sạch 66 dòng CM của #004: mọi chỉ báo lần trước "chưa rà" lần này đều được đo thật. Chấm bằng 7 auditor độc lập song song, mỗi auditor một cụm bộ, cấm copy kết quả cũ.

1. Điểm ​

Điểm hệ175/255 = 68,6%
Mức trưởng thànhĐang dựng (cách mức Vững 4 chỉ báo)
🔴 KHÔNG PASS6/30
🚸 Pilot Gate15/18 — NO-GO
Đối chiếu #004 (cùng chuẩn)145/255 → 175/255 (+30), CM 66 → 18
BộĐiểm
AS-01 — Tài liệu & Đóng vết20/25 = 80%████████████████░░░░
AS-02 — Yêu cầu & Sản phẩm19/25 = 76%███████████████░░░░░
AS-03 — Kiến trúc & Hợp đồng API17/25 = 68%█████████████░░░░░░░
AS-04 — Dữ liệu & Migration19/30 = 63%████████████░░░░░░░░
AS-05 — Trí tuệ học tập & Thuật toán23/25 = 92%██████████████████░░
AS-06 — Nội dung & Tri thức8/25 = 32%██████░░░░░░░░░░░░░░
AS-07 — Bảo mật, Riêng tư & Tuân thủ22/25 = 88%█████████████████░░░
AS-08 — Tin cậy & Vận hành22/25 = 88%█████████████████░░░
AS-09 — Trải nghiệm & Design System6/25 = 24%████░░░░░░░░░░░░░░░░
AS-10 — AI Governance & Chi phí19/25 = 76%███████████████░░░░░

Điều kiện release dài hạn (§3.1 chuẩn): chưa đạt — còn 6 🔴 hỏng và 2 bộ dưới 60% (AS-06 32%, AS-09 24%), dù điểm hệ đã gần ngưỡng 70%. Định nghĩa "xong" theo REQ-DOC-09: 255/255 — còn 80 chỉ báo.

2. Tách KHÔNG PASS theo mã lý do ​

MãNghĩaSố chỉ báo% trong 80 KHÔNG PASS
HHĐã kiểm được và ĐANG HỎNG — có phản ví dụ4151%
CMCó tồn tại nhưng chưa đủ bằng chứng1823%
CXChưa xây2126%

Đọc cho đúng: CM giảm 66 → 18 (mục tiêu của lần chấm đạt được — 18 dòng còn lại phần lớn cần trình duyệt/Lighthouse/token Cloudflare, không đo được từ repo). Đổi lại HH tăng 27 → 41: khi rà thật thì lộ hỏng thật, gồm cả 4 dòng #004 từng chấm ✅ nay lật lại (03.1.4 token bị đè, 09.4.1/09.4.2 admin lẫn tiếng Việt, 07.3.3 test không tồn tại). Đó là hệ chuẩn đang làm đúng việc, không phải hệ tệ đi: 21/41 HH tập trung ở đúng hai khối nợ đã biết (hồ sơ chất lượng item + trace docs).

3. 🔴 chặn phát hành đang KHÔNG PASS (6/30) ​

Chỉ báoMãSự thật quan sát đượcHành động
AS-04.6.1 🚸HHLệch mới "0067 chưa áp remote" chưa được ghi vào migration-reconciliation.md (bản đối soát 2026-08-20 chỉ khai mồ côi 0046)B1
AS-06.3.1HH15.575 item vẫn vào thẳng published: 0 candidate, 0 item_versions; trigger 0067 chưa tồn tại trên productionB1
AS-06.4.2CXChưa có đề thật nào (exams: 240 NULL + 150 generated, 0 'real')B15
AS-06.4.3CXChưa có đề thật để kiểm lời giảiB15
AS-09.3.1 🚸*HHnpm run contrast (148 cặp): 1 cặp trượt AA — text-white/bg-ocean-500 = 3,75:1 tại ProgressViews.tsx:740B4
AS-10.4.1 🚸HHCổng chất lượng đã dựng (0067 + backfill.ts + tab Admin Ops) nhưng chấm bù chưa chạy: 15.575/15.575 item quality_score NULL, 0 item ≥2 evaluatorB1

4. 🚸 Pilot Gate — 15/18, NO-GO ​

Ba dòng đỏ: AS-04.6.1 (ghi lệch 0067 vào reconciliation — việc 10 phút sau khi deploy áp 0067), AS-03.5.3 (CM — GitHub 403 không bật được branch protection; nhánh (b) chưa chứng minh được vì trong 7 ngày có dòng mồ côi 0046 do đổi tên file 2026-08-18), AS-10.4.1 (như §3). 15 dòng còn lại đều PASS có bằng chứng hôm nay, kể cả AS-04.5.5 (diễn tập backup/restore 2026-08-22: 96 bảng · 34.978 dòng · 0/96 lệch · 8/8 vân tay khớp) và AS-07.1.1/07.2.1 (authCoverage.test.ts 8/8 pass, 192 route / 22 public có chủ đích).

5. Phát hiện HH đáng giá nhất (mới so với #004) ​

  1. Cổng chất lượng nội dung xây xong nhưng chưa cắm điện — 0067 nằm trên đĩa chưa áp remote, nút "Chấm bù" chưa bấm. Một lần chạy deploy-api.yml (workflow_dispatch apply migration) + một lần bấm chấm bù là 04.1.5, 04.6.1 tự xanh và 10.4.1 đổi trạng thái. Lưu ý cái bẫy đếm: đĩa 67 file = remote 67 dòng nhưng không phải cùng 67 (remote thừa mồ côi 0046, thiếu 0067).
  2. Ranh giới module thủng lại sau A7: ≥12 cạnh import chéo mới chưa khai ngoại lệ, trong đó có chu trình knowledge↔models (models/service→knowledge/mastery và knowledge/routes→models/service) — đúng thứ AS-03.1.2 cấm tuyệt đối.
  3. 3 cặp "bản sao y hệt" của DS-001 đã lệch nhau: N12Art (learn có IconFastForward, canonical không), Tour (font-extrabold vs font-bold), schoolsInfo (learn có informatics, marlins/web chưa) — đúng loại tai nạn im lặng mà luật copy-y-hệt sinh ra để chặn.
  4. Trace docs hụt chiều ngược: 114/356 REQ active không nằm trong satisfies của doc thiết kế nào; 50 REQ MUST vắng mặt ở bảng phủ US/WF §6; 43/509 SRC chưa canonical hóa; 10 file docs/knowledge/*.md mồ côi. check:docs xanh vì nó chỉ kiểm chiều xuôi — cần nâng cổng.
  5. GET /v1/admin/learners đọc dữ liệu learner không ghi audit_log (07.4.1) — admin/staff xem toàn bộ danh sách không để lại vết, trái nguyên tắc đã enforce cho mentor.
  6. Generator data-dictionary là gốc của 3 chỉ báo đỏ: cắt cụt CHECK đa dòng (04.3.4), không có chỗ cho mô tả nghiệp vụ (400/1.009 cột rỗng — 04.3.2), không sinh §PII (04.5.4, 07.3.1).
  7. 6 seed script ghi production bằng --remote --yes không chốt xác nhận (04.4.1) — cùng họ với lỗ hổng scripts/d1.mjs mà #004 §11 đã cảnh báo.

6. Những gì tiến thật so với #004 ​

  • Unit ngõ cụt 229 → 9 (Văn 7 · Hoá 1 · Anh 1); dưới sàn 10 câu: 234. Song ngữ subjects/strands/nodes: 0 thiếu.
  • Prerequisite graph 2/11 môn → 11/11 môn: 2.234 cạnh, DFS 0 chu trình (Q-138 đóng).
  • Đối soát production: reconciliation + schema-diff (92 bảng, 0 lệch) + backup drill mới ≤ hôm nay.
  • 8/8 engine có test hành vi; 496/496 test xanh; engine_runs 943, workflow_runs 109, 0 failed; models.md đủ 8 model.
  • AS-05 (92%), AS-07/AS-08 (88%) là ba bộ khoẻ nhất — trí tuệ học tập, bảo mật, vận hành đều có bằng chứng sống.
  • Prompt registry hoàn chỉnh (version + history + retired), AI một cửa qua Gateway, provenance ai_generated đánh dấu tới từng câu.

7. Hành động sinh ra từ audit này ​

Mỗi dòng đóng được chỉ báo nêu kèm. Thứ tự = thứ tự làm.

#ViệcĐóng chỉ báoCỡ
B1Áp 0067 qua deploy-api (workflow_dispatch) → bấm "Chấm bù tới hết" ở Admin Ops → thêm evaluator thứ 2 → ghi lệch vào migration-reconciliation.md04.1.5, 04.6.1 🔴🚸, 06.2.1-3, 06.3.1 🔴, 06.3.3/3.4, 10.4.1 🔴🚸, 10.4.2vừa (phần backfill LỚN)
B2Chủ dự án quyết DELETE dòng mồ côi 0046 khỏi d1_migrations remote (một câu, cần phê duyệt vì ghi production)04.6.2nhỏ
B3Khai/gỡ ≥12 cạnh import chéo mới; phá chu trình knowledge↔models; thêm validation.test.ts vào bảng ngoại lệ 03.1.1; miễn trừ tường minh fetch-bytes + 17 file literal nemo12.com03.1.1, 03.1.2, 03.1.3, 03.4.2vừa
B4DS: sửa cặp màu 3,75:1; .n12-deep dùng token thay vì định nghĩa lại; đồng bộ 3 cặp copy lệch (kèm script diff chặn CI); coral bỏ text-xs cho chữ đọc; admin gỡ 2 chuỗi tiếng Việt ngoài ngoại lệ; thống nhất nhãn mastery với glossary09.3.1 🔴, 03.1.4, 09.2.1/2.2/2.5, 09.4.1/4.2/4.3vừa
B5Nâng gen-reference.mjs: parse CHECK đa dòng, lớp mô tả nghiệp vụ cho cột (file overlay viết tay, generator merge), sinh §PII; bổ sung retention_policies cho 4 bảng learner còn thiếu; bổ khuyết state-machines04.3.2/3.4/3.5, 04.5.1, 04.5.4, 07.3.1vừa
B66 seed script --remote: bắt buộc in tên DB + đếm dòng + chờ xác nhận (hoặc chuyển hết sang seed-data.yml)04.4.1 (+04.4.3 có nghĩa)nhỏ
B7Trace docs: điền satisfies cho 114 REQ; bổ sung 50 REQ MUST vào §6; canonical hóa 43 SRC treo; link 10 file knowledge/ vào index; luật bump version khi sửa nội dung (đưa vào check-docs)01.1.3, 01.3.1/3.4/3.5, 01.5.2LỚN
B8PRD/ledger: sửa 3 REQ mơ hồ (UX-37 "nhanh" → ngưỡng ms…); Octopus vào SDD-011; cột Phân loại tập đóng cho legacy-feature-inventory; điền lý do 16 dòng ✍️ Đợt 1; cột Trạng thái + cột "Đã vào" trong open-questions02.1.2, 02.3.4, 02.4.4, 02.5.2/5.4/5.5vừa
B9Thêm logAccess cho admin routes đọc learner data; viết portraits/routes.test.ts07.4.1, 07.3.3nhỏ
B10Bản đồ worker→availability tier; trả lời 5 câu production-ready cho từng subsystem; mục "hỏng thì thấy gì" cho SDD mới08.1.1/1.2/1.3vừa
B11Dựng docs/reference/ui-minimalism-audit.md (route × 5 cột); đo axe/tab/touch trên ≥5 màn thật09.1.1-5, 09.3.2/3.3/3.5, 09.4.5, 09.5.1/5.2LỚN
B12Test chứng minh diagnostic dừng; dọn 2 dòng NULL cũ trong learner_model_versions05.3.4, 05.5.4nhỏ
B13Ước tính chi phí từng loại lời gọi AI vào ai-registry; token scope đọc Gateway cho phiên audit; báo cáo độ phủ spot-check 20%10.5.1, 10.5.2/5.3, 10.4.3nhỏ
B14Chốt AS-03.5.3: hoặc nâng plan GitHub bật branch protection, hoặc mở rộng chỉ báo sang "mọi thao tác ghi production qua CI" rồi chứng minh 7 ngày sạch03.5.3 🚸quyết định chủ dự án
B15Bắt đầu ngân hàng đề thật (seed 3 trường × 3 năm × 3 môn — CS-07); media pipeline khi tới lượt REQ-MED06.4.1-5 (2🔴), 06.5.1/5.2/5.4/5.5LỚN
B16Soạn câu cho 9 Unit ngõ cụt + nâng 234 unit dưới sàn theo CS-05; gắn/retire 139 lab unit=NULL; thêm schema 2xx cho PATCH /v1/content/items; chạy contract:snapshot cho route additive mới06.1.4, 03.2.2, 03.2.4 ghi chúLỚN

8. Chi tiết theo chỉ báo ​

Ký hiệu: ✅ PASS · ❌ KHÔNG PASS (kèm mã CX/CM/HH). Bằng chứng đầy đủ của từng dòng nằm trong bảng dưới; các lệnh máy chạy hôm nay: check:docs ✓, typecheck ✓, test 496/496 ✓, contract:diff ✓ (207 route), migrate:dryrun ✓ (tới 0067), gen:reference 0 drift, verify:bindings A+B ✓.

AS-01 (20/25) ​

Chỉ báoMãBằng chứng
AS-01.1.1✅find ngoài docs/ chỉ README, CLAUDE.md, skills/worktrees, nội dung app — 0 đặc tả song song
AS-01.1.2✅intake.md 509 dòng SRC đủ ngày + tóm tắt + canonical; con trỏ 510 = max+1
AS-01.1.3❌HH43/509 SRC không có hit nào ngoài intake.md (SRC-063, 085, 270, 491, 508…)
AS-01.1.4✅509 dòng = uniq = max, dãy liên tục 001..509
AS-01.1.5✅mọi file ngoại lệ 1.1.1 không đóng vai đặc tả
AS-01.2.1-5✅×5check:docs xanh — frontmatter đủ 8 trường, id duy nhất lowercase, type/status thuộc tập đóng
AS-01.3.1❌HH114/356 REQ active không nằm trong satisfies của doc thiết kế nào (REQ-LRN-09/12, REQ-BRD-07…) — check-docs chỉ kiểm chiều xuôi
AS-01.3.2✅0 dòng REQ ✔ thiếu QG (check-docs mục 3 enforce)
AS-01.3.3✅mọi sources: trỏ SRC tồn tại (dãy liên tục 1..509)
AS-01.3.4❌HH10 file docs/knowledge/*.md mồ côi — không doc nào link tới
AS-01.3.5❌HH50 REQ MUST active vắng mặt ở bảng §6 (REQ-LRN-19, INT-34, UX-13, GAM-06…); chiều US→REQ đủ 97/97
AS-01.4.1 🔴🚸✅gen:reference 0 diff (trừ last_reviewed); CI run 32536300168 trên 7187eed success
AS-01.4.2-5✅×4data-dictionary 97 bảng khớp; api.md 207 endpoint khớp router; events 22/22 khớp; đủ dòng "sinh tự động"
AS-01.5.1✅last_reviewed cũ nhất 2026-08-13 — 9 ngày
AS-01.5.2❌HHspot-check: 4 commit sửa nội dung (2800f48 +41 dòng sdd-010; 3893af1; 20069c6; ce22a52) không tăng version
AS-01.5.3✅0 link gãy (check:docs)
AS-01.5.4✅mọi hit "tuần trước/gần đây" là UI/trích dẫn/câu cấm
AS-01.5.5✅63 dòng ✍️ tập trung trong open-questions/index.md đúng quy ước

AS-02 (19/25) ​

Chỉ báoMãBằng chứng
AS-02.1.1✅28 nhóm REQ đều có heading trong PRD §5
AS-02.1.2❌HHREQ-UX-37 "phải nhanh và tinh tế" (prd-001:374); "tối ưu" GAM-06, "tốt hơn" BRD-07 — L4
AS-02.1.3✅0 hit M?/S?/C?
AS-02.1.4✅0 dòng REQ thiếu cột nguồn
AS-02.1.5✅token-overlap ≥80%: 2 cặp ứng viên, đọc tay đều false positive (proxy thô, ghi rõ giới hạn)
AS-02.2.1-4✅×497/97 US đúng format; persona thuộc tập; cột AC riêng; AC không chứa tên bảng/hàm
AS-02.2.5✅spot-check 5 US MUST → route thật (US-82 /events, US-91 truong-chuyen, US-06, US-74…)
AS-02.3.1-3✅×3JTBD đủ 4 persona; từng JTBD → REQ; 3 workflow onboarding riêng
AS-02.3.4❌CXOctopus không xuất hiện trong SDD-011 — không mô hình riêng, không khai dùng chung
AS-02.3.5✅PRD §8 map đủ 9 app; spot-check khớp App.tsx
AS-02.4.1✅check-docs buộc dòng ✔ có SDD; spot-check PLT-15/PAR-16/SCH-16 → artifact thật
AS-02.4.2✅phản ví dụ #004 đã đóng: SRC-404 → REQ-PLT-15; rà tính năng mới không thấy thiếu REQ
AS-02.4.3✅0 hàng CC-/FEAT- lẫn bảng REQ chính
AS-02.4.4❌CXlegacy-feature-inventory không có cột Phân loại tập đóng
AS-02.4.5✅§7 đủ 21 dòng ⏳/🔵 có lý do + ngày + điều kiện mở
AS-02.5.1✅140 Q đều có trả lời hoặc dòng quyết ✍️
AS-02.5.2❌HH16 dòng ✍️ Đợt 1 lý do <15 ký tự (10 dòng RỖNG; Q-023 = "đơn giản")
AS-02.5.3✅artifact rà mâu thuẫn 2026-08-15, khai luật ưu tiên + phạm vi "toàn bộ 127 câu"
AS-02.5.4❌CXbảng "Việc còn chờ chủ dự án" không có cột Trạng thái
AS-02.5.5❌CXcột "Đã vào" chưa tồn tại (grep = 0)

AS-03 (17/25) ​

Chỉ báoMãBằng chứng
AS-03.1.1❌HH2 hit ngoài modules/: index.ts (đã khai) + shared/validation.test.ts:13 KHÔNG có trong bảng ngoại lệ (bảng khẳng định "hit duy nhất")
AS-03.1.2❌HH≥12 cạnh import chéo MỚI chưa khai (forum→content, exams→knowledge+models+retention, knowledge↔models chu trình, progress→retention, onboarding→models, invitations→models…)
AS-03.1.3❌HHshowcase.ts:18 còn 1 fetch thô (bytes ảnh, có comment nhưng chỉ báo không có miễn trừ)
AS-03.1.4❌HHapps/learn/src/index.css:40-71 (.n12-deep) định nghĩa lại --background/--card/--primary/--n12-ocean-900… — lật ✅ của #004
AS-03.1.5✅9 thư mục apps ↔ README (data ghi "đã ngừng")
AS-03.2.1✅0 file OpenAPI viết tay ngoài snapshot
AS-03.2.2❌HHPATCH /v1/content/items/{itemId} không có response 2xx nào; GET /v1/media/{id} 200 không schema (bytes)
AS-03.2.3✅177/177 path /v1
AS-03.2.4 🔴🚸✅contract:diff exit 0, ci.yml:111 mọi push; 1 route additive mới chưa snapshot (không breaking)
AS-03.2.5✅probe production trả {error:{code,message}} chuẩn
AS-03.3.1-5✅×522 entry version+zod; publish↔registry khớp 22/22; tên đúng chuẩn; assertNoFreeText gọi tại events.ts:299; queue config khớp queues.md
AS-03.4.1 🔴✅0 secret hardcode source + git history
AS-03.4.2❌HH17 file ngoài api.ts chứa literal nemo12.com (tăng từ 10), chưa có danh sách miễn trừ
AS-03.4.3✅verify:bindings Lớp A xanh
AS-03.4.4❌CMLớp C cần CLOUDFLARE_API_TOKEN — chỉ CI chạy; đúng ghi chú chỉ báo, không coi là PASS đủ
AS-03.4.5✅Lớp B xanh — config.md khớp wrangler
AS-03.5.1-2✅×29 wrangler ↔ 9 workflow path filter đúng; 0 workers.dev trần
AS-03.5.3 🚸❌CMgh api → 403 (plan); nhánh (b): quy ước có, nhưng dòng mồ côi 0046 phát sinh 2026-08-18 (trong 7 ngày) → chưa chứng minh được
AS-03.5.4✅apply migration trước deploy trong deploy-api.yml
AS-03.5.5✅9/9 URL README trả 200/302, khớp custom_domain

AS-04 (19/30) ​

Chỉ báoMãBằng chứng
AS-04.1.1 🔴🚸✅67 file, 0 trùng, liên tục 0001..0067
AS-04.1.2-4✅×3IF NOT EXISTS đủ; UPDATE có WHERE, 0 DELETE; dryrun xanh (0067 áp được từ rỗng)
AS-04.1.5❌HHwrangler d1 migrations list --remote: 0067 chưa áp production
AS-04.2.1✅96/96 bảng production có PRIMARY KEY
AS-04.2.2 🔴✅0 REFERENCES users(email)
AS-04.2.3❌HH70 cột *_id không REFERENCES, không danh sách miễn trừ trong data-dictionary
AS-04.2.4-5✅×20 _at INTEGER/DATETIME; 0 json_extract/LIKE trong workers/api/src
AS-04.3.1✅96 bảng prod ↔ 97 mục dict (thừa duy nhất d1_migrations — bookkeeping)
AS-04.3.2❌HH400/1.009 cột mô tả rỗng/chép ràng buộc ("NOT NULL", "—")
AS-04.3.3✅97 bảng dict đều có trong migrations
AS-04.3.4❌HHgenerator cắt cụt CHECK đa dòng: consents.scope (7 giá trị) hiện "IN (" rỗng, goal kind (9), source_role (3)
AS-04.3.5❌HH3 cột status có CHECK vắng trong state-machines.md + 3 cột status không CHECK không có mục
AS-04.4.1❌HH6 script --remote --yes không in tên DB/không chờ xác nhận (seed-labs, seed-orca-math, seed-items-empty, attach-figures, regroup-modules, seed-items-topup)
AS-04.4.2✅seed-labs + seed-orca-math chạy 2 lần local: số dòng không đổi
AS-04.4.3❌CMPRAGMA rỗng nhưng chỉ có nghĩa khi 04.2.3 PASS (70 cột ngoài tầm pragma)
AS-04.4.4✅6/6 khóa nghiệp vụ có UNIQUE index thật trong sqlite_master
AS-04.4.5✅0 thiếu name_en/title_en (nợ #004 đã đóng qua 0058)
AS-04.5.1❌HHretention_policies 10 dòng nhưng thiếu assessment_responses, portrait_learner_sections, learner_skill_state, learner_retention
AS-04.5.2-3✅×2privacy routes + data_deletion_requests; chính sách version 365/90 ngày khai bằng số
AS-04.5.4❌CXdata-dictionary không có §PII theo trường
AS-04.5.5 🔴🚸✅drill 2026-08-22: 96 bảng · 34.978 dòng · 0/96 lệch · 8/8 vân tay · 80s
AS-04.6.1 🔴🚸❌HHlệch hiện tại (0067 chưa áp; mồ côi 0046 còn nguyên) chưa được ghi vào reconciliation (bản gần nhất 2026-08-20)
AS-04.6.2❌HH1 dòng mồ côi 0046 (đã khai nhưng chỉ báo đòi = 0)
AS-04.6.3 🔴🚸✅schema-diff 2026-08-20: 92 bảng, 0 lệch cột — có ghi lại
AS-04.6.4 🔴🚸✅0 DROP/RENAME COLUMN; 0 ADD NOT NULL thiếu DEFAULT từ mốc 2026-08-15
AS-04.6.5✅mồ côi 0046 có dòng giải thích đầy đủ trong reconciliation

AS-05 (23/25) ​

Chỉ báoMãBằng chứng
AS-05.1.1-5✅×58 trang model reference; 424/425 version deterministic; 425 snapshot có generated_at; models.md đủ 8 model (A4); đổi thuật toán = version mới
AS-05.2.1-5✅×5evidence có nguồn (knowledge/routes.ts:237); self-report qua evidence; reliability 4 nguồn; sửa lại không tạo trùng (test); engine_runs 943
AS-05.3.1✅8/8 engine có test (A5: readiness.test.ts + constraint.test.ts)
AS-05.3.2-3✅×20 source-regex test; ca rỗng đủ
AS-05.3.4❌CMadaptive có test chặn 10 câu, nhưng diagnostic chỉ dừng nhờ LIMIT 15 trong SQL, không có test chứng minh dừng
AS-05.3.5 🚸✅ci.yml:62 npm test, không
AS-05.4.1 🔴✅periodic.test.ts bất biến anchor không decay
AS-05.4.2-5✅×4công thức decay trong reference + test; cron 21:00 UTC; job chỉ ghi phái sinh; tham số khai trong reference
AS-05.5.1-3✅×3mỗi đề xuất có why; version ghi đủ; diffPlans + UI /ke-hoach
AS-05.5.4❌HHvẫn 1/425 dòng confidence NULL + 1 model_version NULL (bản ghi cũ chưa dọn)
AS-05.5.5✅admin #/models drill-down mọi phiên bản

AS-06 (8/25) ​

Chỉ báoMãBằng chứng
AS-06.1.1-2✅×21.799 node: 0 thiếu subject/grade/level/strand/unit
AS-06.1.3✅DFS thật trên 2.234 cạnh unit_prereqs, 11/11 môn: 0 chu trình
AS-06.1.4❌HH9 Unit đang hiện 0 câu (Văn 7 · Hoá 1 · Anh 1); 234 Unit dưới 10 câu (IELTS 64, SAT 64, Tin 63, AP 18…) — giảm mạnh từ 229 nhưng chưa về 0
AS-06.1.5✅0 thiếu title_en/name_en toàn bộ
AS-06.2.1-3❌×3HH15.575/15.575 item published: quality_json NULL, 0 evidence theo chiều, 0 item ≥2 evaluator
AS-06.2.4-5✅×20 item thiếu node_id; content_reports (7 dòng) nối hàng đợi thật
AS-06.3.1 🔴❌HH0 candidate, 0 item_versions; trigger 0067 chưa tồn tại trên production
AS-06.3.2✅CHECK vòng đời khai ở schema (items + item_versions)
AS-06.3.3-4❌×2HHngưỡng 0.72/0.50/≥2 có trong code nhưng publish thật không qua; published_by NULL 15.575/15.575
AS-06.3.5❌CXendpoint rollback + publishVersion đã có (mới) nhưng item_versions = 0 → chưa item nào rollback được thật
AS-06.4.1-5❌×5CX0 đề thật (exams 240 NULL + 150 generated); chưa crawler — CS-07 seed 3×3×3 chưa bắt đầu (2 dòng 🔴)
AS-06.5.1-2, 5.4-5❌×4CXbảng media 0 dòng
AS-06.5.3✅zero-asset còn đúng: 0 file ảnh trong learn/marlins, hình SVG từ tham số

AS-07 (22/25) ​

Chỉ báoMãBằng chứng
AS-07.1.1 🔴🚸✅authCoverage.test.ts 8/8 pass hôm nay — 192 route, 22 public có chủ đích, danh sách có răng
AS-07.1.2-3✅×2sessions expires/revoked/rotated; issuer+audience ghim
AS-07.1.4 🚸✅admin + dolphin đều 302 → cloudflareaccess login (curl hôm nay)
AS-07.1.5✅0 đường tắt auth
AS-07.2.1 🔴🚸✅lớp authz trong authCoverage pass — 12 module
AS-07.2.2 🔴✅1 hit .email === là chuẩn hoá token, không phải quyền
AS-07.2.3 🔴🚸✅parent/authz.test.ts 22/22 pass
AS-07.2.4✅3 route mentor đều qua requireLearnerAccess → auditLearnerAccess; mentor/authz.test.ts chứng minh sinh dòng audit (0 traffic thật chưa có — thuộc tính code đạt)
AS-07.2.5✅permissions.md khớp từng nhánh learnerAccess()
AS-07.3.1❌CMdata-dictionary không ghi mục đích thu thập cho trường dữ liệu trẻ em (gốc B5)
AS-07.3.2 🔴🚸✅consents 26 dòng + consent.test.ts
AS-07.3.3❌CMcode chặn đúng (portraits/routes.ts:183) nhưng test không tồn tại — bằng chứng #004 không tái lập được
AS-07.3.4-5✅×20 fetch ra ngoài chưa khai; ChildReport cho parent thấy dữ liệu + reason
AS-07.4.1❌HHGET /v1/admin/learners trả learner data (kèm email phụ huynh) không logAccess
AS-07.4.2-5✅×4schema đủ; sanitiseDetail redact; không sửa/xoá được; endpoint truy vấn có lọc
AS-07.5.1-3, 5.5✅×40 secret; 0 debug/seed route; zod mọi route; ratelimit + test
AS-07.5.4✅3 hit dangerouslySetInnerHTML đều là katex/template server, không input người dùng

AS-08 (22/25) ​

Chỉ báoMãBằng chứng
AS-08.1.1-3❌×3CMkhông có bản đồ worker→tier; 5 câu SDD-006 §16 chưa có văn bản trả lời; SDD mới không có mục "hỏng thì thấy gì"
AS-08.1.4 🚸*✅/v1/health 200 {"database":"ok"} — SELECT 1 thật
AS-08.1.5✅1 TODO duy nhất có mô tả, không chặn
AS-08.2.1-5✅×5idempotencyKey 10 điểm; DLQ khai; replay endpoint + DLQ 0 dòng; max_retries 5; cron withLock 6h
AS-08.3.1-5✅×59/9 observability; request_id xuyên suốt (kể cả cron); taxonomy lỗi; engine_runs 943/workflow_runs 109/0 failed; đọc được không cần log thô
AS-08.4.1 🚸✅typecheck→lint→test trước deploy ở cả 2 workflow
AS-08.4.2-5✅×4paths filter đủ 9; migration trước code; rollback.yml; chỉ migration-apply là dispatch có lý do
AS-08.5.1-5✅×5AI fallback; reliability.test KV/D1 chết vẫn trả; withTimeout 5 điểm; cache KV; lỗi tiếng người

AS-09 (6/25) ​

Chỉ báoMãBằng chứng
AS-09.1.1-5❌×5CXui-minimalism-audit.md chưa tồn tại — không artifact để chấm
AS-09.2.1❌HHhex trần trên UI: Learning.tsx:1488 #0A1F3C trên nút; index.css:85,130,154-156 gradient/nút không token
AS-09.2.2❌HH3 cặp bản-sao-y-hệt đã LỆCH: N12Art (IconFastForward), Tour (font-extrabold≠bold), schoolsInfo (informatics)
AS-09.2.3✅chỉ 6 index.css cấp app, 0 CSS theo trang
AS-09.2.4✅9 theme .theme-* chỉ đè --school-mark
AS-09.2.5❌HHcoral DataQuality.tsx:105,136 + App.tsx:789 — text-xs (12px) cho chữ đọc thật, dưới sàn 14px
AS-09.3.1 🔴❌HHnpm run contrast 148 cặp: 147 đạt, 1 trượt — text-white/bg-ocean-500 = 3,75:1 (ProgressViews.tsx:740); chưa chạy axe trên màn thật
AS-09.3.2-3, 3.5❌×3CMcần trình duyệt thật (tab/touch/keyboard) — không bịa
AS-09.3.4✅0 img thiếu alt (hit duy nhất là assertion CẤM img — đính chính #004)
AS-09.4.1-2❌×2HHadmin/ui.tsx:94,99 "chưa có"/"(chưa đặt tên)" — chuỗi Việt ngoài ngoại lệ popover, lật ✅ #004
AS-09.4.3❌HHglossary "Đang lung lay"/"Cần xây lại từ gốc" ≠ UI "Cần ôn lại"/"Nên học lại từ gốc"
AS-09.4.4✅errorResponse tiếng người, UI không phơi stack
AS-09.4.5❌CMđòi rà mắt từng màn — chưa có artifact
AS-09.5.1-2❌×2CMLCP/CLS cần Lighthouse; chưa có ngưỡng khai kèm số đo
AS-09.5.3✅spot-check 5 màn đủ loading/empty/error
AS-09.5.4✅zero-asset SVG, test cấm cả .png/.jpg
AS-09.5.5❌HHLearning.tsx:507-511 — đúng/sai chỉ hiện sau round-trip server, không chấm client-side trước

AS-10 (19/25) ​

Chỉ báoMãBằng chứng
AS-10.1.1 🔴✅một điểm env.AI.run duy nhất, qua gateway (prompts.ts:303,307)
AS-10.1.2 🔴✅một model duy nhất, không probe
AS-10.1.3-5✅×3model id tường minh; 0 AI từ frontend; 3 điểm gọi khớp ai-registry (line refs trong registry hơi cũ — nên cập nhật)
AS-10.2.1-5✅×5prompt registry đủ: version, PROMPT_HISTORY (v1 retired), purpose/input/ràng buộc, zod output
AS-10.3.1 🔴🚸✅context-builder đường duy nhất, có test
AS-10.3.2-4✅×3hạn mức dòng theo purpose (test); không tên thật/email; input_ref lưu đủ (generation_runs + runlog)
AS-10.3.5 🔴🚸✅test learner A không lọt sang B
AS-10.4.1 🔴🚸❌HH15.575/15.575 quality_score NULL; chấm bù rule-engine@1 chưa hề chạy trên production
AS-10.4.2❌HH0 item ≥2 evaluator (pipeline hỗ trợ 3 nhưng chưa gì đi qua)
AS-10.4.3❌CMcơ chế 20%-hash có trong code (quality.ts:306) nhưng chưa có báo cáo độ phủ, 0 lượt người chấm
AS-10.4.4✅source='ai-generated' + cờ ai_generated trả tới UI + provenance
AS-10.4.5✅content_reports → enqueueReview, không hư vô
AS-10.5.1❌CXai-registry không có ước tính chi phí nào
AS-10.5.2-3❌×2CMkhông token scope đọc Gateway (L7)
AS-10.5.4-5✅×2cron 1/ngày + withLock + cap; route AI chỉ staff + ratelimit

9. Trace ​

NguồnChuẩnGhi vào
SRC-495 (hệ tiêu chuẩn chất lượng 3 lớp; "pass 100% audit mới coi là xong")audit-standard v0.2 + content-standardsbáo cáo này + index + việc B1..B16