[CLAUDE] Docs: S179 closeout — va doi STYLE 2 vong (C7 bat 2 MAJOR trong chinh ban va) + H24 9 FLAG + drift-audit thang
Some checks failed
Deploy SOLUTION_ERP / build-deploy (push) Has been cancelled
Some checks failed
Deploy SOLUTION_ERP / build-deploy (push) Has been cancelled
SUA-1..6b tron 6/6, acceptance C1-C6b 12/12. Vong-2 sua chinh vong-1 sau reviewer C7 (PASS-WITH-8, 3 MAJOR):
- Doi ba-cham -> hai-cham la REGRESSION co dieu-kien, KHONG phai cosmetic: chi tuong-duong khi origin/main
con ancestor; cay phan-ky thi hai-cham liet ca file CHI CO tren origin/main (= DA PRODUCTION) vao "phan MOI".
Thu pham that = git diff mu untracked. Sandbox 2 chieu CONFIRMED.
- git status --porcelain | cut -c4- de path RAC (rename in MOT dong "R old -> new"; path co dau cach bi quote).
Sandbox: 2/2 MISS; thuoc moi 2/2 OK.
- Thuoc CHOT 4/4 site: { git diff --name-only origin/main...HEAD; git diff --name-only HEAD;
git ls-files -o --exclude-standard; } | sort -u
Bai: chan-doan sai VAN pass acceptance — acceptance do HINH-DANG chuoi, khong do HANH-VI.
Lop mo-neo TU-VO-HIEU: con-tro so-dong tro vao CHINH tep chua no tu thoi moi lan sua dau tep
(112->118->121 trong 1 phien) => neo TEN, khong neo SO DONG. Ap cho index.css, gotchas.md, PipelineStageFolders.
Con-tro verbatim _mind doi ve commit DA PUSH (ee21056/d081681) — ban truoc tro 727a512 nam trong dai squash
=> tu de con-tro mo-coi.
H24 light-audit 9 FLAG, flush 8 o canonical: Mig 71->72 - Gotchas 86->87 - Tests 644->645 (chay that
dotnet test: 45 Domain + 600 Infra, 0 fail) - user-mem 59->60 - header S168->S179 - roster 23->26 (go han so
theo B1) - HANDOFF dong 4 slot (68)-(71) + E4.
"So noi doi theo huong BI QUAN" x3 ca/1 phien (4 slot - E4 - run.md S173) => leo thang lan 3 phai DO LAI TIEN-DE.
Kem: 2 NO vong-3 - 2 synthesis ORPHAN (run-chua-gom 2->0) - di-tru cua-so 6 vao _context - keo+ap 2 thu
loi-do-luong (BAC Lop 8 CO SO: mtime cum SE 0,7% vs hub 69%) - drift-audit thang PASS_WITH_FLAGS-8 (va 2, con 6)
- _mind 99,67%->84,2% - don 9 dir rong - archive-gate strike 1/2.
#53: 4/4 vai garble return dau, vot tron 4/4 bang resume-in-session. Mat 0 byte.
0 file code nghiep-vu. Build 2/2 app PASS. Test 645/645.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@ -24,7 +24,7 @@
|
||||
|
||||
## 🎯 Architecture
|
||||
|
||||
> ⓘ **Diagram dưới = 7 core lane (pre-S47 snapshot) — KHÔNG phải roster hiện-hành.** Roster THẬT = 7 core (diagram) + 🩷 frontend-designer (S47) + 🔵 database-agent (S52) + 📄 office-document (S107) + 🟫 tooling-auditor H1 + ⬜ harvest-curator H2 (2026-06-07 Harness 1) + 🔷 lead-stale-auditor + 🔶 lead-gap-auditor (**H24, S121 W2**) + 🧪 harness-eval + 🧪 harness-refine + 🧪 harness-audit (**trio-memory, S141**) + 🔬 ring1-audit + 🔬 ring2-audit + 🔬 ring4-audit (**round-KIỂM ×3, S145 — C4/C4b TÁCH mỗi-vòng-1-con: vòng tooling/harvest · soi-lead H24 · nén-ngủ**) + 🔎 ctx-curator + 🔎 ctx-verifier + 🔎 ctx-audit (**bộ-ba vòng Ctx lớp trí-nhớ MỀM `_mind`, S153 — adopt `0df10df4`, OWNER-VETO hub-form 3-vai: vai-1 nháp@mỗi-pause [carve-out §1] · vai-2 đối-chiếu+nạp@mỗi-tiep · vai-3 chuỗi@2-bookend**) — xem skill matrix + decision tree + tool grant dưới. Số vai canonical → [`docs/STATUS.md`](../../docs/STATUS.md) §Sub-agents. (Cosmetic ASCII chưa vẽ lại — H1 tooling-auditor flag drift này @session-start.)
|
||||
> ⓘ **Diagram dưới = 7 core lane (pre-S47 snapshot) — KHÔNG phải roster hiện-hành.** Roster THẬT = 7 core (diagram) + 🩷 frontend-designer (S47) + 🔵 database-agent (S52) + 📄 office-document (S107) + 🟫 tooling-auditor H1 + ⬜ harvest-curator H2 (2026-06-07 Harness 1) + 🔷 lead-stale-auditor + 🔶 lead-gap-auditor (**H24, S121 W2**) + 🧪 harness-eval + 🧪 harness-refine + 🧪 harness-audit (**trio-memory, S141**) + 🔬 ring1-audit + 🔬 ring2-audit + 🔬 ring4-audit (**round-KIỂM ×3, S145 — C4/C4b TÁCH mỗi-vòng-1-con: vòng tooling/harvest · soi-lead H24 · nén-ngủ**) + 🔎 ctx-curator + 🔎 ctx-verifier + 🔎 ctx-audit (**bộ-ba vòng Ctx lớp trí-nhớ MỀM `_mind`, S153 — adopt `0df10df4`, OWNER-VETO hub-form 3-vai: vai-1 nháp@mỗi-pause [carve-out §1] · vai-2 đối-chiếu+nạp@mỗi-tiep · vai-3 chuỗi@2-bookend**) + 🎨 front-end-reviewer-style + ⚙️ back-end-reviewer-style + 🗄️ database-reviewer-style (**ĐỘI STYLE ×3, S176 — anh chốt trực-tiếp, lý-do đo được "mày cứ làm đi làm lại hoài"; địa-phận RỜI theo glob diff, trục ĐỒNG-NHẤT ⟂ `reviewer` ĐÚNG-SAI**) — xem skill matrix + decision tree + tool grant dưới. Số vai canonical → [`docs/STATUS.md`](../../docs/STATUS.md) §Sub-agents. (Cosmetic ASCII chưa vẽ lại — H1 tooling-auditor flag drift này @session-start.)
|
||||
> 🔴 **Bài S143 — enumeration TÊN cũng lão-hoá, và grep-theo-SỐ không bắt được:** sweep roster wave S141–S142 đặt acceptance là `grep "roster 14|14/14|14 folder|14 vai"` → 0 hit ⇒ tuyên bố sạch. Nhưng đúng 2 dòng tự xưng là bản gốc về roster — dòng NÀY ("Roster THẬT") và `:225` ("VALID_ROLES … ĐỦ roster") — **liệt kê TÊN, không chứa con số nào** ⇒ lọt lưới, giữ 14 vai qua cả wave. **Acceptance cho lần sau: ĐẾM PHẦN TỬ trong mọi enumeration rồi so canonical, đừng so hình-dạng chuỗi.**
|
||||
|
||||
```
|
||||
@ -64,11 +64,21 @@
|
||||
- Test → **`test-specialist`** dedicated (KHÔNG để implementer kiêm)
|
||||
- Deploy claim → `cicd-monitor` sau push (skip docs-only gotcha #41)
|
||||
- Heavy diff / security / wire BE claim → `reviewer` pre-commit
|
||||
- 🔴 **ĐỘI STYLE (S176, anh chốt) — MỖI LƯỢT REVIEW gọi THÊM 1 lần, song song `reviewer`:** `front-end-reviewer-style` · `back-end-reviewer-style` · `database-reviewer-style`.
|
||||
- **Gọi con nào = theo DIFF chạm đâu** (`git diff --name-only origin/main...HEAD`): `fe-*/src/**` → FE · `src/Backend/**` trừ `Persistence/**` → BE · `Persistence/**` → DB. Diff không chạm ⇒ **KHÔNG gọi**, không phải bỏ sót.
|
||||
- 🔴 **ĐỘI STYLE (S176, anh chốt) — MỖI LƯỢT REVIEW gọi THÊM 1 lần, song song `reviewer`** *(🔴 **hiệu-lực sau restart CLI** — SỬA-5c @S179: registry là ảnh-chụp lúc khởi phiên, KHÔNG hot-reload; trước khi restart thì lệnh này **chưa thi-hành được**, và `ls` + grep `VALID_ROLES` chỉ là điều-kiện CẦN. Kẽ này sinh ra vì `README` ra lệnh mà `STATUS` khai `verified-pending-restart` — 2 doc nói 2 giọng)*: `front-end-reviewer-style` · `back-end-reviewer-style` · `database-reviewer-style`.
|
||||
- **Gọi con nào = theo DIFF chạm đâu.** 🔴 **Thước ĐÚNG (SỬA-1, vá @S179) — CẤM `git diff` trần, CẤM ba-chấm:**
|
||||
```bash
|
||||
{ git diff --name-only origin/main...HEAD # ĐÃ COMMIT — BA-chấm, neo merge-base
|
||||
git diff --name-only HEAD # đang sửa (tracked); tách rename thành 2 vế
|
||||
git ls-files -o --exclude-standard # UNTRACKED
|
||||
} | sort -u
|
||||
```
|
||||
`fe-*/src/**` → FE · `src/Backend/**` trừ `Persistence/**` → BE · `Persistence/**` → DB. Chạm ⇒ gọi; **không chạm ⇒ KHÔNG gọi + ghi 1 dòng `SKIP-CO-KHAI`** (im lặng hoàn toàn là không phân biệt được với chết câm).
|
||||
- 🔴 **Vì sao phải là công-thức trên:** đội này gate **PRE-commit**, mà `git diff` mọi dạng đều **MÙ với file chưa commit + untracked** ⇒ thước rỗng đúng lúc cần gọi. Đo thật: cửa-sổ S178 có **12 file** đúng địa-phận cả 3 vai mà **0 con được gọi, 0 dòng `SKIP-CO-KHAI`**. Fault-inject 2 chiều: thả probe untracked → cũ **0 hit** / mới **bắt**; dọn probe → mới **im**.
|
||||
- 🔴 **2 bẫy lượt vá ĐẦU @S179 tự dính, `reviewer` C7 bắt — ghi để không tái sinh:** ① đổi ba-chấm→hai-chấm **KHÔNG phải vô-hại**: nó chỉ tương-đương khi `origin/main` còn là **ancestor**; cây phân-kỳ (routine sau `git fetch`) thì hai-chấm liệt cả file **chỉ có trên origin/main** — tức **ĐÃ PRODUCTION** — vào "phần MỚI" ⇒ **REGRESSION có điều-kiện**. **Ba-chấm mới đúng** (neo `merge-base`); thủ phạm thật luôn là `git diff` mù untracked. ② `git status --porcelain | cut -c4-` **đẻ path RÁC**: rename in **một dòng** `R old -> new`, và path có dấu cách bị **quote** ⇒ khớp glob hỏng, bỏ sót đúng file vừa `git mv`. Sandbox: **2/2 MISS** vs công-thức trên **2/2 OK**.
|
||||
- **Trục của đội này ⟂ `reviewer`:** đội STYLE soi **ĐỒNG-NHẤT** (có giống bản đã chạy không), `reviewer` soi **ĐÚNG-SAI** (có bug không). Chạy song song được vì không giẫm nhau.
|
||||
- 🔴 **Luật lõi anh giao:** *"các tính năng đã deploy thành production rồi thì sẽ là chuẩn, trừ khi tao có điều chỉnh lại lần nữa"* — lý do sinh đội: **"mày cứ làm đi làm lại hoài"**. Ca thật S176 vòng-4b: thùng rác KHKK thiếu banner + dấu xoá mà màn Duyệt NCC **đã chạy prod** có đủ ⇒ anh phải chụp màn gửi làm mẫu. Một lượt làm lại **đáng lẽ không cần**.
|
||||
- 🔸 **Máy trước, vai sau:** FE có ESLint chạy trước (`npm run lint`); **BE hiện 0 máy style nào gác** (đo S176) nên con BE gánh nặng hơn. Cắm được `.editorconfig` + `dotnet format --verify-no-changes` vào CI thì trả lớp cơ-học về máy và **cập nhật lại persona con BE**.
|
||||
- 🔸 **Máy trước, vai sau:** FE có ESLint chạy trước (`npm run lint`); BE gánh nặng hơn. 🔴 **Số liệu "BE có/không máy style gác" KHÔNG chép ở đây** (SỬA-6a @S179) — nó là **phép-đo per-spawn** sống trong `back-end-reviewer-style.md` §0. Lý do: claim đó từng bị chép ra **4 site**, cắm `.editorconfig` là 4 chỗ sai cùng lúc mà detector chỉ so SỐ nên không bắt.
|
||||
- 🔴 **VÙNG MÙ CHỌN CHỦ ĐÍCH — khai thẳng, đừng đọc "3 vai" thành "đã phủ hết"** (SỬA-5b @S179): ngoài 3 glob của đội (`tests/**` · `scripts/**` · `.gitea/**` · `docs/**` · `.claude/**`) **và** toàn bộ **seam FE↔BE** (DTO ⟂ TS type · route string 2 phía · `MenuKeys.cs` ⟂ `menuKeys.ts`) = **0 vai style nào soi**. Seam là chỗ lệch **đắt nhất** mà lại rơi đúng khe giữa 3 địa-phận rời. ⇒ phần đó thuộc **`reviewer` + lead**, KHÔNG phải đội STYLE.
|
||||
- 🧊 Anh nêu ban đầu **4** con (có `clean-code-reviewer-style`) rồi tự chốt lại **3** ("3 con tao nhầm" + "chốt theo ý mày"): con clean-code phủ chồng cả 3 con kia nên **không viết nổi câu scope rời** mà roster này bắt buộc ⇒ trục clean-code (đặt tên · trùng lặp · mật-độ comment · pattern drift) **gộp vào từng con trong địa phận của nó**.
|
||||
|
||||
**Em main solo CHỈ khi:** schema/UX/architecture decision · cross-stack tight coupling · bug fix reasoning chain · gotcha #53 fallback (spawn truncate/529 → em main solo reliable, proven S37 BE 700 LOC + FE 4 file).
|
||||
@ -188,7 +198,7 @@
|
||||
| test-specialist | `contract-workflow` + `permission-matrix` |
|
||||
| reviewer | `dependency-audit-erp` + `contract-workflow` + `permission-matrix` |
|
||||
| **front-end-reviewer-style** (đội STYLE, S176) | `permission-matrix` — 🔴 luật style FE **KHÔNG** ở skill mà ở `docs/rules.md` + **bản ĐÃ PRODUCTION** (B1 trỏ, cấm chép). Chạy SAU máy `npm run lint` |
|
||||
| **back-end-reviewer-style** (đội STYLE, S176) | `contract-workflow` + `permission-matrix` — 🔴 BE **0 máy style gác** (đo S176: 0 `.editorconfig`/analyzer/`dotnet format`) nên vai gánh cả lớp cơ-học, khác con FE |
|
||||
| **back-end-reviewer-style** (đội STYLE, S176) | `contract-workflow` + `permission-matrix` — 🔴 BE gánh cả lớp cơ-học, khác con FE — **trạng-thái máy-gác KHÔNG chép ở đây**, nguồn sống = phép-đo per-spawn trong `back-end-reviewer-style.md` §0 (SỬA-6a @S179; 🔴 site này là **cái thứ 5**, spec S176 chỉ liệt 4 — acceptance C6a bắt được) |
|
||||
| **database-reviewer-style** (đội STYLE, S176) | `ef-core-migration` (3-file rule = trục đắt nhất) — 🔴 chỉ soi ĐẶT TÊN + hình-dạng migration, **KHÔNG** phán schema (đó là `database-agent`) |
|
||||
| cicd-monitor | `iis-deploy-runbook` + `dependency-audit-erp` + `ef-core-migration` |
|
||||
| frontend-designer | `frontend-design` + `senior-frontend` + `brand-guidelines` + `theme-factory` + `webapp-testing` (FD2 loop) + `web-artifacts-builder` |
|
||||
@ -225,7 +235,7 @@ MỌI agent trong roster có **4 RAG-READ MCP**: `search_memory` + `search_code`
|
||||
| Skill/plugin (nguồn) | Value-locus | Map → vai | Ghi chú |
|
||||
|---|---|---|---|
|
||||
| `sql-database-assistant` (standalone) | skill-only | investigator-codebase + implementer-backend | SQL/EF query; đọc kèm `ef-core-migration` (KHÔNG override pin EF Core 10 / dbo single-schema) |
|
||||
| `frontend-design` (standalone, KHÔNG enable plugin trùng) | skill-only | frontend-designer | duplicate plugin↔standalone → chọn standalone |
|
||||
| `frontend-design` (standalone; 🔴 plugin trùng **ĐANG enabled** — cố ý KHÔNG dùng) | skill-only | frontend-designer | duplicate plugin↔standalone → chọn standalone |
|
||||
| `skill-creator` | skill-only | mọi sub (khi tạo skill project) | additive |
|
||||
| `claude-md-management` (`claude-md-improver`) | skill+cmd | em main | doc-maintenance |
|
||||
| `pr-review-toolkit` (silent-failure-hunter / type-design-analyzer / comment-analyzer / pr-test-analyzer) | agent-bearing | reviewer (tham-chiếu .md như CHECKLIST, KHÔNG enable agent) | giữ roster `reviewer` canonical |
|
||||
@ -248,7 +258,7 @@ MỌI agent trong roster có **4 RAG-READ MCP**: `search_memory` + `search_code`
|
||||
- **Keyword = QUYỀN, KHÔNG lệnh (T4):** "workflow"/"ultracode" mở quyền hỏi, KHÔNG auto-run. Mode-OFF + "chạy workflow" → TỪ CHỐI + nhắc `/ultra-on`. CẤM native `/effort ultracode`. *(Bài học 515K-token false-trigger.)*
|
||||
- **Scope (S1):** Workflow fan-out CHỈ repo SOLUTION_ERP — KHÔNG fan-out repo/corpus khác.
|
||||
- **Checkpoint (S2):** `hmw.js` **throw** nếu `checkpointApproved≠true` (mechanized tripwire anti-accidental). Em main BÁO {số agent·vai·task} @inform → set cờ → fan-out (KHÔNG chờ confirm từng lần; marker-ON=consent). Sub KHÔNG spawn sub (S3).
|
||||
- **VALID_ROLES (whitelist `hmw.js` — ĐỦ roster; số vai canonical → [`docs/STATUS.md`](../../docs/STATUS.md) §Sub-agents, B1 KHÔNG chép số):** `investigator-codebase` · `investigator-api` · `implementer-backend` · `implementer-frontend` · `test-specialist` · `reviewer` · `cicd-monitor` · `frontend-designer` · `database-agent` (+S57 — S56 đã dùng 3× qua fail-soft WARN) · `office-document` (+S107 — Office WRITE OD1–OD10) · `tooling-auditor` + `harvest-curator` (+S110 anh-directed — H21 roster-parity lệnh-B) · **`lead-stale-auditor` + `lead-gap-auditor` (+S121 W2 — H24 lead-self-audit)** · **`harness-eval` + `harness-refine` + `harness-audit` (+S141 — trio-memory)** · **`ring1-audit` + `ring2-audit` + `ring4-audit` (+S145 — C4/C4b round-KIỂM ×3: vòng tooling/harvest · soi-lead H24 · nén-ngủ; AUTO fire-after-measure, no-self-exempt, NO-OP nếu vòng không đo)** · **`ctx-curator` + `ctx-verifier` + `ctx-audit` (+S153 OWNER-VETO hub-form 3-vai `0df10df4` — vòng Ctx lớp mềm `_mind`: vai-1 KIỂM-nháp @mỗi-`/pause` [carve-out duy nhất của luật "NGỪNG spawn" §1] · vai-2 ĐỐI-CHIẾU+NẠP @mỗi-`/tiep` · vai-3 SOI-CHUỖI 2 đầu phiên; cả 3 trả CHỈ văn-bản)**. 🔸 **Cả 13 monitor đều INFORM-only, lane RETURN-only** (propose-only; 13 + 10 worker = roster 23, số canonical → STATUS §Sub-agents). 🔴 **KHÔNG đọc "KHÔNG Write/Edit" thành cơ-chế chặn — đo S143:** frontmatter 9 vai read-only **không khai** `Write/Edit`, nhưng **runtime VẪN cấp**, nối ở cuối tool-list (nhân-chứng trực-tiếp: `reviewer` đã Write+Edit thật trong `runs/2026-07-22-S143-closeout-audit/`). Whitelist = **tuyên-bố ý-định**; containment THẬT = em main single-writer + git-diff commit-gate. Role lạ ∉ VALID_ROLES → `hmw.js` **THROW (STOP-HARD)** + báo owner (S4c, DIRECTED REC-3 2026-07-13); role-less null → inherit lead.
|
||||
- **VALID_ROLES (whitelist `hmw.js` — ĐỦ roster; số vai canonical → [`docs/STATUS.md`](../../docs/STATUS.md) §Sub-agents, B1 KHÔNG chép số):** `investigator-codebase` · `investigator-api` · `implementer-backend` · `implementer-frontend` · `test-specialist` · `reviewer` · `cicd-monitor` · `frontend-designer` · `database-agent` (+S57 — S56 đã dùng 3× qua fail-soft WARN) · `office-document` (+S107 — Office WRITE OD1–OD10) · `tooling-auditor` + `harvest-curator` (+S110 anh-directed — H21 roster-parity lệnh-B) · **`lead-stale-auditor` + `lead-gap-auditor` (+S121 W2 — H24 lead-self-audit)** · **`harness-eval` + `harness-refine` + `harness-audit` (+S141 — trio-memory)** · **`ring1-audit` + `ring2-audit` + `ring4-audit` (+S145 — C4/C4b round-KIỂM ×3: vòng tooling/harvest · soi-lead H24 · nén-ngủ; AUTO fire-after-measure, no-self-exempt, NO-OP nếu vòng không đo)** · **`ctx-curator` + `ctx-verifier` + `ctx-audit` (+S153 OWNER-VETO hub-form 3-vai `0df10df4` — vòng Ctx lớp mềm `_mind`: vai-1 KIỂM-nháp @mỗi-`/pause` [carve-out duy nhất của luật "NGỪNG spawn" §1] · vai-2 ĐỐI-CHIẾU+NẠP @mỗi-`/tiep` · vai-3 SOI-CHUỖI 2 đầu phiên; cả 3 trả CHỈ văn-bản)** · **`front-end-reviewer-style` + `back-end-reviewer-style` + `database-reviewer-style` (+S176 ĐỘI STYLE — anh chốt trực-tiếp; địa-phận RỜI theo glob diff: `fe-*/src/**` · `src/Backend/**` trừ `Persistence/**` · `Persistence/**`; trục ĐỒNG-NHẤT style ⟂ `reviewer` ĐÚNG-SAI logic ⇒ chạy SONG SONG)**. 🔸 **Mọi monitor đều INFORM-only, lane RETURN-only** (propose-only). 🔴 **Số vai canonical → [`docs/STATUS.md`](../../docs/STATUS.md) §Sub-agents — CỐ Ý KHÔNG chép số ở đây** (B1; 🧊 bản trước chép *"13 + 10 worker = roster 23"* **ngay trong chính câu nói KHÔNG-chép-số**, và số đó trượt lại đúng 1 wave sau S176 — `lead-stale-auditor` FLAG-2 @S179 bắt). 🔴 **KHÔNG đọc "KHÔNG Write/Edit" thành cơ-chế chặn — đo S143:** frontmatter 9 vai read-only **không khai** `Write/Edit`, nhưng **runtime VẪN cấp**, nối ở cuối tool-list (nhân-chứng trực-tiếp: `reviewer` đã Write+Edit thật trong `runs/2026-07-22-S143-closeout-audit/`). Whitelist = **tuyên-bố ý-định**; containment THẬT = em main single-writer + git-diff commit-gate. Role lạ ∉ VALID_ROLES → `hmw.js` **THROW (STOP-HARD)** + báo owner (S4c, DIRECTED REC-3 2026-07-13); role-less null → inherit lead.
|
||||
- 🔴 **2 vai H24 = trục RIÊNG, KHÔNG gộp H1/H2:** H1 `tooling-auditor` = tooling-freshness · H2 `harvest-curator` = harvest-integrity · **H24 = soi chính LEAD** (`lead-stale-auditor` = cái CÓ-nhưng-LỆCH · `lead-gap-auditor` = cái BỊ THIẾU). Class-flag lấy từ **enum ĐÓNG** `lead_self_audit.flag_classes` (`.claude/agent-memory/memory-budget.json`) — **vai KHÔNG tự chế class**; cặp light chạy **VÔ-ĐIỀU-KIỆN mỗi bookend** (hình B @S149); chỉ **`deep`** còn cổng `h24_cadence.deep_every` (`session-start §2.1.8` · `session-end §L.b(j)`). 🧊 *Mệnh-đề cũ "theo NHỊP, không phải mỗi phiên" GỠ @S164 — trái hành-vi đo được (S154 counter≈28 · S158 counter=32 đều < `light_every` mà cặp VẪN chạy); đây là site thứ 7 của FLAG-1 sau khi 6 site trong 2 file LỆNH vá @S159 — lớp persona/doc sót lại.*
|
||||
- ⚠️ **Đổi roster = đổi 2 BỀ-MẶT ĐỘC-LẬP:** (1) file `.md` trong `.claude/agents/` → **Agent-tool registry** · (2) hằng `VALID_ROLES` trong `hmw.js` → **workflow `agentType`**. Sửa 1 quên 1 = vai **spawn được tay nhưng THROW trong workflow** (hoặc ngược lại). 🔴 **Registry = ảnh-chụp lúc khởi phiên, KHÔNG hot-reload** ⇒ vai mới cần **RESTART + spawn-probe THẬT** (`session-start §0.6b`) — `ls` + grep VALID_ROLES là **điều-kiện CẦN, KHÔNG ĐỦ**.
|
||||
- **Memory governance (M1–M5 + R1):** B1 slice-inject (agent ← slice MEMORY của đúng vai qua `args`) · M2 return-delta-only (`memoryDelta{task,verdict,learned,surprise}`) · B3 lead single-writer VERIFY→APPEND-only (no-overwrite-unverified) · B2 harvest-LIỀN sau mỗi workflow vào `agent-memory/<role>` · M5 `store_memory` strip (đã S47). **Containment = defense-in-depth** (git-diff + Qdrant chunk-count post-P2), KHÔNG allowlist đơn-độc (G-015: sub vẫn giữ Bash/Write — KHÔNG "read-only").
|
||||
|
||||
Reference in New Issue
Block a user