[CLAUDE] Docs: closeout OUTWARD wave adap đợt-9/10 + vá drift skill-matrix H24
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m43s

Closeout 4 mục OUTWARD của wave S141-S142 (anh gật @S143):
- adap-report 7/7 thư, đủ 5 trường REPORT-FORMAT LOCK, evidence đo thật
- email hub báo-nấc (sha 6c94873f72e0, selftest_verify exit 0, log _index cùng lượt)
- STAGE-2: 7 thư -> inbox/ai_infra/, _index 0 pending, cross-check 7/7
- squash K=8 wal: -> commit chốt

Ngoài wave: agents/README skill-matrix thiếu 2 row H24 (drift S121) -> 15/17 thành 17/17.

Nấc cao nhất khai được = executed-file/verified-pending-restart (trio CHƯA spawn).
2 phát hiện khai thẳng theo G-015 (chi tiết trong report + email):
- whitelist `tools:` KHÔNG chặn ghi ở runtime: 6 vai read-only bị append Write+Edit
- pull-lag do "watch broadcasts/inbox" canh nhầm chỗ

TICK H24: counter 16->17 (S143), 3-điều-kiện OK-reachable, không fail-loud.
Detector TOTAL 46 == baseline 46, 0 flag mới.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-22 12:32:27 +07:00
parent b146e2bb4b
commit 2757e418a1
56 changed files with 2318 additions and 58 deletions

View File

@ -19,7 +19,7 @@
**Carry MỞ re-stamp (9):** (1) carry-age design-question `[carry:carry-age-vacuous]` (2) **hook-cap 17.1K — S133 bắn ×2 MỚI: inv-cb 19.7KB + reviewer 20.4KB, đều DƯỚI cap anh 25.6K/30.7K ⇒ em KHÔNG tự nén (S122), chờ anh chốt hướng** `[carry:hook-vs-budget-cap]` (3) UAT S117 incognito `[carry:uat-s117]` (4) PE phân-quyền số-phiếu+user `[carry:pe-phanquyen]` (5) BVAAU `[carry:bvaau]` (6) quyết-định Bình/Lê `[carry:binh-le-decision]` (7) Trà/Bùi re-login `[carry:tra-bui-relogin]` (8) account trùng `[carry:account-trung]` (9) 🆕 **UAT freeze-NS S133** `[carry:uat-s133-budget-freeze]`.
**🔴 NEXT anh:** (1) 🆕 **UAT script freeze-NS cho anh Kiệt (3 bước, incognito #77):** (a) mở phiếu **ĐÃ DUYỆT** → thấy badge **🔒 "Ngân sách chốt tại thời điểm duyệt"**, bảng TỔNG HỢP NGÂN SÁCH **giữ nguyên số** sau khi PRO/CCM cập nhật NS gói thầu (từ phiếu khác cùng gói); (b) phiếu **CHƯA duyệt** cùng gói → thấy số **MỚI** ("ngân sách cập nhật gần nhất"); (c) thử sửa "NS kỳ này (CCM)" / "Điều chỉnh ngân sách" trên phiếu đã duyệt → lỗi **"Phiếu đã kết thúc — ngân sách đã chốt tại thời điểm duyệt, không sửa được nữa."** (chặn cả Admin) `[carry:uat-s133-budget-freeze]`; (2) 🟡 **hook-cap bắn ×2 phiên S133** (inv-cb 19.7K · reviewer 20.4K — dưới cap, em không tự nén) — anh chốt hướng `[carry:hook-vs-budget-cap]`; (3) 2 đề-xuất S131 CHỜ GẬT (wire tick H24 vào `/tiep` + light-run owner-triggered); (4) CHỜ HUB reply-batch (i)/seal-verify/do-token/closure-cadence — khi land em `/check-email` verify hash + áp canonical.
**NEXT em (phiên kế):** watch `broadcasts/inbox`; spawn-probe reviewer Measured-label gate `reviewer.md:46` runtime-active (post-restart, H1 #3); monthly combined audit 2026-08-01; session-end khi anh gõ (squash `wal:` local trước push — 4 commit local đang chờ).
**Prev S131+S132:** 2026-07-17 (S131+S132 — **session-end S131 = phiên ĐẦU mở đúng nghi-thức §L.b sau 3 closeout S128-S130 chạy tắt (→ E-011 + AS-15 NEW error-ledger); S131 chết session-limit giữa chừng (2 monitor die), S132 `/tiep` nối verify-5/5 → đóng TRỌN.** S131: 2 email hub stamped selftest-MATCH (**3-gap vận-hành** `e46863c8`: GAP-1 counter H24 không tick trên mạch pause→`/tiep` — dưới-đếm ~37%/8-nhãn · GAP-2 3-closeout không spawn H1/H2 dù "KHÔNG skip" · GAP-3 diary 2 vai H24 không tồn-tại sau first-run S124, per-RUN gate mù per-ROLE; + **direction `closure-cadence`** `641bf8ca` ĐANG BÀN chưa chốt) + adap-report H24 §6 UPDATE + tick 6→7 ancestor-REACHABLE + reviewer-gate ×2 outward PASS_WITH_FIXES. S132: spawn DỒN H1+H2 phủ S127→S131 — **H2 GAPS→CLOSED-in-session** (0-orphan/31 run.md · seed 2 diary H24 retro-harvest từ `sub-lead-{view,omission}.md` 8379B/9967B · rmdir stray S119 · S130 solo-0-spawn = không nợ) · **H1 DRIFT-FOUND 1 thật FIXED cùng phiên** (`rag-onboarding-guide:118/:134` `contextual_retrieval: true` + "+15% recall" vô-căn-cứ sau owner-final `f5ce2778` → false + reword; roster 14/14 khớp 4-nguồn; plugin 0-delta) · (h) marks n-a · (i) spot-check 3/3 (sha 2 email re-compute MATCH + tick ancestor) · **(j) counter=7 · light 4/6 · deep 4/15 · OVERDUE none**.)
**Prev S131+S132:** 2026-07-17 (S131+S132 — **session-end S131 = phiên ĐẦU mở đúng nghi-thức §L.b sau 3 closeout S128-S130 chạy tắt (→ E-011 + AS-15 NEW error-ledger); S131 chết session-limit giữa chừng (2 monitor die), S132 `/tiep` nối verify-5/5 → đóng TRỌN.** S131: 2 email hub stamped selftest-MATCH (**3-gap vận-hành** `e46863c8`: GAP-1 counter H24 không tick trên mạch pause→`/tiep` — dưới-đếm ~37%/8-nhãn · GAP-2 3-closeout không spawn H1/H2 dù "KHÔNG skip" · GAP-3 diary 2 vai H24 không tồn-tại sau first-run S124, per-RUN gate mù per-ROLE; + **direction `closure-cadence`** `641bf8ca` ĐANG BÀN chưa chốt) + adap-report H24 §6 UPDATE + tick 6→7 ancestor-REACHABLE + reviewer-gate ×2 outward PASS_WITH_FIXES. S132: spawn DỒN H1+H2 phủ S127→S131 — **H2 GAPS→CLOSED-in-session** (0-orphan/31 run.md · seed 2 diary H24 retro-harvest từ `sub-lead-{view,omission}.md` 8379B/9967B · rmdir stray S119 · S130 solo-0-spawn = không nợ) · **H1 DRIFT-FOUND 1 thật FIXED cùng phiên** (`rag-onboarding-guide:118/:134` `contextual_retrieval: true` + "+15% recall" vô-căn-cứ sau owner-final `f5ce2778` → false + reword; roster khớp 4-nguồn (N=14 khi đó); plugin 0-delta) · (h) marks n-a · (i) spot-check 3/3 (sha 2 email re-compute MATCH + tick ancestor) · **(j) counter=7 · light 4/6 · deep 4/15 · OVERDUE none**.)
**Carry MỞ re-stamp (8):** (1) carry-age design-question còn treo (vacuous-GỐC đã hết @S130 nhờ tách dòng — anh xem đóng?) `[carry:carry-age-vacuous]` (2) hook-cap 17.1K — reviewer ĐÃ curate 20.3→16.8KB @S128; cụm D6 còn inv-cb/frontend-designer/cicd/test-spec trên-target `[carry:hook-vs-budget-cap]` (3) UAT S117 incognito `[carry:uat-s117]` (4) PE phân-quyền số-phiếu+user `[carry:pe-phanquyen]` (5) BVAAU `[carry:bvaau]` (6) quyết-định Bình/Lê `[carry:binh-le-decision]` (7) Trà/Bùi re-login `[carry:tra-bui-relogin]` (8) account trùng `[carry:account-trung]`.
**🔴 NEXT anh:** (1) 2 đề-xuất S131 CHỜ GẬT: wire tick H24 vào `/tiep` (+tick-at-close idempotent) + H24 light-run owner-triggered ngay (thay vì chờ counter 9); (2) CHỜ HUB: reply-batch mục (i) `_owner_ratified` + (iii) seal-verify + do-token errata + phản-hồi closure-cadence/3-gap — khi land, em `/check-email` verify hash + áp canonical + re-sync F10 `session-start.md:206`; (3) carry (1) carry-age — bằng-chứng S130 (detector 7/52) đủ đóng chưa?
**NEXT em (phiên kế):** watch `broadcasts/inbox`; spawn-probe reviewer xác-nhận Measured-label gate `reviewer.md:46` runtime-active (post-restart, H1 đề-xuất #3); monthly combined audit 2026-08-01; đọc verdict cicd nếu CI chạy cho commit chốt S131-S132.
@ -51,7 +51,7 @@ do-token 26075→**70892** (folded-chunk vs whole-file)
bon-vong "AHEAD"→**n=0**
h17 verified→**agreed**
+R5-dropped
E-2 single-probe caveat. **Owner 4-decision APPLIED (override reviewer "KHÔNG apply"):** 14/14 frontmatter `inherit``opus`+`effort:max` (worker-tier-pin; hmw.js 7-spot + session-start/fable-clone/README/ultra-on sync)
E-2 single-probe caveat. **Owner 4-decision APPLIED (override reviewer "KHÔNG apply"):** TOÀN-ROSTER frontmatter (N=14 khi đó) `inherit``opus`+`effort:max` (worker-tier-pin; hmw.js 7-spot + session-start/fable-clone/README/ultra-on sync)
giữ H24 counter
do-token cap-GIỮ (STATUS **70.892 tok** = CẬN-TRÊN heuristic — S125 relabel/27% budget = cận-trên)
relocate memory→`.claude/auto-memory`. **H24 2-vai FIRST-EVER run 0-garble giá-trị THẬT:** view 9-flag (doc-sync vá)
@ -73,7 +73,7 @@ viết "7/7 PASS" **TRƯỚC khi chạy**
dạng-4 orphan = **kẽ CÒN LẠI**, để người phán.
🔴 **RE-STAMP @S123 (nghi-thức `§L.b(j)(iv)`):** 8 carry anh + 3 carry em **đóng dấu LẠI** ở segment này — không re-stamp ⇒ streak ≡ 1 ⇒ **0 fire vĩnh-viễn**. *(🔸 `s119-wave` KHÔNG re-stamp = **đã đóng** — cố-ý bỏ tag khi đóng, giữ tag trên carry đã đóng ⇒ detector tưởng nó đang già đi ⇒ dương-giả.)* → log `2026-07-15-S123-citation-trap-dual-accept.md`)
**Prev S122** (S122 — **Wave adap 6 broadcast AI_INFRA: W0→W6 ĐÓNG TRỌN. Governance-only: 0 prod-code, 0 mig, 0 FE; test 509 GIỮ.** Chain `4727d16..2f068c5`, **4 push**, K=0, tree clean. Lead Opus 4.8 = **owner-choice, KHÔNG outage**.
**Spawn-probe 14/14 SỐNG** (0 error/0 garble)roster→14 chứng runtime; 🔸 phủ **Agent-tool registry** THÔI, đường `hmw.js→agentType` CHƯA phủ.
**Spawn-probe toàn-roster SỐNG** (0 error/0 garble — **N=14 tại thời-điểm S122**) — chứng runtime; 🔸 phủ **Agent-tool registry** THÔI, đường `hmw.js→agentType` CHƯA phủ.
🔴 **W3.0 `22ea8c5` LẬT TIỀN-ĐỀ: 0/7 orphan là việc mất — 7/7 ĐÃ XONG, chỉ ghi synthesis SAI CHỖ.** Gốc: **orphan-authority đo TÊN FILE, không đo NỘI DUNG****8 dương-giả/25 run = 32%**; folder **ghi-chép ĐẦY-ĐỦ NHẤT** (cicd PASS+bundle-hash+smoke 200) **vẫn** bị xếp orphan ⇒ **TRI-ACCEPT** (**nhận ≠ cho phép**; dạng-4 = **kẽ CÒN LẠI**); dual-orphan **8→2**.
**W3 9 file** `dfa3dae`+`53765b0` (WAL kế-hoạch **5** — lead rớt 3 file, `gap-workstate-drop` điển-hình).
**W4** `a09dcae` positive-control **5 FLAG→0**, TOTAL **50→45** tụt **đúng 5**, **0 flag mới** — TOTAL 50 **khớp chính-xác dự-báo W2**.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,29 @@
# adap-report — 2026-07-17-Governance-chuan-hoa-stamp-decode
> SE (SOLUTION_ERP) · wave adap đợt-9/10 (S141S142) · run vòng-2 `.claude/workflows/runs/2026-07-22-S142-adap-9-10-vong-2/` lane W-B (hạng mục B5).
## 1. id-broadcast
`2026-07-17-Governance-chuan-hoa-stamp-decode` (type **update**; `content_sha256` `6239dd403792…`, re-verify tươi `stamp_verify.py` **exit 0** @S143).
## 2. nấc G-011
**executed** — cả (A) đầu-đọc khoan-dung 3 dạng lẫn (B) đọc byte-safe đã nằm trong repo và **đã chạy thật 7/7** trên chính bộ thư đợt này.
## 3. evidence (đo thật)
- **(A) Đầu-đọc khoan-dung** (commit `1a0fa59`): `.claude/commands/check-email.md` **9 dòng** (bước 4b) + `.claude/commands/send-email.md` **4 dòng** (6c) — pin mẫu rút declared `content_sha256:\s*"?([0-9a-fA-F]{8,64})"?`, nhận cả 3 dạng (có-ngoặc · không-ngoặc · rút-gọn ≥8-hex). Grep `{8,64}` hiện ở **CẢ 2** command.
- **🔴 CẤM quote-strict** ghi thẳng vào cả 2 file: mẫu `([0-9a-fA-F]+)` sẽ whiff hash-có-ngoặc → **false-tamper**. Đây không phải lo xa — S141 **suýt cắm cờ giả-mạo oan 3/3**.
- **Port script** (commit `1a0fa59`): `scripts/stamp_verify.py` **55 dòng**, mirror verbatim từ `AI_INFRA/scripts/stamp_verify.py`, có header-note *"mirror-of AI_INFRA — re-pull khi hub đổi §N canon"*. Cả 2 command ƯU TIÊN gọi script, regex-pin làm đường lui.
- **Verify 3-dạng** (spec [n7]): thư quoted thật `6239dd40` **exit 0** + 2 file synthetic tạm (frontmatter hash **không-ngoặc** · hash **rút-gọn 8-hex**) đều verify OK rồi xoá.
- **Re-đo tươi @S143 — 7/7:** chạy `python scripts/stamp_verify.py` trên **toàn bộ 7 thư** đợt-9/10 ⇒ **exit 0 cả 7**, gồm 2 thư hash không-ngoặc (`9cd1a486`, `58e28bae`) và 5 thư hash có-ngoặc. Đây là bằng-chứng khoan-dung ăn thật, không phải happy-path 1 mẫu.
## 4. tailored-gì + skip-gì-vì-sao
- **Tailored:** hub mô-tả nguyên-tắc "ghi MỘT cách · đọc BA cách"; SE hiện-thực bằng **2 tầng**: script `stamp_verify.py` (chính) + regex-pin trong command (đường lui khi python vắng). Giữ đúng function-floor, thêm tầng dự-phòng cho môi-trường Windows/PowerShell của SE.
- **Tailored (B) byte-safe:** hub ghim "đọc bytes rồi giải UTF-8" để né bug shell 5.1 giải UTF-8-không-BOM thành ANSI (E-010 của SE, đã có sẵn trong error-ledger). SE áp đúng — **và phát hiện nó đẻ ra lỗi kế tiếp**, xem §5.
- **Skip:** 0 điểm sàn nào skip.
## 5. honest-caveat
- 🔴 **§M — phản-hồi ngược lên hub: cách đọc byte-safe hub ghim VẪN HỎNG ở bước sau, SE đã vấp thật.** `[Text.Encoding]::UTF8.GetString([IO.File]::ReadAllBytes($p))` né đúng bug ANSI — **nhưng KHÔNG nuốt BOM**: `U+FEFF` sống sót đầu chuỗi ⇒ `ConvertFrom-Json` **chết** ⇒ detector cắm cờ `counter-unparseable` trên một file JSON **hoàn toàn hợp-lệ**. Tức là vá failure-mode A (chữ hỏng → hash sai) **mở ra failure-mode B** (BOM sống → parse chết), và triệu-chứng của B *trông giống* "detector có răng" nên rất dễ ship một **dương-giả**.
**Fix SE đang dùng:** `.TrimStart([char]0xFEFF)` — viết bằng code-point để `.ps1` giữ thuần ASCII (gotcha #30 của SE).
**Đề-xuất KHUNG:** nếu hub giữ khuyến-nghị byte-safe, nên ghim **kèm bước strip BOM**, vì mọi dự-án đọc file JSON/YAML sau đó đều sẽ vấp đúng chỗ này.
*(Bằng-chứng: bắt được là nhờ fault-inject chứ không phải happy-path — chạy happy-path sẽ thấy "có flag = có răng" và ship luôn.)*
- **`stamp_verify.py` là bản mirror**, không phải nguồn: hub đổi §N canon mà SE quên re-pull thì 2 bên lệch **im lặng** — hiện **không có máy nào canh drift** giữa 2 bản, chỉ có header-note nhắc người.
- **Unpushed lúc ghi.**

View File

@ -0,0 +1,27 @@
# adap-report — 2026-07-17-Governance-khung-nhip-dinh-chinh-wording-tick-annex-phep-8
> SE (SOLUTION_ERP) · wave adap đợt-9/10 (S141S142) · lane W-A (A5(ii) annex) + lane W-B (B1 `_tick_invariant_note`).
> ⚠️ Bản này **supersedes scope-HẸP** `2026-07-17-Governance-khung-nhip-nam-vong-do-rai-lam-don` (`3daf5ee4…`) — CHỈ sửa wording khoản "tick đa-điểm-vào" + ô SELF-CHECK, cộng annex + design-note. **Không rule nào đổi** ⇒ SE **không** adopt lại bản khung từ đầu (đúng chỉ-dẫn `re-verify` của thư).
## 1. id-broadcast
`2026-07-17-Governance-khung-nhip-dinh-chinh-wording-tick-annex-phep-8` (type **update**; `content_sha256` `dede7ec56ccc…`, re-verify tươi `stamp_verify.py` **exit 0** @S143).
## 2. nấc G-011
**executed-doc / verified-pending-first-real-closeout-gộp** — wording bất-biến đếm + annex baseline đã nằm trong file; nhưng annex CHỈ phát huy tác dụng khi gặp **closeout-gộp thật sinh SAU mốc**, ca đó **chưa xảy ra** kể từ khi land.
## 3. evidence (đo thật)
- **Annex phép-8** (commit `1a0fa59`): `.claude/commands/session-end.md` **14 dòng** — thêm 1 dòng tại `§L.b(j)(vi)`: baseline-ghi-bù khai-1-lần, cơ-chế force-fire bù closeout-gộp **tồn tại từ 2026-07-17** (`da349fc`, S135, re-đo 19:12:41+07); phép-8 **CHỈ tính FAIL** cho closeout **sinh SAU** mốc, closeout trước = baseline hợp-lệ ghi `n/a`, **KHÔNG đếm FAIL**; không lặp mỗi lần chạy. Grep `da349fc` = **1 hit** (đúng: khai-1-lần, không rải).
- **Bất-biến đếm** (commit `a458102`): `.claude/governance/.session-counter.json` `_tick_invariant_note` chép **verbatim** invariant hub (`dede7ec5` Δ-1): *mỗi LẦN-CHỐT +1; một cặp dừngnối tăng ĐÚNG +1, không +2, không +0*.
- **Form SE khai tường-minh trong chính note đó:** SE dùng `tick-at-entry-gate idempotent-per-label` (hub Δ-2 recovery-gate +1 = **permitted form**) ⇒ NET **+1/nhãn-phiên** ≡ hub +1/cặp **trên cặp ĐÃ-ĐÓNG**; cặp đang-MỞ transient **+0** cho tới khi cổng-vào kế fire (hub bless `9a35405b` khối-1). Grep `transient` = **1 hit**.
- **Đo thật cơ-chế OR-guard @S143 (cặp `/pause` S142 → `/tiep` S143 = 1 cặp dừngnối):** `/pause` S142 tick **15→16**; `/tiep` S143 tick **16→17**. ⇒ toàn cặp **+1 mỗi lần-chốt**, và vì `/pause` **dời HEAD** (commit `1a0fa59`) nên nếu thiếu session-clause thì đây **đúng là ca +2** mà bản đính-chính cảnh báo. Guard sống-còn = **label-convention** (`/tiep` bắt buộc nhãn MỚI `S143`, cấm reuse `S142`) — nếu reuse, OR-guard NO-OP nhầm ngay cổng vào và thành **+0**.
- **Design-note log-BOUNDED** đã chép: `history[]` append-unbounded **BY DESIGN***vắng dấu = chưa từng xảy ra* (ngữ-nghĩa an-toàn); nếu sau này thêm cap FIFO thì **BẮT BUỘC** xử eviction tường-minh (vắng-vì-bị-đẩy ≠ vắng-vì-chưa-xảy-ra).
## 4. tailored-gì + skip-gì-vì-sao
- **Tailored:** hub pin MỘT quy-tắc đếm cho mọi dự-án; SE **không** chế cách đếm riêng — chỉ khai **form** của mình (tick-at-entry-gate) và **chứng minh tương-đương** trên cặp đã-đóng, kèm khai thẳng ca transient +0 của cặp đang-mở. Ranh cửa-đếm ⟂ cửa-hiện-nợ giữ nguyên: counter tick ở cổng vào, dòng-nợ in **sau** tick (`nhip-no-probe.ps1`).
- **Skip:** không adopt lại bản khung gốc `3daf5ee4` (thư này khai `re-verify` scope-hẹp) — adopt lại = làm thừa và rủi ro đảo ngược rule đang đúng.
## 5. honest-caveat
- 🔴 **Annex chưa từng được kích-hoạt.** Nó chỉ có nghĩa khi có closeout-gộp **sinh sau** mốc `da349fc`; từ lúc land tới nay **chưa gặp ca nào** ⇒ nấc dừng ở `verified-pending-first-real-closeout-gộp`. Chưa ai được nói annex "đã chứng minh hiệu-quả".
- 🔴 **Bất-biến +1 dựa vào một luật mà MÁY KHÔNG CANH.** Toàn bộ tính đúng-đắn treo vào label-convention (`/tiep` phải dùng nhãn mới). Hiện **không có detector nào** bắt được ca reuse nhãn — nếu lead lỡ reuse, hệ-quả là **+0 im lặng**, và counter sẽ dưới-đếm mà dòng-nợ vẫn trông bình thường. Đây là rủi-ro **cùng class** với GAP-1 mà hub từng nêu (dưới-đếm ~37%/8-nhãn).
- **Con-số cadence 6/15/3 của SE = điểm khởi-đầu owner CỐ Ý chọn**, không phải chép vô-thức; nhưng hub đã **gỡ counter** phía mình (bookend 07-15) ⇒ **không còn mốc hub để so**, và delta hub hứa từ run-2 **sẽ không bao giờ có**. ⇒ **chưa ai được bán câu "đã chứng minh hiệu-quả"** cho bộ số này.
- **Unpushed lúc ghi.**

View File

@ -0,0 +1,35 @@
# adap-report — 2026-07-17-Governance-session-model-phien-logic-manifest
> SE (SOLUTION_ERP) · wave adap đợt-9/10 (S141S142) · lane W-B hạng mục B6. 🔴 **Wave này CỐ Ý KHÔNG wire** — chỉ sửa draft prereq-stale.
## 1. id-broadcast
`2026-07-17-Governance-session-model-phien-logic-manifest` (type **new**; `content_sha256` `101e69d61675…`, re-verify tươi `stamp_verify.py` **exit 0** @S143).
## 2. nấc G-011
**agreed** — SE đã quyết áp về hướng, nhưng **CHƯA chạm cơ-chế**. Thứ duy nhất chạm file trong wave này là **sửa draft prereq bị stale**, không phải wire. Wire bị chặn bởi owner-gate (xem §4) ⇒ **không được đọc thành executed**.
## 3. evidence (đo thật)
- **Draft prereq flip** (commit `1a0fa59`): `docs/governance/session-model-se-draft.md` **11 dòng** — §4 prereq (a) "mẫu-áp-dụng hub" → **✅ ĐÃ VỀ 2026-07-18** (`101e69d6` kit+manifest) · (b) "khuôn bộ-ba SUB" → **✅ ĐÃ VỀ 2026-07-18** (`58e28bae` khối B). Grep `ĐÃ VỀ` = **2 hit**, cite sha = **2**.
- **0 wire — đo chứ không khai suông:** ngoài chính file draft, **không file cơ-chế nào** của SE đổi theo manifest trong wave (không `.gitignore`, không đổi khuôn tên `runs/`, không thêm `session_ctx_kb`).
- **Đối chiếu 4 khoản máy-kiểm-được của manifest vs trạng-thái SE (đo tươi @S143):**
| # | Khoản | SE hiện tại | Nấc |
|---|---|---|---|
| 1 | Thư-mục phiên KHÔNG bị `.gitignore` nuốt | `.claude/workflows/runs/` **git-tracked thật** (H22 FLIP run-trace; wave này commit 8 file run) | ✅ đạt sẵn |
| 2 | Cặp lệnh tạm-dừng/nối-lại + sổ ghi-trước có mặt **TRƯỚC** | `/pause` + `/tiep` + `.claude/WAL.md` — có từ **H22**, và vừa chạy thật cặp S142→S143 | ✅ đạt sẵn, **trước** broadcast |
| 3 | Khoá trần ngân-sách context-phiên (`session_ctx_kb`) | **CHƯA CÓ** — Q4 van-ngưỡng hub **cố ý bỏ counter**, chưa trả lời | ❌ treo |
| 4 | Format-pin tên thư-mục theo ID phiên-LOGIC | SE dùng `runs/<date>-S<nn>-<slug>/`; hub dùng `sessions/session-<N>` | ⚠️ **K4 form-conflict** |
- **3 điểm vênh đã ghi thẳng vào draft** (không giấu): K4-form-conflict (khuôn tên) · `session_ctx_kb` chưa có · meld-forward-gap (Stop-hook SE phủ **3 path**, manifest giả định **4**).
## 4. tailored-gì + skip-gì-vì-sao
- **Skip wire — có 3 điều-kiện, mới đủ 2:** (a) hub phát mẫu ✅ · (b) khuôn bộ-ba SUB ✅ · **(c) owner duyệt bảng VC-1/2/3 ❌ CHƯA**. Carry `[carry:session-model-adopt]` ghi rõ **CẤM wire trước đủ 3**. ⇒ skip là **kỷ-luật cổng-duyệt**, không phải behind.
- **Tailored (dự kiến, chưa áp):** khoản 2 SE **đã đạt trước** broadcast bằng bộ `/pause`+`/tiep`+WAL — khi wire sẽ **giữ nguyên bộ này**, không dựng cơ-chế song song. Khoản 4 dự kiến giữ khuôn `S<nn>` của SE và **khai form-deviation** thay vì đổi sang `session-<N>` (đổi khuôn tên = rewrite tham-chiếu lịch-sử trong toàn bộ run-folder + docs, giá cao hơn lợi).
- **Skip:** khoản 3 không tự đặt số — van-ngưỡng là **quyền owner/hub**, SE bịa số vào sẽ thành một "con số không ai chịu trách nhiệm".
## 5. honest-caveat
- 🔴 **Nền bằng-chứng của manifest là n=2 (hub tự khai).** Hai phiên-logic sạch + owner hub chấm 10/10, cộng **một** phép đo fidelity-sau-nối-lại. SE **không** thừa-hưởng con số đó làm bảo-chứng cho môi-trường mình — nhất là khi SE có sẵn cơ-chế cạnh-tranh (H22) đã chạy nhiều chu-kỳ hơn.
- 🔴 **Rủi ro nếu wire ẩu:** SE đang có **2 hệ nhãn** — nhãn-phiên `S<nn>` (đang neo counter H24, label-convention là guard sống-còn) và nhãn phiên-LOGIC của manifest. Wire mà không chốt map `N ↔ L<mm>` trước sẽ **trộn 2 đồng-hồ**, đúng lỗi mà SE vừa cố tránh khi từ chối thêm cadence-key cho trio.
- **`session-start.md §2.1.9(h)` hiện map TẠM** "phiên-LOGIC" = nhãn `S<nn>` của SE, kèm caveat B1. Đây là **chỗ nối tạm**, sẽ phải đọc lại nếu adopt thật.
- **5 câu hỏi SE gửi hub vẫn treo** (`session_ctx_kb`=64? · map N↔L + folder-form · VC từng dòng · hook 4-path? · prereq unblock) — email `b9ef5ede` chưa có reply.
- **Unpushed lúc ghi.**

View File

@ -0,0 +1,27 @@
# adap-report — 2026-07-17-ai_infra-to-se-reply-adap-wave-carveout-dp2
> SE (SOLUTION_ERP) · wave adap đợt-9/10 (S141S142) · run vòng-2 `.claude/workflows/runs/2026-07-22-S142-adap-9-10-vong-2/` lane W-B.
## 1. id-broadcast
`2026-07-17-ai_infra-to-se-reply-adap-wave-carveout-dp2` (type **reply**; `content_sha256` `9a35405b6433…`, re-verify tươi `stamp_verify.py` **exit 0** @S143).
## 2. nấc G-011
**executed** cho khoản (2) carve-out ô3 + khoản (5) annex-dùng-chung + khoản (1)/(4) ACK — đã chạm file, và carve-out có **bằng-chứng-sống** trong repo. Khoản (3) DP-2 = **n-a có chủ đích** (SE chọn form khác, xem §4). Khoản (6) pointer = đã tiêu-thụ (2 việc trỏ tới đều adopt trong chính wave này).
## 3. evidence (đo thật)
- **Carve-out ô3** (commit `1a0fa59`): `docs/governance/error-ledger.md` **+20 dòng** khối Active-Guards. Nội dung ghi rõ **2 lưới đích danh** phải CÙNG sống thì nấc mới VALID: (a) `scripts/nhip-no-probe.ps1` in dòng-nợ ở **mọi** điểm dừng · (b) detector H25-closeout-ritual wired. **1 lưới chết → RE-EVAL nấc, tụt về chạy-vô-điều-kiện.** Basis cite `9a35405b` khối-2. Grep `carve-out` trong error-ledger = **5 hit**.
- **Bằng-chứng-sống của carve-out (hub yêu cầu, SE có thật):** chuỗi S139→S140 — force-fire OVERDUE(light) 8/6 → owner gật → cặp H24 chạy → về 0/6. Nghi-thức đề-xuất-chạy KHÔNG nuốt mất nợ.
- **2 lưới re-đo tươi @S143 (cả hai CÒN SỐNG):** `nhip-no-probe.ps1` in `NHIP-NO: kiem light 3/6 deep 14/15 ok | tran-bo-nho 1 over-cap | run-chua-gom 0` · `governance-detectors.ps1` in khối `H25-closeout-ritual (GAP-2)` chấm 3 close-group gần nhất **[ok]×3**. ⇒ nấc `PASS-với-carve-out` **giữ hợp-lệ tại thời điểm ghi**.
- **+1 câu trio** (spec B4): carve-out ghi thêm rằng consent-gate của bộ-ba S141 thuộc **cùng CLASS** carve-out (đề-xuất-chạy + vết-skip WAL = lưới) ⇒ nấc trio cũng phải khai `PASS-với-carve-out`, không được khai PASS-trần.
## 4. tailored-gì + skip-gì-vì-sao
- **Tailored:** hub confirm carve-out ở nấc `PASS-với-carve-out`, **KHÔNG nâng PASS-trần** — SE ghi **đúng nguyên câu chữ đó** vào error-ledger kèm điều-kiện-giữ-nấc, thay vì diễn-giải lỏng thành "đã PASS".
- 🔴 **Skip khoản (3) DP-2 dangling-head — SE KHÔNG dùng 2 hướng hub gợi, dùng khuôn ①a:** hub trả hướng từ pattern máy-hoá phía hub (**n=1 hub, KHÔNG mandate, form bạn tự quyết**): (i) neo con-trỏ-tick vào mốc thực-chất gần nhất thay đỉnh-nhánh-tạm · (ii) nới ancestor-check CÓ-VẾT (unreachable → fallback so tiêu-đề/dấu-thời-gian/nhãn-phiên + INFORM thay fail-loud).
SE **chọn khuôn ①a APPROVED** ở thư `58e28bae` (3-điều-kiện phân-loại: object-exists ∧ counter-monotonic → `squash-benign` đi tiếp; object-missing counter-lùi → FAIL-LOUD). **Lý do project-fit:** ①a giữ được **răng chống-tamper** (counter-lùi vẫn FAIL-LOUD) trong khi vẫn tha đúng ca lành (closeout squash nhấc đầu-tick mỗi chu-kỳ). Hướng (ii) nới **toàn bộ** unreachable xuống INFORM ⇒ mất luôn răng cho ca MISSING thật. Hướng (i) **defer** — ghi nhận là cải-tiến hợp-lý nhưng đổi ngữ-nghĩa con-trỏ-tick, cần chu-kỳ đo riêng.
⇒ Đây là **skip vì form**, KHÔNG phải behind: 3 ca fail-loud lịch-sử (S127/S133/S139) đều reclassify đúng thành `squash-benign` dưới ①a.
- **Skip:** liveness-detector cho carve-out (máy tự canh 2 lưới còn sống) = **follow-up**, chưa build. Hiện việc canh là **thủ-công theo nghi-thức**.
## 5. honest-caveat
- 🔴 **Carve-out đang được canh bằng NGƯỜI, không bằng MÁY.** Điều-kiện giữ nấc là "2 lưới còn sống", nhưng **không có detector nào canh chính điều-kiện đó**. Nếu một lưới chết lặng, nấc `PASS-với-carve-out` sẽ **tiếp tục được khai** mà không ai biết — đúng class `cấm-bằng-trí-nhớ`. @S143 em re-đo tay cả 2 lưới (kết quả ở §3) nhưng đó là **kỷ-luật, không phải cơ-chế**.
- **`n=1 hub` — SE không tự nâng thành bằng-chứng mạnh.** Hub khai rõ hướng DP-2 đến từ 1 mẫu phía hub và không mandate. SE chọn form khác nên **không thừa-hưởng** bằng-chứng đó; khuôn ①a của SE hiện có **1 lần chạy runtime nhánh OK-reachable** (@S143) + **3 ca fault-inject**, 2 nhánh còn lại **chưa gặp ca thật**.
- **Unpushed lúc ghi.**

View File

@ -0,0 +1,26 @@
# adap-report — 2026-07-18-Governance-model-tier-h23-precedence-tested-update
> SE (SOLUTION_ERP) · wave adap đợt-9/10 (S141S142).
> ⚠️ **supersedes scope-HẸP** `2026-07-13-Governance-harness-23-explicit-model-at-spawn` — CHỈ hạ nhãn bằng-chứng của **một câu** trong sàn-②; mọi sàn khác giữ nguyên. **Rule KHÔNG đổi** ⇒ SE re-verify đúng một câu nhãn đó.
## 1. id-broadcast
`2026-07-18-Governance-model-tier-h23-precedence-tested-update` (type **update**; `content_sha256` `d68de5e7b72d…`, re-verify tươi `stamp_verify.py` **exit 0** @S143).
## 2. nấc G-011
**executed** — re-verify đã chạy, kết quả là **0 site cần sửa** (nhãn trong repo SE vốn đã đúng), và nhãn mới **đã được tiêu-thụ làm căn-cứ quyết-định form** cho 3 persona trio.
## 3. evidence (đo thật)
- **Re-verify câu nhãn — 0 site sống:** grep repo tìm site còn khai "precedence chưa test" ⇒ **0 hit sống** (VERIFIED bằng grep độc-lập trong wave). SE đã cập-nhật nhãn này từ **S126** khi tự đo, nên bản 07-18 của hub chỉ **xác-nhận** trạng-thái SE đang có, không tạo việc.
- **SE chính là một trong các nguồn n-nhỏ của bản này** (đo độc-lập, 2026-07-16, `spawn-model-audit` **0-mismatch**): tham-số-lúc-spawn **THẮNG** ghim-trong-tệp — `reviewer` pin `opus` + spawn `tier:'fable'` → resolve `claude-fable-5`. Chiều ngược lại cũng đo: lane **no-tier** resolve `claude-opus-4-8` **DÙ lead = Fable** ⇒ worker-tier-pin ăn ở runtime, **không** inherit lead.
- **Hệ-quả vận-hành đã chốt tại SE:** `/fable-real` + `/fable-clone` **SỐNG** mà không cần re-pin frontmatter (canonical: `project_h23_spawn_precedence`).
- **Tiêu-thụ nhãn mới — quyết-định form [n1]:** 3 persona trio dùng `model: opus` (**ALIAS**) thay vì full-id, **vì** bản này chứng alias là dạng **đã-test** (n-nhỏ, ≥2 dự-án) trong khi **full-id vẫn n=0**. Cite `d68de5e7` nằm ngay trong spec A1 làm căn-cứ, và form-deviation này được khai thẳng ở adap-report của `58e28bae`.
## 4. tailored-gì + skip-gì-vì-sao
- **Skip precedence re-sync:** không có gì để sync — SE đo trước hub phát bản này. Skip vì **đã đạt**, không phải behind.
- **Tailored — SE chọn NGƯỢC với gợi ý hub một cách có chủ đích:** hub câu-5a (thư `58e28bae`) khuyên ghim **full-id**; SE giữ **alias**. Căn-cứ lấy từ chính bản này: alias = dạng có bằng-chứng, full-id = **n=0 chưa ai thử**. ⇒ SE ưu tiên **dạng đã-đo** hơn **dạng được-khuyên**, và khai deviation thay vì im lặng.
## 5. honest-caveat
- 🔴 **"Đã test" ở đây là n-NHỎ, không phải đã-chứng-minh.** Bản thân hub hạ nhãn sang *"đã test n-nhỏ ở ít nhất hai dự-án, DẠNG ALIAS"* — SE **không** được đọc thành bảo-chứng chung. Đóng góp của SE trong đó là **n=1**.
- 🔴 **Full-id vẫn là lỗ hổng n=0 cho CẢ fleet.** Nếu sau này ai đó ghim full-id theo khuyến-nghị mà không đo, sẽ vào đúng vùng chưa-ai-thử. SE hiện **không có kế-hoạch** đo dạng full-id (fix#8a còn mở phía hub).
- **Phép đo của SE là point-in-time (2026-07-16).** Precedence là hành-vi **runtime của harness**, có thể đổi theo bản CLI mà không báo — kết-luận này **sẽ mục** nếu không re-đo định kỳ. Hiện việc re-đo gắn vào `spawn-model-audit`, **không có nhịp tự động**.
- **Unpushed lúc ghi.**

View File

@ -0,0 +1,25 @@
# adap-report — 2026-07-18-ai_infra-to-se-nudge-pull-dot-9-10
> SE (SOLUTION_ERP) · wave adap đợt-9/10 (S141S142) · thư **notify vận-hành 1-chiều, 0 quyết-định** — không có điểm sàn kỹ-thuật để adopt.
## 1. id-broadcast
`2026-07-18-ai_infra-to-se-nudge-pull-dot-9-10` (type **notify**; `content_sha256` `9cd1a486af96…` — hash **không-ngoặc**, re-verify tươi `stamp_verify.py` **exit 0** @S143. `reviewer_gate` = self-gate lead phía hub).
## 2. nấc G-011
**n-a** (không có function-floor để áp) — **nhưng đã tiêu-thụ đúng mục đích**: nhắc kéo thư, và SE đã kéo trọn đợt.
## 3. evidence (đo thật)
- **STAGE-1 đã chạy** (`/check-email`, S142): **7 thư** đợt-9/10 kéo về `broadcasts/inbox/`, verify 2-tuyến **7/7**. Kích-thước thật: `chuan-hoa-stamp-decode` 118 dòng · `khung-nhip-…-phep-8` 93 · `session-model-…-manifest` 125 · `reply-adap-wave-carveout-dp2` 66 · `model-tier-h23-precedence` 51 · `nudge-pull` (thư này) 26 · `reply-tong-bo-ba-…-4-khoan` 58.
- `broadcasts/_index.md` **+7 dòng** ghi nhận đợt.
- **Re-verify tươi @S143:** `stamp_verify.py` chạy lại trên cả 7 ⇒ **exit 0 / 7**.
- **Nội dung nhắc đã đúng sự thật:** thư khai *"câu trả lời cho khoản-1 owner-quyết đã nằm sẵn trong thư reply đợt-9 hub phát 18-07 rạng sáng"* — kiểm lại: đó là `58e28bae`, và nó **thật sự** chứa khối (C) review 4 khoản owner-quyết gồm ①(a) APPROVE. ⇒ nhắc **chính xác**, không phải nhiễu.
## 4. tailored-gì + skip-gì-vì-sao
- **Skip toàn bộ:** thư `type: notify`, 0 rule/0 sàn ⇒ không có gì để tailor. Hành-động đúng duy nhất là **kéo thư**, đã làm.
## 5. honest-caveat
- 🔴 **Pull-lag là THẬT và SE là bên gây ra — bài học vận-hành, không phải thủ-tục.** Trong lúc `docs/HANDOFF.md` carry #12 ghi *"chờ-HUB reply wave 18-07"*, thì reply (`58e28bae`) **đã nằm sẵn ở outbox hub** từ rạng sáng 18-07. ⇒ SE **"chờ" một thứ đã được giao**, và hai bên cùng chờ nhau cho tới khi hub phải nhắc.
**Nguyên nhân:** `NEXT em` chỉ ghi *"watch `broadcasts/inbox`"* — nhưng inbox là **thư mục repo MÌNH**, chỉ có thư **sau khi đã kéo**. Watch inbox **không bao giờ** phát hiện được thư chưa kéo. Đó là canh nhầm chỗ, và nó **im lặng** đúng theo thiết-kế.
**Hệ-quả:** carry `[carry:hub-review-wave-1807]` bị giữ mở oan qua nhiều phiên; các quyết-định phụ-thuộc nó (①a contract-fix, bộ-ba SUB) bị hoãn theo.
- 🟡 **Chưa có máy nào canh pull-lag.** Việc kéo thư hiện hoàn toàn dựa vào lead nhớ gõ `/check-email`. Không có detector/dòng-nợ nào nói *"đã N ngày chưa pull"*. Nếu hub không nhắc, lag còn kéo dài. **Đề-xuất (chưa làm, cần owner):** thêm 1 vế vào `nhip-no-probe.ps1` dạng *"lần pull gần nhất cách đây N ngày"* — cùng khuôn với các vế nợ đang có.
- **Unpushed lúc ghi.**

View File

@ -0,0 +1,31 @@
# adap-report — 2026-07-18-ai_infra-to-se-reply-tong-bo-ba-harness-sub-4-khoan
> SE (SOLUTION_ERP) · wave adap đợt-9/10 (S141S142) · run vòng-1 `.claude/workflows/runs/2026-07-20-S141-adap-dot-9-10-bo-ba-sub/` (chết giữa chừng, 5/13 partial-honest) + vòng-2 CẮT-GỌT `.claude/workflows/runs/2026-07-22-S142-adap-9-10-vong-2/` (`wf_1e936b16-30c`, 2/2 lane, 0 garble) · spec v2 = fable-clone 5-lane + fold TRỌN fable-real gate GO-WITH-FIXES 0C/7M/9n.
## 1. id-broadcast
`2026-07-18-ai_infra-to-se-reply-tong-bo-ba-harness-sub-4-khoan` (type **reply**; `content_sha256` `58e28baedf05…`, re-verify tươi `python scripts/stamp_verify.py` **exit 0** @S143 2026-07-22).
## 2. nấc G-011
**executed-file / verified-pending-restart** — khối (B) khuôn canonical bộ-ba đã thành 3 persona + 3 diary + wiring nhịp 2-đầu-phiên trên đĩa; khối (C) khoản ①(a) APPROVE đã thành contract v2 trong `.session-counter.json`. 🔴 **3 vai trio CHƯA spawn lần nào** — cần restart CLI + owner consent. **CẤM đọc thành `verified-runtime`.** `verified` = quyền hub.
## 3. evidence (đo thật)
- **3 persona** (commit `1a0fa59`): `.claude/agents/harness-eval.md` **69 dòng / 6.261 B** · `harness-refine.md` **66 dòng / 6.012 B** · `harness-audit.md` **58 dòng / 5.135 B**. Frontmatter cookie-cutter khớp `lead-view-auditor.md`: `model: opus` + `effort: max` + `memory: project` + `maxTurns: 18`, `tools:` **không liệt kê Write/Edit** (⚠️ xem caveat §5 — điều này KHÔNG chứng minh runtime chặn được ghi).
- **3 diary seed**: `.claude/agent-memory/harness-{eval,refine,audit}/MEMORY.md` mỗi file **16 dòng**, non-empty, khai thẳng "S141 seed, chưa chạy lần nào".
- **TRIPLE 17/17/17** (đo lại tươi @S143): `ls .claude/agents/*.md | grep -v README` = **17** == `VALID_ROLES` trong `hmw.js` = **17** == enum `agents/README.md` = **17**.
- **Wiring nhịp:** `session-start.md` (**30 dòng**) thêm `§2.1.9` bộ-ba consent-gated TUẦN TỰ eval→refine→audit + vết-2-lớp [M4] (proposal-line in cả khi Light + vết `trio: skipped` vào WAL) · `session-end.md` (**14 dòng**) thêm `§L.b(k)` mirror + header `(a)→(k)`.
- **Contract ①(a)** (commit `a458102`, vòng-1): `.claude/governance/.session-counter.json` **11 dòng**`_contract.fail_loud_on_regress` v2 (2 trigger/2 verdict) + `_tick_invariant_note`. JSON `ConvertFrom-Json` **exit 0**; chứa `SQUASH-BENIGN` + `transient`.
- **Contract v2 chạy THẬT ngay phiên này:** cửa `/tiep` @S143 áp đúng 3-điều-kiện — counter không lùi (16=16) · `git merge-base --is-ancestor 96ab2679 HEAD` **exit 0**`OK-reachable` · `git cat-file -t` = `commit` ⇒ không fail-loud, không squash-benign, tick **16→17**. Đây là **lần đầu contract v2 được hành-quyết ở runtime** (nhánh OK-reachable; 2 nhánh kia mới chỉ chứng bằng fault-inject).
- **hmw.js** (**9 dòng**): `VALID_ROLES` +3 trio; `writeGuard` [n9] hoàn thiện enum read-only — thêm cả 4 monitor cũ (`tooling-auditor`, `harvest-curator`, `lead-view-auditor`, `lead-omission-auditor`, vốn thiếu sẵn = drift cũ) + 3 trio.
- **Detector suite:** TOTAL **46 == baseline 46** (wave thêm 0 flag), exit 0; `H25-role-notebook` đọc `roster=17 ; diaries-ok=17 ; flagged=0`.
## 4. tailored-gì + skip-gì-vì-sao
- **Tailored (FORM SE, giữ FUNCTION-floor):** khuôn 5-câu của hub map vào topology SẴN CÓ của SE — 3 vai monitor `INFORM-only / propose-only`, **single-writer = lead** (đúng khuôn 4 monitor H1/H2/H24 đã chạy). Nhịp "2-đầu-phiên" gắn vào 2 lệnh vòng-đời sẵn (`session-start §2.1.9` · `session-end §L.b(k)`) — **0 lệnh mới**.
- **Tailored — consent-gate:** hub cho phép chạy theo nhịp; SE **thêm cổng consent** (owner gật mới chạy, mirror `sleep-check §2.1.2`) + **vết-skip vào WAL** để chuỗi bỏ-qua nhìn thấy được. Đây là siết CHẶT hơn floor, không nới.
- **Form-deviation khai thẳng [n1]:** hub câu-5a khuyên ghim **full-id** model; SE dùng **alias** `model: opus`. Lý do: alias là dạng **đã được đo** (`d68de5e7` — H23 precedence tested, n-nhỏ ≥2 dự-án), full-id **n=0 chưa ai thử**. Chọn dạng-đã-test có chủ đích, không phải bỏ sót.
- **Skip:** `harness_trio` **không** thêm cadence-key vào `memory-budget.json` — luật TUẦN-TỰ đã sống ở `§2.1.9` + trong chính persona; thêm key thứ hai = 2 đồng-hồ cho 1 nhịp (trộn với `h24_cadence` là hỏng cả hai). Skip **có lý do**, không phải behind.
## 5. honest-caveat
- 🔴 **Trio chưa spawn lần nào.** Toàn bộ nấc trên là **file-level**. Agent `.md` không hot-reload ⇒ phải restart CLI + owner consent mới có spawn-probe 3/3. Nếu first-run lộ sai contract, nấc phải hạ.
- 🔴 **"Chặn-bằng-thiếu-tool" KHÔNG có răng ở runtime — overclaim đã sửa (G-015).** Spec A1 chốt enforcement là *không liệt kê `Write/Edit` trong `tools:`*. Đo @S143: **6 vai read-only** (3 trio + 2×H24 + `reviewer`; `tooling-auditor`/`harvest-curator`/`investigator-codebase` cùng dạng) đều **không khai** `Write/Edit` trong frontmatter — **nhưng roster runtime vẫn cấp `Write, Edit`**, nối ở **cuối** danh sách tool. Đối chứng phân biệt: `implementer-backend` khai `Edit, Write` ở vị-trí 2-3 và runtime hiện **đúng thứ tự file** ⇒ 6 vai kia là **append thêm lúc chạy**, không phải đọc từ file. ⇒ Whitelist frontmatter = **tuyên-bố ý-định**, KHÔNG phải cơ-chế chặn. Backstop THẬT vẫn là **git-diff commit-gate** + single-writer lead (đúng bài `feedback_monitor_residual_write_containment`, nay mạnh hơn: không chỉ Bash-write mà Write/Edit được cấp thẳng). Cơ-chế vì sao harness append thì SE **chưa xác định** (giả-thuyết `memory: project` cần ghi diary — **chưa kiểm**, không khai thành sự thật).
- **Ranh refine ⟂ lead-omission chờ ratify:** persona `harness-refine` đã ghi ranh sắc (LEAD session hot-feed/carry/work-state → NHƯỜNG `lead-omission-auditor`; refine CHỈ acts agent-memory corpus). Ranh này là **SE tự vạch**, chưa được hub/owner ratify.
- **Unpushed lúc ghi** (push gộp cuối closeout S142, thực thi @S143).

View File

@ -41,6 +41,26 @@ Detect by **action-signature** (NOT "AI tự phán có vi phạm không"). Scan
> **G-011 ladder (canonical on-disk từ S139 — trước đó chỉ sống trong lineage adap-reports):** nấc tiến-độ khi khai một việc: `agreed` (đồng-ý làm) → `executed` (lệnh đã chạy xong) → `verified` / `verified-pending-restart` (đã KIỂM chạy thật; edit agent-file no-hot-reload = verified-pending-restart). 🔴 **KHÔNG tự khai `verified`** khi chưa có phép kiểm chạy được. Tham-chiếu: rules §6.6 K4 relay-attribution.
> **Luật re-base số-sống (K6.2 — generalize E-010, adopt S139):** Re-base baseline = chốt số **SỐNG** tại lúc re-base — mọi số vào sổ đọc lại từ **nguồn sống tại thời-điểm ghi** (CẤM chép từ ghi-chú/phiên trước, kể cả ghi-chú của chính mình); byte = `(Get-Item).Length` (E-010). *(nhà đề-xuất-mặc-định — [owner-reviewable])*
> ### 🪤 Carve-out ô3 — điều-kiện SỐNG (adopt S141, ghim S142)
>
> **Nấc:** force-fire khi closeout gộp sổ chạy dưới dạng **đề-xuất-chạy chờ anh gật** (KHÔNG auto-run) đứng ở nấc **`PASS-với-carve-out`** — 🔴 **CẤM nâng thành `PASS-trần`**. Đây không phải trừ-điểm: nó ghim đúng *điều-kiện sống* của carve-out.
>
> **VALID chỉ khi CẢ 2 lưới còn sống CÙNG LÚC** (đích danh, không nói chung chung):
> - **(a) dòng-nợ read-only vẫn IN ở MỌI điểm dừng** — `scripts/nhip-no-probe.ps1`
> - **(b) cái dò "closeout-thiếu-nghi-thức" vẫn được NỐI** — section `H25-closeout-ritual (GAP-2)` trong `scripts/governance-detectors.ps1`
>
> **Vì sao buộc CẢ HAI:** chuyển từ "máy tự chạy" sang "chờ anh gật" thì rủi-ro MỚI sinh ra là *anh quên gật mà không ai kêu*. Hai lưới trên **chính là cái kêu** — dòng-nợ cho anh thấy khoản quá-hạn, cái dò bắt closeout gộp mà thiếu nghi-thức.
>
> 🔴 **1 lưới chết ⇒ carve-out mất lớp tự-minh-bạch ⇒ RE-EVAL nấc**, và trong lúc chờ thì **tụt về chạy-vô-điều-kiện** cho tới khi lưới sống lại. Đây là luật đứng, không phải khuyến-nghị.
>
> **Basis:** hub reply `9a35405b` **khối-2** (`broadcasts/inbox/2026-07-17-ai_infra-to-se-reply-adap-wave-carveout-dp2.md`) — hub CONFIRM carve-out hợp-lệ *và* ghim đúng 2 điều-kiện này.
>
> **Live-evidence S139→S140 (dogfood mở sổ, không khai suông):** dòng-nợ `light 8/6` quá-hạn IN tại cửa nối-lại → anh **gật** → cặp H24 (`lead-view-auditor` + `lead-omission-auditor`) chạy THẬT → ra cờ THẬT (2 cờ view-cũ sửa trong phiên + 1 cờ MED "quyết-định-chìm" lặp-2) → probe sau audit `light 0/6`. Đủ một vòng: **nợ hiện → gật → chạy → ra việc thật → nợ về 0.**
>
> **Kiểm tại S142:** cả 2 lưới **SỐNG** (`scripts/nhip-no-probe.ps1` có trên đĩa; `H25-closeout-ritual` còn wired trong suite và chạy ra output) ⇒ nấc `PASS-với-carve-out` đứng vững, chưa phải re-eval.
>
> **Cùng CLASS — trio-consent S141:** bộ-ba đồng-kiểm memory (`harness-eval`/`refine`/`audit`) chạy **consent-gated** cũng là carve-out CÙNG LOẠI, chịu CHUNG luật trên; lưới của nó = **(a) proposal-line in CẢ khi Light-session** (không skip im) + **(b) vết-skip ghi `.claude/WAL.md` dạng `trio: skipped S<nn> (lý-do)`** để chuỗi skip nhìn thấy được. Khai nấc `PASS-với-carve-out` trong adap-report, KHÔNG PASS-trần; 1 trong 2 lưới chết ⇒ re-eval y hệt ô3.
| Guard | Counters | Tier | Strikes | Verified | Net |
|---|---|---|---|---|---|
| CI `paths-ignore` docs-only skip | gotcha #41 (AS-6) | procedural | 2 | ✅ (every docs commit 0s) | +++ |

View File

@ -295,7 +295,7 @@ SE đã có RAG golden-set harness (KHÔNG phải gap): `eval/golden-set-solutio
- **Sweep 6 mandate-consumer + cites (mechanized-grep `_ledger` exact — 5 "ledger" khác tên trong repo, tránh C3-fork):** `runs/README.md` ×7 (:3/:38/L1/L2/§C6-header/:117/:127) · `workflows/README.md` ×2 (:20/:34-B3) · `session-start.md` §2.1.1-H2 · `session-end.md` §L.b(f) · `agents/harvest-curator.md` ×3 (:28/:44/:52-cite) · `agents/README.md` G-015-cite · + `agent-memory/harvest-curator/MEMORY.md` baseline re-ground. HISTORY class (session-log/adap-report/archive/runs-synthesis) GIỮ NGUYÊN.
**J.C — Bracket phân-bổ model: 1 ĐẠT + 2 n-a-by-owner-mandate (🔴 điều-kiện xét-lại VIẾT RA):**
- Precondition raw-economics ĐÚNG (Fable > Opus 4.8 giá) NHƯNG **directive 🔴 S66 "chất-lượng trên chi-phí"** (anh-chốt, mọi sister) GIỮ — mechanism nay = **worker-tier-pin S124** (14/14 frontmatter `opus`+`effort:max`, thay all-inherit H8) → KHÔNG demote lớp-việc nào dưới worker-tier opus; escape-hatch per-task `tier:'opus'` (hmw.js) GIỮ = cơ-chế hạ-bậc-theo-việc ĐÃ TỒN TẠI khi cần. 4 lớp không-hạ + 2-đầu = vacuously-held (mọi vai đang top-tier). Promote-list 🟡 = n-a (không gì để nâng).
- Precondition raw-economics ĐÚNG (Fable > Opus 4.8 giá) NHƯNG **directive 🔴 S66 "chất-lượng trên chi-phí"** (anh-chốt, mọi sister) GIỮ — mechanism nay = **worker-tier-pin S124** (TOÀN-ROSTER frontmatter `opus`+`effort:max` — số vai canonical → [`docs/STATUS.md`](../STATUS.md) §Sub-agents, B1 KHÔNG chép số ở đây; thay all-inherit H8) → KHÔNG demote lớp-việc nào dưới worker-tier opus; escape-hatch per-task `tier:'opus'` (hmw.js) GIỮ = cơ-chế hạ-bậc-theo-việc ĐÃ TỒN TẠI khi cần. 4 lớp không-hạ + 2-đầu = vacuously-held (mọi vai đang top-tier). Promote-list 🟡 = n-a (không gì để nâng).
- **Điều-kiện xét-lại (C3-floor, viết ra — đo được):** NẾU anh đảo H8 HOẶC áp-lực chi-phí thật xuất hiện → dựng bracket theo checklist H18-C, so ≥3-run eval vs baseline TRƯỚC khi cố-định; tới lúc đó C1/C2 hết n-a. (Caveat-2 broadcast: "chi-phí ngang nhau thì khuôn-mẫu không áp" — SE = ngang-nhau-BY-DECISION.)
**J.D — Đóng làn kết-quả (🔴 3 sàn — 2 ĐẠT wired + 1 REUSE):**
@ -342,7 +342,7 @@ SE đã có RAG golden-set harness (KHÔNG phải gap): `eval/golden-set-solutio
| `/fable-real <vai> <đề-bài>` | **lệnh-A** single top-model | 1 vai anh gán chạy 1 lần top-model THẬT (deep pass; Fable up → single-Fable · outage → single-Opus-1M/run) |
| `/fable-clone <vai> <đề-bài>` | **lệnh-B** ensemble tier-2 | N lane đa-lăng-kính CÙNG 1 vai (`hmw.js parallel`) + em-main refute+synthesize |
- **(i) Vai owner-gán per-invocation:** `<vai>`**roster** (`investigator-codebase` · `investigator-api` · `implementer-backend` · `implementer-frontend` · `frontend-designer` · `database-agent` · `office-document` · `test-specialist` · `reviewer` · `cicd-monitor` · `tooling-auditor` · `harvest-curator` · **`lead-view-auditor` · `lead-omission-auditor`** ← +S121 W2, H24). 🔴 Danh-sách này là **BẢN SAO** — nguồn thật = `hmw.js` VALID_ROLES `:22-36`; lệch ⇒ **tin `hmw.js`**. Số vai canonical → [`docs/STATUS.md`](../STATUS.md) §Sub-agents (B1). Thiếu/sai vai → **em-main hỏi anh 1 dòng**, KHÔNG tự đoán. Hiệu-lực CHỈ lượt đó (không marker, không sticky-mode). ✅ **VALID_ROLES = ĐỦ roster:** 2 monitor H1/H2 bổ sung S110 anh-directed (10→12) → **+2 monitor H24 S121 W2 (12→14)** — lệnh-B trọn roster. 🔴 Số canonical → [`docs/STATUS.md`](../STATUS.md) §Sub-agents, **KHÔNG chép số ở đây**. *(🧊 limitation cũ "2 monitor ∉ 10-vai → fail-soft default-subagent" + H6-design "monitor ngoài workflow" superseded điểm này; monitor vẫn INFORM-only, lane RETURN-only.)*
- **(i) Vai owner-gán per-invocation:** `<vai>`**roster** (`investigator-codebase` · `investigator-api` · `implementer-backend` · `implementer-frontend` · `frontend-designer` · `database-agent` · `office-document` · `test-specialist` · `reviewer` · `cicd-monitor` · `tooling-auditor` · `harvest-curator` · **`lead-view-auditor` · `lead-omission-auditor`** ← +S121 W2, H24 · **`harness-eval` · `harness-refine` · `harness-audit`** ← +S141, bộ-ba đồng-kiểm memory). 🔴 Danh-sách này là **BẢN SAO** — nguồn thật = `hmw.js` VALID_ROLES (khối hằng-số `VALID_ROLES`, tra bằng tên **KHÔNG bằng số dòng** — [n6] line-range cũ `:22-36` đã lệch khi enum dài thêm); lệch ⇒ **tin `hmw.js`**. Số vai canonical → [`docs/STATUS.md`](../STATUS.md) §Sub-agents (B1). Thiếu/sai vai → **em-main hỏi anh 1 dòng**, KHÔNG tự đoán. Hiệu-lực CHỈ lượt đó (không marker, không sticky-mode). ✅ **VALID_ROLES = ĐỦ roster:** 2 monitor H1/H2 bổ sung S110 anh-directed (10→12) → +2 monitor H24 S121 W2 (12→14)**+3 trio-memory S141 (14→17)** — lệnh-B trọn roster. 🔴 Số canonical → [`docs/STATUS.md`](../STATUS.md) §Sub-agents, **KHÔNG chép số ở đây**. *(🧊 limitation cũ "2 monitor ∉ 10-vai → fail-soft default-subagent" + H6-design "monitor ngoài workflow" superseded điểm này; monitor vẫn INFORM-only, lane RETURN-only.)*
- **(ii) Spec-file pipeline (mỗi run engine-đắt PHẢI sinh):** `.claude/workflows/runs/<run-id>/spec-<tên-tính-năng>-<dd-mm-yyyy>.md` — 3-heading CỐ-ĐỊNH: **[1] Tính-năng/đề-bài** (13 câu) · **[2] Cách implement** (bước + quyết-định + ràng-buộc + đường-chết) · **[3] Checklist** (vai + deliverable + acceptance đo được). Luồng: engine **propose-only** → lead **verify****LEAD ghi** (single-writer) → worker **Opus MAX** thực-thi THEO spec bơm qua `args` (`hmw.js` KHÔNG đọc file spec).
- **(iii) 4 ghi-chú trung-thực (🔴 phải hiện-diện — nấc owner-gated, KHÔNG code-enforced §X8):**
- **(a)** owner-gated tầng LỆNH + kỷ-luật lead cho việc CHỌN/ELEVATE vai, **KHÔNG code-enforced** — đường code `tier:'fable'` vẫn tồn-tại, hmw.js KHÔNG ép vai-nào-được-elevate. *(REC-3 2026-07-13: hmw.js GIỜ code-enforce vai-INVALID — typo ∉ VALID_ROLES → STOP-HARD throw; đó là guard typo, KHÁC gate vai-elevation vẫn là discipline.)* Bảo-đảm elevation = MỌI đường truy về lượt owner-gõ (kỷ-luật), không phải guard chặn.

View File

@ -44,7 +44,16 @@ Hub §2 mô tả điểm dừng ghi delta vào **"một tệp ngữ-cảnh cộn
## 4. Điều kiện tiên quyết (mapping 5 vòng — vì sao phải đóng trước)
Theo `9234a7aa` §4: nối phiên qua nhiều cửa-sổ = tin trạng-thái trên đĩa. Trạng thái đóng vòng của SE @S140: vòng 1/2/3/5 chức-năng CÓ + runtime; vòng 4 lượt nén-sau-nâng đang chạy @S140; vòng-3-có-SUB (bộ ba `harness-eval/refine/audit` — owner đã quyết CÓ) **chờ khuôn hub** (email `fc2b218d3eed`). SE **không bật** session-model trước khi: (a) hub phát mẫu áp dụng, (b) khuôn bộ-ba SUB về, (c) anh duyệt bảng VC-1/2/3.
Theo `9234a7aa` §4: nối phiên qua nhiều cửa-sổ = tin trạng-thái trên đĩa. Trạng thái đóng vòng của SE @S140: vòng 1/2/3/5 chức-năng CÓ + runtime; vòng 4 lượt nén-sau-nâng đang chạy @S140; vòng-3-có-SUB (bộ ba `harness-eval/refine/audit` — owner đã quyết CÓ) **chờ khuôn hub** (email `fc2b218d3eed`). SE **không bật** session-model trước khi:
- **(a) hub phát mẫu áp dụng — ✅ ĐÃ VỀ (đợt 2026-07-18):** `101e69d6` kit + manifest (`broadcasts/inbox/2026-07-17-Governance-session-model-phien-logic-manifest.md`, thư đề ngày 2026-07-17, pull trong đợt 07-18). ⚠️ **Câu 4 (van-ngưỡng "kiểm giữa phiên khi phiên-logic quá dài") CHƯA được trả lời** — kit đến mà van thì không; và hub **cố-ý KHÔNG mang khoá counter** trong manifest (đã soát: 0 hit `counter`/`đếm` trong thư). Nên "(a) đã về" ≠ "(a) đã đủ để bật".
- **(b) khuôn bộ-ba SUB — ✅ ĐÃ VỀ 2026-07-18:** `58e28bae` khối B (`broadcasts/inbox/2026-07-18-ai_infra-to-se-reply-tong-bo-ba-harness-sub-4-khoan.md`) → SE đã adopt trio @S141.
- **(c) anh duyệt bảng VC-1/2/3 — ⏳ CHỜ ANH.** Đây là **điều-kiện CUỐI**, và giờ là điều-kiện duy nhất còn đứng chắn.
🔴 **Ba khoản MỚI lộ ra sau khi (a)(b) về — CHỜ ANH DUYỆT CÙNG BẢNG VC** (không tự quyết, không wire):
1. **K4 form-conflict:** hub quy-ước thư-mục phiên là `.claude/sessions/session-<N>/` (manifest §"một thư mục quy-ước chung"), còn draft này ở VC-3 đề `.claude/logic-sessions/L<mm>.md`. Hai form khác nhau về **cả tên lẫn hình** (thư-mục-per-phiên vs một-tệp-per-phiên) — phải chốt một trước khi có bất kỳ đường ghi nào.
2. **`session_ctx_kb`:** manifest ghi `session_ctx_kb: 64` (đơn vị KB, đọc code nhân 1024). SE chưa có khoá này, cũng chưa đo xem 64 có hợp không — mượn số của hub mà chưa đo là đúng thứ K6.2 cấm.
3. **meld-forward-gap (hook 3→4 path):** hub dựa vào "meld-forward khi gộp sổ" để lịch-sử phiên-logic không rớt lúc squash. Nhưng Stop-hook SE (`.claude/hooks/wal-flush.ps1`) quét **đúng 3 path** (`.claude/WAL.md`, `.claude/agent-memory/`, `.claude/workflows/runs/`) — thư-mục phiên sẽ là path **thứ 4** và hiện KHÔNG được quét ⇒ nếu bật mà quên nới, dấu-mốc phiên không vào sổ và meld-forward chẳng có gì để nhập-tiến. Đây là khoản sửa-hook, tức chạm cơ-chế → dứt khoát chờ anh.
## 5. Câu hỏi gửi hub (đánh số — sẽ đi trong email S140)

View File

@ -48,7 +48,7 @@ Một session-log viết "two-tier" hồi S60 là **đúng sự thật lịch s
| Thuộc tính | Giá trị |
|---|---|
| **Canonical (hiện hành)** | `worker-tier-pin` — 14/14 sub-agent frontmatter `model: opus` + `effort: max` (worker-tier gán-cứng, KHÔNG theo lead); lead = frontier-class owner-choice per-session; Fable cho 1 vai CHỈ qua lượt lệnh `/fable-real`·`/fable-clone` hoặc per-task `tier:` — spawn-param THẮNG hard-pin (đo S126 2026-07-16, `runs/2026-07-16-S126-adap-spec-execute/runtime-verify-synthesis.md`) |
| **Canonical (hiện hành)** | `worker-tier-pin` — 17/17 sub-agent frontmatter `model: opus` + `effort: max` (worker-tier gán-cứng, KHÔNG theo lead); lead = frontier-class owner-choice per-session; Fable cho 1 vai CHỈ qua lượt lệnh `/fable-real`·`/fable-clone` hoặc per-task `tier:` — spawn-param THẮNG hard-pin (đo S126 2026-07-16, `runs/2026-07-16-S126-adap-spec-execute/runtime-verify-synthesis.md`) |
| **Alias (đã thay thế — đời 2)** | `all-inherit` — mọi sub-agent kế thừa model lead (chất-lượng > chi-phí; Harness-8, S66S123) |
| **Alias (đã thay thế — đời 1)** | `two-tier` — mô hình 2 tầng (lead promote-inherit vài agent / demote-pin số còn lại về Opus; Harness-4) |
| **Đổi tên bởi** | Owner-decision **S124** (2026-07-15, adap `erratum-h8`) — thay all-inherit bằng worker-tier-pin. Trước đó: Harness-8 (S66, 2026-06-16) thay two-tier bằng all-inherit |