[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:
@ -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)
|
||||
|
||||
@ -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.",
|
||||
|
||||
@ -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]].
|
||||
|
||||
@ -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` là **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:**
|
||||
|
||||
@ -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).
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -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 FLAG→0, 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 nó; discriminator = **enclosure (use ⟂ mention)**, KHÔNG phải hình-dạng (H24-2 dùng charset `<` được vì key thật không bao giờ có; H24-1/H24-3 **không thể** vì 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 — vá **âm-giả CHỨNG-MINH-ĐƯỢC** của H24-1 (nó so NGÀY, mà 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** — đó là **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à 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 có 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 vá bằng **bump số** ⇒ quay lại · ④ 🔴 **Goodhart đo được (ngoài diff):** W4/S122 "vá" `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**, mà flag-count **GIẢM** ⇒ trông y hệt thành công ⇒ *"5 FLAG→0"* của W4 có 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 vì ở đó 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-label→IM · 2-số-cùng-dòng→MAX 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 |
|
||||
|
||||
@ -144,6 +144,15 @@ Quy tắc:
|
||||
| [`.claude/skills/`](.claude/skills/README.md) | 6 skill: contract-workflow, form-engine, permission-matrix, dependency-audit-erp, ef-core-migration, iis-deploy-runbook |
|
||||
| [`docs/guides/vps-setup.md`](docs/guides/vps-setup.md) | ⭐ Master runbook deploy VPS shared với VIETREPORT |
|
||||
|
||||
## 📒 Sổ yêu-cầu chủ dự án — GHI NGAY · TRA TRƯỚC KHI HỎI
|
||||
|
||||
Sổ: [`docs/governance/so-yeu-cau-chu-du-an.md`](docs/governance/so-yeu-cau-chu-du-an.md) (3 khối · mã `YC-`/`ST-`/`PN-` **vĩnh viễn, cấm tái dụng**).
|
||||
|
||||
- **GHI NGAY:** anh nói ra một yêu-cầu / sở-thích → ghi **nguyên văn** vào sổ **trong chính lượt đó**, không đợi cuối phiên. Diễn giải để **cột thứ 7** (*đội hiểu thành gì*), **tách hẳn** khỏi cột nguyên văn.
|
||||
- **TRA TRƯỚC KHI HỎI:** trước khi hỏi lại anh bất-kỳ điều gì → **tra sổ trước**. 🔴 **Định nghĩa A5:** hỏi lại mà **không viện dẫn thông tin mới** = **vi phạm**; hỏi lại **kèm nguồn mới** = kỷ luật đúng.
|
||||
- **Đóng = lật trạng thái, KHÔNG xoá dòng.** Số lần nhắc chỉ tăng.
|
||||
- 🔴 **Sổ = REQUEST ⟂ WAL = TASK.** Sổ **CẤM** có cột trạng-thái-thi-công; muốn biết việc tới đâu thì **TRỎ** về WAL. Luật + lineage canonical → [`.claude/commands/tiep.md` §3-bis](.claude/commands/tiep.md).
|
||||
|
||||
## ⚠️ Kết thúc session
|
||||
|
||||
1. Update `docs/STATUS.md` (`In Progress` → `Recently Done`)
|
||||
|
||||
@ -10,82 +10,92 @@
|
||||
> **infra-CC row (§N3):** message `<id>-cc` (`cc-of:<to>`) = bản-2 se gửi `ai_infra` giám sát infra-comms sister↔sister. Ghi rõ `cc-of` vào cell `from → to` — vd OUTBOUND `se → ai_infra (cc-of:vipix)` · INBOUND `vipix → ai_infra (cc-of:se)`. Cùng status/verify như message thường (whole-file + body-hash đối chứng).
|
||||
|
||||
## 📥 INBOUND (nhận — qua `/check-email <from>`)
|
||||
> status: **pending** (ở `inbox/` root, chưa xử lý) → **processed** (đã MOVE vào `inbox/<from>/`).
|
||||
> 🔴 **HAI TRẠNG-THÁI, HAI CỘT — owner chốt phương án (b) "tách hẳn 2 cột" @S181 (2026-08-07), câu 5 gói adap 7-GĐ.**
|
||||
>
|
||||
> | Cột | Nghĩa | Nguồn sự-thật |
|
||||
> |---|---|---|
|
||||
> | `status` | **VỊ TRÍ TỆP.** `pending` = còn ở `inbox/` gốc · `processed` = **đã MOVE** vào `inbox/<from>/` | hệ thống tệp |
|
||||
> | `áp` | **ĐÃ ÁP NỘI-DUNG CHƯA.** `áp` = có `docs/governance/adap-reports/<id>.md` · `chưa` = không có · `n-a` = kênh `se` (thư đích danh: đọc/trả lời, không có nghĩa "áp") | sự tồn-tại của tệp report |
|
||||
>
|
||||
> **Vì sao phải tách:** trước @S181 một cột `status` gánh **hai nghĩa**. Sau khi P6 mở INBOUND cho kênh `all`, thư kéo bằng `/adap-apply` là *"đã áp"* chứ không chỉ *"đã move"* — mà cả hai đều hiện ra là `processed`. Hệ quả đo được: @S181 grep `_index` tìm `loi-do-luong-phan-1` trả **0 hit**, và 0 hit đó **không phân biệt được** *"chưa kéo"* với *"đã kéo và đã áp tại chỗ"* ⇒ sổ không đọc được. Backfill @S181: **42 áp · 4 chưa · 23 n-a = 69 dòng**.
|
||||
>
|
||||
> 🔸 **Cột `áp` đặt ở CUỐI hàng**, theo đúng kỷ luật đã ghi ngay dưới đây — dòng cũ vẫn là **tiền tố nguyên vẹn** của dòng mới.
|
||||
> ⚠️ **Cột `áp` KHÔNG phủ hết sự thật:** nó chỉ đo *"có tệp report không"*. Thư đã áp mà **chưa từng có dòng trong sổ này** thì cột này không thấy được — đúng ca 2 thư `loi-do-luong` @S179. Muốn phủ nốt thì phải đối chiếu ngược `adap-reports/` (103 tệp) với sổ (46 dòng `all`), là việc khác.
|
||||
|
||||
> 🔴 **Hai cột `kênh` + `ghi-chú` đặt ở CUỐI hàng, cố ý.** Đặt cuối thì mỗi dòng cũ chỉ được **nối thêm**, phần chữ cũ vẫn là **tiền tố nguyên vẹn** của dòng mới — kiểm lại được bằng máy, không phải tin lời hứa "tôi không sửa gì". Backfill @S180 lấy từ trường `to:` của chính tệp trên đĩa: **23 dòng `se` · 22 dòng `all`**, 0 dòng mồ côi.
|
||||
|
||||
| received | id | from → to | status | folder | sha256(12) | verify | kênh | ghi-chú |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| 2026-06-09 | 2026-06-09-namgroup-to-se-ui-design-conventions | namgroup → se | processed | namgroup | 0140b81fb8a6 | ✓ | se | |
|
||||
| 2026-06-11 | 2026-06-11-ai_infra-to-se-ui-ux-design-guide | ai_infra → se | processed | ai_infra | d353ee460dba | ✓ | se | |
|
||||
| 2026-06-18 | 2026-06-18-ai_infra-to-se-harness-11-available | ai_infra → se | processed | ai_infra | b2a2fc1cf399 | ✓ | se | |
|
||||
| 2026-06-20 | 2026-06-19-ai_infra-to-se-harness-all-notify | ai_infra → se | processed | ai_infra | 50ec0b925157 | ✓ | se | |
|
||||
| 2026-06-20 | 2026-06-20-ai_infra-to-se-harness-14-adopt-notify | ai_infra → se | processed | ai_infra | 37ae1b19595a | ✓ | se | |
|
||||
| 2026-06-21 | 2026-06-20-ai_infra-to-se-harness-15-v2-notify | ai_infra → se | processed | ai_infra | 2e6097817e2d | ✓ | se | |
|
||||
| 2026-07-03 | 2026-07-03-ai_infra-to-se-batch13-ack-stamp-and-answers | ai_infra → se | processed | ai_infra | 72aaeeeed215 | ✓ | se | |
|
||||
| 2026-07-06 | 2026-07-04-Governance-notify-harness-full-recheck | ai_infra → se | processed | ai_infra | 78dc1d82 | ✓ | se | |
|
||||
| 2026-07-06 | 2026-07-04-ai_infra-to-se-consolidation-notify | ai_infra → se | processed | ai_infra | ad58db9b924a | ✓ | se | |
|
||||
| 2026-07-06 | 2026-07-04-ai_infra-to-se-notify-auto-hygiene | ai_infra → se | processed | ai_infra | 7499be2e(no-stamp·wf✓) | ✓ | se | |
|
||||
| 2026-07-11 | 2026-07-11-ai_infra-to-se-notify-model-tier-v3 | ai_infra → se | processed | ai_infra | a979743596e3 | ✓ | se | |
|
||||
| 2026-07-11 | 2026-07-11-ai_infra-to-se-triage-reply-s1-s6 | ai_infra → se | processed | ai_infra | 281a67958835 | ✓ | se | |
|
||||
| 2026-07-11 | 2026-07-10-Governance-harness-21-spec-file-invocation | ai_infra → se | processed | ai_infra | 19cc954b1ee9 | ✓ | all | |
|
||||
| 2026-07-11 | 2026-07-11-Governance-model-tier-v3-lead-owner-choice | ai_infra → se | processed | ai_infra | 1b3aa9091173 | ✓ | all | |
|
||||
| 2026-07-12 | 2026-07-11-ai_infra-to-se-notify-harness-22-wal | ai_infra → se | processed | ai_infra | c64a7ac2a1bb | ✓ | se | |
|
||||
| 2026-07-12 | 2026-07-11-Governance-harness-22-wal-session-continuity | ai_infra → se | processed | ai_infra | 3de0758a6377 | ✓ | all | |
|
||||
| 2026-07-13 | 2026-07-13-ai_infra-to-se-approve-h22-h21mtv3-and-presence-notify | ai_infra → se | processed | ai_infra | 6c32df89b60a | ✓ | se | |
|
||||
| 2026-07-15 | 2026-07-15-ai_infra-to-se-reply-wave-s122 | ai_infra → se | processed | ai_infra | 7fca0deb97ff | ✓ | se | |
|
||||
| 2026-07-16 | 2026-07-16-ai_infra-to-se-huong-dan-adap-4-ban-moi | ai_infra → se | processed | ai_infra | 181a6d195468 | ✓ | se | |
|
||||
| 2026-07-16 | 2026-07-15-Governance-h17-cadence-update-bookend | ai_infra → se | processed | ai_infra | 85bf89ca7d3e | ✓ | all | |
|
||||
| 2026-07-16 | 2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung | ai_infra → se | processed | ai_infra | 291550ffa295 | ✓ | all | |
|
||||
| 2026-07-16 | 2026-07-16-Governance-vong-tu-bao-tri-thu-nam-san-su-that-nhan-da-do | ai_infra → se | processed | ai_infra | 190c11ba2bc0 | ✓ | all | |
|
||||
| 2026-07-16 | 2026-07-16-Governance-session-logic-tach-session-vat-ly-huong-van-hanh-moi | ai_infra → se | processed | ai_infra | 9234a7aa1009 | ✓ | all | |
|
||||
| 2026-07-16 | 2026-07-16-Governance-owner-chot-contextual-retrieval-false-fleet-wide | ai_infra → se | processed | ai_infra | f5ce27780af8 | ✓ | all | |
|
||||
| 2026-07-16 | 2026-07-16-Governance-erratum-eol-metric-hai-chieu-va-bon-lo-moi | ai_infra → se | processed | ai_infra | eb12b9b8c2e9 | ✓ | all | |
|
||||
| 2026-07-16 | 2026-07-16-Governance-tong-hop-loi-da-bat-va-sua-bay-lop-sau-phep-thu | ai_infra → se | processed | ai_infra | 0db707e4381d | ✓ | all | |
|
||||
| 2026-07-17 | 2026-07-16-ai_infra-to-se-reply-adap-dot-16-07 | ai_infra → se | processed | ai_infra | e50a4bd0109d | ✓ | se | |
|
||||
| 2026-07-17 | 2026-07-17-ai_infra-to-se-reply-h24-cadence-3-gap | ai_infra → se | processed | ai_infra | 0b581ae79815 | ✓ | se | |
|
||||
| 2026-07-17 | 2026-07-16-Governance-loi-phong-workflow-chet-non-json-args | ai_infra → se | processed | ai_infra | 6c2eb2b19bae | ✓ | all | |
|
||||
| 2026-07-17 | 2026-07-16-Governance-notify-hai-ban-moi-va-kenh-hoi-dap-hub | ai_infra → se | processed | ai_infra | dacfcb11a690 | ✓ | all | |
|
||||
| 2026-07-17 | 2026-07-16-Governance-vong-bon-da-dong-giac-ngu-nen-tri-nho | ai_infra → se | processed | ai_infra | 89e4d818b8be | ✓ | all | |
|
||||
| 2026-07-17 | 2026-07-17-Governance-checklist-nam-vong-va-kiem-audit-xuyen-session | ai_infra → se | processed | ai_infra | f71c5b653185 | ✓ | all | |
|
||||
| 2026-07-17 | 2026-07-17-Governance-khung-nhip-nam-vong-do-rai-lam-don | ai_infra → se | processed | ai_infra | 3daf5ee48f47 | ✓ | all | |
|
||||
| 2026-07-17 | 2026-07-17-Governance-dinh-chinh-kep-nhan-grounded-va-filter-office | ai_infra → se | processed | ai_infra | 624c378d6ee1 | ✓ | all | |
|
||||
| 2026-07-17 | 2026-07-17-Governance-master-checklist-hai-tang-moi-cua-phien | ai_infra → se | processed | ai_infra | cadd24aed2e4 | ✓ | all | |
|
||||
| 2026-07-17 | 2026-07-17-Governance-nam-quyet-owner-mot-ngay-lam-viec-ky | ai_infra → se | processed | ai_infra | 123d8272bbf5 | ✓ | all | |
|
||||
| 2026-07-20 | 2026-07-17-ai_infra-to-se-reply-adap-wave-carveout-dp2 | ai_infra → se | processed | ai_infra | 9a35405b6433 | ✓ | se | |
|
||||
| 2026-07-20 | 2026-07-18-ai_infra-to-se-nudge-pull-dot-9-10 | ai_infra → se | processed | ai_infra | 9cd1a486af96 | ✓ | se | |
|
||||
| 2026-07-20 | 2026-07-18-ai_infra-to-se-reply-tong-bo-ba-harness-sub-4-khoan | ai_infra → se | processed | ai_infra | 58e28baedf05 | ✓ | se | |
|
||||
| 2026-07-20 | 2026-07-17-Governance-chuan-hoa-stamp-decode | ai_infra → se | processed | ai_infra | 6239dd403792 | ✓ | all | |
|
||||
| 2026-07-20 | 2026-07-17-Governance-khung-nhip-dinh-chinh-wording-tick-annex-phep-8 | ai_infra → se | processed | ai_infra | dede7ec56ccc | ✓ | all | |
|
||||
| 2026-07-20 | 2026-07-17-Governance-session-model-phien-logic-manifest | ai_infra → se | processed | ai_infra | 101e69d61675 | ✓ | all | |
|
||||
| 2026-07-20 | 2026-07-18-Governance-model-tier-h23-precedence-tested-update | ai_infra → se | processed | ai_infra | d68de5e7b72d | ✓ | all | |
|
||||
| 2026-07-22 | 2026-07-22-ai_infra-to-se-reply-adap11-c7-bulk-shards | ai_infra → se | processed | ai_infra | 01f567a379d4 | ✓ | se | |
|
||||
| 2026-07-22 | 2026-07-22-ai_infra-to-se-reply-session-model-dung-ban-da-duyet | ai_infra → se | processed | ai_infra | 8378a68b6f7e | ✓ | se | |
|
||||
| received | id | from → to | status | folder | sha256(12) | verify | kênh | ghi-chú | áp |
|
||||
|---|---|---|---|---|---|---|---|---|---|
|
||||
| 2026-06-09 | 2026-06-09-namgroup-to-se-ui-design-conventions | namgroup → se | processed | namgroup | 0140b81fb8a6 | ✓ | se | | n-a |
|
||||
| 2026-06-11 | 2026-06-11-ai_infra-to-se-ui-ux-design-guide | ai_infra → se | processed | ai_infra | d353ee460dba | ✓ | se | | n-a |
|
||||
| 2026-06-18 | 2026-06-18-ai_infra-to-se-harness-11-available | ai_infra → se | processed | ai_infra | b2a2fc1cf399 | ✓ | se | | n-a |
|
||||
| 2026-06-20 | 2026-06-19-ai_infra-to-se-harness-all-notify | ai_infra → se | processed | ai_infra | 50ec0b925157 | ✓ | se | | n-a |
|
||||
| 2026-06-20 | 2026-06-20-ai_infra-to-se-harness-14-adopt-notify | ai_infra → se | processed | ai_infra | 37ae1b19595a | ✓ | se | | n-a |
|
||||
| 2026-06-21 | 2026-06-20-ai_infra-to-se-harness-15-v2-notify | ai_infra → se | processed | ai_infra | 2e6097817e2d | ✓ | se | | n-a |
|
||||
| 2026-07-03 | 2026-07-03-ai_infra-to-se-batch13-ack-stamp-and-answers | ai_infra → se | processed | ai_infra | 72aaeeeed215 | ✓ | se | | n-a |
|
||||
| 2026-07-06 | 2026-07-04-Governance-notify-harness-full-recheck | ai_infra → se | processed | ai_infra | 78dc1d82 | ✓ | se | | n-a |
|
||||
| 2026-07-06 | 2026-07-04-ai_infra-to-se-consolidation-notify | ai_infra → se | processed | ai_infra | ad58db9b924a | ✓ | se | | n-a |
|
||||
| 2026-07-06 | 2026-07-04-ai_infra-to-se-notify-auto-hygiene | ai_infra → se | processed | ai_infra | 7499be2e(no-stamp·wf✓) | ✓ | se | | n-a |
|
||||
| 2026-07-11 | 2026-07-11-ai_infra-to-se-notify-model-tier-v3 | ai_infra → se | processed | ai_infra | a979743596e3 | ✓ | se | | n-a |
|
||||
| 2026-07-11 | 2026-07-11-ai_infra-to-se-triage-reply-s1-s6 | ai_infra → se | processed | ai_infra | 281a67958835 | ✓ | se | | n-a |
|
||||
| 2026-07-11 | 2026-07-10-Governance-harness-21-spec-file-invocation | ai_infra → se | processed | ai_infra | 19cc954b1ee9 | ✓ | all | | áp |
|
||||
| 2026-07-11 | 2026-07-11-Governance-model-tier-v3-lead-owner-choice | ai_infra → se | processed | ai_infra | 1b3aa9091173 | ✓ | all | | áp |
|
||||
| 2026-07-12 | 2026-07-11-ai_infra-to-se-notify-harness-22-wal | ai_infra → se | processed | ai_infra | c64a7ac2a1bb | ✓ | se | | n-a |
|
||||
| 2026-07-12 | 2026-07-11-Governance-harness-22-wal-session-continuity | ai_infra → se | processed | ai_infra | 3de0758a6377 | ✓ | all | | áp |
|
||||
| 2026-07-13 | 2026-07-13-ai_infra-to-se-approve-h22-h21mtv3-and-presence-notify | ai_infra → se | processed | ai_infra | 6c32df89b60a | ✓ | se | | n-a |
|
||||
| 2026-07-15 | 2026-07-15-ai_infra-to-se-reply-wave-s122 | ai_infra → se | processed | ai_infra | 7fca0deb97ff | ✓ | se | | n-a |
|
||||
| 2026-07-16 | 2026-07-16-ai_infra-to-se-huong-dan-adap-4-ban-moi | ai_infra → se | processed | ai_infra | 181a6d195468 | ✓ | se | | n-a |
|
||||
| 2026-07-16 | 2026-07-15-Governance-h17-cadence-update-bookend | ai_infra → se | processed | ai_infra | 85bf89ca7d3e | ✓ | all | | áp |
|
||||
| 2026-07-16 | 2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung | ai_infra → se | processed | ai_infra | 291550ffa295 | ✓ | all | | áp |
|
||||
| 2026-07-16 | 2026-07-16-Governance-vong-tu-bao-tri-thu-nam-san-su-that-nhan-da-do | ai_infra → se | processed | ai_infra | 190c11ba2bc0 | ✓ | all | | áp |
|
||||
| 2026-07-16 | 2026-07-16-Governance-session-logic-tach-session-vat-ly-huong-van-hanh-moi | ai_infra → se | processed | ai_infra | 9234a7aa1009 | ✓ | all | | áp |
|
||||
| 2026-07-16 | 2026-07-16-Governance-owner-chot-contextual-retrieval-false-fleet-wide | ai_infra → se | processed | ai_infra | f5ce27780af8 | ✓ | all | | áp |
|
||||
| 2026-07-16 | 2026-07-16-Governance-erratum-eol-metric-hai-chieu-va-bon-lo-moi | ai_infra → se | processed | ai_infra | eb12b9b8c2e9 | ✓ | all | | áp |
|
||||
| 2026-07-16 | 2026-07-16-Governance-tong-hop-loi-da-bat-va-sua-bay-lop-sau-phep-thu | ai_infra → se | processed | ai_infra | 0db707e4381d | ✓ | all | | áp |
|
||||
| 2026-07-17 | 2026-07-16-ai_infra-to-se-reply-adap-dot-16-07 | ai_infra → se | processed | ai_infra | e50a4bd0109d | ✓ | se | | n-a |
|
||||
| 2026-07-17 | 2026-07-17-ai_infra-to-se-reply-h24-cadence-3-gap | ai_infra → se | processed | ai_infra | 0b581ae79815 | ✓ | se | | n-a |
|
||||
| 2026-07-17 | 2026-07-16-Governance-loi-phong-workflow-chet-non-json-args | ai_infra → se | processed | ai_infra | 6c2eb2b19bae | ✓ | all | | áp |
|
||||
| 2026-07-17 | 2026-07-16-Governance-notify-hai-ban-moi-va-kenh-hoi-dap-hub | ai_infra → se | processed | ai_infra | dacfcb11a690 | ✓ | all | | áp |
|
||||
| 2026-07-17 | 2026-07-16-Governance-vong-bon-da-dong-giac-ngu-nen-tri-nho | ai_infra → se | processed | ai_infra | 89e4d818b8be | ✓ | all | | áp |
|
||||
| 2026-07-17 | 2026-07-17-Governance-checklist-nam-vong-va-kiem-audit-xuyen-session | ai_infra → se | processed | ai_infra | f71c5b653185 | ✓ | all | | áp |
|
||||
| 2026-07-17 | 2026-07-17-Governance-khung-nhip-nam-vong-do-rai-lam-don | ai_infra → se | processed | ai_infra | 3daf5ee48f47 | ✓ | all | | áp |
|
||||
| 2026-07-17 | 2026-07-17-Governance-dinh-chinh-kep-nhan-grounded-va-filter-office | ai_infra → se | processed | ai_infra | 624c378d6ee1 | ✓ | all | | áp |
|
||||
| 2026-07-17 | 2026-07-17-Governance-master-checklist-hai-tang-moi-cua-phien | ai_infra → se | processed | ai_infra | cadd24aed2e4 | ✓ | all | | áp |
|
||||
| 2026-07-17 | 2026-07-17-Governance-nam-quyet-owner-mot-ngay-lam-viec-ky | ai_infra → se | processed | ai_infra | 123d8272bbf5 | ✓ | all | | áp |
|
||||
| 2026-07-20 | 2026-07-17-ai_infra-to-se-reply-adap-wave-carveout-dp2 | ai_infra → se | processed | ai_infra | 9a35405b6433 | ✓ | se | | n-a |
|
||||
| 2026-07-20 | 2026-07-18-ai_infra-to-se-nudge-pull-dot-9-10 | ai_infra → se | processed | ai_infra | 9cd1a486af96 | ✓ | se | | n-a |
|
||||
| 2026-07-20 | 2026-07-18-ai_infra-to-se-reply-tong-bo-ba-harness-sub-4-khoan | ai_infra → se | processed | ai_infra | 58e28baedf05 | ✓ | se | | n-a |
|
||||
| 2026-07-20 | 2026-07-17-Governance-chuan-hoa-stamp-decode | ai_infra → se | processed | ai_infra | 6239dd403792 | ✓ | all | | áp |
|
||||
| 2026-07-20 | 2026-07-17-Governance-khung-nhip-dinh-chinh-wording-tick-annex-phep-8 | ai_infra → se | processed | ai_infra | dede7ec56ccc | ✓ | all | | áp |
|
||||
| 2026-07-20 | 2026-07-17-Governance-session-model-phien-logic-manifest | ai_infra → se | processed | ai_infra | 101e69d61675 | ✓ | all | | áp |
|
||||
| 2026-07-20 | 2026-07-18-Governance-model-tier-h23-precedence-tested-update | ai_infra → se | processed | ai_infra | d68de5e7b72d | ✓ | all | | áp |
|
||||
| 2026-07-22 | 2026-07-22-ai_infra-to-se-reply-adap11-c7-bulk-shards | ai_infra → se | processed | ai_infra | 01f567a379d4 | ✓ | se | | n-a |
|
||||
| 2026-07-22 | 2026-07-22-ai_infra-to-se-reply-session-model-dung-ban-da-duyet | ai_infra → se | processed | ai_infra | 8378a68b6f7e | ✓ | se | | n-a |
|
||||
|
||||
| 2026-07-24 | 2026-07-18-Governance-spawn-label-panel-audit-khung | ai_infra → se | processed | ai_infra | 6cbded684636 | ✓ | all | bù dòng @S180 (P6) |
|
||||
| 2026-07-24 | 2026-07-19-Agent-ensemble-cost-lens-khan-hiem-va-routing | ai_infra → se | processed | ai_infra | 0a03b2c83fb9 | ✓ | all | bù dòng @S180 (P6) |
|
||||
| 2026-07-24 | 2026-07-19-Agent-ensemble-depth-axis-deepen-on-contested | ai_infra → se | processed | ai_infra | f05eba5b8e8c | ✓ | all | bù dòng @S180 (P6) |
|
||||
| 2026-07-24 | 2026-07-19-Agent-ensemble-depth-cost-update-so-do-thuc | ai_infra → se | processed | ai_infra | 294be326cb5b | ✓ | all | bù dòng @S180 (P6) |
|
||||
| 2026-07-24 | 2026-07-19-Governance-goi-chot-owner-nam-khoan | ai_infra → se | processed | ai_infra | c580c56682a5 | ✓ | all | bù dòng @S180 (P6) |
|
||||
| 2026-07-24 | 2026-07-19-Governance-harness-dong-du-vong-audit-va-eval-use-side | ai_infra → se | processed | ai_infra | c034a916eb92 | ✓ | all | bù dòng @S180 (P6) |
|
||||
| 2026-07-24 | 2026-07-19-Governance-hub-tu-danh-gia-3-goc-va-chuyen-pha | ai_infra → se | processed | ai_infra | cea290cead80 | ✓ | all | bù dòng @S180 (P6) |
|
||||
| 2026-07-24 | 2026-07-20-Governance-3-khoan-title-tier-posture-home-distill-params | ai_infra → se | processed | ai_infra | 9353c5c8ba51 | ✓ | all | bù dòng @S180 (P6) · `to: all` (không phải `all-fit`) |
|
||||
| 2026-07-24 | 2026-07-20-Governance-auto-toan-vong-distill-2-tang | ai_infra → se | processed | ai_infra | b9e84fc24475 | ✓ | all | bù dòng @S180 (P6) · 🔴 THIẾU trường `to:` — mọi phép phân loại theo `to:` sẽ bỏ rơi thư này trong im lặng |
|
||||
| 2026-07-24 | 2026-07-21-Governance-eval-quality-audit-ra-thuoc-eval-cua-eval | ai_infra → se | processed | ai_infra | c04d39dbc8f5 | ✓ | all | bù dòng @S180 (P6) · 🔴 THIẾU trường `to:` — mọi phép phân loại theo `to:` sẽ bỏ rơi thư này trong im lặng |
|
||||
| 2026-07-26 | 2026-07-25-Governance-model-default-opus-5-max | ai_infra → se | processed | ai_infra | 9c9090073a0f | ✓ | all | bù dòng @S180 (P6) · 🔴 THIẾU trường `to:` — mọi phép phân loại theo `to:` sẽ bỏ rơi thư này trong im lặng |
|
||||
| 2026-07-26 | 2026-07-25-Governance-pause-tiep-upgrade-vong-ctx | ai_infra → se | processed | ai_infra | 0df10df4ac95 | ✓ | all | bù dòng @S180 (P6) |
|
||||
| 2026-08-05 | 2026-07-28-Governance-day-wake-probe-first-resume | ai_infra → se | processed | ai_infra | ef05b7da8d5e | ✓ | all | bù dòng @S180 (P6) |
|
||||
| 2026-08-05 | 2026-08-04-Governance-upgrade-pack-phased-khuon-fit-map-report-checklist | ai_infra → se | processed | ai_infra | 98e31fad1ff4 | ✓ | all | bù dòng @S180 (P6) · frontmatter `status: DRAFT` + `reviewer_gate: PENDING` — dấu trạng thái lệch nội dung, hash sạch nên KHÔNG phải tamper · GĐ-0 đang xử lý, chưa áp |
|
||||
| 2026-08-05 | 2026-08-04-Governance-upgrade-pack-phased-luat-cham-diem | ai_infra → se | processed | ai_infra | c24699f0251a | ✓ | all | bù dòng @S180 (P6) · frontmatter `status: DRAFT` + `reviewer_gate: PENDING` — dấu trạng thái lệch nội dung, hash sạch nên KHÔNG phải tamper · GĐ-0 đang xử lý, chưa áp |
|
||||
| 2026-08-05 | 2026-08-04-Governance-upgrade-pack-phased-phu-luc-spec-pitfall | ai_infra → se | processed | ai_infra | 49287ce7ced4 | ✓ | all | bù dòng @S180 (P6) · frontmatter `status: DRAFT` + `reviewer_gate: PENDING` — dấu trạng thái lệch nội dung, hash sạch nên KHÔNG phải tamper · GĐ-0 đang xử lý, chưa áp |
|
||||
| 2026-08-05 | 2026-08-04-Governance-upgrade-pack-phased-thu-chinh | ai_infra → se | processed | ai_infra | 43db2cf09baa | ✓ | all | bù dòng @S180 (P6) · frontmatter `status: DRAFT` + `reviewer_gate: PENDING` — dấu trạng thái lệch nội dung, hash sạch nên KHÔNG phải tamper · GĐ-0 đang xử lý, chưa áp |
|
||||
| 2026-07-16 | 2026-07-13-Governance-adap-update-harness-22-wal-push-guard | ai_infra → se | processed | ai_infra | dd4b0176fa3a | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" |
|
||||
| 2026-07-16 | 2026-07-13-Governance-adap-update-presence-not-age-reinject | ai_infra → se | processed | ai_infra | ab6c387ee5fb | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" |
|
||||
| 2026-07-16 | 2026-07-13-Governance-harness-22-wal-defect-fix | ai_infra → se | processed | ai_infra | 76919abc2ff9 | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" |
|
||||
| 2026-07-16 | 2026-07-13-Governance-harness-23-explicit-model-at-spawn | ai_infra → se | processed | ai_infra | 7c0ec06700af | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" |
|
||||
| 2026-07-16 | 2026-07-14-Governance-harness-24-lead-self-audit-h17-cadence | ai_infra → se | processed | ai_infra | 7400d951bebd | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" |
|
||||
| 2026-07-16 | 2026-07-14-Governance-owner-sign-3-marks-h21-mtv3-h22 | ai_infra → se | processed | ai_infra | ae119b953218 | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" |
|
||||
| 2026-07-16 | 2026-07-15-Governance-eol-crlf-agent-registry-defect-notice | ai_infra → se | processed | ai_infra | 1c039f336b28 | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" |
|
||||
| 2026-07-24 | 2026-07-18-Governance-spawn-label-panel-audit-khung | ai_infra → se | processed | ai_infra | 6cbded684636 | ✓ | all | bù dòng @S180 (P6) | áp |
|
||||
| 2026-07-24 | 2026-07-19-Agent-ensemble-cost-lens-khan-hiem-va-routing | ai_infra → se | processed | ai_infra | 0a03b2c83fb9 | ✓ | all | bù dòng @S180 (P6) | áp |
|
||||
| 2026-07-24 | 2026-07-19-Agent-ensemble-depth-axis-deepen-on-contested | ai_infra → se | processed | ai_infra | f05eba5b8e8c | ✓ | all | bù dòng @S180 (P6) | áp |
|
||||
| 2026-07-24 | 2026-07-19-Agent-ensemble-depth-cost-update-so-do-thuc | ai_infra → se | processed | ai_infra | 294be326cb5b | ✓ | all | bù dòng @S180 (P6) | áp |
|
||||
| 2026-07-24 | 2026-07-19-Governance-goi-chot-owner-nam-khoan | ai_infra → se | processed | ai_infra | c580c56682a5 | ✓ | all | bù dòng @S180 (P6) | áp |
|
||||
| 2026-07-24 | 2026-07-19-Governance-harness-dong-du-vong-audit-va-eval-use-side | ai_infra → se | processed | ai_infra | c034a916eb92 | ✓ | all | bù dòng @S180 (P6) | áp |
|
||||
| 2026-07-24 | 2026-07-19-Governance-hub-tu-danh-gia-3-goc-va-chuyen-pha | ai_infra → se | processed | ai_infra | cea290cead80 | ✓ | all | bù dòng @S180 (P6) | áp |
|
||||
| 2026-07-24 | 2026-07-20-Governance-3-khoan-title-tier-posture-home-distill-params | ai_infra → se | processed | ai_infra | 9353c5c8ba51 | ✓ | all | bù dòng @S180 (P6) · `to: all` (không phải `all-fit`) | áp |
|
||||
| 2026-07-24 | 2026-07-20-Governance-auto-toan-vong-distill-2-tang | ai_infra → se | processed | ai_infra | b9e84fc24475 | ✓ | all | bù dòng @S180 (P6) · 🔴 THIẾU trường `to:` — mọi phép phân loại theo `to:` sẽ bỏ rơi thư này trong im lặng | áp |
|
||||
| 2026-07-24 | 2026-07-21-Governance-eval-quality-audit-ra-thuoc-eval-cua-eval | ai_infra → se | processed | ai_infra | c04d39dbc8f5 | ✓ | all | bù dòng @S180 (P6) · 🔴 THIẾU trường `to:` — mọi phép phân loại theo `to:` sẽ bỏ rơi thư này trong im lặng | áp |
|
||||
| 2026-07-26 | 2026-07-25-Governance-model-default-opus-5-max | ai_infra → se | processed | ai_infra | 9c9090073a0f | ✓ | all | bù dòng @S180 (P6) · 🔴 THIẾU trường `to:` — mọi phép phân loại theo `to:` sẽ bỏ rơi thư này trong im lặng | áp |
|
||||
| 2026-07-26 | 2026-07-25-Governance-pause-tiep-upgrade-vong-ctx | ai_infra → se | processed | ai_infra | 0df10df4ac95 | ✓ | all | bù dòng @S180 (P6) | áp |
|
||||
| 2026-08-05 | 2026-07-28-Governance-day-wake-probe-first-resume | ai_infra → se | processed | ai_infra | ef05b7da8d5e | ✓ | all | bù dòng @S180 (P6) | áp |
|
||||
| 2026-08-05 | 2026-08-04-Governance-upgrade-pack-phased-khuon-fit-map-report-checklist | ai_infra → se | processed | ai_infra | 98e31fad1ff4 | ✓ | all | bù dòng @S180 (P6) · frontmatter `status: DRAFT` + `reviewer_gate: PENDING` — dấu trạng thái lệch nội dung, hash sạch nên KHÔNG phải tamper · GĐ-0 đang xử lý, chưa áp | chưa |
|
||||
| 2026-08-05 | 2026-08-04-Governance-upgrade-pack-phased-luat-cham-diem | ai_infra → se | processed | ai_infra | c24699f0251a | ✓ | all | bù dòng @S180 (P6) · frontmatter `status: DRAFT` + `reviewer_gate: PENDING` — dấu trạng thái lệch nội dung, hash sạch nên KHÔNG phải tamper · GĐ-0 đang xử lý, chưa áp | chưa |
|
||||
| 2026-08-05 | 2026-08-04-Governance-upgrade-pack-phased-phu-luc-spec-pitfall | ai_infra → se | processed | ai_infra | 49287ce7ced4 | ✓ | all | bù dòng @S180 (P6) · frontmatter `status: DRAFT` + `reviewer_gate: PENDING` — dấu trạng thái lệch nội dung, hash sạch nên KHÔNG phải tamper · GĐ-0 đang xử lý, chưa áp | chưa |
|
||||
| 2026-08-05 | 2026-08-04-Governance-upgrade-pack-phased-thu-chinh | ai_infra → se | processed | ai_infra | 43db2cf09baa | ✓ | all | bù dòng @S180 (P6) · frontmatter `status: DRAFT` + `reviewer_gate: PENDING` — dấu trạng thái lệch nội dung, hash sạch nên KHÔNG phải tamper · GĐ-0 đang xử lý, chưa áp | chưa |
|
||||
| 2026-07-16 | 2026-07-13-Governance-adap-update-harness-22-wal-push-guard | ai_infra → se | processed | ai_infra | dd4b0176fa3a | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" | áp |
|
||||
| 2026-07-16 | 2026-07-13-Governance-adap-update-presence-not-age-reinject | ai_infra → se | processed | ai_infra | ab6c387ee5fb | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" | áp |
|
||||
| 2026-07-16 | 2026-07-13-Governance-harness-22-wal-defect-fix | ai_infra → se | processed | ai_infra | 76919abc2ff9 | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" | áp |
|
||||
| 2026-07-16 | 2026-07-13-Governance-harness-23-explicit-model-at-spawn | ai_infra → se | processed | ai_infra | 7c0ec06700af | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" | áp |
|
||||
| 2026-07-16 | 2026-07-14-Governance-harness-24-lead-self-audit-h17-cadence | ai_infra → se | processed | ai_infra | 7400d951bebd | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" | áp |
|
||||
| 2026-07-16 | 2026-07-14-Governance-owner-sign-3-marks-h21-mtv3-h22 | ai_infra → se | processed | ai_infra | ae119b953218 | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" | áp |
|
||||
| 2026-07-16 | 2026-07-15-Governance-eol-crlf-agent-registry-defect-notice | ai_infra → se | processed | ai_infra | 1c039f336b28 | ✓ | all | bù @S180 — trong hộp nhưng trước mốc nước 2026-07-15; mốc nước chỉ miễn thư VẮNG (`check-email.md:39`), lead phán bù để đạt nghiệm thu "danh sách vắng = 0" | áp |
|
||||
|
||||
## 📤 OUTBOUND (gửi — qua `/send-email <to>`)
|
||||
| sent (ISO) | id | from → to | folder | sha256(12) |
|
||||
|
||||
@ -64,7 +64,7 @@ Cột "Thuộc GĐ" lấy đúng nhãn giai đoạn mà hub gắn trong Phần C
|
||||
Ghi ra thành danh sách có tên thay vì im lặng, theo đúng khoản A14. Danh sách này không rỗng.
|
||||
|
||||
- **A2 — chỗ cắm kỷ luật ghi ngay.** Chưa ai đo SE có cắm luật ghi-ngay vào bề mặt tự động nạp mỗi lượt hay không. Lệnh: `grep -n "ghi ngay\|ghi NGAY" CLAUDE.md .claude/auto-memory/MEMORY.md`, kèm control dương bằng một cụm chắc chắn có trong hai tệp đó.
|
||||
- **A4 — tập cửa dừng thật.** Đã đo được 6 cửa gọi máy dò nhịp và 4 trên 19 cửa có tiền kiểm, nhưng chưa ai liệt đủ tập cửa dừng thật rồi đối chiếu từng cửa. Lệnh: dựng bảng 19 cửa ở wave W3 rồi soi từng dòng.
|
||||
- **A4 — tập cửa dừng thật.** ✅ **ĐÃ DỰNG @W3, xong 2026-08-07.** Bảng 19 cửa liệt **từng dòng** sống ở [`runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w3-nghi-thuc.md` **§1.2**](../../.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w3-nghi-thuc.md) — 19 dòng đánh số, **0 cửa còn treo**. Số đo tại đó: **5/19** có tiền-kiểm TRƯỚC W3 (không phải 4/19 như bản trước ghi — chênh vì `snapshot` được đóng từ 🟡 sang CÓ), **9/19** sau W3. 🧊 *Câu cũ ở dòng này là mệnh-lệnh "dựng bảng 19 cửa ở wave W3" — giữ vết: nó sống nguyên 1 wave sau khi bảng đã dựng xong, và không trỏ tới đâu (dry-run @S181 bắt, class `view-stale-status`).*
|
||||
- **A8 — tỉ lệ phủ sóng.** Bao nhiêu tin của chủ dự án đã được bắt vào nguồn đếm, trên tổng số tin thật. Chưa có vật tương đương ở SE nên chưa xác định được mẫu số. Chừng nào chưa có tỉ lệ này thì khối chấm điểm **phải in "KHÔNG ĐO ĐƯỢC"** và cấm in điểm.
|
||||
- **A16 — ba script mồ côi và bảng hợp nhất.** Đã có kết luận từng script, nhưng bảng bốn ô cho từng cưỡng chế thì chưa dựng.
|
||||
- **Điều kiện vào giai đoạn 6, vế đếm.** Bốn khoản của giai đoạn 6 còn ở trạng thái chưa đo: bài kiểm ghim tên hay ghim số; tỉ lệ phiên đi đường Workflow so với đường Agent; hai vế còn lại của điều kiện vào danh sách; và tần suất của triệu chứng TC-07, mà SE **không tồn tại dụng cụ** để đếm.
|
||||
|
||||
61
docs/governance/expensive-runs-view.md
Normal file
61
docs/governance/expensive-runs-view.md
Normal file
@ -0,0 +1,61 @@
|
||||
# Sổ khung-nhìn LƯỢT CHẠY ĐẮT — `expensive-runs-view.md`
|
||||
|
||||
> 🔴 **ĐÂY LÀ VIEW, KHÔNG PHẢI NGUỒN. REGENERATE-ONLY — CẤM SỬA TAY.**
|
||||
> Sửa tay một dòng ở đây là **đẻ nguồn thứ hai** cho thứ đã có nguồn — đúng thứ sàn-3 cấm. Muốn đổi nội dung thì đổi **vật chứng gốc** (run-folder / nhật-ký vai / WAL) rồi dựng lại bảng.
|
||||
>
|
||||
> **Vị trí này do chủ dự án chốt** — câu **P7 vế (i)**, anh gật *"1 → gật luôn"* @S181 (2026-08-07). Sổ ghi quyết-định: [`owner-decisions-07-08-2026-dot-2.md`](../../.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/owner-decisions-07-08-2026-dot-2.md).
|
||||
|
||||
---
|
||||
|
||||
## Vì sao là VIEW chứ không phải sổ chép tay
|
||||
|
||||
Lane D (`sub-n3-lane-d-gd56.md` §4a) đo được: **dữ liệu đã nằm sẵn trên đĩa ở 3 nơi**, không cần ai chép lại —
|
||||
|
||||
| Nguồn | Chứa gì | Đo được |
|
||||
|---|---|---|
|
||||
| `.claude/workflows/runs/<id>/` | run.md + sub-file + synthesis | **88** thư mục lượt |
|
||||
| `.claude/agent-memory/**` dấu `[engine:` | engine nào chạy cho vai nào | **8** tệp mang dấu |
|
||||
| `.claude/WAL.md` | dòng `wf:` + chain của mạch đang chạy | 1 sổ |
|
||||
|
||||
⇒ Một sổ chép tay sẽ **lệch** khỏi 3 nguồn này ngay lượt đầu ai đó quên ghi. View thì không lệch được — nó **là** ba nguồn đó, đọc lại.
|
||||
|
||||
## Lệnh dựng lại (chạy rồi thay phần bảng bên dưới)
|
||||
|
||||
```bash
|
||||
# (1) dau [engine: — engine nao chay cho vai nao
|
||||
grep -rho '\[engine:[^]]*\]' .claude/agent-memory/ | sort | uniq -c | sort -rn
|
||||
|
||||
# (2) run-folder co luot dat
|
||||
grep -rl 'fable-real\|fable-clone' .claude/workflows/runs/*/run.md | sed 's#.*/runs/##;s#/run.md##'
|
||||
|
||||
# (3) mau so — tong run-folder (LUON in canh moi con so, hop dong may W1 muc 3)
|
||||
ls -d .claude/workflows/runs/*/ | wc -l
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Bảng — 5 cột (khuôn chốt ở P7)
|
||||
|
||||
**Mẫu số: 8 run-folder có dấu lượt đắt / 88 run-folder tổng.**
|
||||
|
||||
| Thời điểm | Loại | Đề bài | Con trỏ vật chứng | Kết luận |
|
||||
|---|---|---|---|---|
|
||||
| 2026-08-07 (S180) | `/fable-real` `investigator-codebase` | N1 — dựng fit-map gói adap 7-GĐ | `runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-invest-fitmap-S180.md` | **PHỦ ĐỦ 7GĐ / 12TC / 9LỖI** |
|
||||
| 2026-08-07 (S180) | `/fable-real` `reviewer` | N2 — review fit-map | `…/sub-review-n2-S180.md` | **PASS_WITH_FIXES 0C/5M/6m**, claim-không-đứng = 0 |
|
||||
| 2026-08-07 (S180) | `/fable-clone` `reviewer` ×6 lane | N3 — 6 lăng-kính A–F | `…/sub-n3-lane-{a…f}-*.md` | 6 lane trả đủ; lane F bắt slot (68) đóng-hụt |
|
||||
| 2026-08-07 (S180) | `/fable-real` `reviewer` | N4 — kế hoạch wave | `…/wave-plan-S180.md` | **7 wave + 3 sub gated, 0 loại** |
|
||||
| 2026-08-06 (S176) | lượt đắt | đổi style 3 vai | `runs/2026-08-06-S176-doi-style-3-vai/` | → 3 vai `*-reviewer-style` |
|
||||
| 2026-08-05 (S175) | lượt đắt | cột ngân sách dự án | `runs/2026-08-05-S175-duan-budget-column/` | — |
|
||||
| 2026-08-05 (S174) | lượt đắt | audit style KHKK | `runs/2026-08-05-S174-khkk-style-audit/` | — |
|
||||
| 2026-08-04 (S171) | lượt đắt | KHKK UI mirror PE | `runs/2026-08-04-S171-khkk-ui-mirror-pe/` | — |
|
||||
| 2026-07-31 (S164) | lượt đắt | 4GĐ KHKK fan-out | `runs/2026-07-31-S164-4gd-khkk-fanout/` | — |
|
||||
| 2026-07-29 (S160) | lượt đắt | KHKK dry-run plan | `runs/2026-07-29-S160-khkk-dryrun-plan/` | — |
|
||||
| 2026-07-28 (S158) | lượt đắt | day-wake probe | `runs/2026-07-28-S158-day-wake-probe-first/` | — |
|
||||
| S108 · S110 · S111 · S117 | `/fable-real` single | (đề bài ở nhật-ký vai) | dấu `[engine: fable-real-single · Fable-S1xx]` trong `.claude/agent-memory/**` | — |
|
||||
| S112 · S113 | `/fable-clone` ensemble | (đề bài ở nhật-ký vai) | dấu `[engine: fable-clone-ensemble · Opus-S11x]` | — |
|
||||
|
||||
## 🔴 Khai thẳng cái view này CHƯA làm được
|
||||
|
||||
- **Cột *kết luận* rỗng ở 9/13 dòng.** Dấu `[engine:` ghi **engine + vai**, không ghi **verdict**; verdict nằm rải trong `run.md`/synthesis mỗi thư mục. Kéo verdict tự động = phải parse văn xuôi tự do ⇒ **chưa cơ-khí-hoá được**, và điền tay thì vi phạm chính luật regenerate-only ở đầu tệp. Ô rỗng ở đây nghĩa là **chưa trích được**, KHÔNG phải *"lượt đó không có kết luận"*.
|
||||
- **Cột *thời điểm* lấy từ tên thư mục**, không phải mốc trong tệp. Tên thư mục do người đặt ⇒ sai tên là sai cột. (Cùng bẫy mà `tien-kiem-cua.ps1` né bằng cách đọc dấu-thời-gian-trong-tệp.)
|
||||
- **Vế-6 của P7 chưa cắm:** *thiếu-tệp-ở-lượt-đắt = mức nghiêm trọng CAO NHẤT* nối vào máy điểm danh W2 (`artifact-integrity.ps1`) — khoản đó thuộc **W5b**, mà W5b còn **gated bởi P7 vế (ii)** (truyền-nguyên-văn lane dispatch) chưa được phán.
|
||||
@ -135,7 +135,7 @@ Hub `phu-luc:194`: *tiền kiểm chi phí bằng không, chạy ở **đầu m
|
||||
- **Máy:** `scripts/tien-kiem-cua.ps1` — chỉ đọc, **luôn exit 0**, in một dòng `TIEN-KIEM:`. Lỗi bất kỳ ⇒ in `tien-kiem loi (khong chan)` rồi đi tiếp.
|
||||
- **Vì sao không tin `mtime`:** hook `wal:` chạm tệp ở biên mỗi lượt; `git checkout` viết lại `mtime` hàng loạt. `mtime` trả lời *"tệp bị chạm lúc nào"*, không trả lời *"cửa đóng lúc nào"*. Dấu thời gian **trong** tệp thì không bị hai thứ đó làm trôi.
|
||||
- **Nguồn dấu thời gian trong tệp** (đọc, không ghi): `.claude/WAL.md` dòng `updated:` · `.claude/governance/.session-counter.json` khoá `last_ticked_at` + `last_ticked_session` + `last_ticked_head`.
|
||||
- **Độ phủ + trần chi phí:** xem `docs/governance/adap-upgrade-pack-tracking.md` và bản ghi lượt W3. **Số cửa và số phủ KHÔNG chép ở đây** (B1) — đo lại bằng `ls -1 .claude/commands/*.md | wc -l`.
|
||||
- **Độ phủ + trần chi phí:** 🔴 **BẢNG 19 CỬA LIỆT TỪNG DÒNG SỐNG Ở** [`.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w3-nghi-thuc.md` **§1.2**](../../.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-w3-nghi-thuc.md) (19 dòng đánh số, 0 cửa treo). `adap-upgrade-pack-tracking.md` chỉ ghi **lệnh dựng** bảng, KHÔNG chứa bảng — đi theo nó là lạc. **Số cửa và số phủ KHÔNG chép ở đây** (B1) — đo lại bằng `ls -1 .claude/commands/*.md | wc -l`.
|
||||
|
||||
🔴 **`C3-08` — trần chi phí cho cửa hay dùng: `KHÔNG ĐO ĐƯỢC`.** Kho này có doctrine *"đo BYTE, CẤM quy token"* (S158) nên không in được số token cho một cửa. Adopt ở dạng **hướng dẫn + nghĩa vụ khai**: ai thêm bước vào `/pause` · `/tiep` phải **đo wall-clock trước** (luật đã có sẵn: `.claude/commands/check-email.md:41`) và **khai con số đo được**. Đây là **khai báo, không phải thuốc** — đúng chữ hub `:185`: *"Không có dụng cụ đo thì khai KHÔNG ĐO ĐƯỢC, đừng in số bịa."*
|
||||
|
||||
@ -147,4 +147,4 @@ Hub `phu-luc:194`: *tiền kiểm chi phí bằng không, chạy ở **đầu m
|
||||
|---|---|
|
||||
| `C3-04` cổng chặn bằng mã lỗi | wave **W3b**, chờ owner chốt (P1). Mọi máy W3 giữ **exit 0 / INFORM** |
|
||||
| khoản (v) thang mã thoát 4 trạng thái | hình dạng đổi theo phương án P1 ⇒ làm trước là làm lại (lane C §E.3) |
|
||||
| khoản (vi) luật tự trị ba bậc | cần owner gật nội dung (P5); đích **NGUỒN** dự kiến `.claude/governance/ACTIVE-MARKS.md`, các nơi khác **TRỎ** về, cấm chép (chống nguồn-đôi `C3-07` ⟂ `ST-002`) |
|
||||
| ~~khoản (vi) luật tự trị ba bậc~~ | ✅ **HẾT ngoài-phạm-vi @S181** — anh gật P5 *"nguyên văn"*. Nhà NGUỒN = [`.claude/governance/ACTIVE-MARKS.md` **§LT3**](../../.claude/governance/ACTIVE-MARKS.md) (mark `RC-pqhuy1987-07-08-2026-20-57-48`). Văn bản này + `ST-002` của W4 **TRỎ** về đó, **cấm chép** (chống nguồn-đôi `C3-07` ⟂ `ST-002`) |
|
||||
|
||||
67
docs/governance/so-yeu-cau-chu-du-an.md
Normal file
67
docs/governance/so-yeu-cau-chu-du-an.md
Normal file
@ -0,0 +1,67 @@
|
||||
# Sổ yêu-cầu chủ dự án — 3 khối (GĐ-4, wave W4)
|
||||
|
||||
> **Dựng @S181 · 2026-08-07.** Điều-kiện-vào đã đủ: W3 thi công xong + chủ dự án chốt **P2 = PB-2** (tách REQUEST ⟂ TASK).
|
||||
> Sổ quyết-định: [`owner-decisions-07-08-2026-dot-2.md`](../../.claude/workflows/runs/2026-08-07-S180-adap-upgrade-pack-phased/owner-decisions-07-08-2026-dot-2.md).
|
||||
|
||||
## 🔴 Ranh sống-còn: sổ này là REQUEST, KHÔNG phải TASK
|
||||
|
||||
| | REQUEST (sổ này) | TASK (`.claude/WAL.md`) |
|
||||
|---|---|---|
|
||||
| Trả lời câu | *"anh đã yêu-cầu gì, đã được đáp chưa?"* | *"việc đang tới đâu?"* |
|
||||
| Nguồn | **sổ này** | **WAL — nguồn duy-nhất** |
|
||||
| Cột trạng-thái | `mở`/`đóng` của **YÊU-CẦU** | `[ ]`/`[!]`/`[x]` của **VIỆC** |
|
||||
|
||||
🔴 **Sổ này CẤM mang cột trạng-thái-thi-công của riêng nó.** Muốn biết việc tới đâu thì đi theo cột *con trỏ* về WAL. Luật + lý-lẽ đầy-đủ = canonical ở [`.claude/commands/tiep.md` §3-bis](../../.claude/commands/tiep.md) — **B1: CẤM chép sang đây.**
|
||||
|
||||
## 🔴 Chống bẫy A1 — cột *lời nguyên văn* chỉ nhận chữ anh gõ TỪ 2026-08-07
|
||||
|
||||
Dữ-liệu cũ (WAL · HANDOFF · auto-memory · migration-todos) **KHÔNG** được đổ vào 3 khối dưới — chúng là **nhãn do đội đặt**, không phải lời anh. Chúng sống ở **PHỤ LỤC** cuối tệp, mang nhãn *"suy ra, không phải nguyên văn"*.
|
||||
|
||||
- **Mã `YC-`/`ST-`/`PN-` là VĨNH VIỄN, cấm tái dụng.** Đóng = **lật trạng thái**, KHÔNG xoá dòng. *(SE từng làm ngược: `HANDOFF:10-17` đánh số 1..7 tái dụng mỗi phiên, đã trả giá bằng 3 lượt hỏi lại.)*
|
||||
- **Trần ký tự cột nguyên văn** = khoá `owner_request_verbatim_char_cap` trong `.claude/agent-memory/memory-budget.json` — **B1: trỏ khoá, CẤM chép số vào đây.**
|
||||
|
||||
---
|
||||
|
||||
## Khối 1 — `việc-được-giao`
|
||||
|
||||
| mã | lời nguyên văn | thời điểm · phiên | trạng thái | số lần đã nhắc | con trỏ | 🔴 đội hiểu thành gì |
|
||||
|---|---|---|---|---|---|---|
|
||||
| `YC-001` | "Nói rõ các vấn đề trên nhé" | 2026-08-07 · S181 | đóng | 1 | báo-cáo lượt S181 | Giải thích 6 câu chờ-anh bằng nguồn thật, không phỏng theo trí nhớ — kèm khuyến nghị từng câu |
|
||||
| `YC-002` | "OK cứ làm dry-run luôn" | 2026-08-07 · S181 | đóng | 1 | `WAL` chain "DRY-RUN W3 acceptance" | *(lead hiểu SAI lượt đầu: tưởng dry-run các ô acceptance W3. Anh đính chính ở `YC-004`.)* |
|
||||
| `YC-003` | "gõ /adap-apply (dry) -> OK chốt cái này cho W3" | 2026-08-07 · S181 | đóng | 1 | `WAL` chain "W3 acceptance 6/6 ĐÓNG" | Gõ lệnh thật để xác nhận thân lệnh nạp có BƯỚC 0, **không** áp thư nào |
|
||||
| `YC-004` | "làm tiếp đi nhé, nãy tao nói dry-run tức chạy hết cái plan adapt ở turn trước chứ ko phải dry-run cái này" | 2026-08-07 · S181 | đóng | **2** | `WAL` chain "THI HÀNH 5/6 khoản đợt-2" | Đính chính `YC-002`: "dry-run" = **thi hành trọn plan adapt**, không phải chạy thử |
|
||||
| `YC-005` | "làm xong thì chậy hết cái plan adapt nhé" | 2026-08-07 · S181 | đóng | **3** | cùng trên | Nhắc lại `YC-004` — cùng nội dung, lần thứ 3 |
|
||||
| `YC-006` | "làm cho hết đi nhé" | 2026-08-07 · S181 | mở | **4** | `WAL` `next:` | Chạy nốt phần còn lại: P8 · P2 · W4 |
|
||||
|
||||
> 🔴 **`YC-004/005/006` = MỘT yêu-cầu bị nhắc 4 lần.** Đây là dữ-liệu **TC-01** (đếm-lần-nhắc) sinh ra để bắt — và nó tự tố-giác ngay dòng đầu tiên của sổ: lead hiểu sai ở `YC-002` nên anh phải nói lại 3 lần nữa. **Ghi lại chứ không làm đẹp.**
|
||||
|
||||
## Khối 2 — `sở-thích-thường-trực`
|
||||
|
||||
| mã | lời nguyên văn | phạm vi được làm thẳng | 🔴 lằn ranh đỏ vẫn PHẢI hỏi | lý do anh đã lường trước | thời điểm · trạng thái |
|
||||
|---|---|---|---|---|---|
|
||||
| `ST-001` | *(mục mồi — chưa có lời nguyên văn; liệt kê dưới là lằn-ranh do đội dựng theo A6, chờ anh xác nhận hoặc sửa)* | — | **LIỆT KÊ 7 LOẠI, CẤM dùng tính từ:** (1) đổi lược-đồ dữ-liệu · (2) xoá dữ-liệu · (3) hành-động hướng-ra-ngoài · (4) việc không-lùi-được · (5) việc dính tiền · (6) đổi cơ-chế governance · (7) đổi số-nhịp / ngân-sách | — | 2026-08-07 · **mở (chờ anh)** |
|
||||
| `ST-002` | *(mục mồi)* — tự-trị khi anh vắng mặt | theo **bậc 1** của luật 3 bậc | theo **bậc 3** của luật 3 bậc | — | 2026-08-07 · mở |
|
||||
|
||||
> `ST-002` **TRỎ** về nhà NGUỒN: [`ACTIVE-MARKS.md` **§LT3**](../../.claude/governance/ACTIVE-MARKS.md) (mark `RC-pqhuy1987-07-08-2026-20-57-48`). 🔴 **CẤM chép nội dung luật xuống đây** — đó đúng là nguồn-đôi `C3-07` ⟂ `ST-002` mà lane C §F.2 chỉ ra.
|
||||
>
|
||||
> ⚠️ **`ST-001` khai thẳng nấc:** 7 loại trên **chưa phải lời anh**. Chúng là lằn-ranh đội dựng theo khuôn A6 để mục mồi có nội dung soi được. Cột *lời nguyên văn* **để trống có khai** đúng luật chống-bẫy-A1, thay vì bịa một câu rồi gán cho anh.
|
||||
|
||||
## Khối 3 — `lời-phàn-nàn`
|
||||
|
||||
**TRỐNG TUYỆT ĐỐI.** Đo @S180: **0 hit** trên toàn kho (control dương cùng phép, chuỗi *"điểm dừng"* = 5 tệp ⇒ lệnh chạy được, rỗng là rỗng thật).
|
||||
|
||||
🔴 Ô trống này **KHÔNG** đọc thành *"anh chưa từng phàn nàn"* — nó chỉ nghĩa là **chưa ai từng ghi**. Có `PN-001` thì đánh số từ 1.
|
||||
|
||||
---
|
||||
|
||||
## PHỤ LỤC — 🔴 SUY RA, KHÔNG PHẢI NGUYÊN VĂN
|
||||
|
||||
> Mọi thứ dưới đây là **nhãn do đội đặt**, KHÔNG phải chữ anh gõ. **CẤM nâng lên 3 khối trên.** Lý do: 61 tiêu đề `auto-memory` là nhãn-đội — đổ vào sổ là 61 mục trượt đối chiếu ngay lượt đầu (F-04 + lane C §C.5).
|
||||
|
||||
**Bảng `HANDOFF:10-17` — CHƯA nhập, có lý do.** Ngoại-lệ VK-5 (cho phép nhập bảng này vào khối chính) là **vế con của P2 mà anh chưa phán riêng**: anh chốt *"P2 = b"* cho trục REQUEST ⟂ TASK, không nói về VK-5. Theo **bậc 2** của luật 3 bậc vừa ban (*mơ hồ, không phá huỷ → chọn nhánh an toàn + khai*), lead chọn **KHÔNG nhập** và ghi ở đây. Anh gật VK-5 thì nhập sau, một lượt là xong.
|
||||
|
||||
| Nguồn suy ra | Ở đâu | Vì sao chưa nâng lên |
|
||||
|---|---|---|
|
||||
| bảng chờ-anh `HANDOFF:10-17` | `docs/HANDOFF.md` | VK-5 chưa được phán (xem trên) |
|
||||
| 5 câu chờ-anh gói adap | `WAL` + `_context-s-12.md` PAUSE-1 | đã được đáp @S181 — thuộc `owner-decisions`, không phải yêu-cầu mở |
|
||||
| 61 tiêu đề `auto-memory` | `.claude/auto-memory/` | nhãn-đội, không phải lời anh |
|
||||
@ -239,6 +239,19 @@ Co-Authored-By: Claude Opus 4.8 (1M) <noreply@anthropic.com> # <lead model hi
|
||||
|
||||
## 6. Docs
|
||||
|
||||
### 6.0 Sổ yêu-cầu chủ dự án — ghi NGAY, tra TRƯỚC KHI HỎI (W4/S181)
|
||||
|
||||
> Chỗ cắm thứ 2 theo A3 (chỗ thứ 1 = `CLAUDE.md`). 🔴 **CẤM cắm luật này vào `.claude/commands/`** — hub A2 / `phu-luc:252`: lệnh là nơi thi-hành, không phải nơi giữ luật.
|
||||
|
||||
Sổ: [`docs/governance/so-yeu-cau-chu-du-an.md`](governance/so-yeu-cau-chu-du-an.md) — 3 khối `việc-được-giao` · `sở-thích-thường-trực` · `lời-phàn-nàn`.
|
||||
|
||||
1. **Ghi NGAY trong lượt anh nói.** Cột *lời nguyên văn* = đúng chữ anh gõ, cắt theo trần `owner_request_verbatim_char_cap` (`memory-budget.json` — B1, đừng chép số). Cắt thì để `...` + con trỏ tới chỗ đủ; **CẤM tóm tắt thay cho cắt** (tóm tắt là diễn giải, mà cột đó tồn tại chính để **không** diễn giải).
|
||||
2. **Diễn giải có ô riêng** — cột thứ 7 *đội hiểu thành gì*. Trộn 2 cột = mất đúng thứ sổ sinh ra để giữ.
|
||||
3. **Tra sổ TRƯỚC KHI hỏi lại anh.** 🔴 **A5:** hỏi lại **không viện dẫn thông tin mới** = **vi phạm**; hỏi lại **kèm nguồn mới** = kỷ luật đúng.
|
||||
4. **Mã `YC-`/`ST-`/`PN-` vĩnh viễn, cấm tái dụng.** Đóng = **lật trạng thái**, không xoá dòng. *(SE từng đánh số 1..7 tái dụng mỗi phiên ở `HANDOFF:10-17` và trả giá bằng 3 lượt hỏi lại.)*
|
||||
5. 🔴 **Sổ = REQUEST ⟂ WAL = TASK.** Sổ **CẤM** mang cột trạng-thái-thi-công riêng; cần "việc tới đâu" thì **TRỎ** về `.claude/WAL.md`. Luật + lineage canonical → [`.claude/commands/tiep.md` §3-bis](../.claude/commands/tiep.md).
|
||||
6. **Máy dò:** `scripts/nhip-no-probe.ps1` in vế `so-yc treo <n> / nhac2+ <m>`. 🔴 `chua-co-du-lieu` (sổ vắng/rỗng) ⟂ `treo 0` (đã đo, bằng 0) là **hai chuỗi khác nhau** — gộp lại là đèn-xanh-giả.
|
||||
|
||||
### 6.1 Khi nào viết session log
|
||||
|
||||
- Session có commit thay đổi code → PHẢI tạo `docs/changelog/sessions/YYYY-MM-DD-HHMM-{topic}.md`
|
||||
|
||||
19
scripts/naming-baseline.json
Normal file
19
scripts/naming-baseline.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"_what": "NGUON DUY-NHAT cua 7 baseline ky-vong cho scripts/naming-scan.ps1. Owner chot phuong an (b) tach-file-du-lieu @S181 2026-08-07 (cau 6 goi adap 7-GD).",
|
||||
"_rang_buoc": "🔴 File nay la NGUON. naming-scan.ps1 chi DOC. CAM chep so nguoc vao script — chep nguoc = de nguon-doi, dung thu phuong an (b) sinh ra de chan.",
|
||||
"_y_nghia_so": "So ky-vong = MAU SO cho guard A2 (naming-scan.ps1:99). Tap vang mat => phep do khong ton tai, mau so = 0/<ky-vong>. Vi vay khoa THIEU o day KHONG duoc phep am tham thanh 0 — may in co LOUD roi bo qua nhom do.",
|
||||
"_khong_phai_su_that": "Day la KY-VONG, khong phai su-that. Lech => tripwire VANG (ngoai bo dem LECH), y nghia la 'chuan hoac kho da doi, doc lai naming-standard.md'. KHONG phai loi.",
|
||||
"_do_lai": "powershell -ExecutionPolicy Bypass -File scripts/naming-scan.ps1 => doc dong 'mau so: N' cua tung nhom.",
|
||||
"_updated": "2026-08-07",
|
||||
"_updated_boi": "S181 (phien-LOGIC 12) - do tuoi sau khi land W3 + P5/P7i + W4 (so yeu-cau).",
|
||||
"_lich_su_thoi": "S180 va :174 tu 54 -> 55; do lai @S181 cung ngay da la 56. 3/7 khoa thoi trong ~1 ngay. Do la ly do khoa nay co _updated: doc so ma khong biet no cu bao lau thi khong danh gia duoc.",
|
||||
"sets": {
|
||||
"vai": 27,
|
||||
"nhat-ky-vai": 26,
|
||||
"lenh": 19,
|
||||
"kich-ban": 57,
|
||||
"moc-phien": 93,
|
||||
"so-governance": 19,
|
||||
"hook": 1
|
||||
}
|
||||
}
|
||||
@ -59,6 +59,40 @@ $script:Pep8 = 0
|
||||
$script:MissingSets = 0
|
||||
$script:LechList = @()
|
||||
|
||||
# ---------- baseline ky-vong ----------
|
||||
# NGUON DUY-NHAT = scripts/naming-baseline.json (chu du an chot phuong an (b) @S181, cau 6).
|
||||
# (a) Script nay chi DOC. CAM chep so nguoc vao day -- chep nguoc = de nguon-doi,
|
||||
# dung thu ma phuong an (b) sinh ra de chan.
|
||||
# (b) Nap tu $PSScriptRoot, KHONG phai $RepoRoot: fault-inject chay -RepoRoot <cay-tam>
|
||||
# nhung baseline la thuoc tinh cua CHUAN, khong phai cua cay dang quet.
|
||||
# (c) Thieu khoa / hong tep => IN LOUD roi tra $null. CAM tra 0: so 0 se lam mau so
|
||||
# cua guard A2 (:99) thanh "0/0", va "0/0" doc thanh SACH. Do dung la bay
|
||||
# "vang mat trong giong on" ma guard A2 duoc dung len de chan.
|
||||
$script:BaselinePath = Join-Path $PSScriptRoot 'naming-baseline.json'
|
||||
$script:Baseline = $null
|
||||
$script:BaselineUpdated = '(khong ro)'
|
||||
if (Test-Path -LiteralPath $script:BaselinePath) {
|
||||
try {
|
||||
$bj = Get-Content -LiteralPath $script:BaselinePath -Raw | ConvertFrom-Json
|
||||
$script:Baseline = $bj.sets
|
||||
if ($bj._updated) { $script:BaselineUpdated = [string]$bj._updated }
|
||||
} catch {
|
||||
Write-Host ("FLAG BASELINE-HONG: doc duoc '{0}' nhung khong parse duoc JSON: {1}" -f $script:BaselinePath, $_.Exception.Message) -ForegroundColor Red
|
||||
}
|
||||
} else {
|
||||
Write-Host ("FLAG BASELINE-VANG: khong thay '{0}'. Moi nhom se chay KHONG co ky-vong." -f $script:BaselinePath) -ForegroundColor Red
|
||||
}
|
||||
|
||||
function Get-Baseline([string]$Label) {
|
||||
if ($null -eq $script:Baseline) { return $null }
|
||||
$p = $script:Baseline.PSObject.Properties[$Label]
|
||||
if ($null -eq $p) {
|
||||
Write-Host (" FLAG BASELINE-THIEU-KHOA: '{0}' khong co trong naming-baseline.json" -f $Label) -ForegroundColor Red
|
||||
return $null
|
||||
}
|
||||
return [int]$p.Value
|
||||
}
|
||||
|
||||
function Write-Head([string]$t) { Write-Host ''; Write-Host $t -ForegroundColor Cyan }
|
||||
|
||||
function Add-Verdict {
|
||||
@ -84,19 +118,31 @@ function Scan-Set {
|
||||
# 'Item' = ca tep LAN thu muc. Bat buoc cho scripts/ va docs/governance/ vi
|
||||
# tap 231 dem theo don vi "muc" o hai nhom do (bay don-vi: tep != muc).
|
||||
[ValidateSet('File', 'Dir', 'Item')][string]$Kind,
|
||||
[int]$Expect,
|
||||
# -1 = khong truyen tay => tra cuu tu naming-baseline.json theo $Label.
|
||||
# KHONG dat mac dinh 0: xem ghi chu (c) o khoi nap baseline.
|
||||
[int]$Expect = -1,
|
||||
[scriptblock]$Rule,
|
||||
[string]$Filter = '*',
|
||||
[switch]$Recurse
|
||||
)
|
||||
|
||||
if ($Expect -lt 0) {
|
||||
$b = Get-Baseline $Label
|
||||
if ($null -ne $b) { $Expect = $b }
|
||||
}
|
||||
$hasExpect = ($Expect -ge 0)
|
||||
|
||||
$full = Join-Path $RepoRoot $RelPath
|
||||
Write-Head ("--- NHOM: {0} [{1}]" -f $Label, $RelPath)
|
||||
|
||||
if (-not (Test-Path -LiteralPath $full)) {
|
||||
$script:MissingSets++
|
||||
Write-Host (" FLAG THIEU-TAP: khong tim thay '{0}'." -f $RelPath) -ForegroundColor Red
|
||||
Write-Host (" Day KHONG phai [skip]. Tap vang mat => phep do khong ton tai, mau so = 0/{0} ky vong." -f $Expect) -ForegroundColor Red
|
||||
if ($hasExpect) {
|
||||
Write-Host (" Day KHONG phai [skip]. Tap vang mat => phep do khong ton tai, mau so = 0/{0} ky vong." -f $Expect) -ForegroundColor Red
|
||||
} else {
|
||||
Write-Host " Day KHONG phai [skip]. Tap vang mat => phep do khong ton tai, va KHONG CO ky-vong lam mau so (baseline thieu) => CAM doc thanh sach." -ForegroundColor Red
|
||||
}
|
||||
Write-Host " Nguyen nhan thuong gap: thu muc vua bi doi ten => moi may neo vao no cung mu theo."
|
||||
return
|
||||
}
|
||||
@ -127,8 +173,10 @@ function Scan-Set {
|
||||
}
|
||||
|
||||
Write-Host (" mau so: {0} {1}" -f $n, $unit) -NoNewline
|
||||
if ($n -ne $Expect) {
|
||||
Write-Host (" [!] lech ky vong {0} - chuan hoac kho da doi, doc lai naming-standard.md" -f $Expect) -ForegroundColor Yellow
|
||||
if (-not $hasExpect) {
|
||||
Write-Host " [!] KHONG CO ky-vong cho nhom nay trong naming-baseline.json" -ForegroundColor Red
|
||||
} elseif ($n -ne $Expect) {
|
||||
Write-Host (" [!] lech ky vong {0} (do ngay {1}) - chuan hoac kho da doi, doc lai naming-standard.md" -f $Expect, $script:BaselineUpdated) -ForegroundColor Yellow
|
||||
} else { Write-Host '' }
|
||||
|
||||
Write-Host (" OK {0}/{1} | LECH {2}/{1} | MIEN-theo-luat {3}/{1}" -f $lo, $n, $lk, $lm)
|
||||
@ -148,7 +196,7 @@ Write-Host "Chuan : docs/governance/naming-standard.md"
|
||||
Write-Host "Tap do : 231 ten vat-bo-may, 0 mien tru VUNG (khong quet 1.545 tep .md - bay-4)."
|
||||
|
||||
# 1/7 - vai
|
||||
Scan-Set -Label 'vai' -RelPath '.claude/agents' -Kind File -Expect 27 -Filter '*.md' -Rule {
|
||||
Scan-Set -Label 'vai' -RelPath '.claude/agents' -Kind File -Filter '*.md' -Rule {
|
||||
param($f)
|
||||
if ($f.Name -eq 'README.md') { return @('MIEN', 'quy uoc pho quat (luat L4)') }
|
||||
if ($f.BaseName -cmatch $RX_KEBAB) { return @('OK', '') }
|
||||
@ -156,14 +204,14 @@ Scan-Set -Label 'vai' -RelPath '.claude/agents' -Kind File -Expect 27 -Filter '*
|
||||
}
|
||||
|
||||
# 2/7 - thu muc nhat ky vai
|
||||
Scan-Set -Label 'nhat-ky-vai' -RelPath '.claude/agent-memory' -Kind Dir -Expect 26 -Rule {
|
||||
Scan-Set -Label 'nhat-ky-vai' -RelPath '.claude/agent-memory' -Kind Dir -Rule {
|
||||
param($d)
|
||||
if ($d.Name -cmatch $RX_KEBAB) { return @('OK', '') }
|
||||
return @('LECH', 'thu muc nhat ky phai trung ten vai (kebab thuan)')
|
||||
}
|
||||
|
||||
# 3/7 - lenh
|
||||
Scan-Set -Label 'lenh' -RelPath '.claude/commands' -Kind File -Expect 19 -Rule {
|
||||
Scan-Set -Label 'lenh' -RelPath '.claude/commands' -Kind File -Rule {
|
||||
param($f)
|
||||
if ($f.Name -eq 'README.md') { return @('MIEN', 'quy uoc pho quat (luat L4)') }
|
||||
if ($f.BaseName -cmatch $RX_KEBAB) { return @('OK', '') }
|
||||
@ -171,7 +219,7 @@ Scan-Set -Label 'lenh' -RelPath '.claude/commands' -Kind File -Expect 19 -Rule {
|
||||
}
|
||||
|
||||
# 4/7 - kich ban (2 quy uoc ngon ngu, luat L4). Don vi = MUC (co ca thu muc con).
|
||||
Scan-Set -Label 'kich-ban' -RelPath 'scripts' -Kind Item -Expect 55 -Rule {
|
||||
Scan-Set -Label 'kich-ban' -RelPath 'scripts' -Kind Item -Rule {
|
||||
param($f)
|
||||
if ($f.Name -eq 'README.md') { return @('MIEN', 'quy uoc pho quat (luat L4)') }
|
||||
if ($f.Name -eq '__pycache__') { return @('MIEN', 'vat sinh tu dong (luat L4)') }
|
||||
@ -189,7 +237,7 @@ Scan-Set -Label 'kich-ban' -RelPath 'scripts' -Kind Item -Expect 55 -Rule {
|
||||
}
|
||||
|
||||
# 5/7 - tep moc phien. BUOC -Recurse: tep nam trong session-<N>/, khong nam o goc.
|
||||
Scan-Set -Label 'moc-phien' -RelPath '.claude/sessions' -Kind File -Expect 90 -Recurse -Rule {
|
||||
Scan-Set -Label 'moc-phien' -RelPath '.claude/sessions' -Kind File -Recurse -Rule {
|
||||
param($f)
|
||||
if ($f.Name -cmatch $RX_SESSFAM) { return @('OK', '') }
|
||||
if ($f.Name -cmatch '^pause-') {
|
||||
@ -202,7 +250,7 @@ Scan-Set -Label 'moc-phien' -RelPath '.claude/sessions' -Kind File -Expect 90 -R
|
||||
}
|
||||
|
||||
# 6/7 - so. Don vi = MUC (co ca thu muc con adap-reports/ adap-requests/).
|
||||
Scan-Set -Label 'so-governance' -RelPath 'docs/governance' -Kind Item -Expect 16 -Rule {
|
||||
Scan-Set -Label 'so-governance' -RelPath 'docs/governance' -Kind Item -Rule {
|
||||
param($f)
|
||||
if ($f.Name -eq 'README.md') { return @('MIEN', 'quy uoc pho quat (luat L4)') }
|
||||
if ($f.BaseName -cmatch $RX_KEBAB) { return @('OK', '') }
|
||||
@ -210,7 +258,7 @@ Scan-Set -Label 'so-governance' -RelPath 'docs/governance' -Kind Item -Expect 16
|
||||
}
|
||||
|
||||
# 7/7 - hook
|
||||
Scan-Set -Label 'hook' -RelPath '.claude/hooks' -Kind File -Expect 1 -Rule {
|
||||
Scan-Set -Label 'hook' -RelPath '.claude/hooks' -Kind File -Rule {
|
||||
param($f)
|
||||
if ($f.BaseName -cmatch $RX_KEBAB) { return @('OK', '') }
|
||||
return @('LECH', 'hook phai kebab')
|
||||
|
||||
@ -220,7 +220,47 @@ try {
|
||||
$pullSeg = 'pull-cach n-a'
|
||||
}
|
||||
|
||||
Write-Host ("NHIP-NO: kiem {0} | {1} | {2} | {3}" -f $kiemSeg, $tranSeg, $runSeg, $pullSeg)
|
||||
# -----------------------------------------------------------------------
|
||||
# (5) SO YEU-CAU CHU DU AN (C4-06 / W4, S181) - hai ve: dang-treo + nhac-tu-lan-2.
|
||||
#
|
||||
# (!) PHAN BIET HAI THU KHAC NHAU, in HAI CHUOI KHAC NHAU:
|
||||
# 'chua-co-du-lieu' = so vang / khong doc duoc / 0 dong YC -> phep do KHONG TON TAI
|
||||
# 'treo 0 / nhac2+ 0' = da doc duoc n dong, dem ra bang 0 -> phep do CO, ket qua 0
|
||||
# Gop hai cai nay lam mot chinh la 'den xanh gia' ma hub goi ten (A4).
|
||||
# (!) Dong khong tach duoc cot thi DEM RIENG va IN RA, khong bo im lang
|
||||
# (loi cam 4c 'liet-khong-co' / '[skip] im lang').
|
||||
# (!) Cot trang thai mang chu co DAU ('mo' co dau moc). File nay BAT BUOC pure-ASCII
|
||||
# (gotcha #30) nen dung CODE-POINT, khong go chu co dau vao day.
|
||||
$ycSeg = 'so-yc chua-co-du-lieu'
|
||||
try {
|
||||
$ycPath = Join-Path $RepoRoot 'docs/governance/so-yeu-cau-chu-du-an.md'
|
||||
if (Test-Path -LiteralPath $ycPath) {
|
||||
# -Encoding UTF8 BAT BUOC: PS 5.1 mac dinh doc theo codepage ANSI, so do
|
||||
# chu co dau trong cot trang thai bi bien dang TRUOC khi so sanh => dem ra 0
|
||||
# trong khi so co dong MO that. Da xay ra that o lan cam dau tien (S181).
|
||||
$ycLines = Get-Content -LiteralPath $ycPath -Encoding UTF8
|
||||
$OPEN = 'm' + [char]0x1EDF # "mo" voi dau moc = trang thai MO cua yeu-cau
|
||||
$tot = 0; $treo = 0; $nhac2 = 0; $bad = 0
|
||||
foreach ($L in $ycLines) {
|
||||
if ($L -notmatch '^\|\s*`YC-\d+`') { continue }
|
||||
$tot++
|
||||
$c = $L -split '\|'
|
||||
if ($c.Count -lt 8) { $bad++; continue }
|
||||
if ($c[4].Trim() -eq $OPEN) { $treo++ }
|
||||
$m = [regex]::Match($c[5], '\d+')
|
||||
if ($m.Success -and [int]$m.Value -ge 2) { $nhac2++ }
|
||||
}
|
||||
if ($tot -gt 0) {
|
||||
$ycSeg = ("so-yc treo {0} / nhac2+ {1}" -f $treo, $nhac2)
|
||||
if ($bad -gt 0) { $ycSeg += (" / {0} dong KHONG TACH DUOC COT" -f $bad) }
|
||||
}
|
||||
}
|
||||
}
|
||||
catch {
|
||||
$ycSeg = 'so-yc chua-co-du-lieu'
|
||||
}
|
||||
|
||||
Write-Host ("NHIP-NO: kiem {0} | {1} | {2} | {3} | {4}" -f $kiemSeg, $tranSeg, $runSeg, $pullSeg, $ycSeg)
|
||||
}
|
||||
catch {
|
||||
# A probe NEVER blocks a stop point. Any failure prints one generic line.
|
||||
|
||||
Reference in New Issue
Block a user