Files
solution-erp/.claude/workflows/runs/2026-07-25-S149-adap-backlog/sub-apply-L6.md
pqhuy1987 398d343403
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m48s
[CLAUDE] Docs: S149-S150 closeout — bookend lượt đầu end-to-end (hình B) + 2 arc đóng + tally #53 chốt 45
- Arc-1 hội-tụ-bookend (rename 5 vai + 4 máy PS1 + C9-C12) + arc-2 adap-backlog 23/23 + probe Opus-5 khép (S149)
- Bookend @close S150: wave 6 vai (4 đo + 2 KIỂM) → 20 FLAG disposition từng-dòng; ring1 31/34-ĐẠT, ring2 10/10 + M-1 view-stale-role-desc
- Khoá _frozen_until_owner CẮM trước h24-signal-write (frozen-held in thật); 9 class FIRE; JUMP dải {5,4,4,3}+asym{1,4} chờ anh #21
- STATUS bump CURRENT S149-S150 + 2 khối Recently Done; HANDOFF segment mới + re-stamp đủ-slug + (17)(18)(19) lật + (14) viết lại + 6 slot #21-#26
- K2 posture-A @engine PHẦN K + K5 luật TÁCH vòng-đo-mới @session-end (O-2/O-3 OWNER-DELEGATED execute)
- sleep-doc derive-monitor-set (bỏ hardcode 4-tên); spawn-model-audit desc/comment fix; h24-signal-write param-default fix (first-live bug)
- M9 on-behalf ×3 (tooling + inv-cb F3 + reviewer F4); ring1/ring4 nhà seed; ring2 3 cite-dead vá
- Sổ garble #53 derive-from-body chốt 45 + sub-class ngược-#53/skeleton-ruột-rỗng (ghi-đĩa CẦN-KHÔNG-ĐỦ)
- Session-log S149-S150 (Sàn-5 đăng-ký 6 run=) + closeout-synthesis dạng-1

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 12:17:05 +07:00

142 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# sub-apply-L6 — report #23 model-opus-5 · C-b detector engine-bypass · enrich h10-S72
> 🔴 **PROBE-EVIDENCE (Khoản 2 broadcast opus-5) — ghi LƯỢT 1, TRƯỚC mọi việc khác:**
> Lane L6 này được spawn với `tier:'opus'`. Lời **tự-giới-thiệu hệ thống** của chính lane này, verbatim:
> `You are powered by the model named Opus 5 (1M context). The exact model ID is claude-opus-5[1m].`
> ⇒ alias `tier:'opus'` **resolve ra `claude-opus-5[1m]`** tại thời điểm 2026-07-25.
> **Caveat honest:** đây là **self-report của model** (nguồn = system-prompt của chính lane), KHÔNG phải đọc từ API-response-metadata. Đối chứng độc lập = `spawn-model-audit.ps1` do **lead chạy SAU wave** — lane này KHÔNG tự chạy và KHÔNG claim kết quả audit đó.
---
## 0. Trạng thái
- [x] Việc 1 — report #23`docs/governance/adap-reports/2026-07-25-Governance-model-default-opus-5-max.md` (**mới**, 5 trường LOCK)
- [x] Việc 2 — C-b detector `C12 - raw-engine-bypass``scripts/governance-detectors.ps1` (+nhãn INFORM-ONLY) · fault-inject **6 ca**
- [x] Việc 3 — enrich h10-S72 → `docs/governance/adap-reports/2026-06-18-Governance-harness-10-flat-refine-checklist-v2.md` (**+1 dòng**, cuối file)
## 1. Ghi chú lệch spec (khai trước, honest)
- Prompt lane ra lệnh **"tạo `sub-apply-L6.md`"** (LƯỢT 1-2, đích danh L6); footer RUN-TRACE generic lại ghi `sub-task-5.md`.
- Xử lý: theo **lệnh đích-danh lane** (mới + cụ thể hơn) → ghi DUY NHẤT file này; khai mismatch trong return. Cả 2 path đều nằm trong run-folder ⇒ isolation B6 không vi phạm.
- Lệch thứ 2 — **enrich ghi CUỐI file, không chèn header**: xem §5.
## 2. Việc 1 — report #23 (nấc `executed`, 4 lớp)
Report: `docs/governance/adap-reports/2026-07-25-Governance-model-default-opus-5-max.md` — đủ 5 trường `adap-report.md:14-19`.
| Lớp | Evidence file:dòng | Nấc |
|---|---|---|
| ① lead pin | `~/.claude/settings.json:11` = `"model": "claude-opus-5[1m]"` (global, ngoài git) | executed + runtime-effective (probe) |
| ② 2-key TIER2 | `.claude/workflows/hmw.js:62` `TIER2_EXPECTED_FULL_ID = 'claude-opus-5'` · `scripts/spawn-model-audit.ps1:100` `$OWNER_RATIFIED_TIER2_FULL_ID = 'claude-opus-5'` (ràng 2-key: `spawn-model-audit.ps1:91-94`) | executed-file, **uncommitted** |
| ②b bucket legacy | `spawn-model-audit.ps1:101` `$TIER2_LEGACY_FULL_ID = 'claude-opus-4-8'` | 🔴 **ghost-wire** — §4 |
| ③ BƯỚC 0.6 | `.claude/commands/session-start.md:41` (default Opus-5-MAX kể cả lead · Fable per-lệnh · báo-phiên rút gọn) `:42` lineage `:44` outage giữ cấu-trúc | verified-pending (command `.md` no hot-reload) |
**Git evidence (KHÔNG bịa sha):** `git diff --stat` 3 file = **15 insertions / 4 deletions**; `git status --short` cả 3 = ` M` (chưa commit). 2 commit hôm nay đều là `wal: flush`**cấm cite** (luật `adap-reports/2026-07-18-…h23-precedence-tested-update.md:26` — squash làm `wal:`-sha dangling).
**Probe khớp hằng-số:** self-report `claude-opus-5[1m]` hậu-tố `[1m]` (gotcha #37; `spawn-model-audit.ps1:210-212` bắt riêng hậu-tố này) = `claude-opus-5` = **đúng giá trị hằng-số lớp ②**. Hai hướng đo độc lập khớp nhau.
**Đóng nhãn:** khoản 4.1 `goi-chot-owner-nam-khoan` mang nhãn **BLOCKED-by-O-5** → lớp ①+③ đóng.
## 3. Việc 2 — C-b detector `C12 - raw-engine-bypass`
### 3.1 Nguồn sàn (verbatim hub, đọc trực tiếp)
`broadcasts/inbox/ai_infra/2026-07-03-ai_infra-to-se-batch13-ack-stamp-and-answers.md:27-29`. Tiêu đề `:27` = *"Trả lời câu hỏi 1 — detector 'workflow chạy ngoài engine chuẩn' có bắt buộc không?"*. Đáp `:29` verbatim:
> **Có, ở mức sàn-chức-năng; còn hình thức thì SE tự quyết.** Sàn = dự án phải CÓ một cách phát hiện được đường chạy workflow không đi qua engine chuẩn của mình (vì đường đó bỏ qua toàn bộ enforce về harvest ký ức + vai + checkpoint — đây là lớp lỗi từng gây tụt chất lượng ký ức toàn fleet, đã RCA). Hình thức đạt sàn thì tự chọn: grep transcript, quét ledger-vs-run-folder, hay "untracked-run detector nhẹ" như SE đề xuất — đều đạt, miễn chạy đều mỗi cuối phiên.
⇒ Vô hiệu lý-do TAILORED-OUT của S72 (`adap-reports/2026-06-18-…flat-refine-checklist-v2.md:46`: *"SE chạy qua Anthropic Workflow tool (KHÔNG có CLI-launcher bypass-surface)"*). Lý-do đó đã bị **đĩa bác bỏ**: `docs/changelog/sessions/2026-07-15-S119-adap-6-broadcast-spec-v3.md:69`*"Đồ-thị THẬT = 3 đường (`hmw.js` gate được · raw Workflow · raw Agent) ⇒ 2 đường sau KHÔNG gate được = kẽ CÒN-LẠI"* (+ `:128`).
### 3.2 Hình thức chọn + code
Chọn **item 1 của menu hub = session-log sweep** (rẻ nhất, chạy trong chính net này ⇒ "chạy đều mỗi cuối phiên").
Vị trí: `scripts/governance-detectors.ps1` — block `C12` chèn NGAY TRƯỚC section `Summary`; khuôn copy từ C9/C10/C11 (banner WHY + WHAT + `[!] KHAI THAT` limits + FROZEN-GATE + `Write-InformFlag` + dòng tổng `-- MEASURED NOTHING` khi window rỗng).
- **Luật bắt:** session-log có dòng mention spawn (`raw Workflow` | `raw Agent` | `raw-Agent` | `wf_`) **mà CẢ FILE không có dòng nào chứa `run=`** → InformFlag.
- **`run=` là gì (đo trên đĩa, không đoán):** token đăng-ký của dòng `wf:` — dạng thật `wf: <label> run=<run-id> runId=wf_<hex>`, ví dụ `docs/changelog/sessions/2026-07-16-2250-S129-adap-errata-eol.md:8`.
- **Hằng số land:** `$C12_LAND_DATE = [datetime]'2026-07-25'` — chỉ soi session-log `LastWriteTime >= ` ngày này.
- **Nhãn cuối file:** đã thêm `+ C12 raw-engine-bypass` vào dòng `INFORM-ONLY (new nets …)`.
**Vì sao PHẢI có frozen-gate — số đo thật (dry-run toàn bộ 148 session-log, 2026-07-25):** `grep -rl "wf_"` = **36 file**, `grep -rl "run="` = **9 file****29 file sẽ nổ cờ ngày đầu**. 29 dòng LOW ngày đầu = cách nhanh nhất để một net bị bỏ qua. Đã ghi con số này vào banner.
**Chống citation-trap (bài học "doc mô tả anti-pattern tất yếu chứa chính mẫu đó"):** 2 chốt use⟂mention, **cả 2 nghiêng về im lặng**: (a) bỏ qua dòng trong khối ``` ``` ``` fence; (b) bỏ qua dòng có chứa `C12` hoặc `governance-detectors` (self-reference). **Giá phải trả đã khai trong banner:** một bypass THẬT viết trên dòng có nhắc `C12` sẽ im — ca F dưới đây chứng đúng cái giá đó, không giấu.
**3 LIMIT khai trong banner (không phải bug, là biên):** (1) guard mức FILE — 1 dòng `run=` bất kỳ làm im cả file ⇒ phiên đăng-ký run A rồi spawn B raw KHÔNG bắt được; (2) net đọc **lời tự-khai của phiên** — bypass không ai ghi lại thì vô hình (dạng transcript-grep mới phủ, đắt hơn nhiều) ⇒ **C12 xanh ≠ không có bypass**; (3) không chứng run-folder tồn tại, chỉ đọc token đăng-ký.
### 3.3 Fault-inject — 6 ca, 2 chiều + 3 biên (cây tạm `-RepoRoot`, KHÔNG chạm repo)
Cây tạm: `…/scratchpad/fi/<ca>/docs/changelog/sessions/…`.
| Ca | Nội dung inject | Kỳ vọng | ĐO ĐƯỢC |
|---|---|---|---|
| A-dirty | `wf_deadbeef-111`, **0** `run=` | FLAG | ✅ `[DETECTOR] LOW \| docs/changelog/sessions/2026-07-25-S999-inject.md:3 \| raw-engine-bypass … ('wf_')` · `C12 = 1` |
| B-clean | cùng file + dòng `wf: … run=2026-07-25-S999-fake runId=wf_…` | im | ✅ `[ok] … carries a run= registration line` · `C12 = 0` |
| C-mention | `raw Workflow` + `wf_…` **nằm trong ``` fence**, 0 `run=` | im (use⟂mention) | ✅ `[ok] … no unregistered spawn mention` · `C12 = 0` |
| D-frozen | file dirty y hệt A nhưng mtime **2026-07-20** | im + nói rõ mù | ✅ `[note] no session log with mtime >= 2026-07-25 - window EMPTY, nothing measured (not a green)` · `C12 = 0 -- MEASURED NOTHING` |
| E2-rawtoken | chỉ `raw Workflow` + `raw-Agent`, **0** chuỗi `wf_` trong file (sanity-check `Select-String` = 0 hit) | FLAG qua nhánh token chữ | ✅ `…S997.md:3 … mentions a spawn ('raw Workflow')` · `C12 = 1` |
| F-selfmention | dòng bypass thật NHƯNG có chữ `C12`, 0 `run=` | im (**giá đã khai**) | ✅ `[ok] … no unregistered spawn mention` · `C12 = 0` |
🔸 **Ca E lần 1 SUÝT đọc nhầm thành PASS:** tiêu đề file test của tôi có chuỗi `wf_` (viết "no wf_ id") ⇒ cờ nổ ở `:1` qua nhánh `wf_`, **không** chứng được nhánh `raw Workflow`. Phát hiện vì đọc kỹ token in ra (`'wf_'` ≠ kỳ vọng). Đã dựng lại E2 với sanity-check đếm `wf_` = 0 rồi mới tin. (Đúng lớp *"phép trích RỖNG đọc thành sạch"* — test xanh vì lý do sai.)
### 3.4 Repo thật — TOTAL giữ nguyên
| Chạy | TOTAL FLAGS | INFORM | C12 |
|---|---|---|---|
| **Baseline** = `git show HEAD:scripts/governance-detectors.ps1` (bản chưa có C12), `-RepoRoot` = repo thật | **46** | 0 | — |
| **Sau edit** (bản có C12), cùng repo | **46** | 0 | **0** `-- MEASURED NOTHING (no session log at/after the land date)` |
⇒ TOTAL **không đổi** (C12 chỉ đi qua `Write-InformFlag` → `$script:InformCount`, không chạm `$script:FlagCount`). C12 = 0 **vì window rỗng** (session-log mới nhất trên đĩa = `2026-07-24-1800-S148…`), KHÔNG phải vì "đã kiểm và sạch" — dòng tổng nói thẳng điều đó.
## 4. 🔴 PROPOSE-diff (KHÔNG tự áp — `spawn-model-audit.ps1` ngoài tập file được giao)
**Phát hiện khi verify lớp ②b, đo được, không phải nghi ngờ:**
```
grep -c "TIER2_LEGACY_FULL_ID" scripts/spawn-model-audit.ps1 -> 1
grep -n "TIER2_LEGACY_FULL_ID" scripts/spawn-model-audit.ps1 -> 101:$TIER2_LEGACY_FULL_ID = 'claude-opus-4-8'
```
1 lần xuất hiện = **chính dòng định-nghĩa**; **0 nơi đọc** ⇒ ghost-wire dạng *config-key defined-but-unread* (lớp S100).
**Hệ quả hành-vi (đọc code, không suy diễn):** bộ phân-loại `:299-320` xử theo family — record resolve `claude-opus-4-8` **nằm trong** `$TIER2_FAMILY_PREFIX = 'claude-opus-'` (`:300`) và **khác** `$expected = 'claude-opus-5'` ⇒ vào nhánh `:309-315` `Write-Flag 'HIGH'` *alias-drift* → **cộng vào TOTAL**. Tức **ngược** với Khoản 1.4 mà chú-thích `:97-98` tuyên bố ("legacy bucket, đếm riêng, KHÔNG cờ drift").
**Không phóng đại — 2 điều làm nhẹ:** (i) Section B **chỉ soi phiên HIỆN TẠI** (`:258` *"scope = CURRENT session only, by design"*) ⇒ record cũ không bị lôi ra; (ii) vì vậy cờ giả chỉ nổ khi **một lane trong phiên đang chạy** resolve `claude-opus-4-8`.
**Nhưng KHÔNG phải giả-định:** đó **chính là đường outage** mà `session-start.md:44` chỉ định (`/model claude-opus-4-8[1m]` khi Opus 5 không resolve). Outage ⇒ audit cùng phiên sẽ báo HIGH "alias-drift" cho đúng cái mà Khoản 1.4 muốn bucket.
**Đề xuất tối thiểu (lead áp, 1 nhánh):** trong `foreach ($d in $distinct)`/nhánh `$bad` ở `:308-316`, tách trước:
```powershell
$legacy = @($inFamily | Where-Object { $_ -clike ($TIER2_LEGACY_FULL_ID + '*') })
$bad = @($inFamily | Where-Object { $_ -cne $expected -and $_ -cnotlike ($TIER2_LEGACY_FULL_ID + '*') })
# $legacy -> verdict 'legacy-bucket (Khoan 1.4, KHONG drift)', đếm riêng $legacyCount, KHÔNG Write-Flag
```
Hoặc — nếu owner thấy không đáng — **xoá hằng-số `:101`** để khỏi có key chết. **Chọn cái nào = quyền owner/lead**, lane không quyết.
## 5. Việc 3 — enrich h10-S72 (idempotent, 1 dòng)
- **Kiểm trước:** id `2026-06-18-Governance-h10-flat-detector-refine` **ĐÃ có** trong file, ở `:5` (`broadcasts adopted`) — **dạng văn xuôi**, không phải trường parse per-id. Trường `- **id:**` `:3` chỉ mang 1 id. ⇒ **KHÔNG phải NO-OP hoàn toàn**: giá trị thêm = **dạng để `/adap-audit` parse**, + errata C-b. Khai đúng vậy trong chính dòng thêm, không nói quá.
- **Đã thêm đúng 1 dòng** `- **also-covers-id (enrich @S149 …)**` — nội dung: (a) file này cũng là report của id `h10-flat-detector-refine`; (b) errata: khoản (b) TAILORED-OUT ở `:46` **hết hiệu lực từ 07-03** (cite hub `:27-29`) và **ĐÃ ĐÓNG @S149 bằng C12**; (c) `:46` giữ nguyên làm vết lịch sử, bản mới thắng.
- 🔴 **Ghi CUỐI file, KHÔNG chèn header — lý do có chủ đích:** chèn 1 dòng vào header sẽ đẩy **mọi dòng sau đó +1**, làm hỏng ngay các cite đang sống **trong chính wave này**: `sub-invest-backlog.md:15` cite `:46`, `spec-adap-backlog-25-07-2026.md`/mục-2 cite `:33`, và các lane L1-L5 **đang viết report song song** có thể cite tiếp. Ghi cuối file = **0 dòng dịch, 0 cite hỏng**. Nếu lead muốn đúng vị trí header, di chuyển sau khi wave đóng và re-anchor `:33`/`:46` → `:34`/`:47`.
- **Idempotent:** dòng có khoá `also-covers-id` — chạy lại thì grep khoá này thấy có ⇒ NO-OP.
## 6. Footprint (tự audit trước khi trả)
Đúng 4 file, không hơn:
| File | Loại |
|---|---|
| `docs/governance/adap-reports/2026-07-25-Governance-model-default-opus-5-max.md` | mới (report #23) |
| `scripts/governance-detectors.ps1` | sửa (C12 + nhãn INFORM-ONLY) — lane DUY NHẤT đụng |
| `docs/governance/adap-reports/2026-06-18-Governance-harness-10-flat-refine-checklist-v2.md` | +1 dòng cuối file |
| `.claude/workflows/runs/2026-07-25-S149-adap-backlog/sub-apply-L6.md` | sub-MD này |
KHÔNG chạm: `agent-memory/*` · MD canonical (CLAUDE/STATUS/agents/session-*) · sub-MD lane khác · `spawn-model-audit.ps1` (chỉ ĐỌC + propose) · `hmw.js` (chỉ ĐỌC). Cây fault-inject nằm **ngoài repo** (scratchpad), không dọn của lane khác (thấy `fi/` đã có file lạ mtime 09:22 — lane bạn đang dùng chung scratchpad; tôi chỉ tạo namespace riêng `fi/A-dirty|B-clean|C-mention|D-frozen|E2-rawtoken|F-selfmention`).
## 7. Không chắc / để lead quyết
1. **Thư gốc #23 VẮNG trên đĩa** (`find broadcasts -name "2026-07-2[3-5]*"` = 0 hit; file mới nhất inbox = 07-22) ⇒ sha `59ce1d0f` **không tái-tính được**, số Khoản kế thừa từ chú-thích của lead. Đề nghị lead copy thư vào `broadcasts/inbox/ai_infra/` + stamp-verify, rồi sửa mục 1 report (idempotent).
2. **C12 chưa từng bắt ca thật** — window rỗng ngày land. Phép thử thật đầu tiên = session-log S149 khi được ghi (nếu có `run=` thì im, đúng thiết kế).
3. **Ngưỡng/severity C12**: để INFORM-only, KHÔNG fold vào TOTAL — theo quy ước repo, fold + nâng severity là **post-triage owner-gated**, lane không tự quyết.
4. **Chốt self-mention (b)** là đánh đổi có giá (ca F). Nếu owner thấy giá đó quá đắt, gỡ `C12|governance-detectors` khỏi `$mentionRx` và chấp nhận net tự bắt chính doc mô tả nó.