Files
solution-erp/.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-n3-lane-b-gd2.md
2026-08-07 14:33:10 +07:00

46 KiB
Raw Blame History

N3 — LANE B / 6 · GĐ-2 "Lưới ghi đĩa và sổ mục lục vật chứng"

Vai: reviewer (adversarial, read-only, propose-only) · Phiên: S180 · Run: 2026-08-07-S180-adap-upgrade-pack-phased Mô hình tự khai: claude-opus-5 (/fable-clone reviewer), effort max. Đầu vào ghim đích danh (đọc thật, không nghe kể):

  • broadcasts/inbox/ai_infra/2026-08-04-Governance-upgrade-pack-phased-thu-chinh.md:151-170 (§GĐ-2 bước làm + kiểm-xong-chưa) · :79-80 (TC-04/TC-05) · :287 (luật "không áp dụng phải ghi lý do")
  • broadcasts/inbox/ai_infra/2026-08-04-Governance-upgrade-pack-phased-phu-luc-spec-pitfall.md:141-177 (§GĐ-2 sàn (i)-(v) + 4 bẫy + 6 ô nghiệm thu)
  • broadcasts/inbox/ai_infra/2026-08-04-Governance-upgrade-pack-phased-khuon-fit-map-report-checklist.md:228-379 (Phần C, A0-1→A16)
  • .claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-invest-fitmap-S180.md:68-83 (N1 §GĐ-2) · :179 (TC-05) · :224 (ô fit-map) · :240 (W2)
  • .claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-review-n2-S180.md:48-52 (F-06) · :82 (không-mẫu-số)

Guard AS-17: file này append TỪNG KHOẢN trong lúc làm, không dump-cuối. Mỗi mục đóng lại là một mục đã đo xong. Luật tự áp: KHÔNG ĐO ĐƯỢC hợp lệ; bịa thì không. Mọi 0-hit phải kèm control-dương. Mọi tỉ lệ phải kèm mẫu số + định nghĩa "đếm CÁI GÌ".


§0 — Cách bóc khoản (khai trước để người sau đếm lại được)

Hub GĐ-2 nằm ở hai tệp, hai độ phân giải khác nhau, và chúng không phải là một:

  • Thư chính :154-162 cho 8 bước làm (đánh số 1→8 trong chính tệp gốc).
  • Phụ lục :143-161 cho 5 khoản sàn (i)…(v), 4 bẫy, và 6 ô nghiệm thu (:172-177).

Hai bộ này giao nhau nhưng không trùng. Ví dụ: sàn (v) "Khai luôn điểm mù" không có bước tương ứng trong 8 bước của thư chính — đó chính là lý do một bản đồ chỉ đếm theo 8 bước sẽ đánh rơi (v) mà vẫn trông đủ. (Đây là gốc kỹ thuật của F-06 mà N2 bắt.)

Quyết định của lane B: bóc theo hợp của cả hai bộ, đánh số B-01B-13, mỗi khoản ghi rõ neo gốc. Mẫu số dùng suốt báo cáo này = 13 khoản. Ai muốn đếm theo mẫu số khác (8 bước, hoặc 6 ô nghiệm thu) thì §7 có bảng quy đổi.


§1 — Bóc từng khoản (13 khoản, không gộp)

Ký hiệu: ĐÃ-CÓ = SE có vật thật, chạy được · THIẾU = không tồn tại · NGƯỢC = SE có thứ chỏi hub · NỬA = có một phần, khai rõ phần nào.

B-01 — Liệt kê TỪNG CỬA sinh ý kiến phản biện, mỗi cửa chốt một đích ghi tệp nguyên văn

(neo: thư chính :155 bước 1 · phụ lục :147 sàn (i) · nghiệm thu ô 1 :172 "liệt kê từng cửa, đừng ghi 'tất cả các cửa'")

SE đã có — NỬA. Cửa của SE (liệt từng cửa, không ghi gộp):

# Cửa Có sinh ý kiến phản biện? Đích ghi tệp nguyên văn Bằng chứng
1 /session-start (bookend @open) CÓ — cặp lead-stale-auditor + lead-gap-auditor + ring2-audit runs/<id>/sub-<role>-*.md .claude/commands/session-start.md:269
2 /session-end (closeout) CÓ — cùng cặp + harvest-curator + tooling-auditor runs/<id>/sub-<role>-*.md session-end.md:119 · session-end.md:164 (khối instruments)
3 /tiep (nối mạch) CÓ — Sàn-3 probe + mind-check KHÔNG có đích tệp bắt buộc — kết quả in ra hội thoại tiep.md:154 (gọi probe) · :169 (mind-check)
4 /pause CÓ — đèn nợ + liệt việc đã-review WAL + run.md, không phải tệp nguyên văn per-cửa pause.md:113
5 HMW fan-out (mode B) CÓ — mỗi sub trả verdict runs/<id>/sub-<role>-<i>.md + <stage>-synthesis.md .claude/workflows/hmw.js:9 · runs/README.md:11 (C1 PHẲNG)
6 HMW mode A (return-delta-only, default S93+) KHÔNG có run-folder — by-design _ledger.md header (Mode-A ephemeral, S98)
7 /adap-apply · /adap-report · /check-email CÓ (phản biện adap) docs/governance/adap-reports/ cho report; /check-email, /adap-apply CHƯA ĐO N1 sub-invest-fitmap-S180.md:106 cũng khai chưa đo

Kết luận B-01: 5/7 cửa có đích ghi đĩa; cửa 3 và cửa 4 KHÔNG có — đây đúng cái bệnh hub kể ở phụ lục :147 ("một cờ cảnh báo phát ở cửa trước, tới cửa sau muốn truy lại thì không còn gì để đọc"). Cửa 6 là miễn hợp lệ có khai (by-design, có ghi lý do trong _ledger.md header) — đúng chuẩn không áp dụng của hub. THIẾU: bảng 7 dòng như trên chưa tồn tại ở bất kỳ đâu trong repo — tôi vừa dựng nó lần đầu ngay trong file này. Nghiệm thu ô 1 của hub đòi đúng bảng này.


B-02 — Khuôn tối thiểu của tệp nguyên văn (tiêu đề cố định · nhãn lượt chạy + mô hình tự khai · đầu vào ghim đích danh · kết luận · thân cấm nén)

(neo: thư chính :156 bước 2 · phụ lục :147)

SE — NỬA, và đây là chỗ mỏng nhất của lane ghi.

  • Có: runs/README.md:35 (C2) quy định scaffold run.md ở OPEN, có taskList snapshot (:45).
  • Có: AS-20 guard đòi END-line END <slug> — VERDICT=<…> cho mọi sub-*.md (docs/governance/error-ledger.md:38).
  • 🔴 NGƯỢC / hở nghiêm trọng: END-line đó CHƯA ĐƯỢC WIRE. session-end.md:128 khai thẳng: "Vế 'luật END-line' của H2-P5 CỐ Ý KHÔNG wire ở đây — đó là slot (44) chờ anh (chưa từng được hỏi)". Tức error-ledger cột "guard" mô tả một guard chưa có đường thi hành ⇒ người đọc error-ledger tưởng có máy canh. Đây đúng khoản A16 của hub ("để người đọc tưởng có máy canh mới là khai sai") và đúng lớp ghost-wire của chính SE (H18).
  • THIẾU: 3/5 trường khuôn — nhãn mô hình tự khai, đầu vào ghim đích danh, thân cấm nén — không có quy định thành văn nào ở runs/README.md. (File lane B này tự áp đủ 5 trường ở header, nhưng đó là tôi tự áp, không phải luật repo.)

B-03 — Đích ghi nằm trong vùng có quét bí mật, không rơi vùng miễn quét

(neo: thư chính :157 bước 3 · phụ lục :147 câu cuối)

SE — NỬA, và có một lỗ ĐO ĐƯỢC.

  • Có: scripts/session_ctx.py::secrets_sweep dùng rglob phủ trọn session-dir (:173, :180) — S153 đã kéo _mind vào lưới. cho .claude/sessions/.
  • 🔴 Lỗ: scripts/governance-detectors.ps1:128 liệt '\.claude\workflows\runs\' trong ExcludeDirFragment, và :1168 tự khai nguyên văn: "live under .claude/workflows/runs/ which is already an ExcludeDirFragment". Nghĩa là run-folder — nơi chứa toàn bộ vật chứng đắt tiền — nằm trong vùng detector CỐ Ý bỏ qua cho phần lớn phép quét. C11 phải tự mở lại $runsRoot (:1724) mới soi được. Đây chính xác là cảnh báo cuối sàn (i) của hub: "đừng đổ vào vùng miễn quét".
  • CHƯA ĐO: secrets_sweep có phủ .claude/workflows/runs/ không — cần grep -n "runs\|rglob\|scan_root" scripts/session_ctx.py quanh :150-200.

B-04 — Sổ mục lục hai tầng: tầng-A gói-theo-loại · tầng-B mục-lục-SỐNG

(neo: thư chính :158 bước 4 · phụ lục :159 sàn (iv))

🔴 Đây là khoản NẶNG NHẤT của lane B, và trạng thái thật KHÁC với những gì tên tệp gợi ý.

Tầng-A (gói theo loại: mẫu đường dẫn · chức năng · ai ghi · ai đọc · bộ tệp chuẩn) — ĐÃ-CÓ, khá tốt. .claude/workflows/runs/README.md (18.173 B) — có C1 cấu trúc PHẲNG (:11), C2 scaffold OPEN (:35), C3 git-tracked verify 2 nấc (:56), C4 per-turn primary (:74), C5 3-layer anti-miss (:79), C7 caveat trung thực (:104), C8 migration (:112), containment model (:128).

Tầng-B (mục-lục SỐNG) — 🔴 KHÔNG TỒN TẠI. _ledger.md đã CHẾT, và chết CÓ KHAI.

Đo (lệnh + kết quả, dán được):

ls .claude/workflows/runs/ | wc -l            → 90   (ENTRY: 88 thư mục + 2 tệp)
find .claude/workflows/runs -maxdepth 1 -mindepth 1 -type d | wc -l → 88  (FOLDER thật)
wc -c .claude/workflows/runs/_ledger.md       → 9683

🔴 Bẫy đơn-vị bắt được ngay tại đây (ca thứ 3 của phiên): N1 viết "90 folder" (sub-invest-fitmap-S180.md:73). Số 90 là số ENTRY của ls, không phải số FOLDER. Folder thật = 88. Chênh 2 = đúng 2 tệp README.md + _ledger.md. N1 không sai phép đo, sai nhãn đơn vị. → Hỏi "đếm CÁI GÌ" trước khi hỏi "ai sai": ở đây cả hai số đều đúng với đơn vị của nó.

Trạng thái _ledger.md: header dòng 3 khai nguyên văn 🧊 RETIRED (H18-B, S100 2026-07-02)"KHÔNG ghi beat mới". 15 row lịch sử, toàn bộ đề ngày 2026-06-18. Run mới nhất trên đĩa = 2026-08-07-S180-…. ⇒ Khoảng chết = 06-18 → 08-07 ≈ 50 ngày, 8815 = 73 run-folder không có dòng nào trong sổ.

🔸 Phải khai công bằng: đây KHÔNG phải "sổ chết vì quên". Nó là nghỉ hưu CÓ KHAI, có lý do đo được, có người kế nhiệm được chỉ định: header ghi rõ catch-rate 0/15 row lifetime + coverage workflow gần đây 0/8, và chỉ định "Orphan-authority = H2 FOLDER-SCAN", kèm cả caveat-3 parity trung thực ("run-folder-orphan chưa từng xảy ra ở CẢ 2 cơ chế — căn cứ retire = coverage-cấu-trúc, KHÔNG phải catch-rate hơn") và đường đảo ngược (gỡ dòng này + restore 6 mandate-consumer). Theo thang nhãn GĐ-3 của hub thì đây là "suy giảm hợp lệ", không phải "tự ý bỏ". NHƯNG — với GĐ-2(iv) thì hệ quả vẫn y hệt: SE hiện KHÔNG có tầng-B mục-lục-sống nào cho runs/. Cái thay thế (nhip-no-probe run-chua-gom) là một BỘ ĐẾM, không phải MỤC LỤC: nó in ra một con số, không liệt kê được run nào, không có ai-ghi/ai-đọc/bộ-tệp-chuẩn per-run, và không thể dùng làm nguồn thứ hai cho điểm-danh-2-nguồn (B-08) — vì nó đọc thẳng đĩa, tức nó chính là nguồn thứ nhất.

Trần dung lượng ở tệp cấu hình chung, tài liệu chỉ trỏ khoá — ĐÃ-CÓ và đúng chuẩn hub, nhưng ĐÚNG MỘT TẦNG KHÁC. memory-budget.json giữ archive_gate.autoinject_cap_bytes + tiers.l2_index.cap_bytes; nhip-no-probe.ps1:112-150 đọc khoá, thiếu khoá thì in CONFIG-THIEU(...) chứ KHÔNG tự chế mặc định. Đây là mẫu đúng y chữ hub. Nhưng nó áp cho agent-memory/, KHÔNG áp cho runs/runs/_ledger.mdruns/README.md không có trần nào, không khoá config nào, và không máy nào đo kích thước chúng.


B-05 — Vai điểm danh vật chứng, cấm sửacấm phán nội dung

(neo: thư chính :159 bước 5 · phụ lục :153 · nghiệm thu ô 2 :173 · TC-05 thư chính :80)

SE — ĐÃ-CÓ ở trục "cấm sửa", THIẾU ở trục "chuyên điểm danh vật chứng".

  • Cặp quan sát chạy VÔ-ĐIỀU-KIỆN @closeout: {harvest-curator, tooling-auditor}scripts/closeout-sentinel.ps1 header (:14-15) khai default -Roles. INFORM-only.
  • Ràng "cấm sửa" được cưỡng chế THẬT bằng gì: không phải bằng lời trong persona (propose-only sub vẫn Bash-write được — chính SE đã đo, error-ledger G-015). Backstop THẬT = git-diff commit-gate (AS-10). Đây là câu trả lời đúng và mạnh cho TC-05, và nó mạnh hơn cái hub mô tả (hub chỉ nói "ghi rõ nó cấm sửa" — SE có cơ chế chứ không chỉ có chữ).
  • 🔴 THIẾU: cả 2 vai đó điểm danh MEMORY/TOOLING, không điểm danh VẬT CHỨNG RUN-FOLDER. Không vai nào có nhiệm vụ "so bộ tệp chuẩn của runs/<id>/ rồi báo thiếu". closeout-sentinel M5 gần nhất — nhưng nó bắt "audit đo rồi như chưa đo" (thiếu delta role-dir), không bắt "tệp trong run-folder cụt/rỗng".

B-06 — 🔴 Máy điểm danh 4 vị từ: VẮNG · RỖNG · CỤT · NÉN-QUÁ-TAY + vị từ bộ-tệp-nội-bộ-thư-mục

(neo: thư chính :160 bước 6 · phụ lục :149 sàn (ii) · bẫy 1 :165 · nghiệm thu ô 3 :174)

Đây là trục nặng nhất mà lead giao. Trả lời thẳng: SE có 2/4 vị từ, và cả 2 đều ở SAI TẦNG.

Vị từ hub SE có máy? Máy nào · ở đâu · phủ cái gì
VẮNG , nhưng phủ 2 tầng hẹp (a) scripts/nhip-no-probe.ps1:160-181 — vắng *-synthesis.md trong run-folder (DUAL-ACCEPT port tiep.md:40-53). (b) scripts/memory-archive-gate.ps1 A7 — pointer trong archive/_INDEX.md phải resolve + file tồn tại.
RỖNG , cùng 2 tầng đó (a) nhip-no-probe.ps1:168 (Get-ByteLen …) -gt 0chỉ áp cho *-synthesis.md. (b) memory-archive-gate.ps1 A7 size>0.
CỤT (thiếu đầu / thiếu thân) KHÔNG CÓ MÁY NÀO error-ledger :40 AS-17 — cột guard ghi "lead verify BYTE-CONTENT tăng thật GIỮA wave", cột kiểu ghi thẳng procedural (:74). Tức = NGHI THỨC, người phải nhớ.
NÉN QUÁ TAY (so số ký tự với nguồn cùng đơn vị) KHÔNG CÓ MÁY NÀO error-ledger :39 AS-19 — tự khai nguyên văn: "🔴 hiện là nghi-thức, chưa cơ-khí-hoá". SE đã tự biết và đã tự ghi; hub chỉ xác nhận từ ngoài.
bộ-tệp-nội-bộ-thư-mục (soi chính thư mục của lượt chạy hiện tại) KHÔNG CÓ Không có định nghĩa "bộ tệp chuẩn của một run-folder" ở bất kỳ đâu. runs/README.md:11 C1 mô tả hình dạng (run.md + sub-*.md + *-synthesis.md) nhưng không máy nào đọc mô tả đó để đối chiếu. ⇒ SE đang giẫm đúng Bẫy 1 của hub (:165).

🔴 Kết luận B-06 — câu trả lời cho trục "cơ khí hoá vs nghi thức": N1 nói SE "có AS-17/AS-19"đúng về sự tồn tại của LUẬTsai nếu đọc thành có MÁY. Bằng chứng không phải suy đoán của tôi — nó là lời tự khai của chính SE trong cột kiểu của error-ledger: AS-17 = procedural, AS-19 = chưa cơ-khí-hoá. Hub GĐ-2 đòi vị từ máy kiểm được; ở 2 vị từ đắt nhất (CỤT, NÉN) SE có 0 máy.


B-07 — Ba nhịp chạy: đầu phiên · ngay sau mỗi lượt chạy đắt · cuối phiên

(neo: thư chính :161 bước 7 · phụ lục :157 sàn (iii))

SE — 2/3 nhịp ĐÃ-CÓ, nhịp giữa THIẾU (và đó đúng là nhịp cứu được tiền).

Nhịp SE có? Bằng chứng
Đầu phiên session-start.md:269 — bookend @open + nhip-no-probe + Sàn-3
Cuối phiên session-end.md:164 — khối instruments 5 máy: measure-agent-memory + memory-archive-gate + crystallized-backfill + nhip-no-probe + mfe-eval AUTO
Ngay sau mỗi lượt chạy đắt THIẾU harvest per-turn primary (hmw.js:9 C4) nhưng không có máy điểm danh BẮT BUỘC chạy ngay sau mỗi spawn đắt.

🔴 Đây chính là nhịp mà nếu có thì ca N1 đã được bắt trong ngày. Hub viết ở :157: "theo sự kiện, ngay sau mỗi lượt chạy đắt — bắt lúc còn cứu được". N1 đốt 202K token rồi hạ cánh skeleton; không máy nào chạy giữa lúc đó và lúc lead tình cờ mở file ra đọc.


B-08 — Điểm danh HAI NGUỒN (đĩa đọc thẳng ⟂ mục lục), ghi ra chênh lệch thay vì làm tròn

(neo: thư chính :162 bước 8 · phụ lục :155 gạch đầu dòng 3 · nghiệm thu ô 6 :177)

🔴 SE — THIẾU HOÀN TOÀN, và thiếu vì lý do cấu trúc chứ không phải vì quên.

Điểm danh 2 nguồn cần hai nguồn độc lập. SE hiện chỉ có một: đĩa. Nguồn thứ hai (mục lục) đã nghỉ hưu (B-04) ⇒ phép so không có vế phải. Không phải "chưa làm phép so", mà là không tồn tại thứ để so.

Cần nói rõ vì sao hub coi khoản này nặng (phụ lục :155): "Chỉ đọc mục lục là sai về nguyên tắc, vì mục lục do chính người điều phối ghi — đọc nó là tự soi mình." SE hiện ở thái cực đối xứng: chỉ đọc đĩa. Đĩa thì không nói dối, nhưng đĩa không biết cái gì lẽ ra phải có mà không có — nó chỉ biết cái đang có. Đó đúng là lý do run-chua-gom đếm được "thiếu synthesis" (vì hình dạng đó được hardcode trong script) nhưng không đếm được "thiếu lane N3-lane-C" — không nguồn nào khai lượt chạy này lẽ ra đẻ mấy tệp.

Nguyên liệu SE có sẵn để dựng vế phải: run.md đã chứa taskList snapshot ghi TRƯỚC launch (runs/README.md:45, H22). Đó là bản kê "lẽ ra phải có" — tức vế phải đã tồn tại về mặt dữ liệu, chỉ chưa ai đọc nó bằng máy. Ở chính run này, run.md:22/:34/:60-61 liệt đủ N1…N5. ⇒ khoản B-08 với SE rẻ hơn vẻ ngoài: không phải dựng sổ mới, mà là đọc run.md làm nguồn-2.


B-09 — 🔴 Khoản sàn in đậm GĐ-2 (v) "Khai luôn điểm mù" — khoản N2 F-06 báo vắng trọn khỏi bản N1

(neo: phụ lục :161 — in đậm ⇒ thuộc sàn bắt buộc theo thư chính :281)

Hub đòi chính xác cái gì (đọc nguyên văn :161): "Vật chứng của chính vai điểm danh sinh ra sau khi nó chạy xong, nên nó không tự soi được. Cần một vai khác cùng phiên, cộng lượt soi ở đầu phiên sau, mới phủ hết." Bóc ra 3 vế đo được:

  • (v-1) thừa nhận thành văn rằng vai điểm danh có điểm mù về chính nó;
  • (v-2)vai thứ hai cùng phiên soi chéo;
  • (v-3)lượt soi ở ĐẦU PHIÊN SAU bắt phần lọt.

SE có tương đương gì (N2 gợi sentinel + bookend — tôi xác nhận và ghi rõ hơn):

Vế SE có? Vật thật
(v-1) thừa nhận điểm mù thành văn ⚠️ NỬA — có nhận thức, chưa thành khoản runs/README.md:104 C7 "CAVEAT trung-thực (no-overclaim)" · _ledger.md header caveat-3 parity · error-ledger AS-17(b) "phép trích-xuất trả RỖNG phải phân biệt 'không có gì' ⟂ 'phép đo hỏng'" (:120). Đây là cùng họ với điểm mù nhưng không phải cùng mệnh đề: SE nói "đừng đọc rỗng thành sạch", hub nói "vai điểm danh không tự soi được chính nó".
(v-2) vai thứ hai cùng phiên CÓ, mạnh closeout-sentinel.ps1 chạy cặp {harvest-curator, tooling-auditor} vô-điều-kiện; bookend chạy cặp lead-stale + lead-gap; ring2-audit AUTO chạy sau cặp và PIN đích danh run-folder tươi (cấm glob-latest). Chữ "PIN đích danh, cấm glob-latest" chính là cơ chế cho phép vai-sau soi vật-chứng-của-vai-trước.
(v-3) lượt soi đầu phiên sau CÓ, và đúng nguyên văn hub Bookend chạy ở CẢ HAI đầu: session-start.md:269session-end.md:119 (HÌNH B @S149). closeout-sentinel M5 = "lưới lùi cho cửa chết sớm".

🔴 Phán quyết B-09 (độc lập, không gật theo ai):

  1. N2 F-06 ĐÚNG — khoản (v) vắng trọn khỏi cả cột "Hub đòi" lẫn cột "SE thiếu" của N1 (sub-invest-fitmap-S180.md:70 liệt đúng 6 ý, không có (v)).
  2. N2 còn nói nhẹ hơn sự thật ở một chỗ: N2 viết SE "có họ hàng gần". Đo kỹ thì SE có 2/3 vế ĐẦY ĐỦ và đúng nguyên văn (v-2, v-3) — đây là khoản SE gần như đã áp xong mà bản đồ lại bỏ trắng. Mất khoản này không phải mất cảnh báo, mà là mất điểm cho việc đã làm đúng — đúng cái A13 của hub cảnh báo (:352).
  3. Còn thiếu thật, và thiếu nhỏ: chỉ (v-1) — một dòng thành văn đặt ở runs/README.md C7 nói rõ "vật chứng của vai điểm danh sinh sau khi nó chạy ⇒ nó không nằm trong phạm vi tự soi; phủ bằng vai-cặp cùng phiên + bookend @open phiên sau". Chi phí ≈ 1 đoạn văn; giá trị = đóng trọn một khoản sàn in đậm.
  4. 🔴 Điểm mù mà chính hub cũng chưa nói tới, tôi bổ sung: ở SE, ring2-audit PIN run-folder tươi — nhưng vật chứng của ring2 lại sinh sau ring2. Vế (v-3) của hub (bookend phiên sau) chỉ phủ nếu bookend phiên sau thật sự đọc run-folder phiên trước. CHƯA ĐO — cần grep -n "run-folder\|runs/\|phiên trước" .claude/agents/lead-gap-auditor.md .claude/agents/lead-stale-auditor.md.

B-10 — Mức nghiêm trọng tỉ lệ với chi phí chạy lại

(neo: phụ lục :154 · thư chính :287 — "nhà không có lượt chạy đắt thì phần này là không áp dụng, nhưng phải ghi lý do")

SE — THIẾU, và KHÔNG được khai không áp dụng. SE lượt chạy đắt và có bằng chứng số: run.md:25 — N1 lượt-1 đốt 202K token / 27 tool-use / 545s. ⇒ nhánh miễn của hub không áp dụng cho SE. Máy hiện tại đối xử mọi tệp như nhau: nhip-no-probe đếm orphan không phân biệt run 3-phút với run 202K-token. Không có trường "chi phí" nào trong run.md scaffold bắt buộc (có ghi tay ở :25 nhưng là văn xuôi, không phải trường máy đọc). 🔸 Ràng buộc SE phải tôn trọng khi dựng: doctrine "đo BYTE, CẤM quy token" (S158). ⇒ trường chi phí nên là byte đĩa + số tool-use + giây, hoặc token có neo nguồn (dán từ máy, không gõ tay) — chứ không phải một chỉ số tổng tự chế.


B-11 — Bẫy 2 hub: ghi vật chứng TRƯỚC khi bắn, không phải sau

(neo: phụ lục :166)

SE — ĐÃ-CÓ, và mạnh hơn hub. runs/README.md:35 C2 — scaffold run.md ở OPEN TRƯỚC khi invoke Workflow; :45 taskList snapshot ghi TRƯỚC launch (H22); spec-pin trước spawn (H21). Hub tự khai mắc lỗi này "nhiều lần trong cùng một ngày"; SE đã cơ-khí-hoá bằng thứ tự bắt buộc trong command. 🔸 Nhưng có mặt sau, và mặt sau đó đang chảy máu: ghi run.md trước ≠ sub-file có ruột. Ca N1 hôm nay: run.md đầy đủ, sub-* rỗng ruột. ⇒ Bẫy 2 đã đóng ở tầng thư mục, còn hở ở tầng tệp con.


B-12 — Bẫy 3 hub: cuối ngày là vùng nguy hiểm — vật chứng bền phải ghi ngay khi kết luận về

(neo: phụ lục :167)

SE — ĐÃ-CÓ ở mức luật, THIẾU ở mức máy.

  • Luật có, và có răng đã chứng minh: AS-17 guard "resume-in-session ép đổ ruột" — S151 cứu 5/5 sạch, 0 byte mất (error-ledger:74). WAL S180 khai "#53: 6/6 vai nặng dính, recover 6/6 mất 0 byte".
  • Nhưng đó là người vá sau khi sự cố xảy ra, không phải máy chặn trước. Không có vị từ nào chạy tự động lúc kết luận về.
  • 🔸 Đối chứng dương cho biết luật này CÓ tác dụng thật: feedback_agent_return_garble_recover ghi trio return-only 3/3 CLEAN cùng phiên 10-garble ⇒ khuôn-return-cứng sống sót tốt hơn. Tức SE đã đo được thứ giúp giảm mất mát; nó chỉ chưa được đóng thành vị từ.

B-13 — Nghiệm thu ô 4 hub: đối chứng dương — gài một tệp rỗng vào phạm vi thì máy PHẢI bắt

(neo: phụ lục :175 · thư chính :169)

🔴 SE — TRƯỢT, và tôi đã chạy phép thử này chứ không suy đoán. Kết quả ở §2 dưới.


§2 — Phép thử tay: chạy máy SE lên đúng hiện vật của ca N1

Thiết lập (sandbox, KHÔNG chạm repo thật):

  • Rút bản lượt-1 của N1 từ git: git show c7248b5:.claude/workflows/runs/2026-08-07-S180-…/sub-invest-fitmap-S180.md7.049 B (khớp đúng con số lead đưa; bản hiện tại ở d8c107c = 48.433 B).
  • Dựng sandbox/.claude/workflows/runs/2026-08-07-SBX-skeleton/ gồm: run.md · invest-synthesis.md · sub-invest-fitmap-S180.md = bản skeleton 7.049 B · sub-empty-lane.md = 0 byte (đây chính là "tệp rỗng gài vào phạm vi" mà nghiệm thu ô 4 của hub đòi).

Đo hiện vật skeleton (bản 7.049 B):

grep -c "^#"       → 10      (1 tiêu đề + 9 heading mục)
grep -n "^##"      → 9 dòng
grep -c "ĐANG ĐO"  → 5       (+2 dòng "[CHỜ §…]" = 7 nhãn treo)

Sáu heading mang nhãn treo: ### GĐ-1..GĐ-6 [ĐANG ĐO] · ## §2 [ĐANG ĐO] · ## §3 [ĐANG ĐO] · ## §4 [ĐANG ĐO] · ## §5 [CHỜ §1-§4] · ## §6 [CHỜ §1-§5]. Xác nhận con số "6/9" của lead — và khai mẫu số mà lead không khai: mẫu số = 9 dòng heading cấp ##/### (không tính dòng tiêu đề #). Nếu đếm theo mục cấp 1 (§0…§6) thì là 5/7; nếu đếm theo ruột thật thì §0 + GĐ-0 xong, phần còn lại trống. Ba cách đếm, ba con số, cùng một sự thật — nên bắt buộc phải khai đếm-cái-gì.

Chạy máy SE (scripts/nhip-no-probe.ps1 -RepoRoot <sandbox>):

NHIP-NO: kiem light 1/6 deep 14/15 ok | tran-bo-nho 0 over-cap l2idx 0 over | run-chua-gom 0 | pull-cach 16 ngay
exit=0

🔴 run-chua-gom 0 — SẠCH. Máy nhìn thẳng vào một thư mục chứa (a) skeleton 6/9 mục rỗng và (b) một tệp 0 byte, rồi báo không có gì bất thường.

CONTROL-DƯƠNG (bắt buộc — chứng thước không hỏng): giấu invest-synthesis.md đi rồi chạy lại:

… | run-chua-gom 1 | …     ← bắt được
… | run-chua-gom 0 | …     ← trả lại synthesis, sạch trở lại

Thước SỐNG. Vậy 0 ở trên là mù thật, không phải hỏng máy. (Đây đúng phép "0-hit phải kèm control-dương".)

Kết luận §2 — trả lời trực diện câu lead hỏi: với ca N1, KHÔNG máy nào của SE bắt được, vì:

  • nhip-no-probe chỉ soi sự tồn tại + độ rỗng của *-synthesis.mdsub-*.md hoàn toàn ngoài tầm;
  • memory-archive-gate soi agent-memory/, không soi runs/;
  • closeout-sentinel M5 soi delta thư mục vai, không soi ruột tệp;
  • governance-detectors C11 có mở runs/ nhưng chỉ kiểm khuôn tag FLAG (và chỉ cho tệp tên chứa lead-stale|lead-gap|ring2-audit) + diary-delta cho vai INFORM-onlysub-invest-fitmap-*.md không khớp cả hai lối;
  • guard AS-17 "verify byte tăng"theo đúng thiết kế của nó: 7.049 > 0 và đang tăng ⇒ mọi vị từ dựa trên kích thước đều xanh.

🔴 Chẩn đoán gốc (không phải "quên viết máy"): vị từ đang đo KÍCH THƯỚC, còn thứ hỏng là TỈ LỆ KHUNG/RUỘT. Hai đại lượng này không tương quan — một tệp toàn heading tăng byte y hệt một tệp đầy nội dung. Đây cũng đúng chữ SE tự viết trong feedback_agent_return_garble_recover: skeleton-nấc-2 … byte>0 nên guard "verify byte tăng" mù, phải đọc RUỘT. SE đã biết trước hôm nay; cái thiếu là vị từ.


§3 — Vị từ ĐỀ XUẤT (propose-only — lead/anh quyết; tôi không sửa gì)

Bốn vị từ, xếp theo rẻ→đắt. Mỗi cái kèm cách nó TRƯỢT nếu sai (để không thành nhãn-đo-lường rỗng).

V-1 — Tỉ lệ ruột/khung (rẻ nhất, bắt trúng ca N1).

body=$(grep -vcE '^#{1,4} |^\s*$|^>|^\|' <file>)   # dòng ruột thật
head=$(grep -cE '^#{1,4} ' <file>)                  # dòng heading
FLAG nếu  head > 0  và  body / head < K

Ca N1 lượt-1: body ≈ 30 (§0 + GĐ-0), head = 10 ⇒ tỉ lệ ≈ 3. Bản hoàn chỉnh 48.433 B: tỉ lệ cao hơn hẳn. K phải do owner đặt, và phải đo phân bố trên 88 run-folder hiện có trước khi chọn — chọn K bằng cảm tính là tự đẻ dương-giả. Trượt khi: tệp toàn bảng markdown (|) — nên dòng bảng phải tính là ruột, tôi đã loại ^\| khỏi tử số ⇒ cần sửa: bảng PHẢI đếm là ruột. Ghi rõ đây là chỗ vị từ này dễ sai nhất.

V-2 — Đếm nhãn treo (bắt trực tiếp, gần như 0 dương-giả).

grep -cE '\[(ĐANG ĐO|CHỜ|TODO|PENDING)[^]]*\]' <file>   →  > 0  ⇒ FLAG "artifact còn nhãn treo"

Ca N1 lượt-1 = 7 hit ⇒ bắt ngay. Bản cuối = cần đo lại (nếu bản cuối vẫn còn nhãn treo hợp lệ thì vị từ này cho dương-giả — CHƯA ĐO, cần grep -cE '\[(ĐANG ĐO|CHỜ)' sub-invest-fitmap-S180.md trên bản 48.433 B). Ưu điểm lớn:thưởng cho hành vi đúng — sub ghi nhãn treo thật thà vẫn bị bắt, nhưng bị bắt có tên, đúng tinh thần A14 của hub ("nợ có tên sẽ được trả").

V-3 — Bộ-tệp-nội-bộ-thư-mục = đọc run.md làm nguồn-2 (đóng luôn B-08 + Bẫy 1). Vị từ: mọi lane liệt trong taskList của run.md phải có tệp tương ứng trong cùng thư mục, và tệp đó phải qua V-1/V-2. Chênh lệch in ra danh sách tên, không in số tổng. Đây là khoản đắt nhất nhưng cũng là khoản duy nhất biến "đếm" thành "mục lục". Nguyên liệu đã có sẵn (runs/README.md:45 taskList snapshot).

V-4 — Nén quá tay (AS-19): so số ký tự với nguồn CÙNG ĐƠN VỊ. Khi một block bị nén: chars(sau) / chars(trước) < ngưỡng số mục (grep -c '^- ' hoặc ^\|) giảm ⇒ FLAG. Hub nói thẳng: không có nguồn cùng đơn vị thì khai "không đo được" — với SE nguồn cùng đơn vị có sẵn ở git (git show HEAD~1:<file>). Trượt khi: nén hợp lệ có khai (chuyển sang con trỏ) ⇒ cần cho phép miễn-trừ hiện hình (một dòng khai nơi-đi từng ý, đúng chữ AS-19).


§4 — 🔴 Ca sống của chính vai đi soi (datum, không phải lời xin lỗi)

Lead đo file này ở lượt-1: 2.765 B · 3 heading · 19 dòng ruột · 0 placeholder, sau 150K token / 37 tool-use. Đây là datum thứ hai trong cùng một phiên cho đúng lớp bệnh, và nó khác N1 ở một chỗ có ý nghĩa cho việc chọn vị từ:

N1 lượt-1 N3-lane-B lượt-1
byte 7.049 2.765
nhãn treo 7 0
tỉ lệ ruột/heading ≈ 3 ≈ 6,3
bản chất khung đầy đủ, ruột rỗng khung nhỏ, ruột thật nhưng mới bắt đầu

V-2 (đếm nhãn treo) phân biệt đúng hai ca này; V-1 (tỉ lệ) thì không — nó sẽ đánh cả hai, hoặc tha cả hai, tuỳ K. Bài học cho người dựng máy: V-2 rẻ hơn VÀ chính xác hơn V-1 cho đúng lớp skeleton-ruột-rỗng; V-1 chỉ nên là lưới phụ. Nếu không có ca thứ hai này thì không phát hiện được điều đó ⇒ ghi lại như bằng chứng, không phải như lời thú tội. 🔸 Khai thẳng mặt còn lại: cả hai ca đều cho thấy tỉ lệ byte-đĩa / token-đốt là tín hiệu giám sát được (N1: 7.049 B / 202K ≈ 15% giá trị trên đĩa theo chính lead tính; tôi: 2.765 B / 150K). investigator-codebase archive S180 đã đề xuất nối tín hiệu này vào AS-17. Tôi ủng hộ, có bảo lưu: SE có doctrine "đo BYTE, CẤM quy token" ⇒ nếu wire thì token phải dán nguyên văn từ máy, không gõ tay (đúng luật A11 + đèn-nợ của hub).


§5 — Ô fit-map GĐ-2: đúng giá trị nào, và mẫu số

N1 ghi ô GĐ-2 = "áp dụng (nâng từ ~70%)" (sub-invest-fitmap-S180.md:224) và TC-05 = "ĐÃ CÓ 70%" (:179).

🔴 Cả hai đều vi phạm A11 (con số phải neo nguồn) và Bẫy-5 GĐ-3 (báo đủ tick mà không nói mẫu số). N2 đã bắt (sub-review-n2-S180.md:82) và đếm lại ≈ 5,5-6/8 bước. Tôi đếm độc lập theo mẫu số riêng của lane B = 13 khoản:

Trạng thái Khoản Số
ĐÃ-CÓ (trọn) B-05 (cấm-sửa, mạnh hơn hub) · B-11 (ghi trước khi bắn) 2
NỬA (có phần, thiếu phần — liệt từng cái) B-01 (5/7 cửa) · B-02 (2/5 trường, END-line chưa wire) · B-03 (sweep có, runs/ trong ExcludeDirFragment) · B-04 (tầng-A có, tầng-B chết) · B-06 (2/4 vị từ, sai tầng) · B-07 (2/3 nhịp) · B-09 (2/3 vế) · B-12 (luật có, máy không) 8
THIẾU (trọn) B-08 (điểm danh 2 nguồn) · B-10 (mức nghiêm trọng theo chi phí) · B-13 (đối chứng dương — đã chạy, TRƯỢT) 3
NGƯỢC 0 — GĐ-2 không có xung đột triết lý nào với SE. (Xung đột exit-0-advisory ⟂ cổng-chặn-mã-lỗi là của GĐ-3, không phải GĐ-2. N1 ghi "Xung đột: không" ở GĐ-2 — tôi xác nhận N1 đúng ở điểm này.) 0

Quy đổi sang các mẫu số khác — để ai đếm kiểu nào cũng lần được:

  • Theo 13 khoản lane B: 2 trọn + 8 nửa + 3 thiếu → nếu tính nửa = 0,5 thì 6/13 ≈ 46%.
  • Theo 8 bước thư chính (:154-162): trùng cách N2 đếm ⇒ ≈ 5,5-6/8 ≈ 69-75%.
  • Theo 6 ô nghiệm thu phụ lục (:172-177): ô1 nửa · ô2 đạt · ô3 trượt · ô4 trượt (đã chạy, §2) · ô5 nửa (sổ tồn tại nhưng đã retired; không có trần khai) · ô6 trượt1,5/6 = 25%.

🔴 Ba mẫu số, ba con số: 46% · 72% · 25%. Chênh gần ba lần. Đây là lý do hub cấm in số trần. Con số "~70%" của N1 không sai — nó là con số của mẫu số 8-bước, tức mẫu số dễ nhất trong ba. Mẫu số khó nhất và cũng là mẫu số hub dùng để cấp nấc6 ô nghiệm thu, và ở đó SE mới 25%.

Ô fit-map đúng (1 trong 3 giá trị hub cho phép): đã áp một phần không phải giá trị hợp lệ ⇒ chọn chưa làm + mốc. Cụ thể: GĐ-2 = chưa làm, kèm mốc W2 và kèm khai "tầng-A + vai-cấm-sửa + ghi-trước-khi-bắn đã có sẵn, sẽ tái dùng". Lý do phải chọn chưa làm chứ không đã áp: 4/6 ô nghiệm thu trượt, trong đó ô-4 tôi đã chạy phép thử và máy trượt thật (§2) — theo A14 của hub, đánh dấu xong mà không có bằng chứng chạy được là lớp lỗi đắt nhất.


§6 — CHƯA ĐO (bàn giao được, kèm lệnh cụ thể)

  1. secrets_sweep có phủ .claude/workflows/runs/ không → grep -n "rglob\|scan_root\|runs" scripts/session_ctx.py quanh :150-200.
  2. Bookend @open phiên sau có thật sự đọc run-folder phiên TRƯỚC không (vế v-3 của B-09) → grep -n "run-folder\|runs/\|phiên trước\|previous" .claude/agents/lead-gap-auditor.md .claude/agents/lead-stale-auditor.md.
  3. Bản N1 hoàn chỉnh (48.433 B) còn nhãn treo nào không (chỉnh ngưỡng V-2) → grep -cE '\[(ĐANG ĐO|CHỜ)' .claude/workflows/runs/2026-08-07-S180-…/sub-invest-fitmap-S180.md.
  4. Phân bố tỉ lệ ruột/heading trên 88 run-folder để chọn K cho V-1 → vòng lặp grep -vcE / grep -cE trên runs/*/sub-*.md.
  5. governance-detectors.ps1 chạy trên repo thật đã xong (nền, exit=0) — chưa đọc output; cần soi xem có FLAG nào chạm runs/ ngoài C11 không → đọc det-real.txt, grep -i "runs\|C11".

→ 5/5 mục trên ĐÃ ĐÓNG ở §7 dưới. Không còn nợ trong lane B.


§7 — Đóng 5 mục CHƯA ĐO (đo xong, dán lệnh + kết quả)

7.1 — [đóng mục 1] secrets_sweep KHÔNG phủ runs/ ⇒ B-03 nặng hơn tôi viết ở §1

grep -n "def secrets_sweep\|rglob\|secrets_sweep(" scripts/session_ctx.py
  :173  def secrets_sweep(session_dir):
  :180      for p in sorted(session_dir.rglob('*')):
  :787      hits = secrets_sweep(session_dir)

Hàm nhận session_dirrglob bên trong đó ⇒ phạm vi = .claude/sessions/<n>/. .claude/workflows/runs/ nằm ngoài.

🔴 Sửa đánh giá B-03 từ NỬA xuống THIẾU-CÓ-TÊN. Vật chứng đắt tiền của SE bị hai vùng miễn cùng lúc:

  1. ngoài phạm vi quét bí mật (secrets_sweep chỉ soi sessions/);
  2. trong danh sách loại trừ của detector — output thật của lượt chạy hôm nay in nguyên văn ở cuối: - excluded: .claude/workflows/runs.

Hub viết ở bước 3 (:157): "Kiểm tra đích ghi nằm trong vùng có quét bí mật, không rơi vào vùng miễn quét."SE trượt đúng khoản này, và trượt ở nơi đắt nhất. N1 khai "đích ghi nằm trong vùng có quét bí mật ✓" (:79) — câu đó đúng cho sessions/N1 có ghi kèm "cho sessions/", nên đây không phải N1 sai; nhưng ô kết luận GĐ-2 lại không kéo hệ quả cho runs/.


7.2 — [đóng mục 3 + 4] V-2 tinh chỉnh: phân biệt DÙNG ⟂ NHẮC ĐẾN, 0 dương-giả trên 3 file

Vị từ thô grep -cE '\[(ĐANG ĐO|CHỜ)' cho dương-giả trên chính bản hoàn chỉnh:

sub-invest-fitmap-S180.md (48.433 B, bản XONG)  → 1 hit
  :5  > **Trạng thái file:** … Mục nào chưa xong sẽ có nhãn `[ĐANG ĐO]`.

Hit đó là câu định nghĩa nhãn, không phải nhãn đang treo. Đây đúng lớp citation-trap self-reference SE đã ghi vào sổ (feedback_citation_trap_selfreference: doc định-nghĩa anti-pattern TẤT-YẾU chứa mẫu đó ⇒ detector khớp-mẫu bắt chính nó), và cách vá đã có sẵn trong chính bài học đó: discriminator = enclosure, use ⟂ mention.

Vị từ V-2 chốt lại — neo vào HEADING (chỗ duy nhất nhãn treo có nghĩa "mục này chưa xong"):

grep -cE '^#{1,6} .*\[(ĐANG ĐO|CHỜ|TODO|PENDING)' <file>      # >0 ⇒ FLAG

Bảng đối chứng 3 file (2 âm-thật + 1 dương-thật):

File thô V-2 heading-scoped Đúng?
N1 lượt-1 (7.049 B, skeleton) 7 6 dương-thật — và 6 khớp đúng con số "6/9" của lead
N1 bản xong (48.433 B) 1 0 âm-thật (thô cho dương-giả)
chính file lane B này 2 0 âm-thật (thô cho dương-giả)

V-2 heading-scoped: 3/3 đúng, 0 dương-giả, 1 lệnh, không cần trạng thái, không cần config. Đây là ứng viên rẻ nhất và sạch nhất trong 4 vị từ ở §3. Nó tự nó bắt được ca N1. 🔸 Khai giới hạn thật thà: nó chỉ bắt sub thật thà tự dán nhãn treo. Sub để heading trống trơn (không nhãn) thì V-2 mù — chỗ đó phải là V-1 tỉ lệ ruột/heading hoặc V-3 bộ-tệp-nội-bộ đỡ. Ba vị từ bổ sung nhau, không thay nhau. 🔸 Mục 4 (đo phân bố K cho V-1 trên 88 folder) không còn nằm trên đường tới hạn: V-2 đã đủ cho ca N1 mà không cần ngưỡng nào. Giữ mục 4 làm việc tuỳ chọn của V-1, không phải điều kiện chặn.


7.3 — [đóng mục 2] Vế (v-3) của B-09 yếu hơn tôi viết — hạ từ xuống ⚠️ NỬA

grep -c "run-folder\|runs/" .claude/agents/lead-gap-auditor.md    → 1
grep -c "run-folder\|runs/" .claude/agents/lead-stale-auditor.md  → 0
control-dương (từ khoá chắc chắn có, cùng 2 file):
grep -c "FLAG"  → lead-gap 3 · lead-stale 4     ⇒ lệnh chạy đúng, 0 ở trên là 0 THẬT

Và hit duy nhất của lead-gap-auditor không phải chỉ thị đọc run-folder phiên trước — nó là dòng mô tả class gap-incident-unrecorded (:39).

🔴 Hệ quả: cặp bookend có chạy ở đầu phiên sau (đúng nhịp), nhưng spec của cả 2 vai không hề bảo chúng soi vật chứng run-folder của phiên trước. Cái phủ vế (v-3) trên thực tế là closeout-sentinel M5 (delta thư mục vai) + nhip-no-probe run-chua-gom — cả hai đều không đọc ruột tệp. ⇒ điểm mù của hub (:161) vẫn mở ở SE: vật chứng do vai điểm danh sinh ra chưa có ai soi ruột, kể cả ở phiên sau. Sửa bảng B-09: (v-1) NỬA · (v-2) CÓ · (v-3) ⚠️ NỬA (có nhịp, thiếu chỉ thị) ⇒ khoản (v) tổng = 1/3 trọn + 2 nửa, không phải 2/3 như tôi viết ở §1. Tự đính chính, giữ cả câu cũ để so.


7.4 — [đóng mục 5] Detector thật sự chạm runs/ bao nhiêu, và chạm để làm gì

Chạy thật scripts/governance-detectors.ps1 trên repo (read-only, exit=0):

TOTAL FLAGS: 49
INFORM-ONLY (…C11 h24-flag-form…): 21 - counted SEPARATELY, NOT in TOTAL
  - excluded: .claude/workflows/runs          ← in ra ở khối tự khai cuối
self-match check: … leaked excluded files in scan = 0   [OK] 0 self-match (C4 satisfied)
NOTE: DETECT-only lowering net. Exit 0 always (never fails build). FLAGs are advisory.

Lọc các dòng chạm runs/:

grep DETECTOR det-real.txt | grep workflows/runs | wc -l   → 21
… | sed 's/|.*//' | sort | uniq -c                        → 21× "[DETECTOR] LOW"

Cả 21 dòng đều là C11 FLAG-khuôn, severity LOW, INFORM-only, và toàn bộ trỏ vào run-folder S151. Không một dòng nào nói về ruột tệp cụt / rỗng / nén.

🔴 Ba kết luận đo được, không suy đoán:

  1. runs/vùng loại trừ có tuyên bố của detector; C11 là cửa hậu duy nhất mở lại nó, và cửa hậu đó chỉ soi khuôn tag FLAG + diary-delta.
  2. 21 flag chạm runs/ được đếm TÁCH khỏi TOTAL 49 ⇒ ngay cả khi C11 có bắt gì trong run-folder, con số đó không vào tổng. Với GĐ-2 điều này quan trọng: mức nghiêm trọng của vật chứng đắt (B-10) hiện đang bị đặt ở nấc THẤP NHẤT (LOW + INFORM-only + ngoài TOTAL) — ngược đúng chiều hub yêu cầu ở phụ lục :154 ("Lượt chạy đắt thiếu tệp là nghiêm trọng nhất").
  3. Câu cuối Exit 0 always … FLAGs are advisory là hạt nhân xung đột GĐ-3, không phải GĐ-2 — tôi không kéo nó vào lane B. Ghi ở đây chỉ để người đọc sau không nhầm hai lane. (OD-2: GĐ-3 làm sau GĐ-2, không gộp.)

§8 — Chốt lane B

Mẫu số dùng suốt: 13 khoản (B-01…B-13). Sau khi §7 sửa 2 khoản (B-03 xuống THIẾU, B-09 xuống nửa):

  • ĐÃ-CÓ trọn: 2 — B-05 (vai cấm-sửa, backstop git-diff mạnh hơn hub) · B-11 (ghi vật chứng trước khi bắn).
  • NỬA: 7 — B-01 (5/7 cửa) · B-02 (2/5 trường, END-line ghost-wire) · B-04 (tầng-A có, tầng-B chết-có-khai) · B-06 (2/4 vị từ, sai tầng) · B-07 (2/3 nhịp) · B-09 (1 trọn + 2 nửa) · B-12 (luật có răng, máy không có).
  • THIẾU trọn: 4 — B-03 (runs/ ngoài quét bí mật trong excluded) · B-08 (điểm danh 2 nguồn — không có vế phải) · B-10 (mức nghiêm trọng theo chi phí — hiện đang ngược chiều) · B-13 (đối chứng dương: đã chạy, TRƯỢT).
  • NGƯỢC: 0. GĐ-2 không có xung đột triết lý với SE — N1 ghi "Xung đột: không" ở GĐ-2 là đúng, tôi xác nhận độc lập. (Xung đột exit-0 ⟂ cổng-chặn thuộc GĐ-3.)

Ô fit-map GĐ-2 = chưa làm (1 trong 3 giá trị hợp lệ), kèm mốc W2 và kèm lý do: 4/6 ô nghiệm thu của hub trượt, trong đó ô-4 tôi đã chạy phép thử và máy trượt thật (§2). Không được ghi đã áp — theo A14 đó là "nợ vô hình", lớp lỗi hub tự nhận đắt nhất năm.

Mẫu số cho mọi tỉ lệ (bắt buộc khai, vì ba mẫu số lệch gần 3 lần): 13 khoản lane B → 5,5/13 ≈ 42% · 8 bước thư chính → ≈5,5-6/8 ≈ 69-75% · 6 ô nghiệm thu (mẫu số hub dùng cấp nấc) → 1,5/6 = 25%. Con số "~70%" của N1 không sai — nó là con số của mẫu số dễ nhất trong ba, và nó thiếu nhãn mẫu số nên người đọc mặc định hiểu là "gần xong". Ở mẫu số hub thật sự dùng, SE ở 25%.