Open Questions · Đợt tự trả lời 2026-08-13
Một phần của Open Questions. đợt AI tự trả lời ngày 2026-08-13 chờ chủ dự án duyệt, mỗi câu có ID Q-, câu trả lời và trạng thái.
Đợt tự trả lời 2026-08-13 — AI quyết, chờ duyệt
Chủ dự án chỉ đạo: "Hãy tự hỏi, rồi tự phân tích, rồi tự trả lời, tự lưu các câu trả lời." Các quyết định ✍️ dưới đây có hiệu lực để tiến hành build; sửa bất kỳ dòng nào là đủ để tôi điều chỉnh lại hệ thống.
Đợt 1 — các câu chưa có trả lời từ chủ dự án
| ID | ✍️ Quyết định | Lý do ngắn |
|---|---|---|
| Q-001 | Phase 1: web đủ 6 school pages + learn bắt đầu với Turtle (Toán 6–9) | Turtle là foundation, có sẵn knowledge graph + labs legacy; Shark cần exam-intelligence phức tạp hơn |
| Q-003 | Mốc mềm: khai giảng tháng 9/2026 | chưa có mốc chính thức từ chủ dự án |
| Q-007 | Tự xây auth: Google GSI id_token + opaque session (SDD-001 §6), không dùng Clerk/Auth0 | Cloudflare-first, không phụ thuộc ngoài, pattern sutucon đã chạy thật |
| Q-008 | Có: 1 family n learners, 1 learner n guardians; thêm role supporter kế thừa family portal | khớp REQ-ACC-03 |
| Q-009 | Mentors nội bộ (10 người) phase 1 | quy mô Q-004 |
| Q-010 | Teacher ⊂ Dolphins (một role mentor); Staff = admin + content team | đơn giản RBAC phase 1; tách role khi class-ops bật |
| Q-011 | UI tiếng Việt mặc định, kiến trúc i18n-ready (string catalog), tiếng Anh sau | thị trường VN trước |
| Q-012 | Việt Nam trước; edge Cloudflare đủ cho learner ở nước ngoài lẻ tẻ | |
| Q-013 | Xác nhận — giữ phong cách docs hiện tại | |
| Q-014 | Entitlement theo program/package (kế thừa membership_entitlements) + free diagnostic tier; bảng giá chốt sau | không chặn thiết kế enrollment |
| Q-015 | Chưa thanh toán online phase 1 — chuyển khoản + admin cấp entitlement; cổng (VNPay/MoMo) phase sau | giảm scope + compliance |
| Q-016 | Content: AI sinh qua pipeline SDD-003, multi-evaluator là cổng mặc định; người chỉ spot-check theo ngưỡng rủi ro, human-in-loop giữ nguyên cho moderation an toàn trẻ em. Sửa 2026-08-15 — bản cũ ("human review" cho mọi nội dung) mâu thuẫn với REQ-PLT-12 AI First (SRC-035) | QG-006, QG-010 |
| Q-017 | Toán 6–9 (Turtle) trước | khớp graph + labs legacy |
| Q-018 | GDPT 2018 là chuẩn chính; framework Cambridge/IELTS/SAT/AP nằm trong Squid. Sửa 2026-08-15 — bản cũ ghi "Squid/Ray", nhưng Ray đã bỏ (SRC-081) | |
| Q-019 | Item Bank khởi tạo: migrate diagnosis_question_registry + AI generate + review; mục tiêu 500–1.000 items Toán 6–9 | |
| Q-020 | Workers AI (llama 3.3) mặc định (rẻ, on-platform); Claude qua AI Gateway cho evaluation chất lượng cao; router theo task (dự định đặt ở packages/ai; tính tới 2026-08-20 chưa dựng gói này, mọi lời gọi AI đi qua workers/api/src/shared/prompts.ts) | cost/quality cân bằng |
| Q-021 | Phase 1 AI backstage only (chấm, đánh giá content, giải thích recommendation); AI tutor chat trực tiếp với trẻ em = phase sau + guardrails riêng | an toàn K12 |
| Q-022 | Cost control qua AI Gateway: bật cache (không skipCache như legacy), rate limit, cost dashboard, budget alert | RISK-022 |
| Q-023 | npm workspaces (chưa Turborepo — path-filtered CI đủ cho quy mô hiện tại) | đơn giản |
| Q-024 | Một D1 nemo12-platform; tách content DB thành ADR riêng khi content vượt ngưỡng | tránh premature split |
| Q-025 | React 19 + TypeScript xác nhận cho mọi app; Vue chỉ trong VitePress | |
| Q-026 | GitHub Actions (pattern 2 repo legacy đã ổn định); repo GitHub dac2205/nemo12.com ✅ đã tạo | |
| Q-027 | ✅ Đã init, branch main, private repo | done |
| Q-028 | Staging: workers env staging + subdomain staging khi có app thật; chưa dựng phase scaffold | |
| Q-030 | Theo Nghị định 13/2023: consent parent-first, minimization, retention policy, quyền xóa — đã vào REQ-SEC-04/REQ-MED-05 | |
| Q-031 | Feature-level (~100 REQ hiện tại) | đủ traceability, không ngập |
| Q-032 | ✅ Đồng ý: 📋 manual → 🤖 CI khi có code | |
| Q-033 | Mermaid | render VitePress + AI đọc được |
| Q-034 | Chỉ chủ dự án approve; thêm approved_by frontmatter khi cần |
Đợt 2 — câu hỏi phát sinh từ audit legacy (Q-035 →)
| ID | Câu hỏi | ✍️ Quyết định |
|---|---|---|
| Q-035 | Hợp nhất 2+ learner models legacy thế nào? | Chuẩn SDD-002 (mastery+confidence+trajectory per canonical skill); chac/lung_lay/hong chỉ là nhãn presentation |
| Q-036 | Evidence 3 shapes khác nhau? | Chuẩn SDD-002 §5, idempotency key kiểu sutucon |
| Q-037 | Nguồn seed canonical graph? | TS graphs chuyenchon (Toán/Văn/Anh 6.5k LOC) là seed; đối chiếu mori seeds; một registry D1 duy nhất |
| Q-038 | Kho đề thi thật tách hay gộp Item Bank? | Tách: exam_problems là registry Shark, liên kết Item Bank qua relations |
| Q-039 | 4F Reflection là của riêng Octopus? | Capability chung (Reflection experience type), bật Octopus trước |
| Q-040 | Member Intelligence (10 dimensions)? | Hoãn — REQ-PAR-08 ⏳; Parent Model phase 1 dùng observation + behavior |
| Q-041 | Shark exam/school intelligence? | Adopt — differentiator của Shark; phase 2 (sau Turtle learn core); web /shark hiển thị nội dung tĩnh trước |
| Q-042 | App content plane (mori mới) khi nào? | Superseded 2026-08-14 bởi SRC-031: content plane là app riêng Coral (coral.nemo12.com); admin console chỉ còn vận hành (roles · learners · model versions · runs). Giữ dòng này để không ai quay lại phương án "admin kiêm content plane" |
| Q-043 | CAPOS dependency? | Không phụ thuộc — port content cần thiết vào registry Nemo12 |
| Q-044 | Chiến lược 288 labs? | ✅ Đã chốt bằng SDD-010: 4 engines data-driven + 29 sim components + content migration |
| Q-045 | Class operations (lớp/lịch/điểm danh)? | Adopt — blended cần; schema thiết kế sẵn, UI bật ở phase mentors app (REQ-MEN-04 giữ ⏳ tới lúc đó) |
| Q-046 | Gamification? | Adopt Lite phase 2: badges + streaks trước (kèm data-gates pattern); XP/stickers/rewards sau |
| Q-047 | Portfolio/social/vote? | Adopt cho Octopus phase 2 — portfolio phục vụ JTBD "chứng minh bằng evidence" |
| Q-048 | Events/Cafe + Zalo? | Giữ cho Marlins phase 2; mọi link qua config |
| Q-049 | Affiliate/referral? | Hoãn phase 3 — không thuộc core learning |
| Q-050 | CMS + pricing/ebooks? | Phase 1 không CMS — marketing content trong repo; pricing/ebooks phase 2 |
| Q-051 | AI illustrations + knowledge stories? | Phase 2, sau khi content pipeline chạy (REQ-MED-06 ⏳) |
| Q-052 | Experience comparison simulator? | Drop — giá trị thấp, phụ thuộc worker ngoài |
| Q-053 | Integrity system? | Adopt nguyên tắc (thay đổi khai báo phải có evidence + audit) vào Assessment/Evidence — không xây hệ riêng |
| Q-054 | Truy cập repo api.conan.school để lấy DDL/data sutucon? | Cần chủ dự án cấp nếu muốn migrate data thật; mặc định: khởi đầu sạch, không migrate user data |
| Q-055 | Số phận 2 domain cũ? | Chạy song song, không redirect cho tới khi Nemo12 ổn định và chủ dự án ra lệnh |
| Q-056 | Brand palette Nemo12? | Dùng ocean palette v0.1 (DS-001 §2) làm placeholder có chủ đích — chủ dự án duyệt/đổi sau |
| Q-057 | Framework đánh giá chất lượng tài liệu? | Adopt requirements-assessment (8 clusters/40 criteria) làm rubric QG-002 |
| Q-058 | Dark mode? | Chưa bật phase 1; semantic tokens sẵn sàng |
| Q-059 | Test policy? | Behavior tests (vitest + workers pool); cấm source-regex tests (RISK-015) |
| Q-060 | Prompt registry? | workers/api/src/shared/prompts.ts versioned (bản dự định ban đầu là packages/ai/prompts/, chưa dựng); mọi prompt production có id + version + changelog (QG-010) |
Đợt 3 — 30 câu xác nhận Real Exam Bank + docs restructure (SRC-029/030, 2026-08-14, Q-061..Q-090)
Chủ dự án yêu cầu "hệ thống hỏi 30 câu để xác nhận" trước khi build. Mỗi câu kèm ✍️ quyết định tạm — có hiệu lực cho tới khi chủ dự án sửa; trả lời bằng cách nêu số câu + điều chỉnh.
Phạm vi & nội dung
| ID | Câu hỏi | ✍️ Quyết định |
|---|---|---|
| Q-061 | "Không làm Mock Exam" có bỏ luôn mock exam đề generated (REQ-EXAM-02, đã ship) không? | Không — chỉ đề thật không mock (luyện từng bài, SDD-012 §1); REQ-EXAM-02 giữ cho đề generated (semester/selective). Muốn bỏ toàn hệ → deprecate REQ-EXAM-02 + SDD-011 §4 |
| Q-062 | Dạng bài phân loại bằng gì? | Bảng problem_types riêng theo môn (n-n với bài) làm view luyện thi; node graph vẫn là nguồn sự thật kiến thức (SDD-012 §3) |
| Q-063 | Chọn 3 trường/hệ thi nào để seed? | ✅ 2026-08-14: ưu tiên 1. Chuyên Sư phạm, 2. Chuyên KHTN, 3. Ams — năm 2024, 2025, 2026 |
| Q-064 | "3 năm gần đây" là những năm nào? | Kỳ tuyển sinh 2024, 2025, 2026 (năm học 2024-2025 → 2026-2027) |
| Q-065 | "Tiếng Việt" = môn Ngữ văn? | ✅ 2026-08-14: đúng, môn Ngữ văn — bộ 3 môn: Toán, Ngữ văn, Tiếng Anh |
| Q-066 | Đề chuyên gồm những môn chuyên nào? | Toán/Văn/Anh chuyên trước (khớp 3 môn ưu tiên); Tin chuyên (ví dụ chủ dự án) đợt mở rộng — KHTN tuyển Tin bằng Toán vòng 2 |
| Q-067 | Grade scope khởi điểm? | Chỉ thi vào 10 (Shark); đề học kỳ thật (Turtle) đợt sau |
| Q-068 | Đề điều kiện chung Sở (nhiều trường dùng) lưu thế nào? | Một exam record gắn exam_system, không nhân bản per trường; quan hệ trường qua relations (SDD-012 §2) |
Bản quyền & lời giải
| ID | Câu hỏi | ✍️ Quyết định |
|---|---|---|
| Q-069 | Pháp lý lưu đề thật? | ✅ 2026-08-14: chỉ lưu URL nguồn tới đề, KHÔNG lưu file đề (không scan/PDF); nội dung bài do Nemo12 trích xuất + biên tập lại; provenance = source_ref (QG-011) |
| Q-070 | Nguồn lời giải? | ✅ 2026-08-14: tự biên soạn (AI draft + human review bắt buộc); KHÔNG sao chép site ngoài; đáp án chính thức trích kèm nguồn |
| Q-071 | Ai human-review lời giải phase 1? | ✅ 2026-08-14: spot-check trên Coral (data.nemo12.com đã bỏ); mặc định AI multi-evaluator (SRC-035) |
| Q-072 | Cấu trúc lời giải? | ✅ 2026-08-14: OK — 3 tầng: gợi ý hướng đi → lời giải đầy đủ → nhận xét/bẫy; tầng 1 mở tự do, tầng 2-3 sau khi nộp hoặc learner chủ động |
Đo lường (assessment 3 lớp)
| ID | Câu hỏi | ✍️ Quyết định |
|---|---|---|
| Q-073 | Thang confidence? | 1–5, khai trước khi xem lời giải |
| Q-074 | Justification bắt buộc? | Khuyến khích mạnh, không bắt buộc (K12); thiếu → evidence yếu hơn theo ma trận SDD-012 §4 |
| Q-075 | Justification dạng thức? | Text + ảnh chụp bài làm; voice đợt sau |
| Q-076 | Chấm answer tự luận? | Self-verdict đối chiếu lời giải (+AI hỗ trợ) → evidence; không phải điểm thi chính thức |
| Q-077 | AI đánh giá justification? | Theo rubric qua AI Gateway (QG-010); phase đầu AI chỉ gợi ý, self-verdict quyết định; human review khi disputed |
| Q-078 | Văn/essay không có answer_summary? | Blueprint riêng exam-problem-essay-v1 (confidence + justification + rubric outline), làm sau blueprint chuẩn |
Practice state & filter
| ID | Câu hỏi | ✍️ Quyết định |
|---|---|---|
| Q-079 | Bộ trạng thái cá nhân đủ chưa? | {chưa làm, đang làm, đã làm, bế tắc, chưa tự tin, tự tin} + bookmark + note — đủ phase 1 |
| Q-080 | Đếm số lần làm? | Tự động từ problem_submit; không tự khai |
| Q-081 | Giới hạn làm lại? | Không giới hạn; cockpit nhắc khi overlearning (SDD-002 §12), không chặn |
| Q-082 | Filter mặc định? | Preset "Cần luyện" = bế tắc + chưa tự tin + chưa làm thuộc dạng yếu |
Data, tích hợp & lộ trình
| ID | Câu hỏi | ✍️ Quyết định |
|---|---|---|
| Q-083 | Migrate DB legacy chuyenchon-exam-intelligence (FEAT-034)? | Seed 3×3×3 nhập mới theo WF-13; legacy migrate sau nếu đạt chất lượng (truy cập data cần chủ dự án — như Q-054) |
| Q-084 | Docs restructure: có di chuyển file không? | Không — phân loại bằng VitePress nav + index domain map; đường dẫn giữ nguyên, không gãy link |
| Q-085 | Domain taxonomy 10 nhóm (index.md) ổn chưa? | Ổn cho phase này; đổi tên/gộp khi chủ dự án góp ý |
| Q-086 | Reliability evidence từ bài đề thật? | Answer auto-check = learning_task (.80); không đặt .95 (làm ở nhà, không kiểm soát); confidence/self-verdict = self-report (.50) |
| Q-087 | Readiness kỳ thi tính riêng? | Không — cùng pipeline evidence → mastery → readiness theo goal blueprint (SDD-011) |
| Q-088 | UI đặt ở đâu? | learn › Shark: vào từ hành động "Luyện đề" trên tab "Hôm nay", KHÔNG thêm tab thứ năm. Sửa 2026-08-15 — bản cũ ghi tab "Đề thi thật", vừa mâu thuẫn luật tối giản (SRC-048) vừa không khớp app thật (cockpit chỉ có Hôm nay · Phòng Lab · Toàn cảnh · Tiến độ). Marlin xem read-only qua view mode (REQ-PAR-13) |
| Q-089 | Màn ingestion đề đặt ở đâu? | Trong Coral, tab "Ngân hàng đề": upload/paste → tách bài → preview → gắn node/dạng → publish (WF-13). Sửa 2026-08-15 — bản cũ ghi data.nemo12.com, mâu thuẫn với Q-091 (đã ngừng domain đó) |
| Q-090 | Thứ tự build? | (1) migration + API → (2) ingest end-to-end 1 trường × 1 năm × Toán → (3) UI learner (browse/filter/mark/submit/LX) → (4) phủ đủ seed 3×3×3 → (5) hoàn thiện assessment 3 lớp; mỗi bước demo được |
Đợt 4 — Coral content plane (SRC-031, 2026-08-14, Q-091 →)
| ID | Câu hỏi | ✍️ Quyết định |
|---|---|---|
| Q-091 | data.nemo12.com còn dùng không khi có Coral? | ✅ 2026-08-14: Ngừng data.nemo12.com, chỉ dùng coral.nemo12.com; code apps/data làm seed cho apps/coral rồi đã gỡ khỏi repo; gỡ route data khi Coral live |
| Q-092 | Auth Coral? | ✅ 2026-08-14: Cloudflare Access, chỉ dac2205@gmail.com; API vẫn RBAC staff/admin theo session (defense-in-depth, không hardcode email trong code — RISK-013) |
| Q-093 | Gỡ route/worker nemo12-data khi nào? | Khi Coral đạt parity browse (coverage + node/item detail) — dự kiến ngay đợt build đầu |
| Q-094 | Thứ tự build Coral? | (1) scaffold + Access + dashboard read-only → (2) exam bank management (WF-13 UI) → (3) rubrics/quality views → (4) blueprints + generation runs (Workflows/Queues). ✍️ 2026-08-14: giai đoạn 4 mở một nửa — registry content_blueprints + seed + CRUD sửa tay đã chạy (migration 0016, SDD-013 §3); generation runs (WF-14) vẫn chưa mở |
Đợt 5 — Learner Intelligence Models & Engines (SRC-032, 2026-08-14, Q-095..Q-102)
| ID | Câu hỏi | ✍️ Quyết định |
|---|---|---|
| Q-095 | Phasing SRC-032 xếp Assessment Engine vào Phase 2, Learning Engine không phase nào — nhưng cả hai đã live. Phase áp cho phần NÂNG CẤP thôi? | Đúng — không hạ cấp chức năng đang chạy; Phase 1 chỉ thêm nâng cấp (Assessment nhận next_assessment_priority từ Readiness) |
| Q-096 | Constraint Model vs Global Workload Model (SDD-007 §8) — merge hay split? | Split: Constraint own normative limits (giờ/ngày, quy định gia đình, health, academic); Workload còn descriptive demand; capacity check → Constraint Engine; Phase 2 (REQ-INT-19 ⏳) |
| Q-097 | Planning Engine là tên mới của Global Orchestrator hay engine riêng? | Orchestrator = umbrella chứa Recommendation + Constraint + Planning engines — một chỗ quyết định duy nhất; Learning Plan Model đặt tại đây (REQ-INT-20 ⏳) |
| Q-098 | Depth Engine (SDD-002 §12) giữ riêng hay tách target-side → Readiness, allocation-side → Planning? | Tách đôi taxonomy, giữ §12 làm spec nội dung, không đổi code |
| Q-099 | Precedence khi models mâu thuẫn? | Constraint/health context > plan/goal urgency; confidence cao thắng; event mới supersede; goal parent ≠ learner → escalate cho parent, hệ không tự quyết |
| Q-100 | Declarations intake mở cho Turtle? (WF-01 ghi "Turtle không cần"; RISK-009) | Có, chỉ scope học kỳ, tùy chọn hoàn toàn, không đụng mục tiêu chuyên (REQ-ONB-08 ⏳) |
| Q-101 | Evidence node-rỗng cũ từ parent observations xử lý sao? | Để nguyên (registry immutable, mastery không đọc) + ngừng write mới + backfill observations thành context events |
| Q-102 | Môn KHÔNG chuyên trong exam target: sub-goal đầy đủ hay attribute? | Phase 1 = attribute của parent goal; nâng thành sub-goal khi môn đó có blueprint |
Đợt 6 — Crawl đề thi + AI First (SRC-035/036, 2026-08-14, Q-103..Q-106)
| ID | Câu hỏi | ✍️ Quyết định |
|---|---|---|
| Q-103 | Phạm vi crawl "tất cả trường, tất cả năm" bắt đầu từ đâu? | Theo thứ tự Q-063 (Sư phạm → KHTN → Ams, 2024-2026) trước; mở rộng theo tỉnh/năm khi pipeline ổn định — coverage matrix (SDD-014 §3) điều phối |
| Q-104 | Ranh giới nguồn crawl? | Chỉ nguồn công khai, tôn trọng robots.txt/ToS, rate-limit; KHÔNG vượt paywall/login; lời giải site ngoài chỉ lưu URL tham chiếu |
| Q-105 | AI First có ngoại lệ nào giữ human? | Moderation an toàn trẻ em (QG-008) giữ human-in-loop; còn lại AI multi-evaluator + owner spot-check theo ngưỡng |
| Q-106 | Ngân sách AI cho crawl/generation? | Chưa đặt trần; theo dõi qua AI Gateway cost dashboard (QG-010); báo chủ dự án trước khi scale vượt ~ hàng chục nghìn items |
Đợt 7 — Learner-first UX overhaul (SRC-042, 2026-08-14, Q-107..Q-110)
| ID | Câu hỏi | ✍️ Quyết định |
|---|---|---|
| Q-107 | Palette v0.2 "Ocean Depth" (DS-001 §2) thay đề xuất v0.1 (Q-056) — duyệt? | ✍️ Tự áp dụng để ship; token đổi một chỗ (tokens/base.css) nếu chủ dự án muốn chỉnh; Q-056 coi như superseded |
| Q-108 | Icon: giữ emoji + SchoolIcon SVG hay đầu tư bộ icon SVG riêng? | ✍️ Phase này giữ emoji (thân thiện trẻ em, zero-asset) trong khung tròn n12-icon cho đồng nhất; bộ icon riêng xếp sau khi có brand kit |
| Q-109 | Dark mode bật cùng đợt này? | ✍️ Chưa (giữ Q-058) — semantic tokens đã sẵn sàng, bật sau bằng một lớp dark |
| Q-110 | Display font riêng cho heading (self-host Nunito/Quicksand)? | ✍️ Chưa — giữ system stack (hiệu năng, ràng buộc kế thừa SRC-013); cân nhắc khi làm brand kit marketing |
Đợt 8 — Retention Engine (SRC-065, 2026-08-14, Q-111..Q-118)
| ID | Câu hỏi | ✍️ Quyết định |
|---|---|---|
| Q-111 | Dạng decay function v1? | ✍️ Exponential R(t) = R₀·exp(−Δt/S) với stability S ngày (S₀ = 6 + 14×mastery); generic population params; learner-specific rate = Phase 2 (SDD-017 §3) |
| Q-112 | Retention tính ở cấp nào MVP? | ✍️ Node-level (cấp nhỏ nhất có evidence — khớp learner_skill_state); unit/subject là aggregate on-read cho views, không lưu bản riêng |
| Q-113 | Recalculation chạy thế nào — cron hay lazy? | Superseded 2026-08-14 bởi chỉ đạo SRC-104: retention phải tính định kỳ — cron hằng ngày 21:00 UTC (WF-17) sinh snapshot, cộng thêm lazy-on-read và update-on-evidence. Quyết định ✍️ cũ ("chưa thêm cron, chỉ cần ở Phase 2") đi ngược chỉ đạo chủ dự án; giữ lại dòng này để thấy vì sao đổi |
| Q-114 | Retention có kéo Readiness xuống ngay không? | ✍️ Phase 2 — Readiness đọc retention với reason estimated memory decay (khác observed performance decline); Phase 1 chỉ hiển thị + review queue, không đụng readiness đang chạy |
| Q-115 | Ngưỡng probe (REQ-INT-27) v1? | ✍️ retention < 0.75 AND retention_confidence < 0.40 → 1–3 câu retrieval từ chính item bank của node (không cần loại session mới — dùng practice session) |
| Q-116 | Review Ladder thresholds đặt ở đâu? | ✍️ Constants trong modules/retention/engine.ts version retention-v1 (một chỗ, configurable khi deploy); per-learner personalization = Phase 3 |
| Q-117 | Implicit review nhận từ nguồn nào v1? | ✍️ Mọi evidence node-scoped (practice/diagnostic/exam) cập nhật retention của chính node đó; lan truyền prerequisite qua graph = Phase 2 (cần traversal + attribution rõ) |
| Q-118 | Khối "Ôn nhanh" đặt ở đâu theo luật tối giản (SRC-048)? | ✍️ Card trong tab "Hôm nay" của school cockpit (hub) + review action trong cockpit next-actions; marlins đọc nhóm nhãn trong báo cáo con; không tạo trang mới |
Đợt 9 — Sửa sổ sách sau Audit #001 (SRC-108/SRC-111, 2026-08-15, Q-119..Q-127)
Audit #001 chấm 109/250. Bộ AS-02 (Yêu cầu & Sản phẩm) mất điểm ở những chỗ quyết định bị bỏ lửng, không phải ở chỗ thiếu tính năng. Các câu dưới đây chốt nốt những chỗ đó.
| ID | Câu hỏi | ✍️ Quyết định |
|---|---|---|
| Q-119 | REQ-MEN-04 (class operations) mang priority mơ hồ M? — MUST hay SHOULD? | ✍️ 2026-08-15: SHOULD. Mô hình đã chốt là 95% online (Q-005) với 10 mentor nội bộ (Q-004); lớp/lịch/điểm danh không nằm trên đường đi của core job "biết nên làm gì tiếp theo". Đánh MUST là tự nhận nợ không định trả. Schema vẫn giữ thiết kế sẵn theo Q-045 |
| Q-120 | REQ-SCH-04 (Shark exam & school intelligence) M? — và nó có trùng REQ-EXAM không? | ✍️ 2026-08-15: SHOULD, đồng thời thu hẹp phạm vi. Ba phần của cụm cũ đã có REQ riêng — kho đề → REQ-EXAM-05..10, registry trường → REQ-EXAM-11, lịch thi → REQ-INT-16 (ngày thi là deadline trên goal, nguồn duy nhất). REQ-SCH-04 chỉ còn score simulator, và nó là SHOULD vì ước tính điểm khi chưa có dữ liệu mùa thi thật thì hại hơn là không có |
| Q-121 | REQ-SCH-05 (Octopus 4F + product submission) M? | ✍️ 2026-08-15: SHOULD. Octopus đang chạy được như một school nội dung; 4F Reflection và nộp sản phẩm là lớp trên, lại phụ thuộc Media System + moderation (REQ-MED-04) chưa chạy thật. Không chặn đợt thử 10 phụ huynh |
| Q-122 | Hai dòng SRC cùng mang số 059 và 060 — cấp lại số cho dòng nào? | ✍️ 2026-08-15: số cũ thuộc về nguồn có nhiều tham chiếu ngoài nhất; nguồn còn lại lấy số mới ở cuối sổ. Kết quả: giữ SRC-059 (Coral lọc theo cấp) và SRC-060 (môn riêng theo school); "editor Blueprint 3 bước" → SRC-109, "nộp từng câu rồi mới xem đáp án" → SRC-110. Không tái sử dụng số đã cấp. Chi tiết + việc còn phải sửa trong code: intake.md |
| Q-123 | REQ nào đang mô tả trùng một hành vi (AS-02.1.5)? | ✍️ 2026-08-15: gộp 2, thu hẹp 3. REQ-KNW-15 → REQ-MED-06 (cùng là pipeline sinh minh họa bằng AI); REQ-SCH-07 → REQ-EXAM-04 (cùng là đề học kỳ generic Turtle); REQ-INX-07 thu về đúng "vote trên submission" (vote forum đã ở REQ-COM-03, mentor feature ở REQ-MEN-05); REQ-SCH-04 thu về score simulator (Q-120); REQ-PAR-09 ghi rõ là mặt Marlins của REQ-VIS-07/08, cấm dựng view thứ hai. Hai REQ bị gộp giữ ID với trạng thái 🗄️ superseded để tham chiếu cũ không gãy |
| Q-124 | Pearl (pearl.nemo12.com) đang chạy production nhưng không có REQ nào — bỏ qua hay bổ sung? | ✍️ 2026-08-15: bổ sung REQ-BRD-05. Một worker đang phục vụ người dùng thật mà không có yêu cầu tương ứng thì không ai kiểm được nó đúng hay sai (AS-02.4.2). Pearl thuộc nhóm BRD vì là bề mặt công khai, không phải tài liệu nội bộ |
| Q-125 | "Sửa toàn bộ để đạt ≥90%" (SRC-111) là chỉ đạo một lần hay thành luật? | ✍️ 2026-08-15: thành luật — REQ-DOC-06. Ngưỡng mở cho người dùng thật: ≥225/250 và không chỉ báo 🔴 nào hỏng. Cấm cách hạ chuẩn bằng việc sửa tiêu chuẩn thay vì sửa hệ; nợ chấp nhận được phải ghi ✍️ tại file này, không được im lặng |
| Q-126 | REQ-SCH-06/07/08 được SDD-011 khai satisfies nhưng không tồn tại trong catalog PRD — khôi phục hay xóa khỏi SDD? | ✍️ 2026-08-15: khôi phục 06 và 08 đúng nội dung SDD-011 §1/§2 (chẩn đoán mức cơ bản của Turtle, chẩn đoán/experience mức cao của Shark); 07 đánh 🗄️ superseded vì trùng REQ-EXAM-04. Không xóa ID nào khỏi SDD — sửa PRD là hướng đúng, vì PRD mới là chỗ thiếu |
| Q-127 | 13 user story mới (US-67..US-79) mô tả tính năng đang chạy — có phải mở scope mới không? | ✍️ 2026-08-15: không. Chúng chỉ viết thành lời những gì app đã làm (Pearl, song ngữ, goals/beliefs của Marlins, đường đi Unit, Learning Plan, onboarding Dolphin…) để mọi REQ MUST có ít nhất một US hoặc WF (AS-01.3.5). Không dòng nào thêm hành vi chưa có |
Đợt 10 — Sự kiện cộng đồng cho Marlin (SRC-122, 2026-08-15, Q-128..Q-130)
Chỉ đạo gốc chỉ nói ba việc (xem danh sách · xem chi tiết · đăng ký buổi sắp diễn ra) nhưng trang Events legacy có nhiều hơn thế, nên phải chốt phạm vi.
| ID | Câu hỏi | ✍️ Quyết định |
|---|---|---|
| Q-128 | Trang Events legacy còn bình chọn câu hỏi, wizard khai hồ sơ bắt buộc trước khi giữ chỗ, và bảng admin xem hồ sơ người đăng ký — chuyển hết sang Nemo12 hay không? | ✍️ 2026-08-15: không, đợt này chỉ làm đúng ba việc chủ dự án nêu. Bình chọn chỉ có nghĩa khi mỗi buổi đã có ngân hàng câu hỏi. Wizard khai hồ sơ thì Nemo12 đã có hồ sơ gia đình thật (families, learners) nên phải lấy từ đó chứ không hỏi lại, cần một vòng thiết kế riêng. Bảng admin thuộc admin.nemo12.com và phải đi kèm audit log (QG-008). Ghi rõ ở SDD-018 §6. |
| Q-129 | "Chỉ đăng ký được event sắp diễn ra" — mốc là giờ BẮT ĐẦU hay giờ KẾT THÚC của buổi? | ✍️ 2026-08-15: giờ bắt đầu, giống legacy. Vào muộn giữa buổi cafe 5 người là làm phiền cả nhóm, nên đóng đăng ký đúng lúc buổi bắt đầu. Buổi đã diễn ra vẫn mở được bằng link cũ (chi tiết trả 200, chỉ can_register=false) để link bố mẹ gửi cho nhau không chết. |
| Q-130 | Nạp dữ liệu sự kiện vào D1 production bằng đường nào, khi chỉ đạo là "bắt buộc qua GitHub, đừng deploy thẳng lên Cloudflare"? | ✍️ 2026-08-15: thêm workflow seed-data.yml chạy tay (workflow_dispatch), nhận đúng một input là đường dẫn scripts/*.sql, chặn .. và mọi file ngoài scripts/, và đưa input qua biến môi trường chứ không nội suy ${{ }} thẳng vào run (script injection). Mỗi file seed tự kết thúc bằng một câu SELECT để log workflow là bằng chứng đã nạp đúng. Áp cho mọi seed sau này, không riêng sự kiện. |
Rà mâu thuẫn giữa các quyết định ✍️ (AS-02.5.3, 2026-08-15)
Luật: chỉ đạo của chủ dự án (SRC) thắng quyết định ✍️ của AI, bất kể cái nào ghi trước. Lượt rà toàn bộ 127 câu tìm được 6 chỗ lệch, đã sửa tại chỗ và ghi rõ ngày:
| Chỗ lệch | Va với | Xử lý |
|---|---|---|
| Q-113 "chưa thêm cron cho retention" | SRC-104 — chủ dự án yêu cầu retention tính định kỳ | Superseded; cron 21:00 UTC (WF-17) là đường chính, lazy/on-evidence bổ sung |
| Q-016 "human review cho mọi nội dung" | SRC-035 / REQ-PLT-12 — AI First, multi-evaluator thay human review mặc định | Sửa: multi-evaluator là cổng mặc định; human giữ cho moderation trẻ em |
| Q-042 "admin app kiêm content plane" | SRC-031 — Coral là app riêng | Superseded, giữ dòng làm dấu |
| Q-089 "ingestion trên data.nemo12.com" | Q-091 — đã ngừng data.nemo12.com | Sửa sang Coral |
| Q-088 "thêm tab Đề thi thật" | SRC-048 luật tối giản + app thật (4 tab) | Sửa: vào từ hành động trên tab "Hôm nay" |
| Q-018 "framework cho Squid/Ray" | SRC-081 — bỏ Ray | Sửa: framework nằm trong Squid |
Không tìm thấy mâu thuẫn nào giữa hai quyết định ✍️ với nhau sau đợt sửa này.
Cloudflare Access ✅ xong cả ba cổng nội bộ (2026-08-15)
| App | Domain | Policy | Trạng thái |
|---|---|---|---|
| Nemo12 Admin | admin.nemo12.com | Nemo12 Admin - Owner · Allow · Emails · dac2205@gmail.com | ✅ có từ trước |
| Nemo12 Dolphin | dolphin.nemo12.com | dùng lại Nemo12 Admin - Owner (Q-092) | ✅ tạo 2026-08-15 (SRC-132) |
| Nemo12 Coral | coral.nemo12.com | dùng lại Nemo12 Admin - Owner (Q-092) | ✅ tạo 2026-08-15 (SRC-132) |
Cách làm: token wrangler/OAuth hiện tại không có scope Access nên không tạo được bằng API; chủ dự án chỉ đạo tự vào dashboard cấu hình (SRC-132), nên hai app được tạo tay ở Zero Trust → Access controls → Applications. Cả hai dùng lại policy sẵn có thay vì tạo policy mới, để sau này thêm/bớt email chỉ sửa một chỗ mà áp cho cả ba cổng. Session 24 giờ.
Bằng chứng: request thật ngày 2026-08-15 — dolphin · coral · admin đều trả 302 sang dac2205.cloudflareaccess.com; learn · marlins · nemo12.com trả 200 (công khai, đúng thiết kế).
Audit #001 chấm AS-07.1.4 là ❌ dựa trên dòng "Còn chờ" trong README. Tại thời điểm audit thì đúng là chỉ admin có Access; sau khi tạo nốt dolphin + coral thì chỉ báo đó thành ✅ (đính chính audit §5). README đã sửa theo.
Lớp bảo vệ ở tầng app vẫn giữ nguyên (defense-in-depth, không thay thế Access): /v1/mentor/* yêu cầu session + role mentor/admin; không có role thì API trả AUTHORIZATION_ERROR nên portal rỗng — xem WF-18.
Việc còn chờ chủ dự án
| Việc | Vì sao AI không tự làm được |
|---|---|
Tạo AI Gateway nemo12 trên dashboard | Token hiện tại không có scope AI Gateway; AI_GATEWAY_ID đã khai sẵn trong workers/api/wrangler.jsonc |
| Chốt mô hình thu phí (Q-014/Q-015) | Quyết định kinh doanh |
| Mốc thời gian thật (Q-003) | Quyết định kinh doanh |
| Cấp quyền truy cập data legacy (Q-054) | Cần tài khoản của chủ dự án |
Đã trả lời 2026-08-14: Q-063 (Sư phạm > KHTN > Ams, 2024-2026), Q-065 (Ngữ văn), Q-070 (lời giải tự biên soạn), Q-091/Q-092 (Coral thay data.nemo12.com, Access một email). Đã trả lời 2026-08-15: Cloudflare Access đã bật cho cả admin · dolphin · coral. Cần chủ dự án nhất: Q-054 (data migration hay khởi đầu sạch), Q-056 (duyệt palette), Q-003 (mốc thời gian thật), Q-014/Q-015 (mô hình thu phí), và soát lại 9 quyết định ✍️ Đợt 9 + 3 quyết định ✍️ Đợt 10 ở trên.
✍️ Q-128 — Pilot Gate thay REQ-DOC-06 làm điều kiện mở thử 2 ngày (2026-08-15)
Câu hỏi: Audit Standard v0.2 §0 tự flag mâu thuẫn: REQ-DOC-06 khoá "≥90% (225/250, nay 225/255) chỉ báo PASS" làm điều kiện mở thử người dùng thật. Audit #001 (2026-08-15) chấm 109/250. Chủ dự án cần mở thử cho 10 phụ huynh thật trong 2 ngày. Đóng ~116 chỉ báo trong 2 ngày là bất khả thi về toán — tài liệu tự nói rõ và từ chối tự diễn giải lại con số 225 theo hướng có lợi.
Quyết định (✍️ AI tự quyết, có hiệu lực tới khi chủ dự án sửa): Dùng 🚸 Pilot Gate (audit-standard/index.md v0.2 — danh sách ~18 chỉ báo) làm điều kiện thay thế cho đợt mở thử 2 ngày cụ thể này, không thay thế REQ-DOC-06 nói chung. Lý do:
- Pilot Gate được chọn theo đúng một tiêu chí duy nhất — chạm thẳng dữ liệu trẻ em thật, tiền thật, hoặc mất-dữ-liệu-không-hồi-phục — tức đúng loại rủi ro mà một đợt mở thử ngắn với người thật cần chặn, khác với 225/255 là ngưỡng trưởng thành toàn hệ dài hạn (bao gồm cả UI polish, ngân hàng đề thật, AI cost dashboard — không rủi ro gì cho 10 gia đình trong 2 ngày).
- REQ-DOC-06 không bị hạ chuẩn — sàn tuyệt đối 225/255 vẫn nguyên, chỉ là chưa đạt được trước ngày mở thử này; phần còn thiếu (255 trừ 18 Pilot Gate) được ghi nợ có REQ ⏳ + lý do + ngày theo AS-02.4.5, xử lý sau pilot.
- Đây đúng tinh thần "tự quyết ✍️, có ghi sổ, chủ dự án sửa được bất cứ lúc nào" — không phải quyết định câm lặng.
Điều kiện đảo ngược quyết định này: nếu tới ngày mở thử mà Pilot Gate chưa 100% PASS, KHÔNG mở — không có ngoại lệ thứ hai chồng lên ngoại lệ này.
Trace: Audit Standard v0.2 §3.3 · Pilot Gate — danh sách đầy đủ · REQ-DOC-06.
✍️ Q-129 — AS-10.3.1 (Context Builder) là nợ chấp nhận được cho pilot 2 ngày (2026-08-15)
Câu hỏi: Audit #002 §8.1 P6 yêu cầu quyết định tường minh: nếu pilot không chạm tính năng AI cá nhân hoá learner, ghi nợ AS-10.3.1; nếu có, phải nối route đó qua buildLearnerContext() trước khi mở.
Bằng chứng đã kiểm (2026-08-15): Toàn bộ 3 điểm gọi AI trong hệ (grep -rn "env.AI.run" workers/api/src) đều nằm trong modules/coral/routes.ts, đều yêu cầu requireStaff, đều đồng bộ theo HTTP request do staff bấm (sinh item/experience từ blueprint) — 0 route nào learner/parent gọi tới chạm AI, và buildLearnerContext() hiện chỉ được gọi trong test (context-builder.test.ts), chưa được route sản xuất nào dùng thật vì chưa có tính năng AI cá nhân hoá nào tồn tại để dùng nó.
Quyết định (✍️ AI tự quyết): AS-10.3.1 là nợ chấp nhận được cho đợt pilot 2 ngày tới — không nối code, không đưa vào phạm vi P6. Lý do: bất biến "Context Builder là đường duy nhất AI chạm learner data" hiện đúng một cách hiển nhiên (không có đường nào khác vì không có tính năng nào cần nó), nối thêm code cho một tính năng chưa tồn tại chỉ để chỉ báo PASS là làm ngược — đúng kiểu "sửa audit thay vì sửa hệ" mà REQ-DOC-06 cấm theo hướng khác.
Điều kiện đảo ngược quyết định này: ngay khi có route learner-facing đầu tiên gọi AI (cá nhân hoá gợi ý, chấm bài bằng AI, v.v.), route đó bắt buộc đi qua buildLearnerContext() trước khi bật — không có ngoại lệ, không chờ audit lần sau mới sửa.
Trace: Audit #002 §4, §8.1 P6 · workers/api/src/shared/context-builder.ts · AS-10.3.1.