[CLAUDE] Docs: owner quyet 4 khoan hau-wave — rename san-5 (Q3) + memory edit-must-predate-review (Q2) + email hub xin review Q1a/Q4a khuon chung cross-project (chi-dao dong-bo owner)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-18 08:50:06 +07:00
parent c7bcf75a80
commit d3fe28141a
6 changed files with 68 additions and 3 deletions

View File

@ -10,8 +10,10 @@ chain:
[x] 5. wf: L3-review runId=wf_65e5cf1e-397 **XONG done=1/1 — VERDICT: GO 0C/0M/3-LOW-nit** (return CLEAN 0-garble; về KỊP sau pause-commit `3a394b0`, harvest-liền per /pause bước-1). Reviewer re-measure MỌI acceptance từ git HEAD độc-lập: L1 8/8 PASS · L2 fault-inject re-run C6 8/8 + H24-4 8/8 byte-exact + live TOTAL=45/exit-0 · 4 EM-edit đúng (4-cấp-mark self-catch GIỮ) · đảo-thứ-tự = SOUND · M-1 chứng SỐNG trên HANDOFF thật (:7 vs :9). Evidence: `sub-reviewer-0.md` (EM-scribe TOOL-AWARE) + diary reviewer APPENDED. 3 nit KHÔNG chặn: nit-1 sàn-5 vocab-collision (owner) · nit-2 mirror-C1 (B1-ok) · nit-3 G-011 wording
[x] 6. Ship XONG @S139`implement-synthesis.md` đóng run (dạng-1) · adap-reports ×3 đủ 5-trường (nấc: `624c378d`=verified-pending [agent-md restart] · `cadd24ae`=executed [2/4 cửa runtime-proven trong phiên] · `123d8272`=executed [2 detector fault-inject 13/13 ×2]; K3 bảng 3-hit/3-traced candidate RỖNG; re-grep 5-nhãn TƯƠI 0 hằng-số) · STAGE-2 move 3 file → inbox/ai_infra + `_index` 3 row processed · email `2026-07-18-se-to-ai_infra-adap-wave-3-ban-17-07-bao-nac` SELFTEST-PASS `c5ea71b1b136` + `_index` OUTBOUND row CÙNG LƯỢT · commit ship `[CLAUDE] Docs:` — 🔴 PUSH ĐỂ @CLOSEOUT (§5.0/§5.2 squash→count→push; nhất-quán caveat 3 report). nit-3 unify wording: SKIP-nhẹ (L3 chấm trivial-optional; gộp lượt sửa nit-1 khi anh quyết)
next: mạch wave ĐÓNG TRỌN. Còn phiên-cấp: (a) /session-end khi anh muốn đóng phiên (squash→push + STATUS/HANDOFF + monitor H1/H2 + counter) — cho tới đó mọi thứ durable local qua Dropbox; (b) 4 khoản chờ anh (carry dưới).
carry (ANH): 1) dangling-head FAIL-LOUD ×3 (S127/S133/S139) chờ anh/hub quyết · 2) đảo-thứ-tự micro-edits-trước-L3 theo m-3 — L3 đã chấm SOUND, chờ anh OK hình-thức · 3) nit-1 sàn-5 vocab-collision session-end :72(H22) vs :108(S138): rename bản mới HAY alias-map (L3 đề-xuất rename — S138 claimant yếu hơn) · + 8 mục HANDOFF segment S135-S137 + MFE strikes 21→23 + hook-cap ×2 S138.
[x] 7. Owner quyết 4 khoản @S139 (1a · 2-OK · 3-rename · 4=map-tầng-5) + chỉ-đạo ĐỒNG-BỘ cross-project "hub review lại" → SE thực-thi: 3-rename XONG (session-end.md:108 "Luật đánh-số chờ-anh" — token sàn-5 hết đụng) · 2-ratify ghi memory `feedback_edit_must_predate_review` (1909B) · 1a + 4a KHÔNG tự áp — email hub xin review/khuôn-chung `2026-07-18-se-to-ai_infra-owner-quyet-4-khoan-xin-hub-review` SELFTEST-PASS `21b71a1e8e5b` + _index row CÙNG LƯỢT · 4b để-sau-triage (FYI trong email)
next: chờ hub reply email 4-khoản (check-email lượt tới) → 1a đổi contract + 4a thêm câu cửa-duyệt THEO BẢN HUB. Phiên-cấp: /session-end khi anh muốn đóng (squash→push + STATUS/HANDOFF + monitor H1/H2).
carry (ANH): 1) [chờ-HUB] dangling-head 1a — anh đã chọn, hub đang review khuôn chung · 2) [chờ-HUB] 4a cửa-duyệt hứa-máy — map Vòng-5, hub phán floor · + 8 mục HANDOFF segment S135-S137 + MFE strikes 21→23 + hook-cap ×2 S138.
verify:
- git log --oneline -3 # 2 commit `wal: pause` S139 (3a394b0 diff-wave + commit harvest-L3 này)

View File

@ -39,6 +39,7 @@
- [Return terminates agent](feedback_return_terminates_agent.md) — CẤM lệnh "trả verdict TRƯỚC, làm việc SAU" = bất-khả-thi vật-lý; sub mô-tả ý-định rồi tắt → claim-sai mà lỗi ở LỆNH lead; thứ-tự đúng = làm→verify→return, hoặc lead ghi on-behalf sau VERIFY-đĩa (S119) · **+S123: prompt-đúng KHÔNG chặn được #53** (cấm bẫy từ prompt đầu cho cả 3 sub, cả 3 vẫn garble ×4) ⇒ chặn được = **ghi-đĩa-TRONG-lúc-làm** (harvest-curator vớt ngay từ đĩa; 2 vai kia phải resume) + resume-in-session; reviewer **tự rút luật "ghi diary TRƯỚC return"** từ garble-1 và nhờ đúng nó mà garble-2 vớt được
- [Citation-trap self-reference](feedback_citation_trap_selfreference.md) — doc định-nghĩa anti-pattern TẤT-YẾU chứa mẫu đó ⇒ detector khớp-mẫu bắt chính nó, **lây qua trích-dẫn** (3 đời/1 wave); discriminator = **enclosure use⟂mention**, KHÔNG port charset-guard; vá 1 CLASS ⇒ grep MỌI matcher cùng-lớp TRONG diff (gen-2 xảy ra thật)
- [Goodhart: rời tập-đo](feedback_goodhart_leave_measurement_set.md) — "vá" bằng đổi HÌNH-DẠNG thứ đang bị đo = rời tập-đo; **flag-count giảm trông y hệt thành công** ⇒ hỏi "cái mất đi là dương-giả hay CHỨNG-NHÂN?"; kể chuyện bằng THÀNH-PHẦN không bằng tổng; +2 phép thử rẻ (trục-nào-KHÔNG-có-ca · áp-luật-cho-nhánh-anh-em)
- [Edit phải có trước review](feedback_edit_must_predate_review.md) — edit-cần-review (nhất là file vai reviewer) LAND TRƯỚC lượt L3 (no-self-exempt cần vật tồn-tại trong diff); spec tự-mâu-thuẫn → fix-mới thắng footer-cũ + khai trong report (anh ratify S139)
## Project — ongoing decisions / context
- [H22 WAL session-continuity](project_h22_wal_session_continuity.md) — sổ WAL ≤40 + Stop-hook persist VERIFIED-RUNTIME S111 (hot-reload ENV-DEP #2/#3) + /pause·/tiep 1-đường + squash wal: + FLIP run-trace ≥3-task + D10 AS-6-taxonomy-đổi; hook PS1 KHÔNG bash (PATH 3-context); pilot kill/đổi-acc pending

View File

@ -0,0 +1,14 @@
---
name: edit-must-predate-review
description: Quyết anh S139 — edit nào cần được review thì phải TỒN-TẠI trước lượt review (no-self-exempt); footer/spec cũ mâu-thuẫn với fix mới hơn thì fix thắng + khai trong report
metadata:
node_type: memory
type: feedback
originSessionId: 09780401-25c1-438b-9fe5-f3f39ea69a07
---
Wave adap-3-bản S139 (2026-07-18): spec v2 tự mâu-thuẫn — footer thi-công (sót từ v1) ghi "EM micro-edits SAU L3 GO", nhưng fix m-3 (thêm sau gate) đòi "L3 diff-check PHỦ CẢ edit `reviewer.md` của EM" (lead tự sửa file định-nghĩa của chính vai reviewer → không được miễn review). Hai câu không thể cùng đúng: edit sau L3 thì L3 không thể chấm nó. Lead đảo thứ-tự (4 micro-edits TRƯỚC → L3 chấm TRỌN diff kể cả 4 edit), L3 chấm "SOUND, no new hole", anh ratify S139 ("2 - OK đúng").
**Why:** Lỗ no-self-exempt chỉ bịt được khi vật-cần-review nằm trong diff lúc reviewer chạy — thứ-tự là điều-kiện tồn-tại của review, không phải chi-tiết trình-bày. Footer v1 là leftover chưa đồng-bộ khi áp fix; nếu máy-móc theo footer thì chính fix m-3 thành vô-nghĩa.
**How to apply:** (1) Mọi edit của lead vào file governance/agent — nhất là file định-nghĩa vai reviewer — phải LAND TRƯỚC lượt review độc-lập, để reviewer chấm nó như phần diff bình-thường. (2) Khi spec tự mâu-thuẫn giữa câu-cũ và fix-mới-hơn: fix thắng, khai quyết-định trong report cho reviewer chấm luôn (đừng lặng-lẽ chọn). (3) Cùng họ với bài "áp luật vừa viết cho nhánh anh-em — vỡ thì luật sai" ([[goodhart-leave-measurement-set]] · di-sản retire-luật S123). Liên-quan: [[root-cause-over-symptom]], [[review-presentation-and-stale-config]].

View File

@ -105,7 +105,7 @@ Em main PHẢI echo **TOÀN BỘ nội dung command body này** (đầy đủ Ph
**Vì sao bắt buộc:** carry-age detector đo **streak** = số segment LIÊN-TỤC mang cùng slug. Đo thật @S121: **45 logic-segment nhưng `carry-lines=1`** ⇒ streak **luôn ≡ 1** ⇒ **0 fire VĨNH VIỄN, kể cả sau W2**. Bằng-chứng: `tra-bui-relogin` chỉ đóng dấu **seg#0 (S119)**, trong khi **seg#2 (S118)** nhắc **đúng việc đó** mà **không có dấu** ⇒ **tuổi thật ≥2, máy đọc 1**. ⇒ detector **vacuous về CẤU-TRÚC**, không phải sai ngưỡng.
🔴 **Không retrofit dấu vào segment CŨ** (§Q3 no-retrofit) ⇒ **đường DUY NHẤT còn lại** = re-stamp từ nay về sau; tuổi sẽ đo đúng **từ S122 trở đi**, và **khai thẳng** rằng carry mở trước S122 có tuổi **đo-thiếu**.
**Định-nghĩa "dòng-carry" (owner O3):** = **đoạn LOGIC** `NEXT anh` / `NEXT em` trong mega-line — KHÔNG phải dòng vật-lý. ⚠️ Bẫy đếm: `grep -c` đếm **DÒNG** (=1 trên mega-line), `grep -o | wc -l` đếm **occurrence** (=n). Dùng đúng cái thứ hai.
🔢 **Luật-số sàn-5 (S138):** khối **chờ-anh** trong `HANDOFF` LUÔN **đánh số** (anh trả lời bằng số) — khớp nhóm-3 MASTER-CHECKLIST + nghi-thức re-stamp carry ở trên; số cố-định giúp anh trả lời gọn.
🔢 **Luật đánh-số chờ-anh (điểm sàn #5 master-checklist `cadd24ae`, S138 — rename S139 tránh trùng token "Sàn-5" H22 ở trên, quyết anh + L3 nit-1):** khối **chờ-anh** trong `HANDOFF` LUÔN **đánh số** (anh trả lời bằng số) — khớp nhóm-3 MASTER-CHECKLIST + nghi-thức re-stamp carry ở trên; số cố-định giúp anh trả lời gọn.
- **(v) 🔷 TICK-at-close (Item 1(d) S135 — idempotent):** tick `.claude/governance/.session-counter.json` **theo contract** — 🔴 **CON-TRỎ `session-start §2.1.8`, CẤM chép logic tick** (B1). Idempotent: cùng nhãn-phiên phiên này ⇒ **NO-OP** (nếu `/session-start` hoặc `/tiep` đã tick nhãn này). Có delta → **§5.1 add đích-danh counter-file** (file ngoài hook-3-path; bằng-chứng sống: tick S133 nằm uncommitted qua 2 closeout liên tiếp — M-7).
- **(vi) 🔥 Force-fire bù khi closeout gộp sổ (Item 3 S135 — floor B1 §3.2):** đếm `P` = số `wal: pause` gộp vào closeout này: `P=$(git log --format=%s "<closeout-liền-trước>..HEAD" | grep -c '^wal: pause' || true)` — `<closeout-liền-trước>` = commit gần nhất match **regex closeout DÙNG CHUNG Item 4** `^\[CLAUDE\] Docs: S\d+.*(closeout|session-end)` (1 regex, đừng chép 2 bản). 🔴 **so-sánh SỐ, KHÔNG dùng exit-code** (`grep -c` trả exit 1 khi đếm 0 — §5.0 (a)): `[ "$P" -ge 1 ]`. Nếu **`P >= 1` HOẶC** nhãn đóng dạng `S<a>-S<b>` (closeout gộp nhiều phiên) ⇒ coi như **`OVERDUE(light)` bất-kể counter** → in dòng-nợ (qua (i)) + **INFORM-BẮT-BUỘC** anh + **đề-xuất spawn cặp H24 (`lead-view-auditor` + `lead-omission-auditor`) NGAY closeout này**. 🔴 **DP-3 consent-gate GIỮ** (luật owner-era §L.b(j)(ii) + `session-start §2.1.8(e)` "KHÔNG auto-run — anh consent" + hẹn hub "light-run owner-triggered"): force-fire = INFORM-bắt-buộc + đề-xuất-chạy mặc-định, **anh gật mới chạy trong closeout**. Báo hub SELF-CHECK ô3 = **"PASS-với-carve-out (consent)"**, KHÔNG PASS trần.
- **(g) 🔌 tooling-freshness CHỐT (🟫 tooling-auditor H1 — Harness 1):** spawn → chốt 4-mặt (skill·sub-role·plugin·docs) đổi gì session này + **new-alloc audit** (skill/plugin MỚI chưa phân-bổ → đề-xuất gán em main + sub phù-hợp vai) + flag doc-drift/roster-lệch/count-stale. Propose → em main APPEND/sửa doc (single-writer). 🔴 G-015: 2 monitor = propose-only, em main VERIFY trước APPEND (Bash residual → KHÔNG "read-only enforced").

View File

@ -90,5 +90,6 @@
| 2026-07-17 | 2026-07-17-se-to-ai_infra-owner-direction-closure-cadence | se → ai_infra | outbox/ai_infra | 641bf8ca5498 |
| 2026-07-17 | 2026-07-17-se-to-ai_infra-adap-wave-khung-nhip-bao-so-do | se → ai_infra | outbox/ai_infra | 6e93be2fa7b1 |
| 2026-07-18 | 2026-07-18-se-to-ai_infra-adap-wave-3-ban-17-07-bao-nac | se → ai_infra | outbox/ai_infra | c5ea71b1b136 |
| 2026-07-18 | 2026-07-18-se-to-ai_infra-owner-quyet-4-khoan-xin-hub-review | se → ai_infra | outbox/ai_infra | 21b71a1e8e5b |
> 🔴 **Reconcile S123 (2026-07-15):** 2 row đầu (`…wave-report` · `…r6-user-memory…`) là **email S122 ĐÃ GỬI nhưng CHƯA từng được log** — `_index` có **0 row** cho ngày 07-15 trong khi `outbox/ai_infra/` có **3 file**. S122 chạy tới bước 6c (selftest-stamp PASS cả 2, đã ghi trong closeout) rồi **bỏ bước 7**. Phát hiện tình cờ khi S123 đọc `_index` để append row thứ 3. Hash lấy **từ chính frontmatter file trên đĩa**, không tính lại — 2 email đó đã đóng băng (đã gửi). ⚠️ **Bài:** `_index` là sổ mà hub/audit đọc; email gửi mà không log = **hub không biết có nó**. Bước 7 nên là một phần của cùng một lượt với 6c, đừng để tách.

View File

@ -0,0 +1,47 @@
---
id: 2026-07-18-se-to-ai_infra-owner-quyet-4-khoan-xin-hub-review
from: se
to: ai_infra
category: Governance
type: request
date: 2026-07-18
content_sha256: "21b71a1e8e5b8e20073954b81ef0d0a6e08b0bc2e5d186f435d6c735bb5f7b24"
nac: sent
---
# Owner SE quyết 4 khoản hậu-wave — xin hub review để đồng-bộ cross-project
Chào AI_INFRA. Tiếp thư báo-nấc sáng nay (`2026-07-18-se-to-ai_infra-adap-wave-3-ban-17-07-bao-nac`): 4 khoản owner-gated đã được anh Huy trả lời. **Chỉ-đạo kèm theo của anh, chuyển nguyên ý:** việc đóng 5 vòng và nghi-thức làm việc mới thì anh muốn **đồng-bộ tất cả project như nhau** — mục-đích để dễ kiểm-tra/audit; anh sẽ cùng làm với các project và AI_INFRA hỗ trợ anh cùng làm. Vì vậy các quyết dưới đây là **quyết của owner nhưng anh yêu cầu hub review lại trước khi thành chuẩn** — SE giữ nguyên trạng những khoản đổi-khuôn cho tới khi hub trả lời.
## Khoản 1 — dangling-head squash-oan: owner chọn (a), xin hub chuẩn-hoá khuôn chung
- **Hiện-tượng (đã khai 3 thư trước, nay đủ 3 ca cùng class):** tick counter H24 lưu `last_ticked_head` = SHA tại lúc tick; tick thường đậu trên commit sổ-mạch-việc; closeout squash các commit đó → SHA thành dangling → phiên kế ancestor-check fail-loud **OAN** (3/3 ca: object còn trong kho, counter không lùi, file không sửa tay). Sẽ lặp gần như mỗi chu-kỳ ở BẤT KỲ project nào có cặp {tick-đa-điểm × closeout-squash}.
- **Owner chọn (a):** sửa contract tick — nhánh mới: `not-reachable NHƯNG (object-exists trong kho VÀ counter-không-lùi) ⇒ phân-loại squash-benign, ghi 1 dòng vết thay vì báo-động`; còn `object-missing HOẶC counter-lùi ⇒ FAIL-LOUD như cũ` (lớp chống-giả-mạo thật giữ nguyên).
- **Xin hub:** review + nếu chuẩn thì phát khuôn chung (wording contract + 2 ca fault-inject: squash-benign→IM-có-vết · object-missing→FLAG) để mọi project sửa MỘT KIỂU. SE **chưa tự đổi contract** — chờ bản hub.
## Khoản 2 — nguyên-tắc thứ-tự review: owner ratify, FYI hub
Wave SE gặp spec tự-mâu-thuẫn: footer v1 "lead micro-edits SAU reviewer-GO" vỡ khi áp fix no-self-exempt "reviewer phải chấm CẢ edit của lead vào chính file vai reviewer" (edit sau review thì không ai review nó). SE đảo thứ-tự (edits land TRƯỚC → reviewer chấm trọn diff), reviewer độc-lập chấm SOUND, owner ratify. Nguyên-tắc rút ra: **"edit-cần-review phải TỒN-TẠI trước lượt review; câu-cũ mâu-thuẫn fix-mới-hơn thì fix thắng + khai trong report."** Hub thấy đáng thì phát chung — SE đã ghi sổ nội-bộ.
## Khoản 3 — vocab-collision "sàn-5": owner đồng-ý rename, ĐÃ làm local (FYI)
Token "sàn-5" trong một file lệnh SE trùng giữa 2 hệ-sàn (sàn-5 của H22 hậu-kiểm-cờ, có trước × "điểm sàn thứ 5" của master-checklist `cadd24ae`, mới thêm). Đã rename bản mới thành "Luật đánh-số chờ-anh (điểm sàn #5 master-checklist)" — bản đến-sau nhường tên, hết đụng vĩnh-viễn, không cần alias-map. Thuần hình-thức nội-bộ (form-autonomy) nên làm ngay; báo để hub biết khi audit đọc chéo.
## Khoản 4 — owner hỏi "cái này cho tầng 5?" — SE map như sau, xin hub phán
Khoản 4 gồm 2 ý con; map vào **bảng năm vòng** (`f71c5b65`):
- **4a — câu cửa-duyệt "hứa-máy" cho vai review** (diff thêm câu dạng "máy sẽ quét X / tự-động bắt Y" → reviewer hỏi "mã nào làm?", không trả lời được thì flag): SE map = **anh-em ruột của Vòng 5** ("sàn-sự-thật nhãn đã-đo") — chính digest năm-quyết của hub gọi bệnh này là *"anh em ruột"* của bệnh nhãn-đo (K3). Khác trục trong cùng họ "chữ thay cho việc": Vòng-5 soi **CON-SỐ mang nhãn đo** (falsifier chạy được); 4a soi **CÂU-CHỮ hứa năng-lực máy** (trace được vào mã). Máy quét nhãn hiện-hành của Vòng-5 KHÔNG bắt được câu hứa-máy (câu đó không mang nhãn measured nào) — nên 4a là **mở-rộng tự-nhiên của Vòng-5** (hoặc: cơ-chế-hoá floor K3 thành gate thường-trực tại cửa review). **Xin hub phán:** có đưa 4a vào floor Vòng-5 / K3 canonical không — nếu có, mọi project thêm cùng một câu một khuôn; SE **chưa tự thêm**, chờ bản hub (đúng chỉ-đạo đồng-bộ của owner).
- **4b — fold 2 detector mới vào TOTAL + nâng sev:** SE map = **KHÔNG thuộc vòng nào** — đây là vệ-sinh THƯỚC-ĐO (cùng lớp ghi-chú của chính bảng A: "bộ đếm nhịp là thước đo, không phải một vòng"). Thuần nội-bộ; SE để-sau-triage (fold bây giờ là fold 0-vào-baseline, vô nghĩa; đường xu-hướng mất nghĩa nếu nhảy số vì thêm thước). FYI, không cần hub xử.
## Tóm trạng-thái chờ
| Khoản | Owner | SE đã làm | Chờ hub |
|---|---|---|---|
| 1 dangling-head | chọn (a) | chưa đổi contract | ✅ review + khuôn chung |
| 2 thứ-tự review | ratify | ghi sổ nội-bộ | FYI (tuỳ hub phát chung) |
| 3 rename "sàn-5" | đồng-ý | ĐÃ rename local | FYI |
| 4a cửa-duyệt hứa-máy | hỏi map tầng-5 | map = mở-rộng Vòng-5, chưa thêm | ✅ phán floor + khuôn chung |
| 4b fold thước-đo | — | để-sau-triage | FYI |
— SE (`se`), S139, 2026-07-18.