[CLAUDE] Docs: S149-S150 closeout — bookend lượt đầu end-to-end (hình B) + 2 arc đóng + tally #53 chốt 45
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m48s

- Arc-1 hội-tụ-bookend (rename 5 vai + 4 máy PS1 + C9-C12) + arc-2 adap-backlog 23/23 + probe Opus-5 khép (S149)
- Bookend @close S150: wave 6 vai (4 đo + 2 KIỂM) → 20 FLAG disposition từng-dòng; ring1 31/34-ĐẠT, ring2 10/10 + M-1 view-stale-role-desc
- Khoá _frozen_until_owner CẮM trước h24-signal-write (frozen-held in thật); 9 class FIRE; JUMP dải {5,4,4,3}+asym{1,4} chờ anh #21
- STATUS bump CURRENT S149-S150 + 2 khối Recently Done; HANDOFF segment mới + re-stamp đủ-slug + (17)(18)(19) lật + (14) viết lại + 6 slot #21-#26
- K2 posture-A @engine PHẦN K + K5 luật TÁCH vòng-đo-mới @session-end (O-2/O-3 OWNER-DELEGATED execute)
- sleep-doc derive-monitor-set (bỏ hardcode 4-tên); spawn-model-audit desc/comment fix; h24-signal-write param-default fix (first-live bug)
- M9 on-behalf ×3 (tooling + inv-cb F3 + reviewer F4); ring1/ring4 nhà seed; ring2 3 cite-dead vá
- Sổ garble #53 derive-from-body chốt 45 + sub-class ngược-#53/skeleton-ruột-rỗng (ghi-đĩa CẦN-KHÔNG-ĐỦ)
- Session-log S149-S150 (Sàn-5 đăng-ký 6 run=) + closeout-synthesis dạng-1

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-25 12:17:05 +07:00
parent 2f39a7e22c
commit 398d343403
122 changed files with 7666 additions and 250 deletions

View File

@ -27,7 +27,7 @@ const VALID_ROLES = [
'office-document', // +S107 — Office document WRITE specialist (OD1-OD10; docx/xlsx/pptx/pdf + form-engine)
'tooling-auditor', 'harvest-curator', // +S110 anh-directed (H21 roster-parity lệnh-B ensemble; supersede
// điểm H6-design "monitor ngoài workflow" — monitor VẪN INFORM-only, lane RETURN-only nên không xung đột)
'lead-view-auditor', 'lead-omission-auditor', // +S121 W2 (H24 lead-self-audit) — 2 monitor MỚI, INFORM-only propose-only.
'lead-stale-auditor', 'lead-gap-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 (11 class: 5 view-* + 6 gap-*) — vai KHÔNG tự chế class.
@ -36,8 +36,8 @@ const VALID_ROLES = [
'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;
// trục = CHÍNH HỆ MEMORY (độ-giữ·hành-động·đúng-spec) — KHÁC H1 tooling / H2 harvest / H24 lead / reviewer diff;
// TUẦN TỰ eval→refine→audit (CẤM song song — audit đọc bản cũ = verdict vô-nghĩa), lead scribe return từng con vào run-folder.
'tooling-harvest-audit', // +S145 C4/C4b (adap dot-11, owner-decision [2] TÁCH) — vai-KIỂM ĐỘC-LẬP vòng tooling/harvest: đọc OUTPUT H1(tooling-auditor)+H2(harvest-curator), no-self-exempt ≠ H1/H2. AUTO fire-after-measure @session-end §L.b(g-bis) (KHÁC trio/H24 consent-gated). Vai #1/3 round-KIỂM (h24-audit + sleep-audit land dần incremental).
'h24-audit', 'sleep-audit', // +S145 C4/C4b vai #2/3 + #3/3 round-KIỂM (owner-decision [2] TÁCH mỗi-vòng-1-con). h24-audit = KIỂM vòng soi-lead (đọc OUTPUT lead-view+lead-omission, no-self-exempt ≠ chúng, KHÔNG soi lead trực-tiếp) · sleep-audit = KIỂM vòng nén-ngủ (đọc /sleep-recovery gist+Fidelity, tự đo byte). AUTO fire-after-measure, propose-only, NO-OP nếu vòng không đo.
'ring1-audit', // +S145 C4/C4b (adap dot-11, owner-decision [2] TÁCH) — vai-KIỂM ĐỘC-LẬP vòng tooling/harvest: đọc OUTPUT H1(tooling-auditor)+H2(harvest-curator), no-self-exempt ≠ H1/H2. AUTO fire-after-measure @session-end §L.b(g-bis) (KHÁC trio/H24 consent-gated). Vai #1/3 round-KIỂM (ring2-audit + ring4-audit land dần incremental).
'ring2-audit', 'ring4-audit', // +S145 C4/C4b vai #2/3 + #3/3 round-KIỂM (owner-decision [2] TÁCH mỗi-vòng-1-con). ring2-audit = KIỂM vòng soi-lead (đọc OUTPUT lead-stale+lead-gap, no-self-exempt ≠ chúng, KHÔNG soi lead trực-tiếp) · ring4-audit = KIỂM vòng nén-ngủ (đọc /sleep-recovery gist+Fidelity, tự đo byte). AUTO fire-after-measure, propose-only, NO-OP nếu vòng không đo.
]
// ─── PA-2a — hằng-số kỳ-vọng model tier-2 (H23 model-at-spawn, owner-chốt O1 @S121 W2) ──
@ -54,7 +54,12 @@ const VALID_ROLES = [
// Caveat: retrospective (không hứa spawn TƯƠNG-LAI — đúng PA-2b) · đo trên ALIAS-pin, KHÔNG generalize
// sang full-id-pin (hub form). Evidence: runs/2026-07-16-S126-adap-spec-execute/runtime-verify-synthesis.md.
// 🔸 CHƯA THỬ (fix#8a): param `model:` có TỪ-CHỐI full-id không — doc nói enum-alias; chưa ai thử thật.
const TIER2_EXPECTED_FULL_ID = 'claude-opus-4-8'
// 🔄 VALUE-update @S149 2026-07-25 (broadcast `model-default-opus-5-max` sha 59ce1d0f, hub-owner "làm gấp"
// + SE-owner cùng ngày "Giao cho đám Opus 5 MAX apply"): 'claude-opus-4-8' → 'claude-opus-5'.
// Khoản 1.2: SE pin ALIAS `opus` ⇒ CODE spawn-site GIỮ NGUYÊN, alias family tự resolve Opus 5.
// Khoản 1.4: 'claude-opus-4-8*' = bucket LEGACY giai đoạn chuyển tiếp (record cũ KHÔNG cờ drift).
// 2-key: đổi ĐỒNG THỜI với $OWNER_RATIFIED_TIER2_FULL_ID trong scripts/spawn-model-audit.ps1.
const TIER2_EXPECTED_FULL_ID = 'claude-opus-5'
// ─── Worker-tier-pin opus (owner-decision S124 — thay thế H8 all-inherit; adopt erratum-h8 floor) ──
// MỌI sub-agent (17/17) → frontmatter `model: opus` + `effort: max` = worker-tier gán-cứng (KHÔNG còn
@ -113,16 +118,34 @@ if (!A || !Array.isArray(A.taskList) || A.taskList.length === 0) {
if (A.checkpointApproved !== true) {
throw new Error('hmw: checkpointApproved chưa set — em-main BÁO {số agent·vai·task} @inform rồi set args.checkpointApproved=true (guard = anti-accidental-fire).')
}
// ─── C8b LOUD-skip trần WIDTH (S144, adap đợt-11 · owner chốt O-7 2026-07-22) ──────────────
// ─── C8b LOUD-skip trần WIDTH (S144, adap đợt-11 · 🔴 CHƯA RATIFY — xem ĐÍNH-CHÍNH dưới) ────
// 🔴 ĐÍNH-CHÍNH ATTRIBUTION @S149 (2026-07-24) — bản trước ghi "owner chốt O-7 2026-07-22" ×2.
// ĐÓ LÀ SAI. Đo 4 nguồn: `docs/HANDOFF.md` mục (19) ghi "chưa ai duyệt" + "số = owner-SỐ";
// `docs/STATUS.md` ghi O-7 "câm 5 nhãn"; grep `O-7.{0,60}(anh chốt|owner chốt|đã duyệt|ratif)`
// toàn `docs/` + `.claude/governance/` = **0 dòng**; `ring2-audit` @S149 chấm FLAG "bảng owner-gated
// O-2/O-3/O-7 câm" = ĐẠT/HELD (falsify F2+F3 đều HELD).
// ⇒ Nguồn thật của cơ-chế = **ADOPT-theo-floor** của spec-R2 + C14 3.4 theo `depth-axis:43`,
// KHÔNG phải owner ký. Code tự nâng adopt-theo-floor thành owner-decision = cùng họ "lời-hứa-máy"
// (`goi-chot:52`) và họ "SHA bịa" — chữ ký của owner KHÔNG được suy ra từ việc đã implement.
// 🔸 Chưa loại trừ owner chốt MIỆNG @S144 không ghi sổ ⇒ đang HỎI owner @S149; nếu đúng thì
// đây chỉ là ghi-vết-lại, và dòng này đổi thành "owner ratified <date>".
// LINEAGE (giữ vết, KHÔNG xoá — khuôn `auto-toan-vong:35` "đảo có chủ đích, chủ-ký, ngày, lý do"):
// BẢN CŨ: `if (len > 16) log(...)` + comment "số task THOẢI MÁI … KHÔNG cap cứng (soft notice only)".
// VÌ SAO ĐẢO: broadcast `depth-axis:40` đòi "clamp trần cứng + assert tổng-lượt ≤ trần";
// soft-notice = chạm trần vẫn chạy hết ⇒ không phải clamp. Owner chốt O-7 = **LOUD-skip**.
// soft-notice = chạm trần vẫn chạy hết ⇒ không phải clamp. Cơ-chế LOUD-skip = adopt theo floor.
// VÌ SAO KHÔNG THROW: `depth-axis:43` nguyên văn "BỎ đào + báo RÕ (KHÔNG văng lỗi, không
// lặng-thầm bỏ)"; và :124-125 dưới đã tự khai throw per-lane có thể bị nuốt thành null =
// STOP-SILENT, tệ hơn. Reviewer R2 bắt bản spec v1 đòi THROW = tự mâu thuẫn → đã sửa.
// 🔸 Trần 16 = GIÁ TRỊ CŨ ĐÃ CÓ, không phải số mới AI đặt. Đổi số = quyền owner (O-7).
const WIDTH_CAP = 16
// 🔴 CANONICAL của số này = `.claude/agent-memory/memory-budget.json` → `hmw_width.cap` (B1).
// Dòng dưới là **MIRROR HARDCODE**, KHÔNG đọc runtime — sandbox workflow no-fs (xem :5).
// Lệch giữa 2 nơi ⇒ drift-check `governance-detectors.ps1` phải FLAG (K8, chưa land — grep
// `width` toàn `scripts/` @S149 = 0 hit).
// 🔸 16 → 20 @S149 2026-07-24 (owner-DELEGATED → lead-decided; xem `hmw_width._ratified_by`).
// VÌ SAO: trần này chặn ĐỐT TOKEN NHẦM, không chặn concurrency (engine đã cap min(16,cpu-2),
// >16 chỉ xếp hàng). Sweep TOÀN-ROSTER là use-case đã chạy thật (S125/S126 = 14/14 thời roster
// 14); roster nay **20** ⇒ cap 16 cắt 4 lane, ép chia 2 đợt vô cớ. Đánh đổi khai thẳng:
// 8 lane @S149 ≈ 1,06M token ⇒ 20 lane ước ~2,5M.
const WIDTH_CAP = 20
if (A.taskList.length > WIDTH_CAP) {
const dropped = A.taskList.slice(WIDTH_CAP)
const keptN = WIDTH_CAP
@ -204,7 +227,7 @@ const results = await parallel(A.taskList.map((t, i) => () => {
`## ✍️ RUN-TRACE ghi sub-<role>-<i>.md FLAT (Harness-10 h10-refine, supersedes subfolder sub-md/) — TOOL-AWARE (chống mojibake G-009):`,
`- Full-detail công-việc của mày → ĐÚNG 1 file: \`${subMd}\` (folder đã scaffold sẵn — KHÔNG tạo folder).`,
` • NẾU mày CÓ Write/Edit tool (implementer-backend/frontend, test-specialist, frontend-designer): GHI TRỰC TIẾP via Write/Edit. 🔴 KHÔNG Bash-write MD ($-expansion/mojibake).`,
` • NẾU mày CHỈ có Bash (read-only sub: investigator-codebase/api, reviewer, cicd-monitor, tooling-auditor, harvest-curator, lead-view-auditor, lead-omission-auditor, harness-eval, harness-refine, harness-audit — KHÔNG Write tool): 🔴 TUYỆT ĐỐI KHÔNG Bash-write MD → để full-detail trong "findings" + đặt subMdPath="${subMd}"; EM MAIN scribe @P3 (single-writer Write-tool, no-corruption).`,
` • NẾU mày CHỈ có Bash (read-only sub: investigator-codebase/api, reviewer, cicd-monitor, tooling-auditor, harvest-curator, lead-stale-auditor, lead-gap-auditor, harness-eval, harness-refine, harness-audit — KHÔNG Write tool): 🔴 TUYỆT ĐỐI KHÔNG Bash-write MD → để full-detail trong "findings" + đặt subMdPath="${subMd}"; EM MAIN scribe @P3 (single-writer Write-tool, no-corruption).`,
`- 🔴 ISOLATION (B6→Harness-10, AUDIT): CHỈ ghi \`${subMd}\` (+ code-file-disjoint nếu task giao). TUYỆT ĐỐI KHÔNG ghi/sửa: agent-memory/* (MEMORY.md BẤT KỲ sub) · MD canonical (CLAUDE/README/STATUS/agents) · sub-MD agent khác. Em main git-status/diff audit sau P2 — tracked-file đổi NGOÀI run-folder (runs/<run-id>/) + code-disjoint = vi-phạm (run-folder TRACKED → HIỆN trong diff).`,
`- LUÔN return: findings (FULL) + checklistEvidence + memoryDelta (4-field) + subMdPath="${subMd}". Harvest per-turn primary (C4); H2 gom @session-end = backstop verify-idempotent → agent-memory/${role || 'sub'}.`,
`- 🔴 KHÔNG store_memory/RAG-write · KHÔNG Bash curl/HTTP Qdrant (:6333 = git-diff MÙ, chỉ chunk-count bắt) · KHÔNG ghi file NGOÀI repo/run-folder. RAG single-writer=em main; containment = git-diff(in-repo)+chunk-count(RAG) [G-015].`,