[CLAUDE] Docs: S110 anh-directed ×2 — stamp mark MỚI RC-…11-07-2026-20-42-01 (H21+MTv3 gộp, row H19 → 📦 SUPERSEDED-partial giữ audit-trail) + VALID_ROLES 10→12 (+2 monitor, M2 boundary-gap RESOLVED cùng phiên; node --check PASS; sweep 10 consumer prose)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m59s
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m59s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@ -35,7 +35,7 @@
|
||||
|
||||
| Task | Owner | Status |
|
||||
|---|---|---|
|
||||
| ✅ **S110 adopt H21 + model-tier-v3** (4 msg AI_INFRA hash-verified 4/4) — marker fable-real RETIRED → **per-invocation** `/fable-real\|/fable-clone <vai> <đề-bài>` + **spec-file 3-mục mỗi run engine-đắt** (K.E mới) + MTv3 lead=owner-choice (BƯỚC 0.6 reword, 0 revert-nghĩa-vụ, 1-line-ask) + triage-S5 hot-reload ENV-DEPENDENT caveat. Pipeline đúng lệnh anh: invest-**Fable** → spec `runs/2026-07-11-h21-mtv3-adopt/` → WF **`wf_0c3b307f-a64`** 3-worker-**Opus** → reviewer-**Fable** **PASS_WITH_FIXES** (5M+9m → fixed; M2 = boundary-gap lệnh-B × 2 monitor ∉ VALID_ROLES documented). ⚠️ #53-garble ×2 (invest + reviewer Fable-lane) → **SendMessage-resume recover 2/2 sạch**. 2 adap-report + 3 supersede-note + STAGE-2 done | 👤 em main + 🟦🟥 Fable + 3 Opus-worker | 🟢 done |
|
||||
| ✅ **S110 adopt H21 + model-tier-v3** (4 msg AI_INFRA hash-verified 4/4) — marker fable-real RETIRED → **per-invocation** `/fable-real\|/fable-clone <vai> <đề-bài>` + **spec-file 3-mục mỗi run engine-đắt** (K.E mới) + MTv3 lead=owner-choice (BƯỚC 0.6 reword, 0 revert-nghĩa-vụ, 1-line-ask) + triage-S5 hot-reload ENV-DEPENDENT caveat. Pipeline đúng lệnh anh: invest-**Fable** → spec `runs/2026-07-11-h21-mtv3-adopt/` → WF **`wf_0c3b307f-a64`** 3-worker-**Opus** → reviewer-**Fable** **PASS_WITH_FIXES** (5M+9m → fixed; M2 boundary-gap lệnh-B × 2 monitor → **RESOLVED cùng phiên: anh-directed VALID_ROLES 10→12** đủ roster). ⚠️ #53-garble ×2 (invest + reviewer Fable-lane) → **SendMessage-resume recover 2/2 sạch**. 2 adap-report + 3 supersede-note + STAGE-2 done | 👤 em main + 🟦🟥 Fable + 3 Opus-worker | 🟢 done |
|
||||
| **Mark-proposal H21+MTv3** (supersede `RC-…17-46-35` → 📦) — trình anh cuối phiên | 👤 anh | ⚪ pending anh confirm |
|
||||
| **PE "lỗi phân quyền vào phiếu"** (anh Kiệt UAT) — chờ **số-phiếu + user** soi config workflow | 👤 em main | ⚪ pending (chờ anh specifics, carry S103) |
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
## Tailored / phát-hiện-riêng / honest-caveat
|
||||
|
||||
- **Tailored form:** giữ TÊN 2 lệnh cũ `/fable-real|/fable-clone` (= lệnh-A/lệnh-B; H21 §6 "tên lệnh tự quyết") — đổi semantics toggle→per-invocation; spec-file đặt trong run-trace H10 sẵn có (`.claude/workflows/runs/<run-id>/` git-TRACKED → owner audit qua git, đúng mục-đích khoản ①); naming `spec-<tên-tính-năng>-<dd-mm-yyyy>.md`.
|
||||
- **Phát-hiện-riêng #1 (boundary-gap M2):** lệnh-B × 2 vai monitor (`tooling-auditor`/`harvest-curator`) — 2 vai ∉ `hmw.js` VALID_ROLES (10) → ensemble fail-soft **default-subagent mất persona** (H19 2-vai-cố-định che edge này; roster-12 promise mở ra mới lộ). Xử: document limitation ở `fable-clone.md` + K.E(i); bổ sung VALID_ROLES = đổi code, **chờ anh quyết** (không tự sửa trong đợt docs-only).
|
||||
- **Phát-hiện-riêng #1 (boundary-gap M2):** lệnh-B × 2 vai monitor (`tooling-auditor`/`harvest-curator`) — 2 vai ∉ `hmw.js` VALID_ROLES (10) → ensemble fail-soft **default-subagent mất persona** (H19 2-vai-cố-định che edge này; roster-12 promise mở ra mới lộ). Xử: document limitation ở `fable-clone.md` + K.E(i); bổ sung VALID_ROLES = đổi code, **chờ anh quyết** (không tự sửa trong đợt docs-only). → **RESOLVED CÙNG PHIÊN:** anh-directed (AskUserQuestion S110) bổ sung 2 monitor → VALID_ROLES **12** đủ roster (`hmw.js:28-29`, node --check PASS; supersede điểm H6-design "monitor ngoài workflow" — monitor vẫn INFORM-only, lane RETURN-only).
|
||||
- **Phát-hiện-riêng #2 (worker-đổi-fact M1):** worker Opus khi reword tự đổi "10 vai"→"12 vai" trong câu mô tả VALID_ROLES = sai fact code — reviewer Fable bắt, em-main fix. Lesson: worker-draft đụng CON SỐ về code → cross-check code thật trước commit.
|
||||
- **Phát-hiện-riêng #3 (sweep-theo-token mù semantics M3):** acceptance "grep `Test-Path` ngoài 🧊 = 0" PASS trong khi ~16 cụm semantics-cũ chưa-đánh-dấu vẫn sống (nặng nhất: P5 "2 vai EXCLUDED" mâu thuẫn ROLE_VALID roster-12 TRONG CÙNG checklist) — đúng lớp lỗi broadcast §5 cảnh báo, bắt bởi reviewer-Fable đọc-semantics (không phải grep). Fix point-edit trọn.
|
||||
- **Honest-caveat:** (i) "lead không tự ý" = **kỷ-luật + owner-gated tầng lệnh, KHÔNG code-enforced** — `hmw.js` không gate vai, đường `tier:'fable'` còn nguyên (đúng note-a broadcast); (ii) dogfood = **run-1 duy nhất** (chính lượt adopt này) — chưa có số-liệu N-run pipeline spec→worker (không claim); (iii) command `.md` sửa = **restart CLI mới ăn runtime** (registry hot-reload description ĐÃ thấy giữa phiên nhưng body-execution chưa re-verify — đồng bộ caveat ENV-DEPENDENT triage-S5); (iv) mark `RC-…17-46-35` (H19) = quyền anh — em đề xuất mark mới supersede, **CHƯA stamp, chờ anh** (P8).
|
||||
|
||||
@ -91,12 +91,12 @@ Rule gitignore neo tại **`.gitignore:92`** (`.claude/fable-real-mode.on`), đ
|
||||
| 3 | **tier** (per-task) | `'fable' \| 'opus' \| undefined` | `hmw.js:18` (field taskList) + `resolveModel hmw.js:38` | `undefined`=inherit top-tier (clone mặc-định) · `'opus'`=pin tier-2 sweep/cost · `'fable'`=nâng lead-tier **CHỈ trong lượt lệnh engine-đắt anh gõ** (H21 — lead KHÔNG tự ý) |
|
||||
| 4 | **checkpointApproved** | boolean | `hmw.js:77-79` (THROW nếu ≠true) | em-main set `true` SAU khi BÁO {số agent·vai·task} @inform → fan-out |
|
||||
| 5 | **taskList[]** | `Array<{role,label,prompt,tier?}>` | `hmw.js:18` + `:71-72` (bắt buộc, non-empty) | mảng lane; **clone = N item CÙNG 1 role** |
|
||||
| 6 | **role / agentType** | `VALID_ROLES \| undefined` | `hmw.js:22-28` (whitelist) + `:100` (filter) + `:139` (`agentType`) | vai engine-đắt = **anh gán** (H21, mọi vai roster 12; §3/§4 template = `reviewer` · `investigator-codebase`); ⚠️ 2 monitor ∉ VALID_ROLES(10) → lệnh-B fail-soft default-subagent (limitation K.E) |
|
||||
| 6 | **role / agentType** | `VALID_ROLES \| undefined` | `hmw.js:22-30` (whitelist) + filter + `agentType` | vai engine-đắt = **anh gán** (H21, mọi vai roster 12; §3/§4 template = `reviewer` · `investigator-codebase`); VALID_ROLES = 12 đủ roster (+2 monitor S110) |
|
||||
| 7 | **memoryPack** | `Record<role, slice>` | `hmw.js:15,85,103,125` | SLICE `MEMORY.md` của đúng vai (KHÔNG full) → inject prompt |
|
||||
| 8 | **spec** | string | `hmw.js:16,86,126` | acceptance chung mọi lane |
|
||||
| 9 | **run** (alias `wave`) | `{name,dir} \| null` | `hmw.js:19,92-93` | `null`=return-delta-only (mặc-định) · set=RUN-TRACE (sub ghi `sub-<role>-<i>.md`) |
|
||||
| 10 | **SCHEMA.memoryDelta** | `{task,verdict,learned,surprise}` 4-field required | `hmw.js:54-64` (required `:57`) | **RETURN-only**; agent KHÔNG tự ghi ký-ức → em-main harvest @P3 |
|
||||
| 11 | **VALID_ROLES** | `const string[10]` | `hmw.js:22-28` | 8 core + `database-agent`(S57) + `office-document`(S107) |
|
||||
| 11 | **VALID_ROLES** | `const string[12]` | `hmw.js:22-30` | 8 core + `database-agent`(S57) + `office-document`(S107) + `tooling-auditor`/`harvest-curator`(S110 anh-directed) |
|
||||
| 12 | **engine-label** | string (em-main stamp — KHÔNG có field trong SCHEMA) | `§K.C GAP-2` `harness-11:329` | em-main @P3 gắn nhãn engine đã dùng (xem 2.4) |
|
||||
|
||||
**resolveModel logic thật (`hmw.js:37-45`) — trích:**
|
||||
@ -172,7 +172,7 @@ Nguồn: `harness-11-engine.md §K.C:327-330`. Pin để stamp CÓ NGHĨA (khôn
|
||||
|
||||
| Tình huống | Engine | Cơ-chế thực-thi |
|
||||
|---|---|---|
|
||||
| anh gõ `/fable-clone <vai> <đề-bài>` | 🟢 **lệnh-B ensemble** | `hmw.js parallel` N lane same-role + em-main synthesize (2.3 JSON) — ⚠️ 2 monitor ∉ VALID_ROLES → limitation K.E |
|
||||
| anh gõ `/fable-clone <vai> <đề-bài>` | 🟢 **lệnh-B ensemble** | `hmw.js parallel` N lane same-role + em-main synthesize (2.3 JSON) — VALID_ROLES 12 đủ roster (S110) |
|
||||
| anh gõ `/fable-real <vai> <đề-bài>` | 🔴 **lệnh-A single** | Agent-tool spawn LẺ 1 agent, deep pass |
|
||||
| anh KHÔNG gõ lệnh engine-đắt | — | mặc-định (sub thường / workflow chuẩn; em-main có thể ĐỀ XUẤT anh gõ khi heavy-judgment) |
|
||||
| việc NHẸ (không trivial) | — | single spawn thường 1 con (KHÔNG ensemble, KHÔNG deep-pass nghi-thức) |
|
||||
@ -441,7 +441,7 @@ args = {
|
||||
|
||||
| GAP | Rủi-ro (engine) | Cách bấm | Nguồn |
|
||||
|---|---|---|---|
|
||||
| **GAP-1 scope-creep** | `hmw.js` VALID_ROLES nhận cả 10 vai KHÔNG gate → all-inherit CHE leak | CLONE `taskList` MỌI `role:'reviewer'` (N-lane CÙNG vai, KHÔNG mixed-roster) | `§K.C:328` · `hmw.js:22-28` |
|
||||
| **GAP-1 scope-creep** | `hmw.js` VALID_ROLES nhận cả 12 vai KHÔNG gate → all-inherit CHE leak | CLONE `taskList` MỌI `role:'reviewer'` (N-lane CÙNG vai, KHÔNG mixed-roster) | `§K.C:328` · `hmw.js:22-30` |
|
||||
| **GAP-2 engine-label** | SCHEMA `memoryDelta` KHÔNG field engine | em-main **stamp nhãn engine @P3 harvest** (`real\|clone-<tier>-Sxxx`) = convention | `§K.C:329` · `hmw.js:54-64` |
|
||||
| **GAP-3 AS-10 fragment** | N lane giữ Bash (fails-open) → phân-mảnh trí-nhớ | N lane **RETURN-only** → em-main ghi **1 entry / vai** (+ nhãn) | `§K.C:330` · `fable-real.md:26` |
|
||||
|
||||
|
||||
@ -329,7 +329,7 @@ SE đã có RAG golden-set harness (KHÔNG phải gap): `eval/golden-set-solutio
|
||||
→ **Thay bằng §K.E per-invocation.** Marker file đã xóa S110; `.gitignore:92` giữ pattern phòng-hờ.
|
||||
|
||||
**K.C — 3 floor-fidelity gap (🔴 WF1-L3 bắt — pin để stamp CÓ NGHĨA, không paperwork):**
|
||||
- **GAP-1 scope-creep guard:** `hmw.js` VALID_ROLES nhận cả 10 vai (9 lúc adopt S101; +office-document S107), KHÔNG gate → all-inherit **CHE** leak (mọi vai top-tier nên mixed-roster "trông ổn"; Fable về + phân-tầng thì rò top-tier ensemble sang vai ngoài 2 vị-trí = vi phạm §3 hard-scope). → **lệnh-B ensemble-run = N lane CÙNG 1 vai phán-quyết** (multi-lens), KHÔNG mixed-roster fan-out.
|
||||
- **GAP-1 scope-creep guard:** `hmw.js` VALID_ROLES nhận cả 12 vai (9 lúc adopt S101; +office-document S107; +2 monitor S110 anh-directed), KHÔNG gate → all-inherit **CHE** leak (mọi vai top-tier nên mixed-roster "trông ổn"; Fable về + phân-tầng thì rò top-tier ensemble sang vai ngoài 2 vị-trí = vi phạm §3 hard-scope). → **lệnh-B ensemble-run = N lane CÙNG 1 vai phán-quyết** (multi-lens), KHÔNG mixed-roster fan-out.
|
||||
- **GAP-2 engine-label (§5):** `hmw.js` SCHEMA `memoryDelta{task,verdict,learned,surprise}` KHÔNG field engine → em-main **stamp nhãn engine @P3 harvest** (single-writer B3), như S101 "model-note Opus-S101". = convention KHÔNG mechanism.
|
||||
- **GAP-3 AS-10 fragment:** mỗi run-trace ghi `*-synthesis.md` residual + lane giữ Bash (AS-10 fails-open) → "1 vai = 1 trí-nhớ" qua N lane giữ CHỈ bởi em-main single-writer. → **N lane RETURN-only**, em-main ghi 1 MEMORY entry/vai (+ nhãn engine).
|
||||
|
||||
@ -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 12 (`investigator-codebase` · `investigator-api` · `implementer-backend` · `implementer-frontend` · `frontend-designer` · `database-agent` · `office-document` · `test-specialist` · `reviewer` · `cicd-monitor` · `tooling-auditor` · `harvest-curator`). 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). ⚠️ **Limitation lệnh-B × 2 monitor:** `tooling-auditor`·`harvest-curator` ∉ `hmw.js` VALID_ROLES (**10** vai) → ensemble qua hmw **fail-soft default-subagent** (mất persona); cần ensemble 2 vai này → anh duyệt bổ sung VALID_ROLES (đổi code) hoặc dùng lệnh-A.
|
||||
- **(i) Vai owner-gán per-invocation:** `<vai>` ∈ roster 12 (`investigator-codebase` · `investigator-api` · `implementer-backend` · `implementer-frontend` · `frontend-designer` · `database-agent` · `office-document` · `test-specialist` · `reviewer` · `cicd-monitor` · `tooling-auditor` · `harvest-curator`). 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 = 12 đủ roster (S110 anh-directed):** 2 monitor đã bổ sung (10→12) — lệnh-B trọn roster. *(🧊 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** (1–3 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, **KHÔNG code-enforced** — `hmw.js` không gate vai; đường code `tier:'fable'` vẫn tồn-tại. Bảo-đảm = MỌI đường truy về lượt owner-gõ (kỷ-luật), không phải guard chặn.
|
||||
|
||||
Reference in New Issue
Block a user