diff --git a/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w3-nghi-thuc.md b/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w3-nghi-thuc.md index dff5cd5..2c709a0 100644 --- a/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w3-nghi-thuc.md +++ b/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w3-nghi-thuc.md @@ -23,3 +23,69 @@ | (4) Gói-B persona | ⏳ | §4 | | Fault-inject 3 chiều | ⏳ | §5 | | CHƯA ĐO / CẦN LEAD | ⏳ | §6 | + +--- + +## §1 — PHÉP ĐO NỀN (chạy TRƯỚC khi gõ một dòng nào) + +### 1.1 — Wall-clock: trần chi phí cho tiền-kiểm (hub `phu-luc:194` đòi "chi phí bằng không") + +Lệnh: `Measure-Command`, n=5, lấy min/trung-vị/max. Máy này, 2026-08-07. + +| Phép đo | n | min | **trung vị** | max | +|---|---|---|---|---| +| **CONTROL** — chỉ khởi động `powershell -NoProfile`, không chạy gì | 5 | 143 ms | **156 ms** | 260 ms | +| `scripts/nhip-no-probe.ps1` — **đang chạy ở `/pause` + `/tiep`**, tức chi phí ĐÃ ĐƯỢC CHẤP NHẬN | 5 | 419 ms | **423 ms** | 452 ms | + +⇒ **Phần việc RÒNG của probe đang sống = 423 − 156 = ~267 ms.** Đây là **trần tham chiếu**: một tiền-kiểm mới muốn cắm vào cửa dừng phải **rẻ hơn con số đã được chấp nhận này**, không phải rẻ hơn một ngưỡng tôi tự đặt. + +🔴 **Luật đã thành văn trên đĩa, không phải tôi bịa:** `.claude/commands/check-email.md:41` — *"việc NẶNG chỉ sống ở bookend. Ai thêm bước vào đường `/pause`·`/tiep` sau này **phải đo wall-clock trước**"*. Lượt này tuân: đo trước, và **KHÔNG thêm bước nào vào `/pause` · `/tiep`** (cả hai đã có probe rồi — xem §1.2). + +🔸 **Khai giới hạn của thước:** đo trên máy này, đĩa nóng, không đo lần-chạy-nguội. Con số dùng để **so tương đối** (mới ⟂ đã-chấp-nhận), không dùng làm SLA tuyệt đối. + +### 1.2 — Bảng 19 cửa × tiền-kiểm, TỪNG DÒNG (A4 cấm ghi gộp) — 3 cửa treo của lane C: ĐÓNG + +**Thước 1 (CONTROL — dựng lại đúng phép đo lane C `§E.5`):** `grep -c "nhip-no-probe\|Sàn-3\|san-3\|tiền kiểm\|probe"`. +**Thước 2 (SẮC HƠN — vị từ *lời gọi thật*):** `grep -cE '\-File +scripts/[^ ]+\.ps1|node +scripts/|python +scripts/'` — tách **gọi** ⟂ **nhắc tên** (đúng ranh *use ⟂ mention* của W1-b/W2). + +| # | Cửa | T1 (lane C) | T2 lời-gọi | `nhip-no-probe` gọi thật? | Kết luận | +|---|---|---|---|---|---| +| 1 | `session-start.md` | 19 | 9 | ✅ `:269` | ✅ **CÓ** | +| 2 | `session-end.md` | 12 | 7 | ✅ `:118` | ✅ **CÓ** | +| 3 | `tiep.md` | 10 | 2 | ✅ `:154` | ✅ **CÓ** | +| 4 | `pause.md` | 4 | 3 | ✅ `:113` | ✅ **CÓ** | +| 5 | `snapshot.md` | 1 | 4 | ✅ `:69` | ✅ **CÓ** — 🔴 lane C để **🟡 CHƯA ĐO**, nay ĐÓNG = **CÓ** | +| 6 | `check-email.md` | 2 | 2 (`stamp_verify.py`) | ❌ `:45`+`:48` = **NHẮC TÊN**, 0 lời gọi | ❌ **KHÔNG** — lane C 🟡 ĐÓNG = KHÔNG | +| 7 | `sleep-recovery-memory-l2.md` | 2 | 0 | ❌ 0 hit tên | ❌ **KHÔNG** — lane C 🟡 ĐÓNG = KHÔNG | +| 8 | `send-email.md` | 0 | 1 (`stamp_verify.py`) | ❌ | ❌ **KHÔNG** | +| 9 | `adap-apply.md` | 0 | 0 | ❌ | ❌ **KHÔNG** 🔴 ca `LỚP-2` | +| 10 | `adap-report.md` | 0 | 0 | ❌ | ❌ **KHÔNG** | +| 11 | `adap-request.md` | 0 | 0 | ❌ | ❌ **KHÔNG** | +| 12 | `fable-real.md` | 0 | 0 | ❌ | ❌ **KHÔNG** | +| 13 | `fable-clone.md` | 0 | 0 | ❌ | ❌ **KHÔNG** | +| 14 | `ultra-on.md` | 0 | 0 | ❌ | ❌ **KHÔNG** | +| 15 | `ultra-off.md` | 0 | 0 | ❌ | ❌ **KHÔNG** | +| 16 | `user-mark-active.md` | 0 | 0 | ❌ | ❌ **KHÔNG** | +| 17 | `user-mark-active-high.md` | 0 | 0 | ❌ | ❌ **KHÔNG** | +| 18 | `user-mark-medium.md` | 0 | 0 | ❌ | ❌ **KHÔNG** | +| 19 | `user-mark-disable.md` | 0 | 0 | ❌ | ❌ **KHÔNG** | + +**⇒ Trạng thái TRƯỚC lượt này: 5/19 có tiền-kiểm** (không phải 4/19 như lane C ghi — chênh vì `snapshot` được đóng từ 🟡 sang CÓ). **14/19 không có. 0 cửa còn treo.** + +🔴 **BÁC MỘT SỐ CỦA LANE F — `check-email` bị đếm nhầm là cửa gọi probe.** `sub-n3-lane-f-maytay.md:49` và `:253` ghi *"`nhip-no-probe.ps1` — check-email, pause, session-end, session-start, snapshot, tiep (**6 cửa**)"*. Đo lại: `check-email.md` chứa chuỗi `nhip-no-probe.ps1` **2 lần** nhưng **cả 2 đều là NHẮC TÊN** — `:45` mượn nó làm *khuôn fail-soft*, `:48` bàn về *đổi vai của vế-4 `pull-cach`*. **0 lời gọi.** ⇒ tập đúng là **5 cửa**, không phải 6. Đây đúng lớp lỗi *use ⟂ mention* mà W1-b/W2 đã dựng vị từ để tách — lane F dùng thước cũ nên dính. + +🔸 **Khai giới hạn của thước 2:** nó đo *có dòng lệnh gọi script trong tệp lệnh*, **không** đo *lời gọi đó có được thi hành mỗi lượt không* (tệp lệnh là prompt, người thi hành là model). Vẫn là *sự hiện diện + khuôn dạng, không đo CHẤT* — đúng ranh hub `phu-luc:208`. + +### 1.3 — Phép đo persona (gói-B) trước khi sửa + +| Persona | Phép đo | Kết quả | Control-dương | +|---|---|---|---| +| `lead-stale-auditor.md` | `grep -cE "run-folder|runs/"` | **0** | `FLAG`=**4** · `governance-detectors`=**2** ⇒ thước đọc được tệp, **0 là THẬT** | +| `lead-stale-auditor.md` | số class `view-*` liệt trong tệp | **5** (`view-residual-asym`·`stale-count`·`stale-header`·`stale-role-desc`·`stale-status`) + câu *"5 class dưới"* `:41` | enum đĩa = **12** | +| `ring2-audit.md:4` | chuỗi *"5 class `view-*`"* | **có** (kèm *"6 class `gap-*`"* — vế này ĐÚNG) | — | +| `back-end-reviewer-style.md:4` | chuỗi `.NET 10` | **có** | `front-end-reviewer-style.md:4` đã de-number @S179 (SỬA-6b) ⇒ khuôn có sẵn | +| `database-reviewer-style.md:4` | chuỗi `EF Core 10` | **có** | như trên | + +**Nguồn số enum (đọc đĩa, không tin doc):** `.claude/agent-memory/memory-budget.json` → `lead_self_audit.flag_classes` = **12 phần tử = 6 `view-*` + 6 `gap-*`**. Phần tử thứ 6 của nhánh view là **`view-claim-broader-than-sample`** (mở @S172 theo escalate của `ring2-audit`). + +🔴 **PHÁT HIỆN NGOÀI DANH SÁCH ĐỀ BÀI — nặng hơn ca `ring2`:** đề bài chỉ giao sửa `ring2-audit.md:4`. Nhưng `lead-stale-auditor.md` — **chính vai PHẢI DÙNG enum đó** — cũng chỉ liệt **5/6** class `view-*`, thiếu đúng `view-claim-broader-than-sample`. Đây là **ghost-enum tái phát**: đúng lớp lỗi `F-B HIGH` mà `tooling-auditor` đã ghi @S143 (*"enum mở 10→11 nhưng commit KHÔNG đụng `lead-gap-auditor.md` — vai bị luật CẤM tự chế class ⇒ lần tới gặp ca sẽ escalate lại đúng thứ vừa được duyệt"*). Lần này vật thể là nhánh `view-*` và vai là `lead-stale-auditor`. Sửa `ring2` mà bỏ `lead-stale-auditor` = vá cái GƯƠNG, để nguyên cái MÁY.