[CLAUDE] Docs: S124 adap-wave AI_INFRA + owner worker-tier-pin (14 agent opus+effort:max) + user-memory relocate R6 + H24 dogfood
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m26s

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-15 23:17:45 +07:00
parent b764ac791a
commit 23bbe97f39
92 changed files with 2221 additions and 89 deletions

View File

@ -53,17 +53,17 @@ taskList: [ { role:'<vai anh gán>', tier:'opus', label:'lens-1', prompt:'…' }
{ role:'<vai anh gán>', tier:'opus', label:'lens-2', prompt:'…' }, ]
```
**Vì sao BẮT BUỘC** (`hmw.js:63-64` `resolveModel()`: `if (tier==='fable'||tier==='opus') return tier`):
- **Thiếu `tier`** role-có-frontmatter → `model: inherit` → lane ăn **model của LEAD**.
-**lead = Fable** thì ensemble thành **N× Fable****vừa đốt quota top-model gấp N lần, vừa phá đúng lý-do lệnh tồn-tại** (ensemble tier-2 RẺ để **thay** 1 lượt Fable đắt; cặp `/fable-real` mới là đường single-top-model).
- **lead = Opus** thì `tier:'opus'` ≡ inherit ⇒ **KHÔNG phân-biệt được** ⇒ lỗi này **vô-hình** ở phiên lead=Opus và **chỉ lộ khi Fable UP**. Đúng lỗi 🟥 reviewer bắt @S108.
**Vì sao GIỮ (đổi nấc S124)** (`hmw.js` `resolveModel()`: `if (tier==='fable'||tier==='opus') return tier`):
- 🔴 **N×Fable-risk NAY được PIN che:** frontmatter đổi `inherit``opus` (worker-tier-pin S124) ⇒ **thiếu `tier`** role-có-frontmatter → `model: opus` → lane = **opus (tier-2), KHÔNG còn ăn lead**. Vậy dù lead=Fable, lane vẫn opus (KHÔNG còn N×Fable). ⇒ `tier:'opus'` nay = **belt-and-suspenders** (explicit-is-better), KHÔNG còn là chốt-chặn DUY-NHẤT như thời all-inherit.
-Lỗi cũ 🟥 reviewer @S108 (lead=Fable ensemble N×Fable) = **đã vá bằng pin**, giữ mô-tả làm lịch-sử.
- 🔴 **Lỗ THẬT còn lại = `tier:'fable'` của `/fable-real`** (KHÁC frontmatter opus) → H23-precedence (xem dưới): nếu frontmatter thắng, `/fable-real` KHÔNG lên Fable được.
### 🔴 CHƯA VERIFY — precedence spawn-param ⟂ frontmatter (H23 §2(2), khai bắt-buộc)
**Ở SE cả hai ĐANG cùng hiện-diện:** `hmw.js` trả alias vào `agent(…, {model:…})` **TRONG KHI** frontmatter **toàn roster** = `inherit`. **Chưa ai test bên nào THẮNG** (`hmw.js:46-49` mang cùng ghi-chú này).
🔴 **Nếu frontmatter thắng ⇒ TOÀN BỘ fix GAP#6 = NO-OP** ⇒ floor-2 vẫn thủng khi Fable UP.
**Phép thử phân-biệt được (H23 §6 #3):** chạy 1 lane `tier:'opus'` **KHI lead=Fable** → đọc model **THỰC-TẾ resolve** → lệch ⇒ báo anh. ⚠️ **DEFER tới phiên lead=Fable** — lead=Opus thì 2 nhánh ra **cùng kết-quả**. 🔴 Khai thẳng: **CHƯA test**, đừng bán quá nấc.
**Đang có (PA-2, anh chốt O1) = 2 lớp GIÁN-TIẾP, KHÔNG thay được phép thử trên:** PA-2a hằng-số `TIER2_EXPECTED_FULL_ID = 'claude-opus-4-8'` (`hmw.js:50`) + PA-2b `scripts/spawn-model-audit.ps1` so resolved-vs-expected. 🔸 Neo-tại-spawn = **bất-khả-thi** (param chỉ nhận enum alias) — và **chính mệnh-đề đó cũng CHƯA thử** truyền full-id xem có bị từ-chối không (fix#8a).
**Ở SE cả hai ĐANG cùng hiện-diện:** `hmw.js` trả alias vào `agent(…, {model:…})` **TRONG KHI** frontmatter **toàn roster** = **`opus`** (worker-tier-pin S124). **Chưa ai test bên nào THẮNG** (`hmw.js:44-52` mang cùng ghi-chú này).
🔴 **Nếu frontmatter (opus) thắng ⇒ `tier:'fable'` của `/fable-real` = NO-OP** ⇒ KHÔNG escalate Fable được (owner dùng `/model` tay). *(`tier:'opus'` thì trùng frontmatter, vô-hại.)*
**Phép thử — NAY TESTABLE kể cả lead=Opus (đổi từ DEFER):** vì frontmatter=`opus``fable`, chạy 1 lane `tier:'fable'` → đọc model THỰC-TẾ resolve: `fable`=spawn thắng · `opus`=frontmatter thắng — **phân-biệt được bất-kể lead**. ⚠️ **CHỜ RESTART** kích-hoạt frontmatter mới rồi chạy (phiên kế). 🔴 Khai thẳng: **CHƯA test lượt này**, đừng bán quá nấc.
**Đang có (PA-2, anh chốt O1) = 2 lớp GIÁN-TIẾP, KHÔNG thay được phép thử trên:** PA-2a hằng-số `TIER2_EXPECTED_FULL_ID = 'claude-opus-4-8'` (`hmw.js:53`) + PA-2b `scripts/spawn-model-audit.ps1` so resolved-vs-expected. 🔸 Neo-tại-spawn = **bất-khả-thi** (param chỉ nhận enum alias) — và **chính mệnh-đề đó cũng CHƯA thử** truyền full-id xem có bị từ-chối không (fix#8a).
> ⚠️ **Grep `tier:'opus'` ≥1 hit = ĐIỀU-KIỆN CẦN, KHÔNG ĐỦ** — nó chỉ đo **CHỮ trong file**, không đo runtime ⇒ **Goodhart-able 100%**.
## 🔴 Floor model-tier v3 + lead-discipline

View File

@ -40,16 +40,16 @@ Em main đọc `.claude/hmw-mode.on` → **BÁO ngay đầu response** (anh kh
Em main xác nhận **lead model resolve được** đầu session. **Lead = frontier-class do ANH CHỌN per-session** {**Fable 5 (1M) Max** | **Opus 4.8 (1M) Max**} — **owner-choice hợp-lệ CHÍNH THỨC** (đổi giữa phiên OK, ghi 1 dòng session-record); **CẤM lớp model thấp (Sonnet/Haiku-class) ngồi ghế lead** (§A1 floor).
**Outage-path (H5, GIỮ):** lead-model DOWN = lỗi `"Model isn't available — claude-fable-5[1m]"` → fallback **`/model claude-opus-4-8[1m]`** (Opus 4.8 · 1M · Max — top-tier, KHÔNG hạ §A1; **KHÔNG sửa frontmatter agent**promote `inherit` tự theo lead → two-tier tạm collapse single-tier Opus, **revert-FREE**). Phản-xạ THỦ-CÔNG (không hook tự-switch).
**Outage-path (H5, GIỮ):** lead-model DOWN = lỗi `"Model isn't available — claude-fable-5[1m]"` → fallback **`/model claude-opus-4-8[1m]`** (Opus 4.8 · 1M · Max — top-tier, KHÔNG hạ §A1; **KHÔNG sửa frontmatter agent**sub nay pin cứng `opus`+`effort:max` (worker-tier-pin S124) nên outage lead KHÔNG chạm sub; chỉ lead đổi Fable→Opus, **revert-FREE**). Phản-xạ THỦ-CÔNG (không hook tự-switch).
**Outage đóng:** phiên **ĐẦU TIÊN** sau đó em main hỏi anh **ĐÚNG 1 DÒNG** ("model hạng-nhất resolve lại — giữ hạng-hai hay đổi?"), **hỏi 1 lần, không lặp** (thay auto-revert cũ). **Flip-record từ nay gắn nhãn {owner-choice | outage}** khi ghi: **owner-chọn-hạng-hai ≠ outage → 0 caveat / 0 nghĩa-vụ revert**; chỉ outage-fallback mới mang caveat tạm-thời.
**Lịch-sử flip-chain đầy-đủ (S98→nay) = canonical [`docs/STATUS.md` §Sub-agents]** (🔴 S106 gộp 1-chain per anh-confirm — reader này KHÔNG enumerate/cập-nhật mỗi flip; chống churn 4-file/flip). **BƯỚC 0.6 probe MỖI phiên** xác-định runtime SỐNG (per-session — KHÔNG tin note phiên trước, KHÔNG steady-state).
> 🔴 **H23 note — LỖ CHƯA-TEST (khai bắt-buộc theo H23 §2(2), adopt S122).** Nguyên-văn broadcast đòi khai: *"thứ-tự ưu-tiên giữa **'tham-số tại spawn'** và **'pin ở tệp định-nghĩa'** khi **CẢ HAI cùng hiện-diện** — rất có thể **chưa từng được test**"*.
> **Ở SE, cả hai ĐANG cùng hiện-diện:** `hmw.js` trả alias → `agent(…, {model:…})` **trong khi** frontmatter toàn roster = `inherit` (H8 all-inherit). 🔴 **Chưa ai test bên nào THẮNG.**
> **Vì sao nghiêm-trọng:** nếu **frontmatter thắng** ⇒ mọi `tier:'opus'` per-task **= NO-OP** ⇒ floor-2 vẫn thng khi Fable UP — đúng lỗi reviewer đã bắt @S108.
> **Phép thử ĐÚNG (H23 §6 phép-thử-phá #3):** chạy 1 lane `tier:'opus'` **KHI lead=Fable** → đọc **model THỰC-TẾ resolve** → lệch ⇒ báo anh. ⚠️ **Lead=Opus thì KHÔNG phân-biệt được** (cả hai đường đều ra Opus) ⇒ **DEFER tới phiên lead=Fable**. 🔴 Khai thẳng: **CHƯA test**, KHÔNG giả-vờ đã test.
> **Ở SE, cả hai ĐANG cùng hiện-diện:** `hmw.js` trả alias → `agent(…, {model:…})` **trong khi** frontmatter toàn roster = **`opus`** (worker-tier-pin S124, KHÔNG còn inherit). 🔴 **Chưa ai test bên nào THẮNG.**
> **Vì sao nghiêm-trọng (đổi trọng-tâm S124):** frontmatter=opus nên `tier:'opus'` ≡ frontmatter (trùng, vô-hại). Lỗ THẬT nay = **`tier:'fable'` của `/fable-real`**: nếu **frontmatter (opus) thng** ⇒ `/fable-real` KHÔNG escalate Fable được (owner dùng `/model` chọn lead=Fable tay).
> **Phép thử ĐÚNG — NAY TESTABLE kể cả lead=Opus (đổi từ DEFER):** vì frontmatter=`opus`≠`fable`, chạy 1 lane `tier:'fable'` → đọc model THỰC-TẾ resolve: ra `fable`=spawn thắng, ra `opus`=frontmatter thắng — **phân-biệt được bất-kể lead** (khác thời all-inherit: inherit→lead làm 2 nhánh trùng khi lead=Opus). ⚠️ **CHỜ RESTART** kích-hoạt frontmatter mới rồi mới chạy phép thử (phiên kế). 🔴 Khai thẳng: **CHƯA test lượt này**, KHÔNG giả-vờ đã test.
> **Đang có (PA-2, anh chốt O1) = 2 lớp GIÁN-TIẾP, KHÔNG phải phép thử trên:** PA-2a hằng-số `TIER2_EXPECTED_FULL_ID` trong `hmw.js` + PA-2b `scripts/spawn-model-audit.ps1` so resolved-vs-expected. 🔸 Neo-tại-spawn = **bất-khả-thi** (param chỉ nhận enum alias `sonnet|opus|haiku|fable`) — và **chính mệnh-đề "chỉ nhận alias" đó cũng CHƯA thử truyền full-id để xem có bị từ-chối không** (fix #8a, anh đã ack hình-thức PA-2a+PA-2b).
## 📋 BƯỚC 0.6b — Registry-probe: RESTART rồi **VERIFY danh-sách agent** (broadcast ③(d) — adopt S122)

View File

@ -6,7 +6,7 @@ argument-hint: (trống = bật mode · hoặc kèm task lớn đầu tiên)
# /ultra-on — BẬT HMW-mode (SOLUTION_ERP)
> Cặp **`/ultra-off`**. 🔴 restart Claude Code sau khi tạo/sửa (command `.md` no hot-reload).
> Gõ lệnh này = **CONSENT chạy Workflow fan-out** · scope **CHỈ repo SOLUTION_ERP** (S1 — KHÔNG fan-out repo/corpus khác) · workflow-agent **inherit lead-model** (H6.2 — top-tier; lead = frontier-class anh chọn per-session {Fable 5 | Opus 4.8 — 1M MAX}, MTv3 S110; **H8 all-inherit** S66 · role-less→inherit S63).
> Gõ lệnh này = **CONSENT chạy Workflow fan-out** · scope **CHỈ repo SOLUTION_ERP** (S1 — KHÔNG fan-out repo/corpus khác) · workflow-agent = **worker-tier-pin `opus`+`effort:max`** (role-có-frontmatter, S124; lead = frontier-class anh chọn per-session {Fable 5 | Opus 4.8 — 1M MAX}, MTv3 S110; role-less→inherit lead S63; Fable qua /fable-real).
> **Mode persist qua marker:** `/ultra-on` → em main tạo `.claude/hmw-mode.on` (Write) + vào mode → SỐNG qua session/compact. `/ultra-off` xóa. **`/session-start` đọc marker → BÁO anh ON/OFF** (khỏi quên đang ở mode đốt-token). marker = source-of-truth · **gitignored** (KHÔNG commit — tránh mode kẹt-ON khi clone = on-ramp ungoverned).
**Task đầu (nếu có):** $ARGUMENTS
@ -32,7 +32,7 @@ argument-hint: (trống = bật mode · hoặc kèm task lớn đầu tiên)
| **P1** decide | sub liên quan (full memory) | recommend approach + **acceptance-checklist** em main chốt plan |
| 🔴 **P1-run** scaffold | 👤 em main | **BẮT BUỘC khi `taskList.length ≥ 3`** (Sàn-1 H22, cơ-khí-hoá S121 W2): scaffold `.claude/workflows/runs/<run-id>/` (TRACKED) + `run.md` kèm **`## taskList snapshot`** truyền `args.run = { name, dir }`. **Thiếu cờ + ≥3 task ⇒ `hmw.js` THROW STOP-HARD.** Script chạy JS-sandbox **KHÔNG filesystem** tự không tạo folder được đây lý-do gate nằm em-main chứ không script. Bỏ qua chết giữa run **mất trace** (per-turn returns chết theo phiên; **chỉ file trên đĩa sống sót**) `/tiep` §4 phải chạy lại TỪ ĐẦU thay cắt-gọt. 🔸 Ngưỡng *"hoặc ước >5 phút"* KHÔNG cơ-khí-hoá được phần đó kỷ-luật lead. 🔸 raw `Workflow`/`Agent` tool = **kẽ CÒN-LẠI** không gate được từ đây |
| **checkpoint** (inform) | 👤 em main | BÁO `{số agent · vai · task}` @inform set `args.checkpointApproved=true` fan-out NGAY (marker-ON=consent; anh interrupt nếu sai KHÔNG chờ confirm từng lần) |
| **P2** execute | Workflow `hmw` | fan-out agent: **memory-pack injected** qua `args` + `agentType` + schema. DEFAULT read/analyze; write = file-disjoint. **H8 all-inherit** (S66): role-có-frontmatter inherit top-tier lead · per-task `tier:'opus'` escape-hatch (`tier:'fable'` CHỈ trong lượt lệnh engine-đắt anh H21 S110) |
| **P2** execute | Workflow `hmw` | fan-out agent: **memory-pack injected** qua `args` + `agentType` + schema. DEFAULT read/analyze; write = file-disjoint. **worker-tier-pin** (S124): role-có-frontmatter = `opus`+`effort:max` · role-lessinherit lead · per-task `tier:'opus'` escape-hatch (`tier:'fable'` CHỈ trong lượt lệnh engine-đắt anh H21 S110; H23-precedence chưa test) |
| **P3** harvest | 👤 em main (single-writer) | **NGAY sau P2** VERIFY delta + APPEND-only vào MEMORY.md **mọi agent tham gia** (B3) |
| **P4** final | sub quality (full memory) | reviewer PASS/FAIL · cicd-monitor drift · investigator verify · implementer/test scope return delta |
| **→** | 👤 em main | synthesize + **git-diff** + **chunk-count check** + commit (anh OK) |