[CLAUDE] Docs: thi hanh tron plan adap dot-2 (P2/P3/P5/P7i + W4 + khoan 5/6)

Chu du an chot 6 cau @S181; so quyet-dinh o
runs/2026-08-07-S180-adap-upgrade-pack-phased/owner-decisions-07-08-2026-dot-2.md

- P2=PB-2 sua luat da ratify du 2 SITE (tiep.md §3-bis canonical + pause.md
  b6 chi TRO). Cau cam san-3 GIU NGUYEN, chi them ranh REQUEST ⟂ TASK.
- W4: docs/governance/so-yeu-cau-chu-du-an.md 3 khoi, ma YC/ST/PN vinh vien.
  Config: tiep_reload.sources 8->9 + owner_request_verbatim_char_cap.
  nhip-no-probe ve-5 "so-yc treo/nhac2+", fault-inject 5/5, phan biet
  chua-co-du-lieu ⟂ treo 0. Ky luat ghi-NGAY + A5 cam CLAUDE.md + rules.md §6.0.
- P5: ACTIVE-MARKS §LT3 luat tu-tri 3 bac + mark RC-...-07-08-2026-20-57-48.
- P7(i): docs/governance/expensive-runs-view.md derive-view 5 cot.
- P3=B: niem phong _sealed_P3B_S181 (forward-only). Phep thu A10 da co rang
  (fault-inject: class tu che => exit 2; class hop le => exit 0).
- Khoan 6: scripts/naming-baseline.json = NGUON, script chi doc.
  Fault-inject 6/6 hai chieu. 7/7 baseline xanh. 0 byte non-ASCII.
- Khoan 5: broadcasts/_index.md +cot "ap" cuoi hang, backfill 42/4/23 = 69.
- W3 acceptance 6/6 dong + va defect con-tro bang-19-cua (view-stale-status).

Con treo: P8/W4b, W5, P7 ve (ii), VK-5, P3 hoi-to hay forward-only.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-08-07 21:25:50 +07:00
parent cca2bc1aa8
commit a3776eaac4
21 changed files with 444 additions and 95 deletions

View File

@ -13,13 +13,15 @@ chain:
- [x] **W3** GĐ-3 | `docs/governance/ritual-labels.md` + `scripts/tien-kiem-cua.ps1`, tiền-kiểm 5/19->9/19, 4 persona-B vá
- [x] 3 nợ máy-bắt trả sạch | `run-chua-gom 0` + V-3 S180=0 + stray class-S54=0 (control-dương: 33 folder khác vẫn kêu)
- [x] C2 seed on-behalf 6 vai INFORM-only | `grep -c S180` = 1 mỗi vai, moji=0
- [ ] **W4** GĐ-4 — CHẶN: cần P2 thi hành (sửa luật ratify `tiep.md:181` TƯỜNG MINH CÓ VẾT)
- [ ] **W5** GĐ-5 (vá defect `spawn-model-audit`) — CHẶN: xếp sau W4
- [x] **P2 = PB-2 THI HÀNH đủ 2 SITE** @S181`tiep.md §3-bis` (ranh REQUEST⟂TASK + lý-lẽ + lineage, canonical) + `pause.md` bước 6 (B1 chỉ TRỎ). Câu cấm sàn-3 GIỮ NGUYÊN, chỉ thêm ranh đọc
- [x] **W4 GĐ-4 XONG** | `docs/governance/so-yeu-cau-chu-du-an.md` 3 khối + mã YC/ST/PN vĩnh viễn (6 YC · 2 ST mồi · PN trống-có-khai) + phụ-lục "suy ra" · config: `tiep_reload.sources` 8→9 + khoá `owner_request_verbatim_char_cap` · máy dò vế-5 `so-yc treo/nhac2+` **fault-inject 5/5** (`chua-co-du-lieu``treo 0` PHÂN BIỆT) · kỷ luật ghi-NGAY/tra-trước-khi-hỏi + A5 cắm `CLAUDE.md` (+1109B) + `rules.md §6.0`, KHÔNG cắm vào commands
- [ ] **W5** GĐ-5 (vá defect `spawn-model-audit`) — xếp sau W4, nay MỞ
- [x] **đợt-2 owner chốt 5/6 câu @S181** | `owner-decisions-07-08-2026-dot-2.md` — P3=**B hub-ĐÓNG** · P5=**gật nguyên văn** · P7=**vế(i) gật, vế(ii) TREO** · P8=**"đội đầy đủ khi chạy OK"** (tần suất=quyền anh, KHÔNG tích nợ) · cột status=**b tách 2 cột** · baseline=**b tách file dữ-liệu**
- [x] **DRY-RUN W3 acceptance @S181 (phiên SAU restart — cửa sổ mà S180 không có)**: 5/6 ô PASS · lớp-B `PROBE-B: 12 class = 6 view + 6 gap` (đếm từ tệp) · lớp-C 6/6 cửa `tien-kiem` exit 0 · 4 vị-từ §2.1 chạy thật + control-âm 0 · bảng 19 cửa ĐỦ 19 dòng (5 ô CÓ = khớp 5/19 độc lập)
- [x] **W3 acceptance 6/6 ĐÓNG** — ô cuối (`/adap-apply` dry, anh chốt giữa lượt): thân lệnh nạp CÓ BƯỚC 0 + probe exit 0. Defect con-trỏ bảng-19-cửa (`view-stale-status`) ĐÃ VÁ 3 chỗ: `ritual-labels:138` + `:150` + `tracking:67` nay trỏ đúng `sub-w3-nghi-thuc.md §1.2`
- [x] **THI HÀNH 5/6 khoản đợt-2 @S181****P5** `ACTIVE-MARKS §LT3` + mark `RC-…-07-08-2026-20-57-48` (3 bậc, ranh = tính PHÁ HUỶ) · **khoản 6** `scripts/naming-baseline.json` NGUỒN + script chỉ đọc, **fault-inject 6/6 hai chiều**, 0 byte non-ASCII, exit 0, 7/7 baseline xanh · **P7(i)** `docs/governance/expensive-runs-view.md` derive-view 5 cột + khai 3 giới-hạn · **khoản 5** `_index` +cột `áp` cuối hàng, backfill **42 áp/4 chưa/23 n-a = 69**, 69/69 dòng 12-trường · **P3=B** niêm phong `_sealed_P3B_S181` (forward-only)
- [ ] 🔴 **P8 CHƯA LÀM** (khoản 6/6 còn lại) — wire khối chấm vào `session-start.md` + `session-end.md`, kèm tách 2 đại-lượng: *đủ khi chạy* = cổng máy ⟂ *tần suất* = quyền anh, **CẤM tích nợ**
- [ ] 🔴 **P8 = W4b** (khoản 6/6) — wire khối chấm vào `session-start`+`session-end`; nay ĐỦ điều-kiện (W4 xong + P4 + P8 + P3). Rào bắt buộc: lượt đầu in `KHÔNG ĐO ĐƯỢC` (máy đọc nguồn thưa luôn cho 10/10) + tách *đủ-khi-chạy*=cổng-máy ⟂ *tần-suất*=quyền-anh **CẤM tích nợ**
- [ ] 🔸 acceptance W4 ô-1 KHAI THẲNG: `grep -c '^ST-'` = **0** vì sổ dạng BẢNG (`| \`ST-001\``); đếm đúng dạng = **2** (đạt về CHẤT). Regex acceptance giả-định layout phi-bảng — class `acceptance literal tự-lão-hoá`, KHÔNG bẻ bảng để chiều regex
- [ ] W3b (P1=PA-2, phân loại ~70 cờ) · W4b (P4+P8 ĐỦ — chờ W4 xong) · **W5b VẪN GATED: P7 vế(ii) chưa phán** · W6
next: thi hành P2 (2 SITE) -> W4 -> W5. Thư hub 08-07 ĐÃ đọc + đã tính vào quyết-định đợt-2. Việc rời chờ xếp: 6 khoản đã chốt (P3-đóng-tập + phép-thử-A10 · P5-vào-ACTIVE-MARKS · P7(i)-expensive-runs-view · P8-wire-2-cửa · _index-tách-2-cột · baseline-ra-file-dữ-liệu)

View File

@ -20,6 +20,7 @@
".claude/sessions/session-<N>/_mind-s-<N>.md :: tron (doc TU TREN XUONG)",
".claude/sessions/session-<N>/_context-s-<N>.md :: tron",
".claude/governance/ACTIVE-MARKS.md :: tron (bang marks dang hieu luc — +S168 slot 59)",
"docs/governance/so-yeu-cau-chu-du-an.md :: 3 khoi (KHONG phu luc) - so YEU-CAU cua chu du an, W4/S181. Khong nap = so chet (A3).",
"docs/gotchas.md :: 5 section ### N. MOI NHAT (KHONG ca file — +S168 slot 59)",
"docs/changelog/migration-todos.md :: header Active-work + section Phase hien hanh (KHONG ca file — +S168 slot 59)"
]
@ -170,6 +171,10 @@
"deep_every": 15,
"jump_on_class_repeat": 3
},
"owner_request_verbatim_char_cap": {
"_note": "C4-01 (W4/S181). Tran ky tu cho cot 'loi nguyen van' cua docs/governance/so-yeu-cau-chu-du-an.md. Cat thi PHAI de dau ... va giu con-tro toi cho co ban day du. CAM tom tat thay vi cat: tom tat la DIEN GIAI, ma cot do ton tai chinh de KHONG dien giai (bay A1). Dien giai da co o rieng = cot thu 7 'doi hieu thanh gi'.",
"chars": 600
},
"lead_self_audit": {
"_note": "Harness-24 (S121, 2026-07-15, wave adap-6-broadcast W2) CLOSED enum of flag classes for the 2 monitor roles lead-stale-auditor + lead-gap-auditor. CLOSED = a monitor may NOT invent a class; an unclassifiable finding is reported verbatim + escalated to the owner to extend this list. Rationale (spec v2 M4): v1 required 'class in a CLOSED enum' but never listed the enum nor named the config key, so the enum lived only in one lane's head -- workers never see it, invent their own classes, and the statistics dilute. That is exactly what H24 §2(1) forbids. ORIGINAL SHAPE (S121): five view-* classes and five gap-* classes, mirroring the ten signals in H24 §2(1). S143 EXTENSION (2026-07-22, owner-approved): +1 class 'gap-incident-unrecorded' => now 5 view-* + 6 gap-*. Trigger that earned it: 3/3 subagents garbled (#53) in one session and the event left 0 trace on WAL/HANDOFF/STATUS/error-ledger while those surfaces were advertising '0-garble' (true, but about the PRIOR session); the running tally in .claude/auto-memory/feedback_agent_return_garble_recover.md had also been frozen at 'x20 through S118' for 8 session labels. lead-gap-auditor correctly REFUSED to invent the class and escalated verbatim per the CLOSED-enum rule above -- this entry is the owner extending the list, which is exactly the escape hatch that rule prescribes. Scope: an operational incident that happened and was verifiably not written to any durable ledger; NOT for a stale number (view-*) and NOT for a dropped carry (gap-carry-dropped).",
"_vocab_guard": "'view' / 'omission' chosen DELIBERATELY to avoid collisions: scripts/governance-detectors.ps1:15 already owns 'derived-staleness' (so no class may be named *-stale-role or vai-STALE), and the bare word 'GAP' is overloaded elsewhere (session-end.md 'build-gap vs floor-rot'; scripts/memory-selfimprove-audit.ps1 'CRITERIA+GAP'). A colliding name would make two different detectors answer to the same word.",

View File

@ -5,7 +5,7 @@ metadata:
node_type: memory
type: feedback
originSessionId: 67157d21-1ead-475d-9a50-cf7f07468583
modified: 2026-08-01T09:10:41.088Z
modified: 2026-08-07T06:04:25.682Z
---
Sub-agent đôi khi trả về message CUỐI = text bước memory-curation của nó ("Still 18KB, let me trim...", "Memory updated, splice correct...") THAY VÌ verdict/findings của task (#53 return-channel garble). Nhưng WORK + agent-memory diary VẪN ĐÚNG (nó làm task xong, ghi diary chuẩn, chỉ return nhầm text bước cuối). **Recover: đọc `agent-memory/<role>/MEMORY.md` recent-entry lấy verdict thật — KHÔNG re-spawn** (tốn + có thể garble tiếp; hoặc em-main re-do solo cho task cần chắc). Instruction-fix spawn-prompt "🔴 message CUỐI PHẢI là verdict, KHÔNG phải memory-note" GIẢM garble nhưng KHÔNG 100%.
@ -55,4 +55,11 @@ Sub-agent đôi khi trả về message CUỐI = text bước memory-curation c
🔴 **@S168 GHI SỰ-KIỆN L9 (2026-08-01 — L9 CÒN MỞ, tally CHỐT @closeout L9 theo đúng luật (c) + đếm CÁI-CHẮC):** nguồn per-window = `_context-s-9` PAUSE-2/3/4 + `_mind-s-9` MIND-4 §C/§E: **window-2 (S164)** sự-kiện đã xử tại chỗ: `ngược-#53` ev#4 (B1a att-1 **0-byte/207K tok**) · skeleton-472B (B2c1 att-1) · chết-ruột-188B (c2-l3) · garble fable-lane 3/9 + opus-lane 1/13 (nhãn PAUSE-2 — chốt phải đọc đĩa từng sub-file, đừng cộng nhãn) · **window-3 (S165)** PAUSE-3 ghi "~14 return-hỏng / 17 spawn — 0 mất công" (reviewer×3-resume-điền · cicd×3 · lane-K2×4 · lane-K3×4 gồm `engine-process-exit` ×2 CÙNG-task) — số "~" là ước cùng-phiên · **window-4 (S166)** nháp-8 (chết-limit giữa /pause-dở, 0 entry PAUSE ⇒ đếm khi chốt = đọc 15 artifact K4a/K4b/K5/K4c/F-1/H24-deep) · **window-5 (S167)** MIND-4 §C **derive-from-§E: 8 return-hỏng / 15 lượt (10 spawn + 5 resume), 0 mất công** — phác-đồ chọn-nhánh-theo-CÁI-THIẾU chạy tốt (resume-điền · lead-close-on-behalf · resume-Write-trước) · **window-6 (S168)** ctx-verifier CLEAN ×1, 0 garble. ⇒ TỔNG lũy-kế **GIỮ 72 cận-dưới qua S162** — L9 cộng @/session-end L9 bằng đọc-đĩa từng sub-file. Xác nhận lần 6: chống-#53 = thiết-kế ARTIFACT (0 B mất toàn L9 dù garble là nhịp-nền).
**How to apply:** sub return text lạ (memory-curation/off-topic/câu-mở-đầu/narration-giữa-chừng) → ĐỪNG tin nó fail/vô-dụng; **đọc ĐĨA trước, rồi diary, rồi resume**. Task-cần-chắc (bug-reasoning) → em-main re-do solo (reliable). 🔴 **Với MỌI spawn reasoning-lane: ép ghi đĩa từng phần trong prompt** — không để giảm garble mà để **garble không tốn gì**. Liên [[feedback_agent_kill_recovery]] · [[feedback_workflow_fanout_reliability]] · [[feedback_return_terminates_agent]].
🔴 **@S180 GHI SỰ-KIỆN (2026-08-07, L12 CÒN MỞ — tally CHỐT @closeout theo luật (c)):** bookend @open **6/6 vai nặng first-return garble** (`tooling-auditor` · `harvest-curator` · `lead-gap-auditor` · `lead-stale-auditor` · `ring1-audit` · `ring2-audit` — 100% reasoning-lane, khớp correlation S103). Chữ ký đồng nhất **chết đúng write-boundary** y S151: *"let me check the machine output…"* · *"Let me spot-check S169 the same way…"* · *"Let me check the two live threads…"* · *"Now let me read the source-of-truth surfaces."* · *"Now verifying H2's content-marker test…"* · *"Let me reproduce the detector's actual scoring."* Recover **path-2 resume-in-session**, sub-lẻ giữ form (S147 3/3 → S151 5/5 → nay tiếp), **0 B mất**.
🔴 **DATUM MỚI — nâng cấp bài "đọc câu garble, đừng vứt" (S158) lên một nấc:** S158 chỉ chứng garble **chứa** finding. @S180 lần đầu có ca garble **LẬT KẾT LUẬN LEAD VỪA PHÁT RA, và lead hành động NGAY trong cùng lượt, trước cả khi resume**: `lead-gap-auditor` chết giữa câu *"…the **4 unapplied 2026-08-04 letters**"* — lead vừa tuyên "kênh `all` = 0 thư cần áp" ở BƯỚC 0.9; đo lại lập tức (`ls adap-reports/ | grep -c 2026-08-04` = 0, 4 token = 0/0/0/0, control-dương `loi-do-luong` = 1) ⇒ **lead SAI, thư chưa áp**. Ca thứ hai cùng phiên: `harvest-curator` chết ở *"Content test confirms the S168 debt at the strongest level"* — cũng là finding load-bearing.
**Nâng cấp How-to-apply:** mẩu garble không chỉ *"thường là chỗ vai nghĩ sắc nhất"* — nó **có thể là bằng-chứng DUY NHẤT còn lại chống lại một kết luận sai của lead**. Đọc nó **TRƯỚC KHI** resume, và nếu nó mâu thuẫn với thứ lead vừa nói thì **đo ngay, đừng đợi vai trả lại**.
🔸 **Counter-datum củng cố S151/S152 (return-only + khuôn cứng sống tốt hơn):** 3 spawn-probe vai STYLE (`front/back/database-reviewer-style`) — lệnh trả **đúng 1 dòng cố định**, cấm gọi tool — **3/3 CLEAN**, ~2,3s mỗi con. Cùng phiên, cùng lead. Khác biệt duy nhất = **hình dạng return được định trước** vs return tự do sau khi làm việc dài.
**How to apply:** sub return text lạ (memory-curation/off-topic/câu-mở-đầu/narration-giữa-chừng) → ĐỪNG tin nó fail/vô-dụng; **ĐỌC MẨU GARBLE ĐÃ (nó có thể chứa finding lật kết luận của chính mình — S180), rồi đọc ĐĨA, rồi diary, rồi resume**. Task-cần-chắc (bug-reasoning) → em-main re-do solo (reliable). 🔴 **Với MỌI spawn reasoning-lane: ép ghi đĩa từng phần trong prompt** — không để giảm garble mà để **garble không tốn gì**. Liên [[feedback_agent_kill_recovery]] · [[feedback_workflow_fanout_reliability]] · [[feedback_return_terminates_agent]].

View File

@ -10,6 +10,17 @@ argument-hint: <id | all-pending>
**ID/topic:** $ARGUMENTS
## BƯỚC 0 — TIỀN KIỂM ĐẦU CỬA (chỉ đọc, chi phí ~0, **KHÔNG chặn**)
🔴 Chạy **TRƯỚC** mọi việc khác của cửa này:
`powershell.exe -ExecutionPolicy Bypass -File scripts/tien-kiem-cua.ps1 -Cua adap-apply`
→ in **1 dòng** `TIEN-KIEM: cua=… cua-dong-gan-nhat=… moc-trong-tep=… phien=… | nguon n/2 | <ok|CỜ>`.
- 🔴 **KHÔNG CHẶN.** Lỗi bất kỳ ⇒ in `tien-kiem loi (khong chan)` rồi **ĐI TIẾP**. Máy **luôn `exit 0`** — cổng chặn bằng mã lỗi là wave **W3b**, chưa chốt; ai sửa máy này trả mã ≠0 là đã đổi lớp.
- 🔸 Cửa đóng gần nhất chọn bằng **dấu thời gian ghi TRONG tệp**, **không** tin `mtime` của hệ điều hành (hook `wal:` chạm tệp mỗi lượt; `git checkout` viết lại `mtime` hàng loạt).
- 🔸 Cờ `THIEU-TAP` nghĩa là **0/2 nguồn đọc được****KHÔNG được đọc thành "sạch"**. Cờ `NGUON-HONG` / `LECH-PHIEN`**INFORM**, không phải lệnh dừng.
- 🔸 Bước nào của cửa bị lệch thì gọi tên theo `docs/governance/ritual-labels.md` (4 nhãn + vòng hỏi ngược 5 cột), **đừng tự chế nhãn**.
## Flow (lead sister)
1. **Đọc outbox AI_INFRA:** `D:\Dropbox\CONG_VIEC\AI_INFRA\broadcasts\outbox\all\*.md` *(Harness 3 §8 06-07: broadcast fan-out gom vào `outbox/all/`; base path configurable — AI_INFRA đổi path/web-migration thì sửa 1 dòng này)*. Fallback chi tiết canonical: `cross_project_search`.
2. **Filter — broadcast `targets` gồm project này (hoặc `all-fit`) VÀ chưa-applied:**

View File

@ -10,6 +10,12 @@ argument-hint: <id | all-applied>
**ID/scope:** $ARGUMENTS
## BƯỚC 0 — TIỀN KIỂM ĐẦU CỬA (chỉ đọc, chi phí ~0, **KHÔNG chặn**)
🔴 Chạy **TRƯỚC** mọi việc khác: `powershell.exe -ExecutionPolicy Bypass -File scripts/tien-kiem-cua.ps1 -Cua adap-report` → in **1 dòng** `TIEN-KIEM: …`.
🔴 **KHÔNG CHẶN** — lỗi ⇒ `tien-kiem loi (khong chan)` → đi tiếp; máy **luôn `exit 0`** (cổng chặn = W3b, chưa chốt).
🔸 Chọn cửa bằng **dấu thời gian TRONG tệp**, không tin `mtime`. `THIEU-TAP` = 0/2 nguồn đọc được, **cấm đọc thành "sạch"**. Nhãn bước lệch: `docs/governance/ritual-labels.md`.
## 📋 REPORT-FORMAT (LOCK — khớp `/adap-audit` reader)
Mỗi report `docs/governance/adap-reports/<id>.md` (1 file/broadcast) gồm đúng 5 trường:
1. **id-broadcast**`<date>-<category>-<slug>` (khớp outbox AI_INFRA).

View File

@ -11,6 +11,12 @@ argument-hint: <proposal | flaw-id>
**Proposal:** $ARGUMENTS
## BƯỚC 0 — TIỀN KIỂM ĐẦU CỬA (chỉ đọc, chi phí ~0, **KHÔNG chặn**)
🔴 Chạy **TRƯỚC** mọi việc khác: `powershell.exe -ExecutionPolicy Bypass -File scripts/tien-kiem-cua.ps1 -Cua adap-request` → in **1 dòng** `TIEN-KIEM: …`.
🔴 **KHÔNG CHẶN** — lỗi ⇒ `tien-kiem loi (khong chan)` → đi tiếp; máy **luôn `exit 0`** (cổng chặn = W3b, chưa chốt).
🔸 Chọn cửa bằng **dấu thời gian TRONG tệp**, không tin `mtime`. `THIEU-TAP` = 0/2 nguồn đọc được, **cấm đọc thành "sạch"**. Nhãn bước lệch: `docs/governance/ritual-labels.md`.
## Flow (lead sister)
1. **Gather đề-xuất:** `$ARGUMENTS` = 1 proposal (vd "FUNCTION-floor X làm khó project vì Y", "pattern Z tốt hơn cho RAG chunk", "broadcast `<id>` có flaw"). Nguồn: flaw gặp khi `/adap-apply`, gotcha dogfood repo mình, ý tưởng cải tiến.

View File

@ -40,6 +40,13 @@ Chỉ cắm 2 cửa `session-start`/`session-end` thì **đúng ca anh đang lo
🔒 **Bất-biến:** 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**, đúng câu hỏi hub đặt: *"có làm điểm dừng đắt lên không"***TRƯỚC** khi bàn giá-trị của bước đó.
## BƯỚC 0 — TIỀN KIỂM ĐẦU CỬA (chỉ đọc, chi phí ~0, **KHÔNG chặn**)
🔴 Chạy **TRƯỚC** DÒ/KÉO: `powershell.exe -ExecutionPolicy Bypass -File scripts/tien-kiem-cua.ps1 -Cua check-email` → in **1 dòng** `TIEN-KIEM: …`.
🔴 **KHÔNG CHẶN** — lỗi ⇒ `tien-kiem loi (khong chan)` → đi tiếp; máy **luôn `exit 0`** (cổng chặn = W3b, chưa chốt).
🔸 Chọn cửa đóng gần nhất bằng **dấu thời gian TRONG tệp**, không tin `mtime`. `THIEU-TAP` = 0/2 nguồn đọc được, **cấm đọc thành "sạch"**. Nhãn bước lệch: `docs/governance/ritual-labels.md`.
🔸 **Đã tuân bất-biến `:41` ngay trên:** wall-clock đo TRƯỚC khi cắm (S180 W3) — ròng **~194 ms**, rẻ hơn `nhip-no-probe.ps1` (**~281 ms**) vốn đã được chấp nhận ở `/pause`·`/tiep`. **KHÔNG cắm bước này vào `/pause`·`/tiep`** (hai cửa đó đã có probe; thêm nữa là làm điểm dừng đắt lên).
**Cách chạy ở mỗi cửa — `/check-email all`:**
- 🟢 **Không có thư mới ⇒ 1 dòng, im lặng đi tiếp.** KHÔNG báo-cáo dài, KHÔNG chờ anh.
- 🔴 **FAIL-SOFT, CẤM chặn nghi-thức:** lỗi bất-kỳ (repo bên kia không có trên máy · path đổi · thiếu python) ⇒ in `check-email loi (khong chan)` rồi **ĐI TIẾP**. Cùng khuôn `nhip-no-probe.ps1`: một bước MỚI **không bao giờ được phép** làm hỏng nghi-thức đã chạy tốt.

View File

@ -113,6 +113,9 @@ Báo đúng sáu ý:
5. **dòng-nợ (Item 2 S135):** gọi `powershell.exe -ExecutionPolicy Bypass -File scripts/nhip-no-probe.ps1` in dòng-nợ 4-vế (nhịp-kiểm đọc post-tick bước 3.5). 🔴 **probe KHÔNG chặn điểm dừng**: lỗi in `probe-loi (khong chan)` đi tiếp, VẪN tuyên-bố "an-toàn để thoát".
> 🔗 **Predicate C7 đầy-đủ (probe nào được phép chạy ở điểm dừng) = canonical [`harness-11-engine.md`](../../docs/governance/harness-11-engine.md) §N.8.** 🔴 **B1 — dòng này CHỈ TRỎ, CẤM chép predicate sang đây.**
6. **🧾 MASTER-CHECKLIST rút-gọn (S138):** derive từ WAL vừa ghi (bước 3) + HANDOFF in **Tầng-1** mỗi arc 1 dòng `{đóng · đang · chưa}` + **đếm 4-nhóm** (`xong` / `đang-dở` / `chờ-anh` / `chưa-làm`) + **liệt nhóm chờ-anh — 🔢 BẮT BUỘC ĐÁNH SỐ** (anh trả lời bằng số). 🔴 **Checklist = VIEW derive tươi — CẤM tạo file checklist nguồn-đôi (sàn-3).**
> 🔧 **SỬA LUẬT ĐÃ RATIFY — P2 = PB-2, chủ dự án chốt @S180, thi hành @S181 (2026-08-07). SITE 2/2.**
> Câu cấm trên **GIỮ NGUYÊN**; ranh **REQUEST ⟂ TASK** + lý-lẽ đầy-đủ + lineage = canonical ở [`tiep.md` §3-bis](tiep.md) — **B1: chỉ TRỎ, CẤM chép sang đây** (chép 2 nơi = 2 nguồn sự-thật, đúng thứ chính câu cấm này chặn).
> Tóm đúng 1 dòng để đọc tại chỗ: **TASK** (việc tới đâu) = **CHỈ** `.claude/WAL.md` · **REQUEST** (anh đã yêu-cầu gì) = sổ yêu-cầu W4, **CẤM** mang cột trạng-thái-thi-công riêng, cần thì **TRỎ** về WAL.
Rồi **DỪNG HẲN**, KHÔNG nhận việc mới.

View File

@ -180,6 +180,20 @@ Tín-hiệu **YẾU NHẤT**, dùng cuối. 🔴 **`porcelain` rỗng KHÔNG ph
> - **vừa-xong** (mục vừa chuyển `[!]`→`[x]` khi reconcile) · **vẫn-treo** (`[!]` / `[ ]` còn lại) · **chờ-anh — 🔢 BẮT BUỘC ĐÁNH SỐ** (anh trả lời bằng số).
> 🔴 **Checklist = VIEW derive tươi — CẤM tạo file checklist nguồn-đôi (sàn-3).**
>
> 🔧 **SỬA LUẬT ĐÃ RATIFY — P2 = PB-2, chủ dự án chốt @S180, thi hành @S181 (2026-08-07). SITE 1/2.**
> *(Site 2/2 = [`pause.md`](pause.md) bước 6, câu y hệt. Cả hai phải sửa cùng lượt — sửa một nửa thì `/tiep` mở mà `/pause` vẫn chặn.)*
>
> **Câu cấm ở trên GIỮ NGUYÊN, nhưng nay đọc theo ranh REQUEST ⟂ TASK:**
>
> | Lớp | Là gì | Nhà | Được phép có file riêng? |
> |---|---|---|---|
> | **TASK** | *việc đang ở đâu* — trạng-thái thi-công, `[ ]`/`[!]`/`[x]` | `.claude/WAL.md` (**nguồn duy-nhất**) | 🔴 **KHÔNG.** Chép trạng-thái task sang file khác = đúng thứ câu cấm chặn |
> | **REQUEST** | *anh đã yêu-cầu gì, và đã được đáp chưa* — lời của chủ dự án | sổ yêu-cầu (W4 dựng) | ✅ **CÓ.** Đây **không phải** bản thứ hai của WAL: WAL **không hề** lưu lời anh |
>
> **Vì sao ranh này hợp-lệ chứ không phải lách luật:** câu cấm sinh ra để chặn **hai nguồn cùng trả lời một câu hỏi** ("việc tới đâu?"). Sổ REQUEST trả lời **câu khác** ("anh đã yêu-cầu gì?") — câu mà WAL **chưa bao giờ** trả lời được, vì WAL ghi-đè ≤40 dòng và **cố ý không** giữ lời anh (lời anh sống ở `_context` FLOW, append-only). Hai câu khác nhau ⇒ hai nguồn ⇒ **không phải nguồn-đôi**.
> 🔴 **Ranh CỨNG, đừng nới:** sổ REQUEST **CẤM** mang cột trạng-thái-thi-công của riêng nó. Cần hiện "việc tới đâu" thì **TRỎ** về WAL, không chép. Nới chỗ này là tái sinh đúng nguồn-đôi vừa được loại trừ — và đó là **rủi ro số 1 của cả gói** (`wave-plan §R`).
> 🧊 *Lineage: câu cấm ký @S122 (mark `RC-pqhuy1987-15-07-2026-15-32-20`, điều-khoản sàn-3). Xung đột với "sổ = đường-ghi-chính ĐÃ KÝ" phát hiện @S180 lane C §B.5 — xung đột THẬT chỉ ở **một cột trạng-thái**. Anh chọn **PB-2** (tách 2 tầng) thay vì PB-1 (sổ giữ lời, trạng-thái = view). Sổ quyết-định: `owner-decisions-07-08-2026-dot-2.md` + PAUSE-1 của `_context-s-12.md`.*
>
> **§3-ter — 🧠 BẢN NẠP-LẠI lớp mềm ≤15 dòng** *(adopt `0df10df4` @S153 — sàn khoản 3 CÓ BẰNG-CHỨNG NỘI-DUNG; 🔴 ăn từ phiên sau restart CLI; 🔄 OWNER-VETO @S153: 4-khoản đối-chiếu + bản-nạp-lại nay do VAI-2 `ctx-verifier` sản xuất — hub-form 3-vai anh chốt)*: **spawn `ctx-verifier`** (máy `mind-check` full chạy TRƯỚC ở §2.6; PIN {`_mind` · `_context` · WAL-đã-reconcile-§3}) → vai trả 4-khoản đối-chiếu (**B vs `next:` — LỆCH ⇒ TIN SỔ MÁY + cờ** · C vs bản-đồ · D-đã-định-đoạt-chưa-đổi-nhãn · con-trỏ theo verdict máy) + **BẢN NẠP-LẠI ≤15 dòng** kết bằng dòng `LEAD-PHAI-NHAC-LAI: <tên-ý-D> · <E-verdict>`. Lead **PHẢI NHẮC LẠI** đúng các chi tiết đó trong báo-cáo đầu (chi tiết chỉ-biết-nếu-đã-đọc — "đã nạp" suông KHÔNG tính, metadata ts/hash KHÔNG tính); verdict 1-dòng của vai ghi vào biên-nhận (vết). Vai vắng/SKIP ⇒ lead tự chạy 4-khoản (fallback, khai rõ). **+ nạp NỀN RÚT-GỌN theo khoá `tiep_reload`** (`memory-budget.json` — B1: CẤM chép danh-sách tệp vào đây; ước ~40-60K tok input cache-được, quyết (37)(b) — nạp NỀN vẫn là việc LEAD, vai-2 chỉ lo lớp mềm).
## 4. Mục `[!]` dạng `wf:` → nhánh recovery-workflow

View File

@ -11,9 +11,9 @@
},
"_tick_invariant_note": "Tick invariant (hub dede7ec5 Delta-1, verbatim): moi LAN-CHOT +1; mot cap dung-noi tang DUNG +1, khong +2, khong +0. SE form = tick-at-entry-gate idempotent-per-label (hub Delta-2 recovery-gate +1 = permitted form) - NET +1/session-label EQUIV hub +1/cap on CLOSED pairs; an OPEN pair is transiently +0 until its entry gate fires (hub blessed, 9a35405b block-1 phep dung-noi). Guard song-con = label-convention (session-start 2.1.8: new conversation = new S\u003cnn\u003e label, NEVER reuse). history[] is append-unbounded BY DESIGN =\u003e absence of a marker = never-happened (safe semantics); IF a FIFO cap is ever added, eviction MUST be handled explicitly (absence-vi-bi-day != absence-vi-chua-xay-ra - log-BOUNDED design-note dede7ec5).",
"_seed_honesty": "Seeded UNTICKED on purpose. counter=0 and last_ticked_* = null mean \u0027no tick has ever happened\u0027, which is the truth at S121 - the ritual that performs the tick lands in W3. Seeding a fake first tick here would make the very first cadence reading a lie, and H24 exists to catch exactly that kind of invented number.",
"counter": 54,
"last_ticked_session": "S180",
"last_ticked_head": "55894a04d0ee350df5ec0fa97626e8ca47580f0a",
"counter": 55,
"last_ticked_session": "S181",
"last_ticked_head": "b8d22741c707d650af03eae09c61cc2ebcd97ff2",
"last_ticked_at": "2026-08-07",
"last_audit": {
"light_at_counter": 53,
@ -276,6 +276,11 @@
"at": "2026-08-07",
"session": "S180",
"event": "squash-benign (session-counter-tick.ps1 M2, contract fail_loud_on_regress trigger-2 BENIGN branch): counter 53->54, session S179->S180, head b99c187->55894a0. last_ticked_head b99c187 object EXISTS (cat-file=commit) but NOT reachable (merge-base --is-ancestor exit!=0), counter not regressed => a closeout squash lifted the ticked wal:/session commit out of history (expected drift, not tamper). Trace appended, continue, no owner alarm. Written atomically (temp + Move-Item -Force)."
},
{
"at": "2026-08-07",
"session": "S181",
"event": "CLEAN tick (session-counter-tick.ps1 M2): counter 54->55, session S180->S181, head 55894a0->b8d2274. Classify-before-tick: no regression (n=181 >= stored n=180); last_ticked_head reachable (merge-base --is-ancestor exit 0). 4 fields updated, 1 history entry appended, written atomically (temp + Move-Item -Force)."
}
]
}

View File

@ -23,6 +23,7 @@
| `RC-pqhuy1987-15-07-2026-15-32-23` | `.claude/agents/lead-{view,omission}-auditor.md` + `hmw.js` VALID_ROLES + `memory-budget.json` (`h24_cadence`/`lead_self_audit`) + `.claude/governance/.session-counter.json` + `session-start §2.1.8` + `session-end §L.b(j)` + `docs/STATUS.md` (≙ AI_INFRA **H-24 lead-self-audit + H17 cadence**) | **H24 roster→14 + cadence + enum-ĐÓNG + counter + RE-STAMP.** **Sàn:** (1) **2 vai monitor MỚI** soi chính LEAD — `lead-view-auditor` (cái CÓ-nhưng-LỆCH) · `lead-omission-auditor` (cái BỊ THIẾU); **trục RIÊNG, CẤM gộp** H1 tooling-freshness / H2 harvest-integrity · (2) class-flag ∈ **enum ĐÓNG** `lead_self_audit.flag_classes` — vai **KHÔNG tự chế class**; không phân-loại được ⇒ báo **verbatim + escalate anh** · (3) nhịp ĐỌC từ `h24_cadence`, **CẤM hardcode** ở doc dẫn-xuất (detector **fail-loud** nếu key thiếu — **KHÔNG** giả-định default) · (4) counter **content-addressed neo HEAD-sha**, **CẤM blind-increment** (hook auto-commit mọi turn-boundary ⇒ `++` mù = nhịp vô-nghĩa); counter **LÙI****báo anh, CẤM silent-reset** · (5) 🔴 **roster đổi = 2 BỀ-MẶT ĐỘC-LẬP** (`agents/*.md`→registry ⟂ `VALID_ROLES``agentType`); vai MỚI cần **RESTART + spawn-probe THẬT**`ls`+grep = **CẦN, KHÔNG ĐỦ** · (6) **nghi-thức RE-STAMP carry mỗi phiên** (không re-stamp ⇒ streak≡1 ⇒ **0 fire vĩnh-viễn**) · (7) số roster/nhịp = **canonical-only** (`docs/STATUS.md`), doc dẫn-xuất **CẤM chép số** | **pain:** ① lead **ĐO tốt nhưng ĐẾM-VỀ-MÌNH thì sai** — wave này lead sai **6 lần**, 4 lần đúng trục đó (SHA bịa ghi TRƯỚC commit = **tái phạm bài-học 1 ngày trước**; "8 hit" thật 14; "tái-hiện chính xác dự-báo" trong khi đo **sai hướng**) · ② `gap-workstate-drop` bị bản-spec-trung-gian **BỎ** để làm tròn enum về 10 rồi tuyên *"khớp 5+5"* — mất đúng class bắt ca THẬT của SE (S118: 7-spawn → **0 run-folder**), enum ĐÓNG ⇒ mất vĩnh-viễn · ③ carry-age **vacuous CẤU-TRÚC**: 45 segment nhưng `carry-lines=1`**0 fire** | **volume:** mọi phiên (counter-tick §2.1.8 + §L.b(j)) × toàn roster × mọi carry trong HANDOFF | **quality:** **spawn-probe 14/14 RUNTIME** (0 error 0 garble; 2 vai mới lean nhất 26K < cap 60K) · **positive-control W4 khép, số cộng KHỚP** (5 FLAG0, TOTAL **50→45** tụt đúng 5, **0 flag mới**, đo bằng `comm`) · **TOTAL 50 khớp CHÍNH XÁC dự-báo W2** · acceptance `ls=14` **BỊ BÁC vì sai số-học** (glob bắt `README.md` ép xoá README = catastrophic-Goodhart) đổi sang bất-biến-trên-roster **14/14/14** · counter seed **UNTICKED trung-thực** | null (additive) | 🔖 **Active-High** (anh-confirm **S122** cùng lượt · **P4 report-before-stamp**) · 🔴 **CAVEAT BINDING — nấc bằng-chứng THẤP HƠN mark `…15-32-20`:** **2 vai CHƯA CHẠY lần nào** (spawn-probe chứng **spawn được**, KHÔNG chứng **soi được**) · **counter=0 CHƯA tick** · **nhịp 6/15/3 = điểm khởi-đầu owner cố-ý chọn, KHÔNG phải "đã chứng-minh hiệu-quả"** (hub: n=1 = mocc-0; **chỉnh lại sau chu-kỳ-2**) · probe phủ **Agent-tool registry** THÔI, đường `hmw.js→agentType` **CHƯA phủ** **mark này = LỆNH về CÁCH LÀM, chưa phải bằng-chứng về HIỆU-QUẢ** |
| `RC-pqhuy1987-15-07-2026-17-23-10` | `.claude/commands/tiep.md §0` + `.claude/workflows/README.md` + `session-end §L.b(f)` + `scripts/governance-detectors.ps1` (`Test-Quoted` · H24-1 · **H24-3 mới**) + `session-start §0.7` (≙ AI_INFRA **H-24 / H-22 wal-defect-fix** nâng-cấp NGƯỢC, SE-originated) | **DUAL-ACCEPT + luật-retire-legacy + guard bẫy-tự-quy-chiếu + detector H24-3.** **Sàn:** (1) **orphan = DUAL-ACCEPT** (dạng-1 phẳng · dạng-2 C8) **dạng-3 RETIRED** · (2) 🔴 **LUẬT RETIRE LEGACY (mới, tổng-quát):** *gỡ nhánh legacy khi **tập di-sản RỖNG**; giữ khi **CÒN người thụ-hưởng**. Miễn-trừ C8 hết hiệu-lực đúng lúc hết di-sản để tha, không sớm hơn* · (3) **bẫy tự-quy-chiếu = CLASS, không phải ca lẻ** doc định-nghĩa anti-pattern **tất-yếu** chứa mẫu anti-pattern mọi matcher khớp-mẫu bắt chính ; discriminator = **enclosure (use ⟂ mention)**, KHÔNG phải hình-dạng (H24-2 dùng charset `<` được key thật không bao giờ ; H24-1/H24-3 **không thể** ví-dụ **byte-identical** với claim) helper **DUY-NHẤT** `Test-Quoted`, mọi matcher prose PHẢI gọi · (4) **H24-3 session-label lag** (MED): trong CÙNG file, `(S<N>` `**Last updated**` không được lùi sau MAX `(S<M>` heading **âm-giả CHỨNG-MINH-ĐƯỢC** của H24-1 ( so NGÀY, ngày `2026-07-15` = mới nhất 0 flag trong khi nhãn lùi **3 phiên**) · (5) 🔴 **CẤM "resolve" flag title-stale bằng đổi HÌNH-DẠNG anchor** đó **rời tập-đo**, không phải sửa | **pain:** **dạng-3 = cửa mở cạnh biển cấm** doc CẤM viết mới máy VẪN NHẬN cấm-bằng-**trí-nhớ**; đo: tập di-sản = **0** (6/6 folder từng dựa nay đều flat sau `22ea8c5`) · **bẫy tự-quy-chiếu LÂY QUA TRÍCH-DẪN, 3 đời THẬT trong 1 wave**: `permission-matrix:16` (defect thật) `lead-view-auditor:45` (trích làm ví-dụ) `adap-report…h24…:78` (trích **khi đang GIẢI-THÍCH chính FP đó**) · **âm-giả `STATUS:6` tái-phát LẦN 4** (S116/S117/S118/S123) 3 lần trước bằng **bump số** quay lại · 🔴 **Goodhart đo được (ngoài diff):** W4/S122 "" `permission-matrix:16` bằng **đổi FORMAT anchor** khớp **0 pattern** **H24-1 mất chính positive-control nó được dựng quanh**, flag-count **GIẢM** trông y hệt thành công *"5 FLAG→0"* của W4 phần đạt nhờ **một file thoát khỏi thước** | **volume:** MỌI phiên (`§0.7` + close-gate) × **26 run-folder** × mọi matcher prose trong `governance-detectors.ps1` (3 detector cùng lớp, **chỉ 1 có guard** trước S123) | **quality:** **fault-inject 4 bộ, 24/24** backtick-guard **5/5** (2 anti-Goodhart: quoted-rồi-bare **cùng dòng**FLAG anchor thật · backtick **CHẴN**FLAG) · H24-3 **6/6** (anti-Goodhart: **MAX không đứng đầu/cuối**lấy đúng MAX; 2 bản cài sai "lấy đầu"/"lấy cuối" đều PASS trên repo thật đó MAX tình cờ đứng đầu) · DUAL-ACCEPT **7/7** (ca chốt `## Synthesis`-no-flat: **S122 IM → S123 FLAG** = hiệu-lực retire) · **2 trục reviewer chỉ ra CHƯA HỀ THỬ, thử lại 6/6** (quoted-labelIM · 2-số-cùng-dòngMAX cả 2 chiều · heading trích `` `(S999)` ``→bỏ qua) · **`comm` before/after: 46→45 = 2 dương-giả +1 dương-THẬT**, 0 flag ngoài dự-kiến · repo thật **0 orphan/26** sau retire · **reviewer bác 3 lập-luận của lead và bác ĐÚNG** (xem caveat) | `RC-pqhuy1987-15-07-2026-15-32-20` (**partial** — điều-khoản (2) TRI-ACCEPT→DUAL-ACCEPT; **4 điều-khoản còn lại GIỮ NGUYÊN SỐNG**: Sàn-3 canonical @`tiep.md §0` · nhận≠cho-phép · push-guard 1-LƯỢT · EOL-inform) | 🔖 **Active-High** (anh-confirm **S123** · **P4 report-before-stamp**: reviewer `PASS_WITH_FIXES` → lead vá 6 finding → present → anh chốt *"đồng ý"* → stamp) · 🔴 **CAVEAT — 3 lập-luận của lead ĐÃ BỊ BÁC, ghi để không tái-sinh:** (a) *"retire HOÀN-THÀNH mark cũ"* = **NGUỴ-BIỆN** (điều-khoản (2) **cố ý tách** lưới-rộng ⟂ luật-hẹp; retire **thu lưới bằng luật** = biến nhận **=** cho-phép = **NGƯỢC** điều-khoản) — retire vẫn đúng, **nhưng vì hết di-sản**, không phải vì "hoàn-thành" · (b) *"H24-3 MED vì 0 proxy"* = **SAI** (`$labelN` = hit-regex-ĐẦU = **proxy** cho "label của CHÍNH file", vỡ đúng lúc file trích; MED đứng nhờ `Test-Quoted` **loại** failure-mode đó, KHÔNG phải nhờ proxy chưa từng có) · (c) *"5/5 separation"* = **4/4** (lead **chép số của sub** không kiểm ca-5 trên đĩa) |
| `RC-pqhuy1987-07-08-2026-20-57-48` | **`ACTIVE-MARKS.md §LT3`** (nhà NGUỒN, cuối tệp này) + `ritual-labels.md §6` khoản (vi) + `ST-002` của sổ W4 — **2 nơi sau TRỎ, cấm chép** | **Luật tự-trị 3 bậc** (P5 gói adap 7-GĐ): **rõ → tự vá** · **mơ hồ → chọn nhánh an toàn + khai** · **mơ hồ + phá huỷ → DỪNG, hỏi anh**. Ranh bậc-2 ⟂ bậc-3 = **tính PHÁ HUỶ** (đảo ngược được hay không), **KHÔNG** phải độ khó | **pain:** `ST-002` của W4 định TRỎ về `ACTIVE-MARKS` cho luật 3 bậc, nhưng lane C đo **0 hit** — trỏ vào chỗ rỗng; và AI không có ranh thành văn giữa *tự vá* ⟂ *phải hỏi* ⇒ hoặc hỏi thừa, hoặc tự quyết thứ phá huỷ · **volume:** mọi lượt AI ra quyết-định trong kho × các wave còn lại của gói 7-GĐ + `ST-002` sổ W4 · **quality:** tiêu-chí khách-quan soi được (đảo-ngược-được?) thay cho cảm-tính "việc này khó hay dễ" | null (additive) | 🔖 **Active-High** (anh-confirm **S181** *"P5 → nguyên văn"* · P4 report-before-stamp: lead trình đủ 6 câu kèm nguồn → anh chốt từng số → stamp) |
> 🔄 **CHÚ-THÍCH S149 (2026-07-24) cho mark `RC-pqhuy1987-15-07-2026-15-32-23` — BẢN KÝ GIỮ NGUYÊN, KHÔNG SỬA MỘT CHỮ (P4/P8).**
> §-target của mark ghi `.claude/agents/lead-{view,omission}-auditor.md`. **@S149 anh ratify rename 5 vai đồng-bộ sister** ("OK đồng ý"): `lead-view-auditor`→`lead-stale-auditor` · `lead-omission-auditor`→`lead-gap-auditor` · `h24-audit`→`ring2-audit` · `tooling-harvest-audit`→`ring1-audit` · `sleep-audit`→`ring4-audit`. **Cùng vai, cùng contract, chỉ đổi TÊN** — mọi điều-khoản mark áp nguyên sang tên mới (đúng khuôn chú-thích S122 "∈ roster hiện-hành": mark trỏ VAI, không trỏ chuỗi tên). Enum class `view-*`/`gap-*` GIỮ NGUYÊN lượt này (không map 1:1 với hub 12-class; tally đang arm JUMP dải 3-4 — đổi key giữa chuỗi = gãy tally; số phận theo spec hội-tụ bookend).
@ -52,6 +53,21 @@ _(trống)_
## 🟡 MEDIUM (neo chưa-rõ; follow nhưng skippable — tóm-tắt @session)
_(trống)_
## §LT3 — LUẬT TỰ-TRỊ 3 BẬC (🔴 NHÀ NGUỒN canonical — P5, anh gật "nguyên văn" @S181 2026-08-07)
> 🔴 **ĐÂY LÀ NGUỒN DUY-NHẤT của luật 3 bậc.** Mọi nơi khác (`ST-002` của sổ W4, `ritual-labels.md §6` khoản (vi), doc dẫn-xuất) **TRỎ về đây, CẤM chép nội dung** — chống nguồn-đôi `C3-07` ⟂ `ST-002` (lane C §F.2 lỗ-1).
> 🧊 Trước @S181, `ACTIVE-MARKS` là **uỷ-quyền-per-quyết-định**, KHÔNG phải luật 3 bậc (lane C §F.1 đo **0 hit**, control dương 19). Khối này đóng đúng lỗ đó.
| Bậc | Tình huống | AI làm gì |
|---|---|---|
| **1 — RÕ** | Đặc tả/luật nói rõ, không có chỗ đọc hai nghĩa | **TỰ VÁ**, không hỏi. Khai ở báo-cáo lượt |
| **2 — MƠ HỒ** | Đọc được ≥2 nghĩa, nhưng hành-động **không phá huỷ** | **CHỌN NHÁNH AN TOÀN**, đi tiếp, **KHAI RÕ đã chọn nhánh nào và vì sao** |
| **3 — MƠ HỒ + PHÁ HUỶ** | Vừa đọc được ≥2 nghĩa, vừa có thể mất dữ-liệu / đổi luật đã ratify / tác-động ra ngoài | 🔴 **DỪNG, HỎI ANH.** Cấm tự chọn |
**Ranh bậc-2 ⟂ bậc-3 = tính PHÁ HUỶ, không phải độ khó.** Việc khó mà đảo ngược được ⇒ bậc-2. Việc dễ mà mất dữ-liệu ⇒ bậc-3.
🔸 **MỘT ĐỀ-XUẤT CÒN TREO, CHƯA THUỘC LUẬT NÀY** (lead nêu @S181, anh **chưa** phán — xem `owner-decisions-07-08-2026-dot-2.md` ghi-chú (d)): thư hub `2026-08-07-Governance-nghi-thuc-hai-dau-nhip-thua-va-luu-nguyen-van.md` đề nghị một câu cụ-thể cho **bậc-2** — *không phân biệt được **dời-có-chủ-ý** với **rơi-im-lặng** thì khai **"không đủ dữ liệu"**, **CẤM mặc định về nhãn miễn tội***. Anh gật "nguyên văn" là gật **3 bậc ở bảng trên**; câu này **CHƯA được ghép**, để đây làm con-trỏ chứ không phải luật đang hiệu-lực.
## 📦 SUPERSEDED / DISABLED (ẨN khỏi session display — giữ audit-trail, KHÔNG xóa)
| ID (RC-signature) | §-target SE (≙ AI_INFRA) | What | objective-criteria (pain · volume · quality) | supersedes | Status |