[CLAUDE] Docs: S146 closeout — session-model 3 owner-decision + hook 4-path + H24 auto
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m25s
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m25s
Ap spec-apply-hub-s145-v2 (5 axis, governance-only: 0 prod-code, 0 migration). Workflow S145 chet giua chung -> /tiep §4 relaunch-cat-gon wf_3d803740-41d 3/3 DONE. Owner-decision @S146: - session_ctx_kb = 64 TUONG-MINH (giu nguyen caveat ghost-wire: 0 reader) - session-model: scaffold IDEMPOTENT (tach cap-SO vs tao-THU-MUC) · closed.md WIRE (session-end §6.3-bis) · V2 AUTO (go cong NGUOI, GIU cong NHIP 6/15/3) Landed: C7 §N.8 predicate 4-ve · hook wal-flush.ps1 4 path (+.claude/sessions/) · San-3 tin-hieu ⑤ + ORPHAN-L · D2 KIEM end-only · §L.c completeness-gate co RANG. LIVE-VERIFY hook 4-path PASS repo THAT (da7ee8a). Session-model chay TRON VONG dau tien: pause-S146 -> resume-S146 -> ORPHAN-L can so. H24 force-fire (P=8 pause >= 1, luat auto moi): 2 vai + h24-audit -> 7 FLAG, va het: - sweep-consent sot 6 site (h24-audit.md:4 = frontmatter description) - closed.md wired-but-declared-unwired (ghost-wire CHIEU NGUOC) - owner-decision [7] BI GHI DE do tai-dung slot-index -> mat uy-quyen push 3/3 vai lane-H24 garble #53: ghi-dia-SOM cuu tron, ghi-MUON mat trang. So: orphan run-folder 3->0 · carry 14->20 (co tag [carry:*]) · +E-013 +E-014 error-ledger · +memory feedback_absence_looks_like_clean · .gitignore +lock file. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -72,10 +72,36 @@ Em main đọc `.claude/WAL.md` (sổ mạch-việc-dở H22 — ghi-đè ≤40
|
||||
|
||||
🔴 **Sàn-3 = định-nghĩa CANONICAL ở [`tiep.md`](tiep.md) §0** — bước này **CHỈ TRỎ**, CẤM chép logic (B1). ⚠️ **Bản trước S122 tự suy *"sổ trống ⇒ sạch"* — ĐÓ LÀ BUG**, và Sàn-3 sinh ra để vá đúng nó (cùng cặp với `tiep.md:15` cũ; lead mắc thật, không phải giả-định).
|
||||
|
||||
- **(a) SẠCH** = WAL không còn mục dở **VÀ** cả **4 tín-hiệu BẬC MẠNH** Sàn-3 đều im → báo **1 dòng** "WAL sạch — Sàn-3 4/4 im" rồi tiếp **Phase 1** (no-wait).
|
||||
- **(a) SẠCH** = WAL không còn mục dở **VÀ** **TOÀN BỘ tín-hiệu BẬC MẠNH** Sàn-3 đều im → báo **1 dòng** "WAL sạch — Sàn-3 im toàn-bộ bậc MẠNH (`k/k`)" rồi tiếp **Phase 1** (no-wait).
|
||||
> 🔴 **`k` = số tín-hiệu MẠNH, ĐỌC SỐNG từ [`tiep.md`](tiep.md) §0 — B1, CẤM chép số vào đây.** Bản trước chép cứng "4" và **đã stale ngay** khi Sàn-3 lên **5** @S146 (tín-hiệu ⑤ `.claude/sessions/` đẻ cùng hook path thứ-4). Chép số = tự đẻ drift đúng lần nới kế tiếp.
|
||||
- **(b) CÓ mạch dở** = WAL có `[!]`/`[ ]` **HOẶC** 🔴 **Sàn-3 bắt ≥1 tín-hiệu MẠNH — KỂ CẢ KHI SỔ TRỐNG** → BÁO **goal** + **mục `[!]` đầu-tiên** (hoặc **tín-hiệu Sàn-3 nào kêu** + đường-dẫn) + câu "có mạch dở — gõ `/tiep` để nối, hoặc bảo em bootstrap tiếp bỏ mạch" rồi **CHỜ anh chọn**. 🔴 **NGOẠI-LỆ CHỜ DUY-NHẤT** của quy-trình no-wait (BƯỚC 0 GIỮ no-wait — echo body rồi chạy thẳng).
|
||||
|
||||
> 🧭 Toàn-bộ Sàn-3 (3 bậc + **DUAL-ACCEPT** orphan [dạng-3 retired S123] + 2 kẽ khai thật) **và** quy-trình recovery (verify-trước-next · ground-truth-thắng · relaunch-cắt-gọt cho `wf:`) viết Ở **MỘT CHỖ** = [`tiep.md`](tiep.md) §0–§4. Chặn **TRƯỚC Phase 1 READ** = tiết-kiệm read-set ~368K khi anh chọn `/tiep` (khỏi nạp full context rồi mới nối).
|
||||
> 🧭 Toàn-bộ Sàn-3 (3 bậc + **DUAL-ACCEPT** orphan [dạng-3 retired S123] + **ORPHAN-L ⑤** [S146] + 2 kẽ khai thật) **và** quy-trình recovery (verify-trước-next · ground-truth-thắng · relaunch-cắt-gọt cho `wf:`) viết Ở **MỘT CHỖ** = [`tiep.md`](tiep.md) §0–§4. Chặn **TRƯỚC Phase 1 READ** = tiết-kiệm read-set ~368K khi anh chọn `/tiep` (khỏi nạp full context rồi mới nối).
|
||||
|
||||
## 📋 BƯỚC 0.8 — Thư-mục phiên-LOGIC `.claude/sessions/session-<N>/` (S146 — session-model, **FORM chốt / NGHI-THỨC còn gated**)
|
||||
|
||||
> Nền: [`session-model-se-draft.md`](../../docs/governance/session-model-se-draft.md). Một **phiên-LOGIC** = khởi-động nặng 1 lần → N **cửa-sổ vật-lý** nối bằng `/pause`→`/tiep` → chốt nặng 1 lần.
|
||||
|
||||
**(a) FORM — đã chốt (theo hub-form, K4 form-conflict giải @S146):**
|
||||
- Thư-mục: `.claude/sessions/session-<N>/` · **regex `^session-\d+$`** (KHÔNG `L<mm>`, KHÔNG hậu-tố mô-tả — máy phải quét được).
|
||||
- `<N>` = **ID phiên-LOGIC, nguyên tăng** (`max(<N> hiện có) + 1`). 🔴 **Nhãn 2 tầng (VC-1):** `S<nn>` = **cửa-sổ vật-lý** (mọi cơ-chế tick/counter/H24 GIỮ NGUYÊN đơn-vị này) · `L<N>` = **phiên-logic**, dùng **CÙNG con số** với `session-<N>` — hai cách viết của **một ID**, **KHÔNG phải hai bộ đếm**.
|
||||
- **Ai tạo thư-mục — 🔴 SCAFFOLD IDEMPOTENT (owner chốt @S146 "giống hub"; floor manifest `101e69d6` §1 "Cộng ba miếng nền"):** *"thư-mục phiên **tự tạo ở đầu phiên**; **chạy lại nhiều lần vô hại** (không đè cái đã có)"*. ⇒ **BẤT-KỲ điểm-vào nào** (`/session-start` · `/pause` · `/tiep`) gặp `session-<N>/` chưa tồn-tại thì **TẠO**; đã có thì **DÙNG LẠI, CẤM đè**.
|
||||
- 🔴 **Ai cấp `<N>` (khác "ai tạo thư-mục" — đừng lẫn):** **CHỈ `/session-start`** mới **MỞ SỐ MỚI** (`max(<N> hiện có) + 1`). `/pause` · `/tiep` **KHÔNG BAO GIỜ tự tăng `<N>`** — chúng chỉ **tạo thư-mục cho `<N>` ĐANG MỞ** nếu nó chưa có trên đĩa (ca "cửa đầu chưa kịp scaffold"). Không có `<N>` nào đang mở ⇒ dùng `<N> = max+1` **và ghi 1 dòng khai** trong khối đó là số được cấp ngoài `/session-start`.
|
||||
- 🧊 **Vá mâu-thuẫn @S146:** bản trước ghi *"Ai mở `<N>` mới: **CHỈ** `/session-start`"* trong khi [`pause.md §2.6`](pause.md) ghi *"chưa có thì đây là cửa đầu ⇒ **tạo** `session-<N>/`"* ⇒ **hai file nói ngược nhau về quyền tạo**. Gốc lỗi = **gộp hai khái niệm khác nhau** (*cấp SỐ* ⟂ *tạo THƯ-MỤC*) vào một câu. Nay tách đôi: **cấp số = độc-quyền `/session-start`** · **tạo thư-mục = idempotent, ai gặp trước thì tạo**. Hub chỉ ràng vế thứ hai.
|
||||
|
||||
**(b) Đo TRƯỚC khi tin — `.gitignore` (đo @S146, KHÔNG suy):**
|
||||
```bash
|
||||
git check-ignore -q .claude/sessions/session-1 ; echo "exit=$?" # → exit=1
|
||||
```
|
||||
`exit=1` = **KHÔNG bị ignore** ⇒ thư-mục phiên **được commit** (negation `.gitignore:82-83` `!.claude/` + `!.claude/**` thắng; không pattern nào sau đó loại `sessions/`). ⇒ hợp-lệ để `/pause` ghi context-map vào đây và hook nuốt.
|
||||
|
||||
**(c) Hook đã phủ:** `.claude/sessions/` là **path thứ-4** của `wal-flush.ps1` (S146) ⇒ context-map tự vào `wal:` commit; **và** Sàn-3 có tín-hiệu **⑤ + ORPHAN-L** canh đúng vùng đó ([`tiep.md`](tiep.md) §0). Hai thứ này **đẻ cùng lúc** — path không có tín-hiệu = điểm mù không người canh.
|
||||
|
||||
**(d) 🔴 KHAI RANH — cái gì ĐÃ bật, cái gì CHƯA (chống đọc thành "đã adopt session-model"):**
|
||||
- ✅ **Đã wire @S146:** form thư-mục · hook path thứ-4 · `/pause` ghi context-block (`pause.md §2.6`) · `/tiep` đọc + ghi biên-nhận (`tiep.md §2.6`) · tín-hiệu ⑤/ORPHAN-L.
|
||||
- ⏳ **CHƯA — chờ anh duyệt bảng VC (draft §3 + §4(c)):** **KHÔNG** nghi-thức nào được chuyển sang per-L trong lượt này. Phase 1 READ · monitor re-report · H24 tick · governance-detectors · closeout **VẪN chạy per-cửa `S<nn>`** y như cũ. Bước 0.8 = **hạ-tầng + đo**, KHÔNG phải công-tắc.
|
||||
- ✅ **`session_ctx_kb` (trần ngân-sách context-phiên) = 64 — OWNER CHỐT TƯỜNG-MINH @S146.** Canonical = [`memory-budget.json`](../agent-memory/memory-budget.json) → `session_ctx_kb` (+ `_session_ctx_kb_owner_set`); **B1 — KHÔNG chép số ra đây**, dòng này chỉ TRỎ. Đơn-vị **KB**, code đọc **nhân 1024**.
|
||||
🔴 **Vẫn là GHOST-WIRE, đừng đọc thành "đã wire":** đo @S146 **0 script đọc khoá** (hit duy-nhất trong `scripts/` là **comment** `nhip-no-probe.ps1:42`; đối-chứng `pull_warn_days` **có** reader thật `:190`). Có số ≠ có hành-vi. Ai wire sau phải **đọc khoá**, không hardcode.
|
||||
|
||||
## Phase 1 — READ (load context)
|
||||
|
||||
@ -94,7 +120,7 @@ Em main đọc `.claude/WAL.md` (sổ mạch-việc-dở H22 — ghi-đè ≤40
|
||||
|
||||
## Phase 2 — AUDIT (state check)
|
||||
|
||||
### 2.1 Sub-agent state (topology — **10 product/quality + monitor INFORM-only (H1 · H2 · 2×H24 · 3×trio-memory)**; số vai canonical → [`docs/STATUS.md`](../../docs/STATUS.md) §Sub-agents, B1 KHÔNG chép số ở đây)
|
||||
### 2.1 Sub-agent state (topology — **10 product/quality + monitor INFORM-only (H1 · H2 · 2×H24 · 3×trio-memory · 3×round-KIỂM `tooling-harvest-audit`/`h24-audit`/`sleep-audit` S145)**; số vai canonical → [`docs/STATUS.md`](../../docs/STATUS.md) §Sub-agents, B1 KHÔNG chép số ở đây)
|
||||
- Check TOÀN roster đã spawn chưa:
|
||||
- 🟦 **investigator-codebase** — internal SQL/EF/grep/reference mirror audit
|
||||
- 🟦 **investigator-api** — external docs/CVE/lib/cross-project reference
|
||||
@ -132,7 +158,10 @@ Em main đọc `.claude/WAL.md` (sổ mạch-việc-dở H22 — ghi-đè ≤40
|
||||
|
||||
> Read-side "vật-chất-tối": archive `agent-memory/<sub>/archive/*.md` KHÔNG vào RAG. Inject **mục-lục** (`archive/_INDEX.md`), nội dung verbatim + `.gist.md` đọc-theo-nhu-cầu. "Inject tấm bản-đồ, KHÔNG inject lãnh-thổ."
|
||||
|
||||
- **🌙 Sleep-check (Harness-10b, S72):** trong lúc đọc `memory-budget.json` (cùng file budget-audit), lấy `last_sleep_at` → nếu `null` HOẶC `today − last_sleep_at ≥ 7 ngày` → **INFORM gợi-ý** chạy `/sleep-recovery-memory-l2 <agent|all>` (nén L2 verbatim→gist additive). 🔴 **KHÔNG auto-run** — anh consent mới chạy. **+ Byte-display (Item 8/M-10 S135):** khi INFORM fire → in kèm **tổng byte `agent-memory/*/archive/<period>.md` CHƯA có `.gist.md`** (match PREFIX kỳ; đo TƯƠI `(Get-Item).Length` — 🔴 CẤM `Get-Content`-đếm, bẫy encoding E-010; baseline 17-07 kỳ `2026-07` ≈183KB/5 file [ví-dụ-lịch-sử — kỳ 2026-07 đã gist @S140→chưa-gist ~0]) → anh nhìn số rồi **tự ĐẶT ngưỡng byte** nếu muốn chuyển hẳn sang trigger-theo-byte; 🔴 **KHÔNG bịa số** (giữ INFORM 7-ngày — DP-5 quyền owner cục-bộ B1 §3.4).
|
||||
- **🌙 Sleep-check — 🔄 ĐỔI TRIGGER @S144 (adap đợt-11, owner chốt O-6 + số):** chạy `powershell.exe -ExecutionPolicy Bypass -File scripts/distill-shard-probe.ps1` → in `SHARD-PROBE: pending=<n> | nguong=<m> => KEU|IM`. **KÊU → INFORM gợi-ý** chạy `/sleep-recovery-memory-l2 <agent|all>`. 🔴 **KHÔNG auto-run** — anh consent mới chạy.
|
||||
- 🔴 **Trigger = ĐẾM VẬT THẬT** (số shard `archive/<period>.md` chưa có `.gist.md` cặp đôi), **KHÔNG còn ngày-lịch**. Ngưỡng đọc LIVE từ `memory-budget.json → distill_trigger.min_pending_shards` (**B1 — CẤM chép số vào đây**).
|
||||
- 🔴 **SHARD loại trừ `_INDEX.md` + `*.gist.md`** — bộ đếm đầu tiên của lead ra 20, trong đó **5 là `_INDEX.md`** ⇒ 25% dương-giả; số thật 15. Fault-inject 6/6 2-chiều (0/6/7-biên/8 + 2 ca anti-dương-giả).
|
||||
- 🧊 **Dòng cũ `today − last_sleep_at ≥ 7 ngày` = GHI-CHÚ PHỤ, KHÔNG còn là trigger.** Đảo có chủ đích @S144 2026-07-22, chữ-ký = anh (owner), qua 2 cửa tường minh: O-6 chọn cơ-chế + trả lời sau chốt SỐ. Lý do: ngày-lịch = proxy-giả (`auto-toan-vong:21-27`), và trái chính mark Active-High `RC-pqhuy1987-20-06-2026-10-29-11` (age = false-proxy). `last_sleep_at` **giữ lại** làm dấu-thời-gian tham chiếu, không dùng để quyết. **+ Byte-display (Item 8/M-10 S135):** khi INFORM fire → in kèm **tổng byte `agent-memory/*/archive/<period>.md` CHƯA có `.gist.md`** (match PREFIX kỳ; đo TƯƠI `(Get-Item).Length` — 🔴 CẤM `Get-Content`-đếm, bẫy encoding E-010; baseline 17-07 kỳ `2026-07` ≈183KB/5 file [ví-dụ-lịch-sử — kỳ 2026-07 đã gist @S140→chưa-gist ~0]) → anh nhìn số rồi **tự ĐẶT ngưỡng byte** nếu muốn chuyển hẳn sang trigger-theo-byte; 🔴 **KHÔNG bịa số** (giữ INFORM 7-ngày — DP-5 quyền owner cục-bộ B1 §3.4).
|
||||
|
||||
- Đọc `.claude/agent-memory/memory-budget.json` → so kích-thước THẬT `_INDEX.md` mỗi sub vs cap. Nếu cắt-cho-vừa-ngân-sách đang rớt dấu-mốc quan trọng → **bump budget** (chốt-chặn chống "quên chỉnh ngân sách"). Đo lại bằng `scripts/measure-agent-memory.ps1` (seed-by-measure — KHÔNG đặt cap bằng số tưởng tượng).
|
||||
- L1 over-cap → curate L1→L2 (byte-exact additive) + build/refresh `_INDEX.md` (con-trỏ **substring** sha-keyed, fallback Ctrl-F) + `<period>.gist.md` (nén 4-field, `distill-gen` counter, verbatim FROZEN). Rollout đầu: 4 over-cap sub (S70).
|
||||
@ -210,7 +239,9 @@ ngược lại → counter += 1 ; last_ticked_session = S<nn> ; last_ticked_head
|
||||
|
||||
**(d) JUMP:** một class trong `lead_self_audit.flag_classes` lặp **≥ `jump_on_class_repeat`** lần → **kéo audit tới sớm**, bất-kể counter.
|
||||
|
||||
**(e) BÁO dòng-nợ 4-vế (nâng dòng H24 cũ — Item 2 S135):** gọi `powershell.exe -ExecutionPolicy Bypass -File scripts/nhip-no-probe.ps1` → in **1 dòng** `NHIP-NO: kiem light a/e deep b/f <ok|OVERDUE:…> | tran-bo-nho x over-cap | run-chua-gom y` (vế-1 nhịp-kiểm = `counter/light/deep/OVERDUE` thay dòng H24 cũ). 🔴 **probe KHÔNG chặn**: lỗi → in `probe-loi (khong chan)` → đi tiếp. OVERDUE(light|deep) → **INFORM anh** + đề-xuất spawn vai H24 tương-ứng. 🔴 **KHÔNG auto-run** — anh consent mới chạy (giống sleep-check §2.1.2).
|
||||
**(e) BÁO dòng-nợ 4-vế (nâng dòng H24 cũ — Item 2 S135):** gọi `powershell.exe -ExecutionPolicy Bypass -File scripts/nhip-no-probe.ps1` → in **1 dòng** `NHIP-NO: kiem light a/e deep b/f <ok|OVERDUE:…> | tran-bo-nho x over-cap | run-chua-gom y` (vế-1 nhịp-kiểm = `counter/light/deep/OVERDUE` thay dòng H24 cũ). 🔴 **probe KHÔNG chặn**: lỗi → in `probe-loi (khong chan)` → đi tiếp. OVERDUE(light|deep) → 🔴 **SPAWN AUTO cặp H24 NGAY, KHÔNG consent (owner chốt @S146 "3 → auto"; THAY luật era-S122 "anh gật mới chạy")**. Luật sống canonical ở [`session-end`](session-end.md) §L.b(j)(ii) — **B1, mục này chỉ ÁP, không chép phạm-vi**.
|
||||
🔸 **Phạm-vi 1 dòng (chống đọc nới):** gỡ **cổng NGƯỜI**, **giữ cổng NHỊP** (`h24_cadence`) ⇒ auto **khi tới nhịp**, KHÔNG phải mỗi phiên. Khác bookend-hub (hub bỏ counter) — SE chưa theo nhánh đó.
|
||||
⚠️ **KHÁC sleep-check §2.1.2** (vẫn CONSENT) và **KHÁC trio §2.1.9** (vẫn CONSENT) — 3 cổng nay **không còn cùng khuôn**, đừng suy một ra ba.
|
||||
|
||||
🔴 **Số nhịp = quyền anh.** Bước này **ĐỌC** `h24_cadence`, **KHÔNG** ghi. **CẤM hardcode nhịp ở đây** — copy số vào doc dẫn-xuất chính là drift mà single-source sinh ra để chặn (detector `governance-detectors.ps1` H24-2 **fail-loud** nếu key thiếu, **không** giả-định default).
|
||||
> 🟡 **Honest-caveat mang theo khi báo hub:** hub nói rõ *"số của các em = config của các em; ĐỪNG chép 3 số này"*. SE chọn **cùng 6/15/3** là **điểm khởi-đầu anh CỐ Ý chọn**, KHÔNG phải chép vô-thức. **Chỉnh lại sau chu-kỳ-2 CỦA SE** (deep-audit lần 2, xem .session-counter.json last_audit). Hub đã GỠ counter (bookend 07-15, sha 85bf89ca) → ví-dụ 6/15/3 "ở nguồn" = lịch-sử, KHÔNG còn mốc hub để so; delta hub hứa từ run-2 KHÔNG BAO GIỜ có (hub gỡ trước run-2) — **chưa ai được bán câu "đã chứng minh hiệu-quả"**. ✅ **Ratified 2026-07-17:** anh mark cổng reply `e50a4bd0` (2026-07-16-ai_infra-to-se-reply-adap); canonical = `memory-budget.json → h24_cadence._owner_ratified` (B1 — wording sống ở đó, đừng chép lại đây).
|
||||
@ -219,7 +250,7 @@ ngược lại → counter += 1 ; last_ticked_session = S<nn> ; last_ticked_head
|
||||
|
||||
> Trục = **CHÍNH HỆ MEMORY** (độ-giữ · hành-động · đúng-spec) — **KHÁC** H1 tooling-freshness · H2 harvest-integrity · H24 soi-LEAD · reviewer chấm-diff. 3 vai read-only INFORM-only propose-only, chạy **TUẦN TỰ**: `harness-eval` (con ĐO) → `harness-refine` (con ĐỀ-XUẤT) → `harness-audit` (con KIỂM). Contract từng vai = canonical ở [`.claude/agents/harness-{eval,refine,audit}.md`](../agents/harness-eval.md) (B1 — **KHÔNG chép contract vai vào đây**).
|
||||
|
||||
- **(a) 🔴 CONSENT-GATED — KHÔNG auto-run** (cùng khuôn sleep-check §2.1.2 + H24 §2.1.8(e)): em-main **IN đề-xuất 1 dòng** dạng `trio-memory: de-xuat chay eval->refine->audit @S<nn> (consent?)` → **anh gật mới chạy**. Không gật ⇒ KHÔNG chạy (KHÔNG hỏi vòng 2, KHÔNG "chạy thử cho nhanh").
|
||||
- **(a) 🔴 CONSENT-GATED — KHÔNG auto-run** (cùng khuôn **sleep-check §2.1.2** — 🧊 **@S146 GỠ vế "+ H24 §2.1.8(e)"**: H24 nay **AUTO khi tới nhịp**, viện nó làm khuôn consent là **SAI**): em-main **IN đề-xuất 1 dòng** dạng `trio-memory: de-xuat chay eval->refine->audit @S<nn> (consent?)` → **anh gật mới chạy**. Không gật ⇒ KHÔNG chạy (KHÔNG hỏi vòng 2, KHÔNG "chạy thử cho nhanh").
|
||||
- **(b) 🔴 TUẦN TỰ, CẤM song song:** **3 spawn RIÊNG** đúng thứ-tự eval → refine → audit. **KHÔNG dùng `parallel()` của `hmw.js` cho bộ-ba** — refine đọc output eval, audit chấm output của cả 2; chạy song song ⇒ chấm **bản cũ** ⇒ verdict vô-nghĩa.
|
||||
- **(c) Lead scribe NGAY (single-writer):** return từng con → lead ghi `.claude/workflows/runs/<run-id>/harness-{eval,refine,audit}-return.md` **ngay khi con đó trả**, **KHÔNG đợi đủ 3**. Lý-do: 3 vai **không có Write/Edit** (chặn-bằng-thiếu-tool) nên tự-ghi-đĩa bất-khả; phiên chết giữa chừng ⇒ mất return (bài-học vòng-1 S141).
|
||||
- **(d) PIN đích-danh (fail-closed):** `harness-refine` nhận **path** `…/harness-eval-return.md`; `harness-audit` nhận **path run-folder** đang chấm. 🔴 Pin **missing/rỗng ⇒ vai TỪ-CHỐI / TRƯỢT** — **CẤM** để vai tự đi tìm "run mới nhất" (vớ bản cũ ⇒ **ĐẠT-ảo**).
|
||||
|
||||
Reference in New Issue
Block a user