---
url: https://docs.nemo12.com/quality/audits/2026-08-22-002.md
description: >-
  Audit #009 ngày 22.08.2026 (Q-138): cạnh tiên quyết môn Tin học và Ngữ văn, vá
  ngay trong phiên và trạng thái sau ba môn.
---

# Audit #009 — Cạnh tiên quyết Tin học · Ngữ văn (Q-138, tiếp [Audit #008](2026-08-22.md))

Cùng phương pháp Audit #008 (parse `docs/knowledge/<môn>.md`, dựng đồ thị, dò unit không dính cạnh), chạy cho hai môn chủ dự án ưu tiên. Khác #008: lần này vá xong ngay trong phiên, nên bảng dưới ghi cả trước và sau.

## 1. Tin học

| Strand | Unit | Không dính cạnh (trước) | Sau |
| --- | ---: | ---: | ---: |
| T1–T5 (cây năng lực, hiện) | 63 | 0 | 0 |
| LT · CTDL · TT · KT · MT (chủ đề, ẩn) | 179 | 0 | 0 |
| UD Ứng dụng và sản phẩm (chủ đề, ẩn) | 36 | **36** | **0** |

**Phát hiện đáng giá nhất không phải lỗ UD mà là phần đã kín:** Tin học là môn duy nhất (trong 3 môn đã audit) mà **các strand chủ đề ẩn CÓ cạnh đầy đủ** — 179 cạnh soạn tay từ SRC-435. Tức là tiền lệ nội bộ cho Q-140 đã tồn tại: cây chủ đề được đối xử như cây thật với đồ thị riêng, không phải view ánh xạ. UD trắng chỉ vì được thêm sau đợt SRC-435.

**Vá:** 36 unit UD nhận **51 cạnh soạn tay** — tuần tự trong module (HTML → CSS → JavaScript → CSDL → dự án → công cụ nghề) cộng cạnh bắc cầu sang LT (`Biến và hàm trong JavaScript` ← `Biến và gán giá trị`, `Định nghĩa hàm`; `Kiểm tra biểu mẫu` ← `Câu lệnh if else`) và MT (`HTML là gì` ← `Web hoạt động thế nào`; `Bảng và bản ghi` ← `Dữ liệu dạng CSV`; `Quản lý phiên bản` ← `Sao lưu dữ liệu`). Kết quả: **248 → 299 cạnh, 263/278 unit có prerequisite**; 15 unit còn lại là gốc thật (lớp 1–6, đầu chuỗi: `Kể một việc theo từng bước`, `Lỗi là chuyện bình thường`…).

## 2. Ngữ văn

| Strand | Unit | Không dính cạnh (trước) | Sau |
| --- | ---: | ---: | ---: |
| V1–V5 (cây năng lực, hiện) | 149 | 8 | 1 (gốc thật + 1 ca trùng, xem dưới) |
| TV · DH · LV (chủ đề, ẩn) | 81 | **81** | **81** (giữ nguyên, chờ Q-140) |

**Lỗ đúng chỗ dự đoán được:** 7/8 unit hổng chính là các unit vừa thêm ở **SRC-502** (nhóm `Yếu tố truyện, kịch và thơ` ×5, `Trường từ vựng`, `Lắng nghe để người nói biết mình được nghe`) — thêm unit mà không thêm cạnh là đúng kịch bản làm UD của Tin học trắng. **Bài học ghi lại: thêm unit mới vào cây phải kèm cạnh tiên quyết ngay trong cùng đợt**, nếu không Remediation Loop mù đúng ở unit mới nhất. Vá: **15 cạnh soạn tay** (vd `Nhạc tính của thơ` ← `Đọc đúng ngữ điệu` + `Ngắt nghỉ theo dấu câu`; `Kịch không phải truyện in ra giấy` ← `Bốn kiểu xung đột` + `Hàm ý sau lời nhân vật`).

**Cổng chặn SRC-420 bắt được 2 cạnh NGƯỢC LỚP có sẵn** trong `vietnamese-unit-prereqs.json` (soạn trước khi cổng ra đời, chưa từng nạp lại từ đó): `Nhiều cách hiểu cùng có căn cứ` \[8] ← `Khi văn bản không đủ căn cứ` \[9] và `Nối câu bằng từ nối` \[3] ← `Từ nối và mạch lạc` \[5]. Cả hai đã đảo chiều kèm lý do viết lại. Kết quả: **156 → 171 cạnh, 137/149 unit có prerequisite**; 12 unit còn lại là gốc lớp 1–3 hợp lệ.

**Một ca trùng nội dung lộ ra khi dò:** `V1|Đọc thành tiếng` có cả `Đánh vần và ghép vần` lẫn `Ghép vần và đánh vần` (cùng lớp 1, cùng module) — cùng họ với hai unit trùng mà SRC-502 đã ghi ở `writing-for-a-reader.md`. Không gộp trong phiên này (đổi cây là việc content, cần rà bằng chứng đã gắn); ghi vào đây để đợt dọn trùng làm một thể.

## 3. Trạng thái Q-138 sau ba môn

| Môn | Cây năng lực (hiện) | Cây chủ đề (ẩn) |
| --- | --- | --- |
| Toán (#008) | ✅ 255 cạnh | ❌ SH·DS·HH trắng — chờ Q-140 |
| Tin học (#009) | ✅ 299 cạnh | ✅ đủ (tiền lệ cho Q-140) |
| Ngữ văn (#009) | ✅ 171 cạnh | ❌ TV·DH·LV trắng — chờ Q-140 |
| 8 môn còn lại | chưa audit | chưa audit |

Tin học nghiêng cán cân Q-140 về phương án **soạn cạnh** (a): hệ đã có một môn làm theo cách đó và chạy được; phương án ánh xạ (b) sẽ tạo ra hai cơ chế song song trong cùng một hệ.

## 4. Bổ sung cùng ngày — TV·DH·LV của Ngữ văn đã soạn xong cạnh (Q-140 ✍️ cho Ngữ văn)

Chủ dự án yêu cầu làm nốt phần còn lại của hai môn; Q-140 được ✍️ **chốt theo tiền lệ Tin học: soạn cạnh thật** cho cây chủ đề (riêng phần Ngữ văn — phần Toán SH·DS·HH chưa làm trong đợt này, xem open-questions). Kết quả: **73 unit TV·DH·LV nhận 124 cạnh soạn tay** — chuỗi nội bộ trong từng module (vd `Luận đề và luận điểm` → `Sắp xếp luận điểm` → `Phản biện ý kiến trái chiều`; `Nghị luận văn học` → `Phân tích tác phẩm thơ`/`Phân tích truyện ngắn`) cộng **cạnh bắc cầu về cây năng lực V** (vd `Đọc sâu và phân tích nhân vật` ← `Suy ra từ chi tiết`; `Nghị luận văn học` ← `Bảo vệ cách đọc bằng văn bản`; `Điệp ngữ trong thơ` ← `Nhạc tính của thơ` — unit SRC-502 vừa nối tuần này đã thành prerequisite của vùng luyện thi). Tổng Ngữ văn: **171 → 295 cạnh, 210/230 unit có prerequisite, 113 cạnh xuyên Package**.

**Một quirk dữ liệu ghi lại:** 8 unit TV·DH·LV là unit DÙNG CHUNG giữa hai module (vd `Mở bài và kết bài` đứng trong cả module `Mở bài` lẫn `Dàn ý bài luận`); seeder tra theo TÊN unit nên cạnh chỉ gắn vào một trong hai bản, bản kia hiện "chưa nối" khi dò theo khoá strand|module|unit. Không phải cạnh thiếu — là giới hạn của khoá tra trong `seed-unit-prereqs.mjs` với unit đa module. Chấp nhận được cho Remediation Loop v1 (nội dung unit là một); sửa seeder khi có ca hai bản cần cạnh khác nhau.
