wal: flush 20260730T1614
This commit is contained in:
@ -59,3 +59,101 @@ Class ∈ enum ĐÓNG `lead_self_audit.flag_classes`: view-stale-count · view-s
|
|||||||
**resolve:** thêm 3 tên `ctx-*` vào enumeration :242 + sửa "10 monitor" → 13 (hoặc bỏ số theo đúng luật B1 của chính dòng đó), rồi `ls .claude/agents/*.md | wc -l` đối chiếu.
|
**resolve:** thêm 3 tên `ctx-*` vào enumeration :242 + sửa "10 monitor" → 13 (hoặc bỏ số theo đúng luật B1 của chính dòng đó), rồi `ls .claude/agents/*.md | wc -l` đối chiếu.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## FLAG-3 — `view-stale-count` — HIGH
|
||||||
|
|
||||||
|
**view:** `docs/STATUS.md:479` — dòng nhãn **"Bundle hash live (prod):"** ghi admin **`8-QYcMOg`** · user **`DptYR4wL`**, chú "đo LIVE @S157 2026-07-28, Run #419 `6250f39`".
|
||||||
|
|
||||||
|
**source (đo sau đó, 2 lần rotate):**
|
||||||
|
- `.claude/agent-memory/cicd-monitor/archive/2026-07.md:73` (Run #426, S159 `ea962b1`): admin `CC1pGE1F`→**`D0sXA0fe`** · user `CLfAftby`→**`Y6dW_5CM`**.
|
||||||
|
- `.claude/workflows/runs/2026-07-30-S162-cay-4-folder-gd/sub-cicd-monitor-2.md:90-93` (S162 `bfc7b79`, cicd PASS 5/5): admin js **`index-DXoYDy7R.js`** / css **`index-BZ5F-g1w.css`** · eoffice js **`index-o8KDluD1.js`** / css **`index-yNZDmVNz.css`** — kèm chứng bundle CŨ đã chết (`:104-105` hash cũ nay trả `text/html` 876/900 B).
|
||||||
|
- Ngay TRONG `docs/STATUS.md` dòng `:9` (khối S159→S160) đã ghi admin js `D0sXA0fe` · user js `Y6dW_5CM` ⇒ **cùng file tự mâu thuẫn**, không cần ra ngoài mới bác được.
|
||||||
|
|
||||||
|
**Lệch:** ô tự nhận là **"live (prod)"** đang trỏ cặp hash của **3 lần deploy trước** (S157 → S159 #426 → S162 `bfc7b79`).
|
||||||
|
|
||||||
|
🔴 **Cay nhất: chính dòng đó đã mang sẵn lời cảnh báo về đúng lỗi này** — nửa sau `:479` kể lại ca S158 ("*ô này từng đứng ở cặp cũ sau khi prod đã rotate … `cicd-verify-s157-diadiem.md:58` dùng chính ô này làm baseline ⇒ lượt deploy kế hoặc báo 'ĐỔI' giả hoặc che một lần không-rotate*"). Lời cảnh báo được viết, **giá-trị thì không được nuôi** ⇒ cùng cơ-chế hại tái lập nguyên vẹn: cicd lượt sau lấy ô này làm baseline sẽ so với hash đã chết 3 đời.
|
||||||
|
|
||||||
|
**resolve:** cập nhật `:479` sang cặp S162 (`DXoYDy7R`/`BZ5F-g1w` · `o8KDluD1`/`yNZDmVNz`) + ghi mốc đo; hoặc **bỏ hẳn giá-trị** và trỏ cicd-verify tươi nhất (B1 — ô "live" mà không có nghi-thức nuôi thì đừng giữ số).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## FLAG-4 — `view-stale-header` — MED
|
||||||
|
|
||||||
|
**view:** `docs/STATUS.md:461` — tiêu-đề section canonical: `## 🎯 CURRENT STATE (baseline S40 — re-ground sống liên tục, **mốc gần nhất S156** [… header bump @S157 ctx-verifier C3])`.
|
||||||
|
|
||||||
|
**source (cùng section, các row đã re-ground SAU S156):** `:465` Migrations `+S161: Mig 69` · `:466` SQL tables `🔄 96 @S161` · `:470` Policies `🔄 220 @S161` · `:472` Tests `🔄 +28 @S161 … đo tươi @S162`.
|
||||||
|
|
||||||
|
**Lệch:** view nói mốc re-ground gần nhất = **S156**; source trong CHÍNH section nói **S161** (giá-trị) / **S162** (lần đo tươi). Trượt **5-6 nhãn phiên**.
|
||||||
|
|
||||||
|
**Tự-falsify:** ngoặc vuông của chính tiêu-đề ghi luật *"bump theo lần re-ground giá-trị mới nhất trong section"* ⇒ dòng vi phạm đúng luật nó tuyên bố. `git log -L461,461` cho thấy trường này CÓ được nuôi (S151→S153→S156 qua `11db5ef`, `a52a91e`) rồi ngừng.
|
||||||
|
|
||||||
|
🔁 **Tái phát:** cùng class, cùng dòng — `lead-stale` FLAG-2 @S153 đã bắt ("mốc gần nhất S151" trong khi đã re-stamp @S152). Vá lần đó là **sửa giá-trị**, không **wire nghi-thức bump** ⇒ trôi lại.
|
||||||
|
|
||||||
|
**resolve:** bump `:461` → S161 (hoặc S162 nếu tính lần đo tươi), và gắn bước bump vào nghi-thức closeout thay vì sửa tay từng lượt.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## FLAG-5 — `view-residual-asym` — HIGH
|
||||||
|
|
||||||
|
**view:** `docs/HANDOFF.md:65` — khối mở đầu **"🔴 CÒN CẦN SỐ CỦA ANH — (51-bis):"** ghi `cicd-monitor/archive/_INDEX.md` nay **19.958/20.480 = 97,45%**, headroom **522 B**.
|
||||||
|
|
||||||
|
**source:** đo đĩa lúc này — `.claude/agent-memory/cicd-monitor/archive/_INDEX.md` = **20.313 B**; cap `memory-budget.json → tiers.l2_index.cap_bytes` = **20.480** ⇒ **99,18%**, headroom **167 B**. Khớp `docs/HANDOFF.md:15` slot (57) và `.claude/sessions/session-8/_end` dòng `pending-anh` ("(57) _INDEX 99,18%/167 B thước tươi").
|
||||||
|
|
||||||
|
**Lệch:** view nói headroom **522 B**; source nói **167 B** — thấp hơn **3,1×**. Vế "(c) chấp nhận vỡ cap ~1-2 phiên nữa" tính trên 522 B là sai hẳn bậc: 167 B ≈ **một dòng append**.
|
||||||
|
|
||||||
|
🔴 **Đây là sửa-MỘT-PHÍA, không phải "chưa kịp vá":** cùng phiên S162 lead ĐÃ viết slot (57) ở `:15` nói thẳng *"KHÔNG phải 97,45% / 522 B như slot (51-bis) cũ ghi"* — tức **biết** số cũ đã chết — nhưng để nguyên `:65`.
|
||||||
|
|
||||||
|
**Bác trước lập-luận "đó là segment đóng-băng":** `:37` đúng là khai *"Segment trước (S159→S160) giữ nguyên bên dưới làm lineage"*, NHƯNG trong **chính segment ấy** `:69` đã được vô-hiệu-hoá đúng nghi-thức (`~~(45)~~ ✅ **RÚT @S159 — BÁO ĐỘNG GIẢ**`) ⇒ convention "slot owner đã bị thay thế thì phải gạch + lật trạng-thái" **tồn tại và được dùng**; `:65` là chỗ DUY NHẤT bị bỏ, và nó vẫn đeo cờ 🔴 "CÒN CẦN SỐ CỦA ANH" trần trụi. Owner quét HANDOFF theo cờ đỏ sẽ đọc trúng nó.
|
||||||
|
|
||||||
|
**resolve:** gạch `:65` + trỏ slot (57), giống hệt cách `:69` đã làm.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## FLAG-6 — `view-stale-count` — HIGH
|
||||||
|
|
||||||
|
**view:** `docs/HANDOFF.md:17` slot **(58)** — *"SLOT (45) SỐNG LẠI — trần `_mind` là THẬT… file SỐNG `_mind-s-8.md` nay **89,06% (29.184/32.768 B)** và mỗi cửa `/pause`…"*. Nhắc lại ở `.claude/sessions/session-8/_end` dòng `pending-anh`: "(58) trần _mind slot-45 sống lại 89,06%".
|
||||||
|
|
||||||
|
**source (đo đĩa lúc này):**
|
||||||
|
- `.claude/sessions/session-8/_mind-s-8.md` = **32.181 B** (mtime 2026-07-30 15:12) / cap `mind_ctx_kb` 32 × 1024 = 32.768 ⇒ **98,21%**, headroom **587 B** — KHÔNG phải 89,06% / 3.584 B.
|
||||||
|
- `.claude/sessions/session-8/_end` **tồn tại** (15:11) ⇒ cửa-sổ session-8 **đã đóng**.
|
||||||
|
- `.claude/sessions/session-9/_context-s-9.md` (tạo 16:01, scaffold `sID=9`) là file duy nhất trong `session-9/`; **`_mind-s-9.md` CHƯA tồn tại** ⇒ `/pause` kế tiếp của L9 ghi vào file gần-rỗng.
|
||||||
|
|
||||||
|
**Lệch kép:** (a) con số sai ngay với chính file nó đo (89,06% → thật **98,21%**, trôi ~3.000 B trong lúc closeout); (b) tiền-đề "file SỐNG" **hết đúng** kể từ khi session-9 mở — `_mind-s-8` nay là artifact đóng.
|
||||||
|
|
||||||
|
🔴 **Chu-kỳ thứ BA của cùng một lỗi, ở cùng một trục:** S159 FLAG-3 rút slot (45) vì nó đo trên `_mind-s-7` đã đóng băng → S162 hồi sinh thành (58) đo trên `_mind-s-8` **khi đó còn sống** → S163 mở session-9, `_mind-s-8` đóng băng, slot lại trỏ vật chết. Đây **không phải sự-cố lẻ mà là lỗi NEO**: slot neo vào **tên file** thay vì neo vào *"file `_mind` của phiên-logic hiện hành"*.
|
||||||
|
|
||||||
|
**Hại:** giống hệt lời cảnh báo lead tự viết ở `HANDOFF:70` — *"nó xin anh tiêu một quyết định owner … dựa trên số đo của một artifact đã chết"*. Đúng câu đó, lần thứ ba.
|
||||||
|
|
||||||
|
**resolve:** slot (58) đo lại trên `_mind-s-9.md` khi nó ra đời, hoặc viết lại theo dạng *bất-biến* ("`_mind` của phiên-logic hiện hành, đo @thời-điểm-trình") — số neo tên file sẽ chết ở MỌI ranh-giới phiên.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## FLAG-7 — `view-stale-count` — MED
|
||||||
|
|
||||||
|
**view:** `CLAUDE.md:62` — *"Lịch sử mig gần đây:"* mở đầu bằng **`+S133 Mig 67`** rồi lùi về S97/S74/S73… ; `CLAUDE.md:69` bảng Modules — row PurchaseEvaluation cột Migration = `12,13,15,49,50,52-61,65-67`; row Contract = `1-11`.
|
||||||
|
|
||||||
|
**source:** `docs/STATUS.md:465` canonical — **Mig 69** `AddContractSigningPlans` (S161, 7 bảng MỚI cho HĐ) và **Mig 68** `AddPeAllowApproverDelete` (S155, thuộc **PE**).
|
||||||
|
|
||||||
|
**Lệch:** danh-sách "gần đây" dừng ở 67 ⇒ bỏ đúng **2 mig mới nhất**; bảng module gán sai chủ: Mig 68 là PE nhưng dải PE dừng ở 67, Mig 69 là Contract nhưng dải Contract vẫn `1-11`. Đo: `grep -c "Mig 68\|Mig 69\|Migration 68" CLAUDE.md` = **0**.
|
||||||
|
|
||||||
|
**Không lẫn với luật B1:** `:62` tự khai *"KHÔNG copy số ở đây"* — luật đó áp cho **tổng số mig**, còn *danh-sách lịch-sử* và *ánh-xạ mig→module* là nội dung riêng của file này, không có canonical thay thế ⇒ để trống = mất thông tin, không phải tuân luật.
|
||||||
|
|
||||||
|
**Sức nặng:** `CLAUDE.md` là project-instruction **auto-inject vào mọi phiên và mọi sub-agent** ⇒ sai ánh-xạ mig→module lan rộng nhất trong các bề-mặt derived.
|
||||||
|
|
||||||
|
**resolve:** thêm Mig 68 (PE) + Mig 69 (Contract) vào `:62` và vào 2 row bảng `:69`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## FLAG-8 — `view-stale-status` — LOW
|
||||||
|
|
||||||
|
**view:** `docs/HANDOFF.md:32` (NEXT-em mục 6) — *"`_context-s-8` PAUSE-3 ghi menu '135→142' … — **file này nằm trong `tiep_reload.sources` ⇒ sai số tái sinh mỗi `/tiep`**"*.
|
||||||
|
|
||||||
|
**source:** `.claude/agent-memory/memory-budget.json:19` — `tiep_reload.sources` trỏ `.claude/sessions/session-<N>/_context-s-<N>.md`, **N = phiên-logic hiện hành**. `.claude/sessions/session-9/_context-s-9.md` đã tồn tại (16:01, `sID=9`) và `session-8/_end` đã đóng ⇒ `<N>` nay = **9**, `_context-s-8.md` **rơi khỏi** đường nạp.
|
||||||
|
|
||||||
|
**Lệch:** view mô-tả một kênh lan sai-số đang **SỐNG**; source cho thấy kênh ấy đã **đóng** từ lúc scaffold session-9. Con số sai vẫn còn trong `_context-s-8.md:113` nhưng nay nằm trong FLOW **append-only bất-biến** (`_context-s-9.md:8` nêu luật *"TUYỆT ĐỐI KHÔNG sửa entry verbatim đã ghi"*) ⇒ **lối vá đúng là errata chỗ khác, KHÔNG phải sửa entry**.
|
||||||
|
|
||||||
|
**Ghi rõ để không bị đọc quá tay:** phần *"cicd đo 142→142"* ở `:32` là **ĐÚNG** (`runs/2026-07-29-S161-khkk-w1-schema/cicd-verify-a8027c0.md:66` — "MenuItems **142 GIỮ**"). Chỉ **mệnh-đề cơ-chế** là lỗi thời. Và **KHÔNG tái-flag "88→95"** trong cùng dòng đó: `ring2-audit` @S162 đã phân-xử số ấy **đúng** trong đơn-vị EF-snapshot (`sub-ring2-audit-close-S162.md:115`), FLAG-16 khi ấy TRƯỢT vì ép-vừa-enum — tao giữ nguyên phán quyết đó.
|
||||||
|
|
||||||
|
**resolve:** `:32` bỏ vế "tái sinh mỗi `/tiep`", đổi thành errata một-lần (kênh đã đóng) — nếu không, mục này sẽ được ưu tiên cao hơn giá-trị thật của nó.
|
||||||
|
|
||||||
|
---
|
||||||
|
|||||||
@ -85,3 +85,33 @@ Hai mig cuối: `20260727033522_AddPeAllowApproverDelete` (=Mig 68, S155) · `20
|
|||||||
|
|
||||||
### F-4 (LOW) — `contract-workflow/SKILL.md` CÓ biết GĐ2 KHKK, KHÔNG stale nội-dung
|
### F-4 (LOW) — `contract-workflow/SKILL.md` CÓ biết GĐ2 KHKK, KHÔNG stale nội-dung
|
||||||
- `:449` `## 🆕 Nhánh KHKK — "Kế hoạch ký kết Hợp đồng" (GĐ2, Mig 69 @S161)` ⇒ skill **đã** theo kịp feature mới nhất. Detector báo `:24/:35/:332/:367` là lệch **số derived** (lớp khác), KHÔNG phải mù-feature. Tao **BÁC** cách đọc "contract-workflow stale về nội-dung".
|
- `:449` `## 🆕 Nhánh KHKK — "Kế hoạch ký kết Hợp đồng" (GĐ2, Mig 69 @S161)` ⇒ skill **đã** theo kịp feature mới nhất. Detector báo `:24/:35/:332/:367` là lệch **số derived** (lớp khác), KHÔNG phải mù-feature. Tao **BÁC** cách đọc "contract-workflow stale về nội-dung".
|
||||||
|
|
||||||
|
### F-5 (LOW) — `permission-matrix/SKILL.md:18` cite số-dòng đã chết
|
||||||
|
- Khai: *"Đếm THẬT = đọc mã… `MenuKeys.All` ở `…/MenuKeys.cs:**147**`"*. Đo: `MenuKeys.All` khai báo tại **`:164`** (`public static readonly string[] All =`); `:147` nay là mảnh **comment** (`// (qua labelBackfill, KHÔNG đổi key) + 2 mục MỚI:`).
|
||||||
|
- Trớ trêu: dòng này dạy *"đọc mã, đừng tin doc"* mà con-trỏ tới mã lại sai. Vá theo tiền-lệ ratified S151/S153: **BỎ số dòng**, giữ tên symbol (`MenuKeys.All`) — grep được, không lão-hoá.
|
||||||
|
- ⚠️ `KeHoachKyKet` (`MenuKeys.cs:42`, vào `All` `:180`, sinh 4 policy theo comment `:39`) = **0 hit** trong skill — nhưng xem F-9, đây là 1 phần của lỗ họ-key lớn hơn đã flag từ S162.
|
||||||
|
|
||||||
|
### ✅ Skill → vai mapping — PASS 23/23, 0 mồ-côi
|
||||||
|
`agents/README.md:176` bảng `| Agent | Skills |`, đếm phần-tử = **23 row**, khớp roster đĩa 23 (kể cả bộ-ba ctx `:198-200`). **KHÔNG có vai nào thiếu row, không row nào trỏ vai đã chết.** ⇒ mặt ① không nợ new-alloc.
|
||||||
|
|
||||||
|
**① VERDICT: PASS_WITH_FLAGS** — inventory 0-delta; 2 skill có drift ngữ-nghĩa (F-3 ef-core · F-5 + F-9 permission-matrix); `contract-workflow`/`form-engine`/`dependency-audit-erp`/`iis-deploy-runbook` fresh.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ③ PLUGIN — PASS (0-delta) · báo ĐÚNG 4 NẤC, không conflate
|
||||||
|
|
||||||
|
Nguồn: `~/.claude/settings.json` `enabledPlugins` (**user-global** — không phải `.claude/` của SE).
|
||||||
|
|
||||||
|
| Nấc | Số | Bằng chứng |
|
||||||
|
|---|---|---|
|
||||||
|
| **installed** (registered trong settings) | **18** | `settings.json:17-35`, đếm phần-tử |
|
||||||
|
| **enabled** (`: true`) | **15** | 18 − 3 |
|
||||||
|
| **disabled** (`: false`) | **3** | `pr-review-toolkit` `:20` · `code-modernization` `:22` · `hookify` `:26` |
|
||||||
|
| **marketplace available** | **37** | `ls ~/.claude/plugins/marketplaces/claude-plugins-official/plugins` |
|
||||||
|
| **assigned** (có vai/luật trong `agents/README.md`) | **9/15** | grep từng tên: feature-dev 2 · skill-creator 1 · frontend-design 11 · code-review 2 · claude-md-management 1 · commit-commands 2 · csharp-lsp 4 · typescript-lsp 1 · session-report 2 |
|
||||||
|
| **used** (chạy thật phiên này) | **0 đo được** | @open chưa có invocation nào — KHÔNG suy từ `enabled` |
|
||||||
|
|
||||||
|
**Diff vs S162: 0 THÊM / 0 ĐỔI / 0 XOÁ** (18/15/3 + 37 đứng yên từ S153 → nay).
|
||||||
|
|
||||||
|
**INFORM-P1 — 6 plugin `enabled` mà 0 vai nào được giao** (0 hit trong `agents/README.md`): `claude-code-setup` · `playground` · `mcp-server-dev` · `learning-output-style` · `plugin-dev` · `explanatory-output-style`.
|
||||||
|
→ Đọc đúng: đây **KHÔNG phải drift** — 4/6 là tiện-ích lead-level (setup/playground/2 output-style) vốn không thuộc vai nào. Chỉ nêu để anh biết bề mặt. **Đề-xuất = KHÔNG hành-động** (bật/tắt là quyền owner; tao propose-only).
|
||||||
|
|||||||
Reference in New Issue
Block a user