Files
solution-erp/docs/governance/carry-disposition-S196.md
2026-08-14 16:32:21 +07:00

140 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Disposition 52 slug `[carry:*]` — chạy @S196 (phiên-LOGIC L17)
> **Lệnh owner `YC-038` (2026-08-14):** *"disposition 52 slug -> OK"*.
> **Nguồn tập:** `docs/HANDOFF.md:44` khối RE-STAMP CARRY @S191 — **52 slug uniq** (`ring2-audit` @S196 tái dựng độc lập, khớp chính xác 52).
> 🔴 **KHAI SCOPE (bắt buộc — `ring2` @S196 §4b):** con số **52** là của **khối `:44`**. Tập slug trên ĐĨA phụ thuộc scope: `docs/` = **71** · tracked trừ `workflows/runs` = **72** · toàn tracked = **86**. Bảng này disposition **đúng 52 của khối :44**, KHÔNG phải toàn tập đĩa.
> 🔴 **Luật chấm:** mỗi slug đúng **1 nhãn** {ĐÓNG · MỞ · CHƯA ĐO ĐƯỢC} kèm bằng chứng. **CẤM làm tròn "không thấy" thành "đã đóng"** — hướng hỏng phải nghiêng về *giữ mở*, không về *đóng ẩu*.
## Vì sao lời hẹn này trôi 3 bookend
`lead-gap-auditor` @S196 F-2 đo: `grep -rn "disposition per-slug"` = **7 hit, 7/7 đều là lời NHẮC, 0 hit là kết quả**; chuỗi hoãn **S192-open → S195-close → S196-open**. Nguyên nhân cơ học: lời hẹn neo vào chữ **"bookend kế"** ⇒ **tự gia hạn mỗi lượt, không bao giờ quá hạn**. Đề xuất rẻ hơn của S192 (*đổi chữ thành mốc SỐ thật*) cũng không được lấy. Và **0 slug nào gánh việc này** — nó chỉ sống trong ngoặc đơn của chính khối nó hẹn.
## 🔴 Phát hiện chính — khối ":52 slug MỞ" đếm THỪA
**15/52 slug đã được đánh ĐÓNG tường minh NGAY TRONG chính `HANDOFF.md`**, nhưng khối RE-STAMP vẫn liệt chúng là "mở".
**Cơ chế:** nghi-thức RE-STAMP tự khai *"dựng từ nguồn = grep `[carry:*]` toàn file slug có dấu ✅ĐÓNG"*. Nhưng dấu đóng trong file này viết bằng **≥5 dạng khác nhau**:
| dạng | ví dụ |
|---|---|
| A | `**ĐÓNG @S181:** [carry:X]` — dấu TRƯỚC, có tiền tố `carry:` |
| B | `✅ carry ĐÓNG S124:` rồi liệt `` `X` `` — **không** tiền tố `carry:` |
| C | `✅ carry `X` **ĐÓNG @S130**` — slug **nằm GIỮA** hai dấu |
| D | `~~[carry:X]~~` — gạch ngang, 0 chữ "ĐÓNG" |
| E | `**carry `X` ĐÓNG**` |
⇒ một phép trừ dựa trên **một** dạng sẽ bỏ sót 4 dạng còn lại. **Đây là lý do con số 52 phình, không phải vì có 52 việc thật.**
🔸 Lead cũng dính đúng bẫy này khi đo: thước cửa-sổ-200-ký-tự đầu tiên cho **13 "đã đóng"**, trong đó **3 là dương-giả** (`binh-le-decision`/`account-trung`/`ring4-write-lane` ăn nhờ dấu ✅ của slug **khác** đứng cạnh trong cùng mega-line) và **bỏ sót** `retier-megaline` (dạng C). Phải bỏ regex, trích **toàn bộ 41 câu-đóng** rồi đọc tay mới ra đúng.
---
## Bảng disposition — 52/52
### ✅ ĐÓNG — có dấu tường minh trong HANDOFF (15)
| # | slug | đóng @ | bằng chứng |
|---|---|---|---|
| 1 | `hmw-width-vs-roster` | S181 | `**ĐÓNG @S181:**` — cap 20→30, roster ≤ 30, slot (75) khép |
| 2 | `adap-apply-2-thu` | S153 | `✅ ĐÓNG @S153:` — cả 2 thư TRỌN, inbox pending 0; **+** `~~[carry:adap-apply-2-thu]~~` lần 2 (2 thư `loi-do-luong`) |
| 3 | `memory-ops-refine-queue` | S152 | `✅ ĐÓNG @S152:` — queue TRỌN A1-A4·D1·D2·R1·B-series; A7 392/392 |
| 4 | `jump-dai-frozen` | S152 | cùng câu đóng [20]; owner (30) để-nguyên-theo-nhịp, `frozen=False` |
| 5 | `pause-autosnap` | S148 | `**ĐÓNG @S148**` — wire `pause.md §2.6(D)`, chi phí RÒNG đo được ~64ms |
| 6 | `tiep-window-crash` | S148 | cùng câu đóng [31] — `/tiep` đọc snapshot mới nhất + phòng cửa-sổ-sập |
| 7 | `dangling-head` | S143 | `**ĐÓNG @S143 (1):**` — hub APPROVE khuôn ①a, contract v2 land, 3 ca S127/S133/S139 reclassify `squash-benign` |
| 8 | `retier-megaline` | S130 | `✅ carry `retier-megaline` **ĐÓNG @S130**` (dạng C) — owner chốt B3=#2 tách-dòng |
| 9 | `restart-s124` | S126 | `✅ carry ĐÓNG S126 (2):` — restart xảy ra, frontmatter+autoMemory verified |
| 10 | `h23-fable-test-postrestart` | S126 | cùng câu đóng [36] — đo + báo hub |
| 11 | `usermem-outside-repo` | S124 | `✅ carry ĐÓNG S124:` — relocated + committed |
| 12 | `h24-2vai-chua-chay` | S124 | cùng câu [37] — RAN n=1 both-clean |
| 13 | `h23-precedence-fable` | S124 | cùng câu [37] — superseded → testable-at-Opus |
| 14 | `s119-wave` | — | `**carry `s119-wave` ĐÓNG**` — wave W0→W6 xong, 4 push, 2 mark ký |
| 15 | `mind-tran-nen-moi-cua` | S167 | `~~[carry:mind-tran-nen-moi-cua]~~` — nén MIND-2+3+4, `_mind` 48.989→41.362 B, `mind-check dat=11` |
### ✅ ĐÓNG bằng THỰC CHẤT — vật tồn tại dù không ai đánh dấu (2)
| # | slug | bằng chứng ĐO @S196 |
|---|---|---|
| 16 | `ring5-audit-gap` | `.claude/agents/ring5-audit.md` **TỒN TẠI**; `grep -c "'ring5-audit'" hmw.js` = **1** ⇒ gap đã lấp @S185 (YC-021/W-2), chỉ chưa ai gạch slug |
| 17 | `mind-neo-xuat-xu-sai-2-truong` | `ctx-audit` @S196 đo neo `_mind-s-17` khớp **từng giây** với `git log -1 e255c778` ⇒ *"class S172 **vẫn đóng**"* |
### 🔴 MỞ — đo được là CÒN SỐNG, có bằng chứng trong chính lượt này (5)
| # | slug | bằng chứng còn sống |
|---|---|---|
| 18 | `ctx-verifier-no-self-append` | `harvest-curator` @S196: `git log -S` → **8/8 commit gần nhất đều là lead**; block mang nhãn `[LEAD SEED ON-BEHALF]` ⇒ **lần 13**. 🔸 Kèm đề nghị đổi nhãn: đây là thuộc tính của **cả lớp vai propose-only** (`reviewer.md:7` cũng không có `Write`), đang bị tính thành lỗi cá nhân của một vai |
| 19 | `tools-whitelist-no-teeth` | `harvest-curator` @S196 tự làm nhân chứng: frontmatter nó **cũng không** liệt `Write`, mà runtime **vẫn cấp** `Write` trong phiên này ⇒ whitelist = tuyên-bố ý-định, **không có răng** |
| 20 | `carry-age-vacuous` | `HANDOFF:17` + `lead-gap` @S196: thước H24-2 **đảo dấu** (`uat-s117` 18 occurrence/mở từ S117 → streak 1; `adap-apply-2-thu` 6 occurrence/mở từ S152 → streak 4); 43/66 slug ra `streak=1`; mẫu số còn lẫn slug **đã đóng**. `lead-gap` đề nghị **owner phán đóng** thay vì treo tiếp |
| 21 | `hook-vs-budget-cap` | 21 occurrence trên HANDOFF, streak ≥9 (ghi ở `.session-counter.json` history); chưa có bản vá nào land |
| 22 | `session-model-adopt` | **MỞ một phần** — hạ tầng đã chạy thật (**17 thư-mục** `session-<N>` trên đĩa, `_snapshot-*` = 23 file), nhưng `session-start` BƯỚC 0.8(d) tự khai **bảng VC còn chờ owner duyệt**; 0 nghi-thức nào chuyển sang per-L |
### 🔴 MỞ — chờ CHỦ DỰ ÁN, không phải việc lead (7)
| # | slug | nội dung treo |
|---|---|---|
| 23 | `uat-s117` | UAT chờ anh nghiệm thu |
| 24 | `uat-s133-budget-freeze` | UAT freeze ngân sách phiếu DaDuyet |
| 25 | `uat-s134-luyke` | UAT lũy kế tạm-tính ⟂ chính-xác |
| 26 | `pe-phanquyen` | quyết định phân quyền PE |
| 27 | `binh-le-decision` | quyết định Bình/Lê |
| 28 | `account-trung` | account trùng |
| 29 | `bvaau` | cross-project BVAAU |
### 🔴 MỞ — nợ kỹ thuật có địa chỉ code (6)
| # | slug | địa chỉ |
|---|---|---|
| 30 | `w7b-inbox-param` | BE `/contracts/inbox` thêm `?type=` + bỏ `Take(100)`, rồi FE gỡ client-filter |
| 31 | `w5-host-ondeleted` | host `onDeleted` |
| 32 | `w3b-cam-ma-thoat` | rider-jump chưa dựng |
| 33 | `fe-contract-family-drift` | `fe-admin/src/lib/contractWorkflowFamily.ts` chép 7 mã `HD-*` — 2 nhà, cần drift-watch |
| 34 | `e7-cot-chet-khkk` | cột chết KHKK |
| 35 | `acceptance-runtime-khkk` | acceptance runtime KHKK |
### 🔴 MỞ — nợ governance/đo-lường (9)
| # | slug | ghi chú |
|---|---|---|
| 36 | `pin-max-server-memory-fleet` | pin `max server memory` cho các SQL nhỏ khác cùng hạ tầng (S189) — **việc ops, chưa chạy** |
| 37 | `sentinel-truoc-bu` | mọi lượt CHẠY-BÙ phải đặt lại `closing:` sentinel trước khi bù (RCA `ONESHOT-S188`) |
| 38 | `harvest-no-s168-s171` | harvest thiếu S168/S171 |
| 39 | `harvest-orphan-s159-tongquan` | orphan S159 tổng-quan |
| 40 | `orphan-retro-harvest-s159` | retro-harvest S159 |
| 41 | `synthesis-roll-s159-s160` | synthesis roll S159-S160 |
| 42 | `underfill-mau-so` | mẫu số underfill |
| 43 | `meld-forward-unmeasured` | meld-forward chưa đo |
| 44 | `eval-thamquyen` | thẩm quyền eval |
### 🟡 CHƯA ĐO ĐƯỢC — có tín hiệu nhưng chưa đủ để phán (8)
| # | slug | đã đo gì · thiếu gì |
|---|---|---|
| 45 | `tiep-3ter-seed-unwired` | `tiep.md` **CÓ** `§3-ter` (2 hit) ⇒ vế "wire" thoả; nhưng slug nói **"seed unwired"** — chưa xác minh vế *seed diary*. Cần đo `agent-memory/ctx-verifier/` xem `/tiep` có seed không |
| 46 | `hmw-subfile-index-collision` | `hmw.js` có **1 hit** vùng liên quan; chưa xác minh hit đó là bản vá hay là chính chỗ va chạm |
| 47 | `bookend-5-5` | `session-end.md` có **3 hit** cụm 5-vòng; chưa xác minh 5/5 chạy đủ ở một phiên cụ thể |
| 48 | `ctx-t9-dogfood` | `HANDOFF` ghi **🔻 THU HẸP @S185 (KHÔNG gỡ trắng)** ⇒ trạng thái *thu hẹp*, không phải mở-toàn-phần cũng không phải đóng. **Cần owner phán nhãn** |
| 49 | `ring4-write-lane` | listed dạng *"→ slot (34)"* ⇒ đã được chuyển thành slot có số; chưa xác minh slot (34) đã đóng chưa |
| 50 | `g011-token-fork` | 6 occurrence, 0 câu đóng; chưa đo được nội dung còn đúng không |
| 51 | `tham-sau-6-ca` | 6 occurrence, 0 câu đóng |
| 52 | `reset-doi-het` | 2 occurrence HANDOFF + 4 run-folder; sinh muộn, chưa có lượt nào chấm |
---
## Tổng kết
| nhãn | số | tỉ lệ |
|---|---|---|
| ✅ **ĐÓNG** (15 có dấu + 2 thực chất) | **17** | 32,7% |
| 🔴 **MỞ** (5 đo được sống + 7 chờ owner + 6 code + 9 governance) | **27** | 51,9% |
| 🟡 **CHƯA ĐO ĐƯỢC** | **8** | 15,4% |
| **tổng** | **52** | 100% |
🔴 **Con số "52 slug mở" SAI — thật là ≤ 35 (27 mở + 8 chưa rõ).** Và trong 27 mở thì **13 là việc của chủ dự án hoặc ops**, không phải nợ lead.
🔴 **CHỐT-DỪNG cho lời hẹn (thay chữ "bookend kế" bằng mốc SỐ):** disposition này chạy @**S196**. Lần disposition kế = @**S206** (10 nhãn phiên), **hoặc** ngay khi khối RE-STAMP vượt **60 slug** — tuỳ cái nào tới trước. Neo vào SỐ thì quá hạn được; neo vào chữ "bookend kế" thì không.
## Việc đẻ ra từ lượt disposition này
1. **Sửa nghi-thức RE-STAMP**: phép trừ phải nhận **cả 5 dạng dấu đóng** (bảng trên), không chỉ dạng A. Không sửa thì con số lại phình mỗi kỳ.
2. **Chuẩn hoá dạng dấu đóng về MỘT** cho slug mới: `~~[carry:X]~~ — ĐÓNG @S<nn>: <bằng chứng>`. 5 dạng là gốc của cả dương-giả lẫn âm-giả.
3. 17 slug ĐÓNG cần **gạch khỏi khối `:44`** ở lần re-stamp kế.
4. `carry-age-vacuous` (#20) và `ctx-t9-dogfood` (#48) **cần owner phán nhãn** — lead không tự quyết.