[CLAUDE] Docs: S143 closeout — §L.a E-012/AS-16 + vá 4 drift H1 + harvest GATE-PASS-5
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m35s
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m35s
§L.a RCA: - E-012 + AS-16 NEW "bằng-chứng-tự-huỷ-sau-squash": outward artifact cite sha chưa-push / stamp trước khi git status sạch. Root = tiêu-chí verify chọn theo cái MÌNH đo được, không theo cái NGƯỜI NHẬN sẽ đo (cùng lớp E-010). Đối chứng: wave trước cite commit đích -> sống hết. §L.b: - (c) memory-triple: do exit 0 · de-xuat A7 251/251 · kiem reviewer FAIL 1C/4M/4m/1nit · do-record TOTAL 47 + nhip-no 4-vế. sleep-check 4d < 7d -> không INFORM. - (d)(f) harvest-curator GATE-PASS-5, 5-trục PASS, Fidelity on-behalf PASS STRONG 0-fabrication, C5 dạng-1 đủ, orphan 0/40, Sàn-5 khớp. Spawn-record 5 sub. - (g) tooling-auditor DRIFT-FOUND(4) -> vá hết: F-A doc "3-vế" vs script 4-vế (7 site prescriptive; giữ 15 file frozen) · F-B ghost-enum HIGH (mở enum 10->11 mà quên chính vai dùng nó + 2 site số) · F-C lead-model pin chưa ghi sổ (thêm dòng Lead row S143; cell canonical để owner quyết) · F-D marketplace. - (j) H24: class_repeat cập theo 2 vai · last_audit light/deep = 17 · history +S143 (khai rõ force-fire SỚM 1 nhịp theo lệnh owner, KHÔNG tới-hạn tự-nhiên). - (k) trio SKIP có vết (cần restart CLI) -> ghi CẢ session-log vì §6.4 reset WAL. Sửa-một-phía bắt được 4 lần trong phiên (tool-grant · enum · sổ đếm garble · _note counter) -> bài: đổi một con số thì grep con số đó repo-wide trước khi đóng. #53: 5/5 sub garble, 0 mất dữ-liệu nhờ ghi-đĩa. Tally ×20 -> ×25, +path-4 lead-on-behalf khi resume không cứu được diary. Test 528 kế-thừa (0 file src/fe/tests bị đụng, verify bằng diff). Bundle FROZEN. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -30,7 +30,7 @@ const VALID_ROLES = [
|
||||
'lead-view-auditor', 'lead-omission-auditor', // +S121 W2 (H24 lead-self-audit) — 2 monitor MỚI, INFORM-only propose-only.
|
||||
// 🔴 KHÔNG gộp vào tooling-auditor(H1)/harvest-curator(H2): H24 §2(1) soi LEAD (view-* = lead nhìn sai / gap-* =
|
||||
// lead bỏ sót), khác trục H1 (tooling-freshness) và H2 (harvest-integrity). Class-flag = enum ĐÓNG ở
|
||||
// memory-budget.json → lead_self_audit.flag_classes (10 class: 5 view-* + 5 gap-*) — vai KHÔNG tự chế class.
|
||||
// memory-budget.json → lead_self_audit.flag_classes (11 class: 5 view-* + 6 gap-*) — vai KHÔNG tự chế class.
|
||||
// Từ-vựng "view"/"omission" chọn CÓ CHỦ-ĐÍCH tránh va-chạm: governance-detectors.ps1:15 đã sở-hữu
|
||||
// "derived-staleness" ⇒ cấm tên *-stale-role; "GAP" quá-tải (session-end build-gap · memory-selfimprove CRITERIA+GAP).
|
||||
'harness-eval', 'harness-refine', 'harness-audit', // +S141 bộ-ba đồng-kiểm memory-system (adopt AI_INFRA 2026-07-18 khuôn 5-câu) read-only INFORM-only propose-only;
|
||||
|
||||
@ -0,0 +1,103 @@
|
||||
# sub-harvest-3 — harvest-curator @ S143 closeout GATE (§L.b d+f)
|
||||
|
||||
> Read-only · propose-only. Lead = single-writer. Ghi-đĩa-TRONG-lúc-làm (3/3 sub phiên này garble #53).
|
||||
> Run: `.claude/workflows/runs/2026-07-22-S143-closeout-audit/`
|
||||
> Started: 2026-07-22
|
||||
|
||||
## 0. Baseline đo được (raw, chưa verdict)
|
||||
|
||||
- Run-folder S143: 5 file — `run.md` 2132B · `sub-reviewer-0.md` 18205B · `sub-lead-view-1.md` 5744B · `sub-lead-omission-2.md` 10027B · `audit-synthesis.md` 6717B (dạng-1 PHẲNG).
|
||||
- Tổng run-dir toàn repo: **42**.
|
||||
- agent-memory role-dir: **17** (find -mindepth 1 -maxdepth 1 -type d — m#11 guard áp dụng, KHÔNG dùng cut -f3).
|
||||
- MEMORY.md mtime 2026-07-22 (3 file, khớp 3 sub spawn):
|
||||
- `lead-omission-auditor/MEMORY.md` 13:10:21 9680B (self-write, sau sub-file 13:09)
|
||||
- `reviewer/MEMORY.md` 13:15:36 17784B (self-write, sau sub-file 13:12)
|
||||
- `lead-view-auditor/MEMORY.md` 13:44:24 6610B (**on-behalf by lead** — sub-file 13:05, gap 39')
|
||||
|
||||
## 1. WIP log (append khi tiến)
|
||||
|
||||
### FIDELITY — ca on-behalf `lead-view-auditor` S143 (soi kỹ theo lệnh)
|
||||
Đối-chiếu entry diary vs nguồn `sub-lead-view-1.md` (5744B, 58 dòng):
|
||||
|
||||
| Mệnh-đề trong diary | Có trong sub-file? | Verdict |
|
||||
|---|---|---|
|
||||
| counter 17 · ngưỡng 18 · FORCE-FIRE SỚM 1 NHỊP, KHÔNG tới-hạn tự-nhiên | :4 verbatim | ✅ KHỚP |
|
||||
| Machine baseline TOTAL **47** | :11 "TOTAL FLAGS: 47" | ✅ KHỚP |
|
||||
| "45→46→47; +1 sau closeout S143" | sub-file CHỈ nói "45 → **+2**" (:12). Mốc 46 đến từ LANE KHÁC (`sub-reviewer-0.md`:99 "45 → 46 (không ai giải trình) → 47 (nay)" + `audit-synthesis.md`:27) | ⚠️ BEYOND-SOURCE (traceable, cùng run-folder) |
|
||||
| 3 FLAG, cả 3 `view-residual-asym` | F1/F2/F3 :40/:46/:53 | ✅ KHỚP |
|
||||
| F1 `STATUS.md:450` vs `:462` + `3f4310f` vá memory quên ô canonical | :41-44 | ✅ KHỚP |
|
||||
| F2 `agents/README.md:190` "NO Write/Edit" như sự-thật tool-grant | :47-49 | ✅ KHỚP |
|
||||
| F3 `:27` "Roster THẬT" 14 vai thiếu 3 trio | :54-56 | ✅ KHỚP |
|
||||
| "`git show 2757e41` = **0 hunk** chạm dòng này" | sub-file :56 nói "4 hunk … **bỏ sót hunk :27**" | ✅ TƯƠNG-ĐƯƠNG (paraphrase, không mâu-thuẫn) |
|
||||
| "(reviewer bắt thêm site thứ 4 `:225` cùng lớp)" | KHÔNG có trong sub-file — có trong `sub-reviewer-0.md`:73/75/78/171/250 | ✅ ĐÚNG + **quy-thuộc đúng lane** (lead ghi rõ "reviewer bắt") |
|
||||
| Lesson "acceptance grep theo CON SỐ → 0 hit ⇒ tuyên bố sạch; site liệt-kê TÊN lọt lưới" | KHÔNG trong sub-file; land trên đĩa `agents/README.md` (36cefcc) | ⚠️ BEYOND-SOURCE (lead-authored synthesis) |
|
||||
| "Cả 4 site đã vá `36cefcc`" | commit TỒN-TẠI, đúng message | (verify site-by-site bên dưới) |
|
||||
| "class_repeat view-residual-asym 0→1 … view-stale-status reset 0" | KHÔNG trong sub-file | ⚠️ **MÂU-THUẪN ĐĨA** — xem FLAG-1 |
|
||||
|
||||
⇒ **KHÔNG có bịa.** Mọi mệnh-đề beyond-source đều truy được về đĩa (lane khác cùng run-folder / commit thật) và phần mượn-lane có quy-thuộc minh-bạch. Entry lại tự-khai on-behalf ở đầu. **Fidelity = PASS (STRONG, 0 fabrication)** — chỉ 2 nit nhãn-nguồn (xem đề-xuất).
|
||||
|
||||
---
|
||||
|
||||
## 2. (d) SPAWN-RECORD 4-field đề-xuất — lead APPEND (propose-only)
|
||||
|
||||
**Nấc dùng chung:** `audit-synthesis.md:7` — *"Tất cả finding dưới đây lead ĐÃ TỰ RE-ĐO — không cái nào chỉ dựa vào lời sub"* ⇒ cả 3 lane đạt **verified**, KHÔNG dừng ở executed.
|
||||
|
||||
### R1 · `reviewer`
|
||||
- **agent:** `reviewer` (lane 0)
|
||||
- **task:** Gate OUTWARD wave đợt-9/10 — chấm email hub ĐÃ GỬI (`6c94873f72e0`, tự-khai self-gate chưa qua reviewer) + 7 adap-report: overclaim G-015 · nấc G-011 có đúng bằng-chứng · số/sha khớp đĩa.
|
||||
- **nấc:** **verified** — lead tự re-đo, `audit-synthesis.md:21-31` cột "Lead tự đo lại" = XÁC NHẬN 8/8 finding kiểm được.
|
||||
- **evidence:** `sub-reviewer-0.md` (18205B) · VERDICT **FAIL 1C/4M/4m/1nit** — F9 CRITICAL (`nhip-no-probe.ps1` sửa chưa commit + vế-4 đang chạy làm SAI một câu trong thư ĐÃ STAMP) · F1 5 sha `wal:` dangling sau squash (`is-ancestor` exit 1 cả 5) · F2 `is-ancestor 96ab2679` lật exit 0→1 cùng phiên · F3 `README:225` enum tự-xưng-mirror = 14, thiếu 3 trio · F4 TOTAL 46-khai vs 45-baseline-repo vs 47-live · F8 GROUNDED (chính reviewer = nhân-chứng frontmatter-0-Write nhưng Write+Edit thật). 3 LUẬT rút ra (cite phải sống-sau-squash · `porcelain` là bước ĐẦU outward-gate · số tuyệt-đối phải neo commit). Diary `agent-memory/reviewer/MEMORY.md` @`36cefcc`.
|
||||
|
||||
### R2 · `lead-view-auditor` 🔴 on-behalf
|
||||
- **agent:** `lead-view-auditor` (lane 1) — **#53 garble ×2, vai KHÔNG tự ghi được**
|
||||
- **task:** H24 §2(1) trục VIEW LỆCH SOURCE trên bề-mặt lead vừa re-stamp; DEEP-audit **force-fire SỚM 1 nhịp** (counter 17, ngưỡng tự-nhiên 18) theo direction owner.
|
||||
- **nấc:** **verified** — `audit-synthesis.md:41-45` lead XÁC NHẬN 3/3 site; 4/4 site đã vá `36cefcc`.
|
||||
- **evidence:** `sub-lead-view-1.md` (5744B) · 3 FLAG đều `view-residual-asym` MED (`STATUS.md:450` · `agents/README.md:190` · `agents/README.md:27` "Roster THẬT"=14 thiếu 3 trio) · +site-4 `:225` do **reviewer** bắt · machine-baseline TOTAL 47. Diary APPEND **on-behalf bởi lead sau VERIFY** @`c4903dd` (commit-message tự khai "harvest on-behalf diary lead-view") — **Fidelity soi kỹ = PASS STRONG, 0 bịa** (bảng §1).
|
||||
|
||||
### R3 · `lead-omission-auditor`
|
||||
- **agent:** `lead-omission-auditor` (lane 2)
|
||||
- **task:** H24 §2(1) trục CÁI BỊ THIẾU — carry rớt/quá-già · yêu-cầu owner mất SPECIFICS · quyết-định treo bị chìm.
|
||||
- **nấc:** **verified** — `audit-synthesis.md:51-56` lead XÁC NHẬN; số-học carry 13-vs-14 lead re-derive độc-lập.
|
||||
- **evidence:** `sub-lead-omission-2.md` (10027B) · 3 FLAG — `gap-carry-dropped` MED-HIGH (khối carry khai **13**, union distinct = **14**; `[carry:session-model-adopt]` rơi mà TỔNG KHÔNG ĐỔI nên trông như đúng; máy H24-2 corroborate MÙ) · `gap-decision-sunk` MED-HIGH (3 mục "Chờ-anh" `spec:68` chìm 2 nhãn phiên, grep 9 token × 4 bề-mặt = **0/0/0/0**; đòn bẩy ca-song-sinh `pull_warn_days` được-cấp vs `session_ctx_kb` 0/0 ⇒ bỏ-sót KHÔNG phải owner-giữ) · `gap-owner-specifics` MED (WAL không chép lượt gật 2 — **ĐÃ VÁ trong phiên**) · +3 INFORM, trong đó INFORM-3 xin **mở enum** `gap-incident-unrecorded` (CẤM tự chế class) — **đã land** `memory-budget.json` 10→11 class. Diary @`36cefcc`.
|
||||
|
||||
### R4/R5 · 2 monitor closeout — **CHƯA có diary, propose để lead APPEND**
|
||||
Run-folder có vết `sub-harvest-3.md` (tao) + `sub-tooling-4.md` (13896B, H1) nhưng cả 2 diary mtime vẫn **2026-07-18** ⇒ chưa ghi phiên này. Đúng thiết kế propose-only (lead single-writer), KHÔNG phải silent-miss vì vết run-folder đủ.
|
||||
|
||||
---
|
||||
|
||||
## 3. (f) GATE 5-TRỤC
|
||||
|
||||
| Trục | Verdict | Bằng chứng |
|
||||
|---|---|---|
|
||||
| **Coverage** | ✅ PASS | **5/5 invocation có vết** run-folder (`sub-reviewer-0` · `sub-lead-view-1` · `sub-lead-omission-2` · `sub-harvest-3` · `sub-tooling-4`). 3/3 lane việc có diary; 2 monitor pending by-design. **0 silent-miss.** |
|
||||
| **Completeness** | ✅ PASS | 3 entry đủ 4-field-tương-đương {task-scope · verdict · lesson · tag}: reviewer 3-LUẬT+tag · lead-view lesson "0 hit ≠ hết drift"+tag · lead-omission honest-zero+class_repeat+tag. Nhãn văn-xuôi thay `Task:` literal = đúng style hiện-hành. |
|
||||
| **Placement** | ✅ PASS (3 FLAG kèm) | 3 delta ĐÚNG nhà `agent-memory/<role>/`; `porcelain agent-memory` = **0** (đã commit hết, 0 mồ-côi); 0 empty-dir dưới `.claude`. FLAG-1/2/3 dưới KHÔNG phải delta lạc nhà. |
|
||||
| **Corruption** | ✅ PASS (1 nit) | U+FFFD **0/3** diary; `iconv` VALID **3/3**. **Moved-not-cut VERIFIED** cho curate reviewer @`36cefcc`: **16/16 dòng gỡ khỏi L1 byte-identical trong `archive/2026-07.md`** + 4 dòng còn lại là **stub-nén** (verbatim đã archive từ batch S134/S140 — xác nhận 5/5 bằng nội-dung đặc-trưng). Batch-marker `archive:84`. |
|
||||
| **Fidelity** | ✅ PASS (STRONG) | Bảng §1: 0 bịa; beyond-source đều truy được về đĩa + quy-thuộc đúng lane. 1 điều-kiện: xem FLAG-1. |
|
||||
|
||||
### close-gate C5 Layer3 — DUAL-ACCEPT (chỉ VERIFY, 0 re-APPEND)
|
||||
- Run-folder S143: **dạng-1 PHẲNG** `audit-synthesis.md` **6717B > 0** ✅ ĐỦ.
|
||||
- Orphan-scan repo-wide dual-accept: **0 orphan / 40 folder có `run.md`** (42 dir − 2 S117 spec-only by-design, khớp baseline S132).
|
||||
|
||||
### Sàn-5 hậu-kiểm CỜ vs NỘI-DUNG — verify độc-lập
|
||||
`grep -c … || true`: WAL hit=**0** · session-log hit=**1** (`2026-07-22-1455-S143-tiep-closeout-audit-errata.md:10` = `wf: audit-3-lane run=2026-07-22-S143-closeout-audit`) · **TỔNG=1** ⇒ **KHỚP self-measure của lead, 0 lệch.** Khớp convention S126 (session-log giữ `run=`, WAL dùng path-form — WAL:21 có cite path-form + "3/3 GARBLE").
|
||||
|
||||
---
|
||||
|
||||
## 4. FLAG cho lead (propose-only)
|
||||
|
||||
- **FLAG-1 MED `counter-file claim-vs-disk`** *(lead ĐÃ xác nhận, sẽ xử sau khối c)* — 2 diary H24 khai class_repeat + nhịp mà `.claude/governance/.session-counter.json` chưa đổi: `deep_at_counter` vẫn **3** (⇒ counter 18 phiên sau sẽ báo OVERDUE deep và **chạy lại đúng cái vừa chạy**), `class_repeat` chưa cập, `history[]` **0 entry S143** (S137/S140 đều có tiền-lệ). Khác finding F7 của reviewer (F7 = nợ entry `squash-benign`) — **bổ sung, không trùng**.
|
||||
- **FLAG-2 LOW `stray cwd-relative dir` (m#13 git-MÙ)** — `broadcasts/.claude/agent-memory/investigator-codebase/` **RỖNG**, untracked, `porcelain --ignored` = 0 dòng, mtime **2026-07-20 17:35** ⇒ residue **S141**, lọt qua 2 closeout S141/S142. Lớp S54 cwd-relative mis-land. **0 nội-dung mất** (rỗng). Đề-xuất: `rmdir` 3 tầng `broadcasts/.claude/agent-memory/investigator-codebase` → `…/agent-memory` → `…/.claude`.
|
||||
- **FLAG-3 MED `incident-detail unrecorded` (đúng class vừa mở)** — `auto-memory/MEMORY.md` index ĐÃ nâng "**×23 qua S143** — S143 ×3, 3/3 sub cùng phiên" (@`c4903dd`) NHƯNG topic-file `feedback_agent_return_garble_recover.md` vẫn dừng "**×20 tổng**", **grep "S143" = 0**. Index↔detail lệch. Mất luôn 2 data-point mới đáng giá: (a) **3/3 sub 1 phiên** = kỷ lục, và prompt ĐÃ cấm bẫy từ đầu vẫn garble (khẳng định S123: prompt-đúng không chặn được #53); (b) **recover-path MỚI**: lead-view resume KHÔNG cứu được diary ⇒ phải **on-behalf từ `sub-*.md` ghi-trong-lúc-làm** — nhánh thứ 4, khác path-1 diary. Chính là `gap-incident-unrecorded` mà lead-omission vừa xin mở enum.
|
||||
|
||||
## 5. Nit (không chặn gate)
|
||||
- **N1** — batch-marker `reviewer/archive/2026-07.md:84` khai *"hook 26.5KB→**<17.1KB**"* nhưng L1 thật = **17784B (17.4KB)**, 100 dòng (head-200 = trọn file) ⇒ claim falsifiable-**FALSE** ~274B. Vẫn dưới read-limit 24.4KB + cap 25.6KB ⇒ **không cần curate thêm**, chỉ sửa con số trong marker.
|
||||
- **N2** — entry on-behalf lead-view nên tách nhãn nguồn 1 câu: phần `:225` + lesson "grep-theo-SỐ" là **lead-authored/reviewer-lane**, không phải sub tự tìm (hiện đã ghi "reviewer bắt thêm" — đủ minh-bạch, nhưng "45→46→47" thì chưa nói rõ mốc 46 đến từ `sub-reviewer-0.md:99`).
|
||||
- **N3 (không phải turf tao — route H24/lead-view)** — `memory-budget.json` `lead_self_audit._note` vẫn tả enum là *"5 view-* + 5 gap-*"* trong khi array nay **11** (5+6) sau khi mở `gap-incident-unrecorded`. Narrative-vs-data drift ngay tại file vừa sửa.
|
||||
- **VERIFIED-CLEAN (chống false-alarm):** (a) `audit-synthesis.md:64` "CHƯA áp một cái nào" = **frozen-at-13:18 đúng thời-điểm**, sau đó `36cefcc` mới áp — trap#3 frozen-narrative, **KHÔNG flag**; (b) U+FFFD trong diary CỦA TAO = 1, là self-quote `"<FFFD>24.1KB"` trong entry S132 — m#9 quoted-evidence cố-ý, **benign**; (c) 2 dir thiếu `run.md` = 2 S117 spec-only by-design, khớp baseline S132.
|
||||
|
||||
## 6. Method mới (đúc phiên này)
|
||||
- **m#14 — `git show | grep -v "^[+-][+-]"` NUỐT dòng index kiểu `+- [Title](file.md)`:** tao tự dính bẫy m#5 của chính mình lượt này (diff `auto-memory/MEMORY.md` ra RỖNG ⇒ suýt kết luận "không đổi"). Filter đúng: `grep "^[+-]" | grep -v "^+++\|^---"`. m#5 nay có ca thật lần 2 ⇒ nâng thành phản-xạ mặc-định, KHÔNG chỉ ghi nhớ.
|
||||
- **m#15 — moved-not-cut phải phân-biệt DÒNG-NỘI-DUNG vs STUB-TRỎ-ARCHIVE:** curate đời-sau nén stub cũ (`[→ archive @S140] …`) làm chúng "mất" khỏi archive-grep ⇒ dương-giả "cut-not-moved" 4/20. Test đúng = với stub, grep **nội-dung đặc-trưng của entry gốc** trong archive, KHÔNG grep chuỗi stub.
|
||||
|
||||
|
||||
@ -0,0 +1,116 @@
|
||||
# sub-tooling-4 — H1 tooling/docs freshness CHỐT @session-end S143 (2026-07-22)
|
||||
|
||||
> Ghi-đĩa TRONG-lúc-làm (chống #53). Propose-only. Lead = single-writer.
|
||||
> HEAD `c4903dd`. Wave S143 = 5 commit `2757e41 3f4310f 36cefcc 39cc060 c4903dd` (base `b146e2b`).
|
||||
|
||||
## Ground-truth disk (đo lúc chạy)
|
||||
- `.claude/agents/*.md` = **18 file** = **17 persona + README.md** ✓ (roster 17 khớp yêu-cầu "giữ 17 vai")
|
||||
- cicd-monitor · database-agent · frontend-designer · harness-audit · harness-eval · harness-refine · harvest-curator · implementer-backend · implementer-frontend · investigator-api · investigator-codebase · lead-omission-auditor · lead-view-auditor · office-document · reviewer · test-specialist · tooling-auditor
|
||||
- `.claude/skills/` = 6 project skill + README.md (0 đổi; `git log -- .claude/skills/` last-touch = `a09dcae`, TRƯỚC wave S143)
|
||||
- `~/.claude/skills/` = 23 standalone
|
||||
- `.claude/commands/*.md` = 18
|
||||
|
||||
## VERDICT: DRIFT-FOUND (4) — ①PASS(+1 LOW carry) · ②PASS · ③DELTA-2 · ④DRIFT-2
|
||||
|
||||
| Mặt | Trạng-thái | Cần-update |
|
||||
|---|---|---|
|
||||
| ① skill | **PASS** | 0 đổi S143. 1 LOW carry monthly-lane (ef-core `:307` Mig-66→67) |
|
||||
| ② sub-role | **PASS** | 0 — 17=17=17=17 khớp 4 nguồn, 4 site vá S143 verified-landed |
|
||||
| ③ plugin/config | **DELTA-2** | F-C settings model pin flip chưa ghi sổ · F-D marketplace 35→37 |
|
||||
| ④ docs | **DRIFT-2** | F-A dòng-nợ 3→4 vế (7 site) · F-B enum 10→11 (3 site, 1 FUNCTIONAL) |
|
||||
|
||||
## ① SKILL — PASS
|
||||
- `.claude/skills/` **6 project** (contract-workflow · form-engine · permission-matrix · dependency-audit-erp · ef-core-migration · iis-deploy-runbook) + README.md. `git diff b146e2b..HEAD -- .claude/skills/` = **RỖNG** ⇒ 0 skill đụng trong wave S143.
|
||||
- SKILL.md mtime: contract-workflow 24452B (05-08) · dependency-audit-erp 5551B (06-18) · ef-core-migration 32914B (07-14) · form-engine 5450B (04-30) · iis-deploy-runbook 14688B (06-25) · permission-matrix 7864B (07-15).
|
||||
- `~/.claude/skills/` = **23 standalone** (algorithmic-art…xlsx) — IDENTICAL baseline S140, 0 mới.
|
||||
- Map-vai: `agents/README.md:179-185` skill-matrix có **đủ 17 row** (vá S143 `2757e41` "skill-matrix 15→17" — verified: 3 row trio `:183-185` + 2 row H24 `:181-182` present) ✓
|
||||
- 🔸 LOW (carry, monthly-lane): `.claude/skills/ef-core-migration/SKILL.md:307` còn "§16+ **Mig 27-66** detail pending" trong khi canonical = **Mig 67** (S133, 2026-07-17). Owner = audit đầu-tháng `CLAUDE.md:113` **2026-08-01**, KHÔNG phải drift-mới của S143.
|
||||
|
||||
## ② SUB-ROLE — PASS (17 khớp 4/4 nguồn)
|
||||
| Nguồn | Số | Bằng-chứng |
|
||||
|---|---|---|
|
||||
| disk | 17 | `ls .claude/agents/*.md` = 18 file − README.md |
|
||||
| `docs/STATUS.md:450` | **17** | cột giữa row `Sub-agents` (canonical B1) |
|
||||
| `hmw.js:22-40` VALID_ROLES | 17 | 17 chuỗi role, +3 trio `:36` |
|
||||
| `.claude/agent-memory/` | 17 folder | 18 entry − `memory-budget.json`; khớp `README:237` "17 folder" |
|
||||
- 4 site vá S143 **VERIFIED-LANDED**: `README:27` (Roster THẬT nay liệt đủ 12 tên + trỏ canonical, KHÔNG số) · `README:225` (VALID_ROLES + "7 monitor") · `README:190` + `STATUS:450` (đã reword "NO Write/Edit" = **tuyên-bố ý-định**, containment thật = single-writer + git-diff) ✓
|
||||
- Trio frontmatter đồng-nhất `model: opus` + `effort: max` + `memory: project` + `maxTurns: 18` + 8 tool read-only (3/3 file `:5-9`) — khớp mô-tả `STATUS:450`.
|
||||
- Nấc trio: `STATUS:450` + `HANDOFF:5` + `:7(1)` đều khai **"CHƯA spawn lần nào / verified-pending-restart"** — **KHÔNG có site nào lỡ khai đã-chạy/verified-runtime** (grep `verified-runtime|đã chạy|spawn-probe` trên commands/ + agents/README + STATUS + HANDOFF: 0 hit gán cho trio) ✓
|
||||
- 0 vai thừa/idle/scope-drift: 7 monitor đều có ranh khai tường-minh (H1⟂H2⟂H24×2⟂trio×3) `README:227` + `:129-133`.
|
||||
|
||||
## ③ PLUGIN/CONFIG — 18/15/3 PASS nhưng **2 DELTA config chưa ghi sổ**
|
||||
- `~/.claude/settings.json` `enabledPlugins` = **18 registered / 15 enabled / 3 disabled** (`pr-review-toolkit` · `code-modernization` · `hookify`) — **IDENTICAL** baseline S125→S140, 0 đổi.
|
||||
- Nấc báo đúng: installed 18 → enabled 15 → assigned (bảng `README:199` + skill-matrix) → used (per-session). KHÔNG conflate.
|
||||
- `pull_warn_days` **KHÔNG ghost-wire** ✓: script `:187-192` ĐỌC key (`$cad.pull_warn_days`), key CỐ Ý vắng trong `memory-budget.json` ⇒ degrade INFORM đúng thiết kế; khớp `HANDOFF:7(2)` carry chờ anh đặt số.
|
||||
- → xem **F-C** (model pin) + **F-D** (marketplace 35→37).
|
||||
|
||||
## ④ DOCS — DRIFT-2 (F-A + F-B), phần còn lại PASS
|
||||
- `CLAUDE.md:105/:113/:136` "6 skill" + audit kế 2026-08-01 ✓ khớp disk.
|
||||
- `STATUS.md:462` + `HANDOFF.md:5` (row S141–S143) mô-tả wave: roster 14→17 ✓ · vế-4 `pull-cach` ✓ · `flag_classes` 10→11 ✓ · trio chưa-spawn ✓ · 5 commit ✓ — **phản-ánh ĐÚNG + KỊP**.
|
||||
- `agents/README.md:190/:225` G-015 wording ✓ (đã hạ "read-only enforced" xuống "ý-định").
|
||||
- Drift còn lại = F-A (dòng-nợ) + F-B (enum) dưới.
|
||||
|
||||
## FINDING sống (cập-nhật dần)
|
||||
### F-A [dòng-nợ 3-vế → 4-vế] — script đã 4 vế, doc prescriptive còn "3-vế"
|
||||
Script `scripts/nhip-no-probe.ps1:201` in **4 đoạn**:
|
||||
`NHIP-NO: kiem {0} | {1} | {2} | {3}` với vế-4 = `pull-cach N ngay` (`:162-198`), header `:22` khai đủ 4 vế.
|
||||
Site PRESCRIPTIVE (mô-tả hành-vi SỐNG) còn "3-vế" — ứng-viên DRIFT:
|
||||
- `.claude/commands/pause.md:44`
|
||||
- `.claude/commands/session-end.md:57`, `:63` (khuôn do-record), `:101`
|
||||
- `.claude/commands/session-start.md:213`
|
||||
- `.claude/commands/tiep.md:112`
|
||||
- `docs/governance/session-model-se-draft.md:34` (bảng "NHIP-NO probe 3-vế")
|
||||
Site FROZEN-IN-TIME (KHÔNG drift — record lịch-sử): `runs/2026-07-17-*`, `spec-adap-*`, `adap-reports/*`, `docs/changelog/sessions/*`, `STATUS.md:482` (mục lịch-sử S135-S136), `HANDOFF.md:13` (Prev-block).
|
||||
- error-ledger carve-out `:49` nói "dòng-nợ read-only vẫn IN ở MỌI điểm dừng" — KHÔNG khai số vế ⇒ **KHÔNG stale** ✓
|
||||
- `docs/governance/harness-11-engine.md` — grep `nhip-no|dòng-nợ|vế` = **0 match** ⇒ KHÔNG stale ✓
|
||||
|
||||
### F-B [enum `flag_classes` 10→11] — doc-sync CHƯA xong, 1 site FUNCTIONAL 🔴 HIGH
|
||||
Live: `memory-budget.json:129` = **11 class** = 5 `view-*` + **6** `gap-*` (`view-stale-count/status/header/role-desc` · `view-residual-asym` · `gap-carry-dropped/aged/owner-specifics/decision-sunk/underfill` · **`gap-incident-unrecorded`** mới).
|
||||
`git show --stat 36cefcc` (commit MỞ enum) đụng `memory-budget.json` + `agents/README.md` + STATUS + HANDOFF — **KHÔNG đụng `.claude/agents/lead-omission-auditor.md`**.
|
||||
|
||||
🔴 **B-1 FUNCTIONAL (HIGH) — `.claude/agents/lead-omission-auditor.md`** = ĐÚNG cái vai phải DÙNG class mới, mà bản-sao-cục-bộ của enum vẫn 5:
|
||||
- `:29` heading `## 5 class của mày — enum ĐÓNG`
|
||||
- `:35-39` bảng **chỉ 5 row** — `gap-incident-unrecorded` **VẮNG MẶT hoàn toàn** (grep tên class trên toàn `.claude/agents/`: 0 hit)
|
||||
- `:41` "broadcast liệt 5 dấu-hiệu, **enum có 5 class**"
|
||||
⇒ **ghost-enum kiểu H18 "defined-but-unread"**: class có trong JSON nhưng consumer duy-nhất không thấy. Vai lại bị luật "CẤM tự chế class" ⇒ lần tới gặp ca incident-unrecorded nó sẽ **escalate lại đúng thứ vừa được duyệt**, hoặc ép vào class sai. Bản-sao-cục-bộ (có cột ngữ-nghĩa + cột nơi-soi) THẮNG con-trỏ `:31` trong thực-dụng — nên đây KHÔNG phải nit trình-bày.
|
||||
- ⚠️ ăn thẳng vào chính vụ vừa xảy ra: `WAL:29` INFORM-3 ghi "sub xin anh MỞ ENUM… nó KHÔNG tự bịa" — cơ-chế escalate chạy đúng, nhưng vòng lặp chưa khép vì bước ghi-lại-vào-persona bị bỏ.
|
||||
|
||||
**B-2 (MED) `docs/STATUS.md:450`** — 2 chỗ trong CÙNG row canonical:
|
||||
- "`lead-omission-auditor` = cái BỊ THIẾU (**5 class** `gap-*`)" → phải 6
|
||||
- "flag_classes … (**10 class = 5+5**, vai CẤM tự chế)" → phải 11 = 5+6
|
||||
|
||||
**B-3 (MED) `.claude/workflows/hmw.js:33`** (comment cạnh VALID_ROLES) — "flag_classes (**10 class: 5 view-\* + 5 gap-\***)".
|
||||
|
||||
**Sạch ✓ (đã trỏ key, KHÔNG chép số — B1 đúng):** `session-start.md:117` · `:211` · `session-end.md:103` · `ultra-on.md:25` · `agents/README.md:227` · `docs/governance/harness-11-engine.md` (0 match) · `scripts/*.ps1` (0 match) · `lead-view-auditor.md:39/:41` ("5 class" vẫn **ĐÚNG** — nhánh `view-*` không đổi; **KHÔNG được "sửa" thành 11**, nó chỉ nói phần của nó).
|
||||
|
||||
### F-C [lead-model pin flip KHÔNG ghi sổ] — MED, mặt ③→④
|
||||
- `~/.claude/settings.json:11` = **`"model": "claude-opus-4-8[1m]"`** (`:37` `effortLevel: xhigh` giữ). mtime = **2026-07-20 13:38:37**, size 1615B. Baseline mọi phiên trước (S125→S140 diary + `STATUS:345` + `STATUS:374`) = `claude-fable-5[1m]`.
|
||||
- ⇒ pin **owner-choice**, KHÔNG outage: `.claude/WAL.md:9` phiên này `wf: fable-real gate … model=claude-fable-5` ⇒ Fable VẪN resolve được qua spawn-param. Đúng khuôn MTv3 "owner-chọn-hạng-hai ≠ outage → 0 caveat / 0 revert".
|
||||
- 🔴 Nhưng **nghĩa-vụ ghi-sổ chưa làm** (`session-start.md:39` "đổi giữa phiên OK, **ghi 1 dòng session-record**" + `:47` "Flip-record gắn nhãn {owner-choice|outage}"):
|
||||
- `STATUS.md:462` row S141–S143 = **row DUY NHẤT không có dòng `Lead <model>`** — so `:468` (S140 "Lead Fable 5 (owner-choice flip mới, MTv3 0-caveat)") · `:489` · `:503` · `:515` · `:532` · `:543` · `:554` đều có.
|
||||
- `STATUS:450` canonical §Sub-agents còn câu hiện-hành *"Lead = frontier-class owner-choice per-session: **em main Fable 5 (1M) Max**"* — mâu-thuẫn settings hiện-tại.
|
||||
- `session-start.md:43` outage-path còn hardcode lỗi `"Model isn't available — claude-fable-5[1m]"` → fallback **`/model claude-opus-4-8[1m]`** = **bảo đổi sang đúng cái đang pin** ⇒ recipe hồi-phục thành no-op.
|
||||
- Đề-xuất (quyền anh): (a) +1 dòng flip-record vào row S141–S143 `{owner-choice}` — nhãn nào là quyền anh, đừng đoán; (b) `STATUS:450` đổi câu hiện-hành thành trỏ-runtime-probe thay vì tên model cứng; (c) `session-start.md:43` viết outage-path **đối-xứng 2 chiều** (down model nào → sang model kia) thay vì cứng 1 hướng.
|
||||
|
||||
### F-D [marketplace 35 → 37] — LOW, lớp-đo bị bỏ sót
|
||||
- `~/.claude/plugins/marketplaces/claude-plugins-official/plugins` = **37 dir** (baseline diary S125 = 35). 18 registered ⊂ 37 (`REGISTERED-NOT-IN-MK` = **rỗng** ⇒ 0 plugin mồ-côi).
|
||||
- 19 available-not-registered: `agent-sdk-dev` `clangd-lsp` `code-simplifier` `cwc-makers` `example-plugin` `gopls-lsp` `jdtls-lsp` `kotlin-lsp` `lua-lsp` `math-olympiad` `mcp-tunnels` `php-lsp` `project-artifact` `pyright-lsp` `ralph-loop` `ruby-lsp` `rust-analyzer-lsp` `security-guidance` `swift-lsp`.
|
||||
- KHÔNG quy được "2 cái nào mới": **toàn bộ 37 dir cùng mtime `2026-07-17 13:51:45`** = refresh/re-clone cả cây ⇒ mtime mất giá-trị phân-biệt.
|
||||
- 🔴 Tự-soi: các phiên trước (gồm chính tôi @S140 "③PLUGIN PASS 18/15/3 IDENTICAL") chỉ đo **lớp registered/enabled**, KHÔNG đo **lớp marketplace-inventory** ⇒ +2 sống ≥5 ngày không ai thấy. Cùng họ với bài `commands/*.md` blind-spot (S57/S99/S126): sweep liệt consumer thiếu MỘT LỚP thì miss tái-sinh.
|
||||
|
||||
## 🔌 NEW-ALLOC audit (skill/plugin mới chưa phân-bổ)
|
||||
- **Skill: 0 mới** (6 project + 23 standalone identical) ⇒ 0 alloc-action.
|
||||
- **Plugin enabled: 0 mới** (18/15/3 identical) ⇒ 0 alloc-action trên lớp enabled.
|
||||
- **Marketplace available (F-D) — 3 ứng-viên đáng cân-nhắc, 16 SKIP:**
|
||||
| Plugin | Đề-xuất | Lý-do |
|
||||
|---|---|---|
|
||||
| `security-guidance` | **CÂN-NHẮC** — gán `reviewer` (+ `cicd-monitor` lớp commit) | "injection, XSS, SSRF, hardcoded secrets" — trùng lane authz/secret mà S118 #82 (`feedback_permission_grant_two_layers`) vừa cho thấy em-main-solo hay sót; ⚠️ nó có **hook Stop + edit-time warning** ⇒ đụng `.claude/settings.json` hooks (đang chỉ có `wal-flush.ps1`) ⇒ **anh quyết**, KHÔNG tự bật |
|
||||
| `code-simplifier` | **SKIP (yếu)** | trùng lane `reviewer` + `implementer-*`; SE đã có luật rules.md, thêm agent = phình roster (floor H3 "gộp-vai KHÔNG phình") |
|
||||
| `project-artifact` | **SKIP** | status-page generator — SE đã có `STATUS.md`/`HANDOFF.md` + `session-report` plugin đang enabled |
|
||||
| 16 còn lại | **SKIP** | 9 LSP ngôn-ngữ ngoài stack (.NET/TS đã có `csharp-lsp`+`typescript-lsp` enabled) · `example-plugin`/`math-olympiad`/`cwc-makers`/`ralph-loop`/`mcp-tunnels`/`agent-sdk-dev` = ngoài lãnh-địa SE |
|
||||
- 3 vai trio `harness-{eval,refine,audit}`: skill-matrix `README:183-185` đã gán ref-only đúng (đọc output `measure-agent-memory`/`mfe-eval`/`memory-archive-gate`/`crystallized-backfill`/`nhip-no-probe`) ⇒ **0 alloc-gap**.
|
||||
|
||||
## 📌 Method-note (cho lần sau)
|
||||
1. **Đổi 1 giá-trị trong file-CONFIG ⇒ grep MỌI bản-sao-cục-bộ của enum đó trong PERSONA**, không chỉ doc-tóm-tắt. Enum đóng có 2 bản: JSON (authoritative) + bảng-trong-persona (thứ vai thật-sự đọc). Sync 1 nửa = mở enum trên giấy.
|
||||
2. **Marketplace-inventory là lớp ĐO RIÊNG** với enabledPlugins — từ nay đếm cả 2 (`ls …/marketplaces/*/plugins | wc -l` + settings) mới được kết "③ PASS".
|
||||
3. Prescriptive ⟂ frozen-in-time: chỉ vá nhóm prescriptive; sửa record lịch-sử = giả-mạo (lead đã xác nhận cách tách này đúng @S143).
|
||||
Reference in New Issue
Block a user