--- name: feedback_harness10_run_trace description: Harness-10 adopt (S71 subfolder → S72 FLAT-refine) — git-tracked run-trace folder runs// supersedes wave-folder; flat files (sub--.md + -synthesis.md, no subdir); containment flip; engine-no-fs + raw-Workflow≠wrapper-guard (RECURRED S72) + check-ignore-trap + detector-tailored-out lessons metadata: node_type: memory type: feedback originSessionId: d7c06b2a-d42b-40f4-8b93-edc1780fbcef --- Adopt AI_INFRA Harness-10 (S71, 2026-06-18, commit `8c47bd0`) — quy ước thư mục lưu-vết mỗi workflow run. **Supersedes Harness-2 wave-folder** ([[feedback_harness_123_adoption]] bullet wave-mode). **Cốt lõi:** mỗi workflow run → `.claude/workflows/runs//` **git-TRACKED**, cấu-trúc **FLAT (S72 refine `h10-flat-detector-refine`)**: file phẳng cùng cấp `run.md` (plan) + `sub--.md` (per-sub RAW, prefix `sub-`) + `-synthesis.md` (gom VERIFIED, suffix) — phân biệt bằng TÊN, KHÔNG subfolder. *(S71 dùng `sub-md/`+`harvest/` subdir; S72 migrate flat — engine chỉ tạo file 1-cấp tự-nhiên, bỏ điểm-quên-dựng-subdir; 5 run cũ GIỮ subfolder, close-gate dual-accept C8.)* + `_ledger.md` 2-nhịp (OPEN-beat lúc mở / CLOSE-beat lúc đóng; orphan = OPEN-không-CLOSE → giải-quyết-cứng). 3-layer anti-miss: **L1** (em-main @P1 đọc ledger — run trước `closed=⏳` chưa-harvest → harvest+CLOSE TRƯỚC khi mở run mới) · **L2** (session-start scan `runs/*` orphan) · **L3** (session-end close-gate **idempotent VERIFY-không-re-APPEND**, chống DUPLICATE-HARVEST). **Containment model FLIP:** Harness-2 B6 "wave-*/ gitignored → mọi tracked-change post-workflow = stray-write" → Harness-10 "run-folder TRACKED → HIỆN trong git-diff = audit trực-tiếp; tracked-change NGOÀI `runs//` + code-disjoint đã giao = vi-phạm". Mạnh hơn (sub-MD writes giờ thấy trong diff). G-015 giữ: TRACKED ≠ read-only-enforced (sub vẫn Bash); containment THẬT = em-main single-writer + git-diff + chunk-count. **Why:** wave-folder gitignored = "vật-chất-tối" thứ 2 (như L2 archive [[feedback_harness9_l2_recovery_2workflow_adap]]) — không truy được lại đã làm gì. Tracked run-folder = audit-trail bền. **How to apply (3 lesson hard-won S71):** 1. **Engine no-fs → scaffold = em-main @P1 = fragile-point (C2).** hmw.js JS-sandbox KHÔNG tạo folder/ghi file → run-trace dựa 100% vào em-main Write @P1. Quên scaffold = lỗ-hổng âm-thầm (run OK, chỉ mất dấu-vết, KHÔNG lỗi runtime để bắt). 3-layer = LƯỚI muộn, KHÔNG khoá-cứng-lúc-fire. 2. **Custom workflow (≠ hmw.js) PHẢI copy return-delta-guard.** hmw.js DEFAULT-mode cấm sub tự-ghi MEMORY (return-delta-only → em-main APPEND). Workflow tự-soạn thiếu guard → parallel same-role subs đua ghi MEMORY.md chung ("file modified since read") + bloat over-cap — **chính là cái gây G1 curate S71** (4 investigator + 3 reviewer tự-ghi → reviewer 36.7KB/inv 29.8KB). Custom script PHẢI tự thêm guard hoặc dùng file-disjoint 1-sub/file. **RECURRED S72 (confirm lesson real):** chạy REVIEW qua **RAW Workflow tool** (KHÔNG qua hmw.js wrapper) → KHÔNG inject writeGuard → 1 reviewer tự ghi `agent-memory/reviewer/MEMORY.md` (+2850B over-cap) → em-main git-status containment-check BẮT @session-end + revert (record ở run-trace, B3 restored). → **dùng RAW Workflow tool = MẤT governance của project-wrapper (writeGuard/return-delta); phải dùng `hmw.js` HOẶC replicate guard trong prompt raw-Workflow.** 3. **check-ignore exit-code (CORRECTED — đừng nhớ nhầm):** plain `git check-ignore X` exit **1** cho path negation/re-included (KHÔNG phải 0). Chỉ `git check-ignore -v --no-index` mới cho 0 ở CẢ negation lẫn ignore. Verify đúng: `git check-ignore X && echo IGNORED || echo NOT` (idiom cho verdict đúng) HOẶC `git ls-files X` non-empty (= committed). **C3 2-level:** tracked-eligible (check-ignore NOT-IGNORED) ≠ committed (`git ls-files` ra file) — phải `git add` mới đủ nấc. **S72 thêm (flat-refine + checklist-v2 adopt, re-audit 3-workflow):** (a) **detector chống-lách-engine (refine-b) TAILORED-OUT cho SE** — SE chạy qua Anthropic Workflow tool (KHÔNG có CLI-launcher để lách như node-CLI) → bypass-surface ~N/A; containment hiện-hữu (git-diff + tracked-run + ledger orphan-scan G-015) đã phủ; refine nói detector = project-internal-choice → SE document tailored-out, KHÔNG cargo-cult build (anh chốt). (b) **dogfood B2 value chứng-minh THẬT:** REVIEW workflow RIÊNG bắt 2 lỗi IMPLEMENT-self-assess sót (`hmw.js:52` schema-stale-path + sleep-cmd auto-check un-wired overclaim) → 1-workflow-tự-chấm SẼ ship cả 2. (c) **`/sleep-recovery-memory-l2` port §J2-tailored SE-only** (A8) — sleep `all` lần đầu = NO-OP (mọi period đã gisted S70/S71; guards fired đúng). 3 run-id S72: audit `wf_13868efb` / implement `wf_ac43b5ff` / review `wf_d482e10d`. adap-report `2026-06-18-Governance-harness-10-flat-refine-checklist-v2` + email `5f511fe5`. Link: [[feedback_harness9_l2_recovery_2workflow_adap]] · [[feedback_workflow_fanout_reliability]] · [[feedback_agent_kill_recovery]] · [[feedback_monitor_residual_write_containment]].