Files
solution-erp/.claude/workflows/runs/2026-07-17-S135-adap-khung-nhip-nam-vong/sub-investigator-codebase-0.md
2026-07-17 16:17:18 +07:00

48 KiB
Raw Blame History

S135 adap khung-nhịp-năm-vòng — sub-investigator-codebase-0

  • run: 2026-07-17-S135-adap-khung-nhip-nam-vong
  • vai: investigator-codebase — ENGINE fable-real lệnh-A (single deep-pass)
  • ngày đo: 2026-07-17
  • đề-bài: ground-truth wave adap 7-item AI_INFRA 17-07 (13 trục T1-T13) + propose spec 3-mục
  • nguyên tắc: mọi claim = đo trên đĩa (file:line + lệnh + output); doc stale → tin đĩa; không đo được → khai "CHƯA ĐO". KHÔNG chép số hub.

STATUS: IN-PROGRESS (ghi từng phần — chống #53)

PHẦN 0 — Input digest (7 broadcast, cite 8-hex từ frontmatter content_sha256)

# File 8-hex Nội dung lõi cho wave
B1 khung-nhip-nam-vong (17-07, CHUẨN) 3daf5ee4 4 khoản floor mục 3 (tick đa-điểm · force-fire bù · dòng-nợ 3-vế · cadence ngày-lịch KHÔNG chuẩn) + event-gate 2-điều-kiện mục 4 + van TREO mục 5 + 2 detector mục 6 (closeout-thiếu-nghi-thức · per-ROLE) + SELF-CHECK 5 ô + đơn-vị phiên-LOGIC mục 7
B2 checklist-nam-vong (17-07) f71c5b65 bảng A 5-vòng 7-cột · B 8-phép $0 (nhóm chỉ-đọc 1/3/4/5/8 · quan-sát/diễn-tập 2/6/7) · C completeness-gate = 5 vòng chức-năng + phép 1-4
B3 reply-adap-dot-16-07 (16-07, đích-danh SE) e50a4bd0 do-token: method published e0bb5bbf → adap NGAY + đóng ask; 2 residual (crystallized-backfill.ps1 đuôi provenance + memory-budget.json:90 anchor NO-GO); đính-chính ngữ-nghĩa (số-cắt-ngắn ≠ real-N, = cận-trên ~1.42× KHÔNG cố-định → báo DẢI); mục 3 _owner_ratified wording note :121 ("tương-tự Hub" → "mốc khởi-đầu cố-ý; hub-counter đã gỡ per 85bf89ca") + ratification = anh mark cổng reply + re-sync session-start.md:206
B4 reply-h24-cadence-3-gap (17-07, đích-danh SE) 0b581ae7 CONFIRM 3 gap (GAP-2 nặng nhất); khung SE "đo rải · làm dồn · nợ hiển thị" VÀO CHUẨN; câu-2 = nguyên tắc số 1 reword "nhịp vô-điều-kiện"; verdict: tick/dòng-nợ/eval-gộp/2-vai-vô-điều-kiện = nhận, event-gate = dè dặt 2-điều-kiện; 4 việc SE tự hẹn "đúng thẩm quyền, không cần chờ hub"
B5 vong-bon giấc-ngủ (16-07) 89e4d818 khuôn 4-vai nén L2 {máy đề-xuất → đầu-tàu chưng-cất → cổng đối-chiếu tất-định grep-token → cửa-duyệt độc-lập fidelity}; additive; marker chống-nén-2-lần; 3 câu hỏi mục 4 (tầng thoát? cổng tất-định? vai độc-lập chấm?)
B6 loi-phong-workflow chết-non (16-07) 6c2eb2b1 chữ-ký: chết-non ms, 0 agent 0 token, JSON Parse error/Unexpected identifier tầng máy; root-cause args = CHUỖI stringify; 3 chốt: object-thật · args-MỎNG (nội-dung dày → FILE, args = path+cờ) · giữ normalize = lưới-cuối
B7 notify 2-bản + kênh hỏi-đáp (16-07) dacfcb11 kênh Q&A qua hub (owner-chốt 16-07); nhịp phát xong-cái-nào-phát-cái-đó; 2 bản mới eb12b9b8 (EOL errata — SE ĐÃ xử S129) + 0db707e4 (7 lớp lỗi)

T1 — TICK ĐA-ĐIỂM-VÀO

(a) Hiện trạng đĩa

Counter file .claude/governance/.session-counter.json (đọc trọn 38 dòng):

  • :13-16counter: 8, last_ticked_session: "S133", last_ticked_head: a721989b…, last_ticked_at: 2026-07-17.
  • :6 _contract.tickidempotent same-HEAD có sẵn: "if head == last_ticked_head -> NO-OP … Else counter+1". ⇒ điểm chèn tick mới KHÔNG cần logic mới, chỉ cần GỌI cùng contract.
  • :7 fail_loud_on_regress + :8 overdue formula (counter - last_audit.light_at_counter) >= light_every + :9 jump_on_class_repeat + :10 writer = lead single-writer, "Wired at /session-start" (duy nhất).
  • :17-21 last_audit: light_at_counter=3, deep_at_counter=3 (S124 credited both) → next light ~9, next deep ~18.
  • :26-36 history 2 entry FAIL-LOUD ancestor-check (S127, S133) — class "closeout squash làm head lúc tick thành dangling"; candidate-fix treo (chấp nhận dangling-object-exists làm bằng-chứng yếu khi counter không lùi).
  • Bằng-chứng sống GAP-1: last_ticked_session=S133 trong khi phiên hiện tại = S135 (S134 + S135 vào bằng /tiep, không qua /session-start) — 2 cửa "câm". git status đầu phiên cũng thấy .session-counter.json modified (tick S135 chưa commit? — sẽ đối chiếu ở T6 phép 1).

Vị trí bước tick (đo grep 4 command file):

  • session-start.md:181-206 §2.1.8 = NƠI DUY NHẤT có nghi-thức tick. :185-190 = pseudo-code inline (không phải script .ps1 — lead tự chạy git rev-parse HEAD + Edit file). Trích :188-189: "nếu head == last_ticked_head → NO-OP (idempotent) / ngược lại → counter += 1 ; last_ticked_session = S ; …".
  • tiep.md — grep tick|counter|session-counter = 0 match ⇒ KHÔNG tick. Cấu trúc: §0 sàn-3 → §1 WAL → §2 đối-chứng → §3 ground-truth → §4 wf-recovery.
  • pause.md0 match ⇒ KHÔNG tick. 5 bước: ngừng-spawn → flush → WAL → commit wal: pause (bước 4, đích-danh path) → báo + DỪNG.
  • session-end.md:92-94 bước (j) H24 — CHỈ ĐỌC counter + in 1 dòng OVERDUE + INFORM; KHÔNG tick (chỉ update last_audit SAU khi vai H24 chạy).

Bằng-chứng sống bổ sung (git diff + log):

  • git diff .session-counter.json = tick S133 (counter 7→8 + history entry FAIL-LOUD lần 2) CHƯA COMMIT — commit cuối chạm file = 72f68d1 (07-17 08:38, S131-S132 session-end). File nằm NGOÀI 3 path hook (by design :4) ⇒ cần git-add đích-danh lúc closeout, mà closeout S133 (e53a693) + S134 (99fc373) đều KHÔNG add ⇒ governance-state uncommitted drift (surprise — liên đới T3/T4).
  • History :26-36: 2× FAIL-LOUD ancestor-check (S127, S133) class "closeout SQUASH làm head-lúc-tick thành dangling" — candidate-fix treo (chấp nhận dangling-object-exists làm bằng-chứng yếu khi counter không lùi) chờ anh/hub.

(b) GAP so floor B1 mục 3.1 (3daf5ee4)

Floor: "Mọi cửa vào phiên VÀ mọi điểm dừng đều tăng bộ đếm". Hiện trạng: 1/4 điểm có tick (session-start). /tiep (cửa vào) + /pause (điểm dừng) + session-end (điểm hội tụ) = 3 điểm câm. Sống: S134+S135 vào bằng /tiep → counter đứng 8/S133.

(c) Đề xuất cách làm

Bẫy +1 phải giải trước: SELF-CHECK B1 + phép 7 checklist đòi "dừngnối 1 lần → counter +1" (không phải +2). Contract hiện chỉ dedup same-HEAD — mà /pause commit wal: pause làm HEAD đổi ⇒ tick ở CẢ pause lẫn tiep = +2/cycle → FAIL phép 7. Giải đề xuất (contract mở rộng 1 OR-guard): NO-OP nếu (head == last_ticked_head) HOẶC (session == last_ticked_session) — dùng field last_ticked_session CÓ SẴN. Hệ quả:

  • tick tại CẢ 4 điểm (session-start có sẵn + tiep + pause + session-end-close) — "không cửa nào câm" đúng nghĩa đen;
  • 1 phiên-logic S = đúng 1 tick bất kể qua mấy cửa (pause trong S135 sau khi session-start đã tick S135 → NO-OP session-guard; /tiep mở S136 → +1) ⇒ phép 7 PASS;
  • 2× /session-start cùng HEAD = +1 (HEAD-guard giữ nguyên). Điểm chèn cụ thể: tiep.md sau §2 (đối-chứng xong, trước nối chain) + pause.md bước 3.5 (trước commit bước 4 — để tick nằm TRONG commit wal: pause) + session-end.md bước (j) thêm "(iii) tick-at-close". Mỗi chỗ 3-4 dòng TRỎ về contract §2.1.8 (B1 con-trỏ-canonical, KHÔNG chép logic). Alternative rẻ hơn (nếu anh không muốn đổi contract): tick CHỈ tại /tiep + session-end-close (2 điểm), /pause không tick — phép 7 vẫn PASS nhưng "điểm dừng tăng đếm" chỉ đạt gián-tiếp. Decision-point cho anh/lead. Lưu ý restart: command .md = NO hot-reload — pause.md:9 ghi rõ "🔴 restart Claude Code sau khi tạo/sửa command .md". Tiền lệ S124 restart-lesson (project-memory harness4). ⇒ wave này sửa 4 command file ⇒ restart bắt buộc trước khi đo phép 7. Decision-point phụ: candidate-fix dangling-head (history :30/:35) — gom vào wave này hay để riêng chờ hub (nó fire MỌI phiên-đầu-sau-closeout-squash, sẽ ồn hơn khi tick dày lên).

T2 — DÒNG-NỢ 3-VẾ (floor B1 mục 3.3: nhịp-kiểm · cờ-trần-bộ-nhớ · run-chưa-gom, 1 dòng chỉ-đọc ~0)

(a) Nguyên liệu sẵn có trên đĩa — CẢ 3 VẾ ĐỀU CÓ SẴN, chưa ai gom thành 1 dòng

  • Vế 1 nhịp-kiểm: .session-counter.json (counter=8, last_audit light/deep@3) + memory-budget.json:119-125 h24_cadence (light_every=6 :122, deep_every=15 :123, jump=3 :124). Tính sống: light 5/6 (due @counter 9 — CHƯA overdue), deep 5/15 (@18). Công thức OVERDUE đã chuẩn ở counter-contract :8.
  • Vế 2 cờ-trần-bộ-nhớ: cap = memory-budget.json:34 archive_gate.autoinject_cap_bytes 25600; đo = so byte agent-memory/*/MEMORY.md vs cap (logic có sẵn trong scripts/memory-archive-gate.ps1 A1 :48-50). ⚠️ KHÔNG tái dụng nguyên con memory-archive-gate làm probe: (i) output multi-line PLAN, không phải 1 dòng; (ii) cờ -Apply ghi strikes (:26 — mutation); default DRY read-only nhưng vẫn ồn. measured block :142-156 là SNAPSHOT S107 (stale by-design) — probe phải đo TƯƠI byte-on-disk.
  • Vế 3 run-chưa-gom: orphan-detector DUAL-ACCEPT canonical tiep.md:40-53 (bash: run.md tồn tại ∧ thiếu *-synthesis.md phẳng ∧ thiếu harvest/*-synthesis.md non-empty). Đếm dòng ORPHAN = số run chưa gom.

(b) GAP

Chưa có script nào in 3 vế thành 1 dòng; chưa điểm dừng nào in nợ. /pause bước 5 báo 4 ý (goal/[!]-đầu/wf/an-toàn) — KHÔNG có vế nợ nào; /tiep cũng không; session-start §2.1.8(e) + session-end (j)(i) mới in vế-1 (H24) đơn lẻ ở HAI ĐẦU, không phải mọi điểm dừng.

(c) Đề xuất

Script mới scripts/nhip-no-probe.ps1 (PS 5.1, pure-ASCII gotcha #30, NO-API, 0-mutation, exit 0 LUÔN — noi gương agent-frontmatter-eol-check.ps1 nấc INFORM session-end.md:211):

  • I: đọc .session-counter.json + memory-budget.json (h24_cadence + archive_gate.cap) + scan agent-memory/*/MEMORY.md byte + port vòng orphan DUAL-ACCEPT (giữ đúng 2 dạng, dạng-3 retired).
  • O: đúng 1 dòng: NO-LINE: kiem light <a>/<e> deep <b>/<f> <OVERDUE:...|ok> | tran-bo-nho <x> sub over-cap | run-chua-gom <y>; MỌI exception → in probe-loi (khong chan) + exit 0.
  • Chỗ in (4 điểm — khớp tick T1): /pause bước 5 (thêm ý 5) · /tiep cuối §2 · session-start §2.1.8(e) (nâng dòng H24 hiện có thành dòng-nợ 3-vế) · session-end (j)(i) (tương tự). B1: command chỉ GỌI script, không chép logic.
  • Phép 5 checklist (chạy-lại-được): script không ghi file nào (không strikes, không state) ⇒ 2 lần chạy output y hệt. Phép 6 (giết probe): lệnh gọi trong command bọc "lỗi → in probe-loi (khong chan), đi tiếp" — fault-inject: gọi với -RepoRoot không tồn tại → phải in probe-loi + điểm dừng vẫn hoàn tất.
  • LUẬT: dòng-nợ KHÔNG BAO GIỜ chặn /pause / /tiep (floor B1 mục 3.3 nguyên văn).

T3 — FORCE-FIRE BÙ khi closeout gộp sổ

(a) Hiện trạng

  • session-end.md đọc TRỌN (253 dòng): KHÔNG có bước nào phát hiện "closeout gộp sổ ≥2 phiên-dừng". Bước (j) :92-94 chỉ check OVERDUE theo counter — mà counter đang đứng khi vào bằng /tiep (GAP-1) ⇒ gộp sổ càng nhiều, OVERDUE càng KHÔNG kêu = đúng vòng tự-che B4 mô tả.
  • Bằng-chứng gộp-sổ THẬT (git log): 72f68d1 "S131-S132 session-end — … E-011/AS-15 nghi-thức-chạy-tắt + dồn H1/H2 S127→S131" (1 closeout gộp 6 nhãn-phiên S127-S132); e9124fc "S125-S126 closeout GOP". Đếm cửa-sổ (e9124fc → HEAD]: 7 commit wal: pause + 18 wal: flush + 9 nhãn-phiên (S127→S135).
  • Cách đếm phiên-dừng-trong-kỳ ĐO ĐƯỢC: git log --format=%s <closeout-trước>..HEAD | grep -c '^wal: pause' (số điểm dừng chủ-động) + đếm nhãn S<nn> mới trong session-log/subject kỳ đó. Cả 2 đều $0 chỉ-đọc.

(b) GAP so floor B1 mục 3.2: floor đòi "closeout gộp ≥2 phiên-dừng → chạy lượt kiểm ngay closeout đó, bất kể counter". SE = 0 wire.

(c) Đề xuất wire (session-end.md, chèn vào (j) thành mục (v)):

  • Điều kiện: P = grep -c '^wal: pause' trên <last-closeout>..HEAD (last-closeout = commit gần nhất match closeout-pattern T4); NẾU P >= 1 (tức kỳ này chứa ≥1 điểm dừng = closeout đang gộp ≥2 phiên-dừng) HOẶC nhãn đóng dạng S<a>-S<b> (b>a) → force-fire bù.
  • Hành động: coi như OVERDUE(light) — in dòng-nợ + INFORM anh đề-xuất spawn cặp H24 light (lead-view + lead-omission) NGAY closeout này, bất kể counter. ⚠️ Điểm lệch khung phải khai: khung nói "chạy lượt kiểm"; SE có luật cứng "🔴 KHÔNG auto-run — anh consent mới chạy" (session-end.md:94, session-start.md:203) + việc SE tự hẹn hub = "light-run owner-triggered" ⇒ đề xuất giữ consent-gate: force-fire = force-INFORM-bắt-buộc + default-đề-xuất-chạy, anh gật thì chạy trong closeout. Decision-point cho anh: consent-gate (SE-specific, khai với hub) vs auto-run đúng chữ khung.
  • Chạy trên trạng-thái nghỉ ✓ (closeout = điểm hội tụ, nguyên tắc 2 khung).

T4 — DETECTOR closeout-thiếu-nghi-thức (khung 3daf5ee4 mục 6.1)

(a) Hiện trạng

  • Detector hiện có trong scripts/governance-detectors.ps1 (grep banner + Write-Flag): derived-staleness counts vs STATUS canonical (:172-237) · H18-A derived-doc scan-range/stale-total (:266-308) · C1-wikilink resolve (:380-415) · WAL overwrite-not-append N.1 (:484-491) · H24-1 title-freshness (:502+) · Test-Quoted use⟂mention helper (:596) · H24-3 session-label-lag (:664+, NEW S123) · H24-2 carry-age INFORM (:781+, đọc h24_cadence fail-loud :819-839) · HANDOFF:5 mega-line (:864-889) · self-match check (:905-914). exit 0 LUÔN, FLAG advisory (:922-923). ⇒ 0 detector nào nhìn commit-delta closeout — GAP-2 đúng là "không detector nào hiện sở hữu" (khớp B4).
  • Closeout-pattern ĐO từ git log (6 commit gần nhất match): [CLAUDE] Docs: S<nn>[-S<mm>] {closeout|session-end|closeout-tail|closeout GOP} — … ⇒ regex đề xuất: ^\[CLAUDE\] Docs: S\d+.*(closeout|session-end).
  • "Sổ nghi-thức bắt buộc" theo session-end.md: STATUS.md Recently-Done (§L.b(a) :54 + Phase 2.1 :107) · HANDOFF.md (Phase 2.1 :107) · session-log docs/changelog/sessions/ (Phase 1 :44) · agent-memory flush mọi sub đã spawn (§L.b(d) :57) · WAL reset (§6.4 :244-248) · error-ledger (§L.a :50 — CONDITIONAL khi có AS-hit) · run *-synthesis.md (§L.b(f)).
  • Phát hiện thiết kế (đo 4 closeout bằng git show --name-only): delta sổ KHÔNG nằm trọn trong chính closeout-commit — hook wal: flush đã mang delta agent-memory đi TRƯỚC (vd diary S133 nằm ở 9f404d3 wal-flush 09:58, KHÔNG ở e53a693); closeout-tail 9e874ca thiếu HANDOFF nhưng 72f68d1 cùng label S131-S132 có ⇒ detector PHẢI đo UNION delta trên CỬA SỔ kỳ (closeout-trước .. closeout-này] theo session-label, KHÔNG per-commit — nếu không sẽ 2/3 FAIL oan ngay trên dữ liệu lành.

(b) GAP: 0 wire. (c) Đề xuất

Detector mới trong governance-detectors.ps1 (tên: H25-closeout-ritual — tránh chữ trần "GAP"/"stale" per _vocab_guard memory-budget.json:128): input = commit gần nhất match closeout-regex → xác định label + cửa-sổ (closeout-liền-trước .. commit] → union git log --name-only cửa-sổ → check ≥1 delta mỗi sổ {STATUS, HANDOFF, session-log-mới, agent-memory/**} → thiếu sổ nào FLAG MED kể tên sổ. Advisory exit-0 (nhất quán script). Fault-inject (S95 proves-teeth): cây tạm -RepoRoot + commit giả subject closeout chỉ chạm 1 file lạ → PHẢI FLAG 4 sổ thiếu; control = tái tạo shape 99fc373 → PASS; boundary = closeout-tail thiếu HANDOFF nhưng union-window có → KHÔNG FLAG (chống dương-giả oan).

T5 — DETECTOR per-ROLE (khung mục 6.2, GAP-3) + đo NGAY

Số thật đo 2026-07-17

  • Roster: 14 vai = .claude/agents/*.md trừ README (cicd-monitor · database-agent · frontend-designer · harvest-curator · implementer-backend · implementer-frontend · investigator-api · investigator-codebase · lead-omission-auditor · lead-view-auditor · office-document · reviewer · test-specialist · tooling-auditor).
  • Sổ: .claude/agent-memory/<role>/MEMORY.md tồn tại + byte>0 = 14/14 (min office-document 3323B; max cicd 22607B).
  • 2 vai H24 (chạy S124): lead-omission-auditor 3691B + lead-view-auditor 3332B — seed commit 72f68d1 (S131-S132, 07-17 08:38, subject có "seed 2 diary H24"). ⇒ "harvest hồi tố sổ 2 vai" SE hẹn hub = ĐÃ XONG @S131-S132, KHÔNG còn là việc wave này (chỉ còn báo-lại hub trong report).
  • Vai đã-chạy-thiếu-sổ hiện tại = 0. GAP-3 data-side ĐÓNG; cái THIẾU là máy (detector tự soi từ nay về sau).
  • ⚠️ Bẫy mapping đo được: prefix sub-file trong runs/ KHÔNG canonical — ngoài tên vai chuẩn còn invest-A/B/C · w1/w2/w3-task · task · impl-runsreadme · impl-sleepcmd · review-r1/r2/r3 · investigator-2-spec-draft… ⇒ detector map-được-thì-map, UNMAPPABLE → in danh-sách riêng, KHÔNG đoán (bài S122: đo TÊN ≠ đo NỘI-DUNG, 32% dương-giả).

Đề xuất

Detector H25-role-notebook cùng script: evidence-đã-chạy = (runs/*/sub-<role>-*.md khớp prefix-map) OR vai có mặt trong spawn-record session-log; mỗi vai đã-chạy PHẢI có agent-memory/<role>/MEMORY.md byte>0 → thiếu FLAG MED. Fault-inject: cây tạm xoá lead-view-auditor/MEMORY.md → FLAG; control 14/14 → PASS; boundary: sub-file prefix lạ → dòng "UNMAPPED" chứ không FLAG bừa.

T6 — BASELINE 8-PHÉP (bảng B f71c5b65) — chạy phép 1/3/4 NGAY, số THẬT

Khai đơn-vị + cửa-sổ (bẫy S130): cửa-sổ = (e9124fc 07-16T15:19 .. a6cd0a2 07-17T15:40] (từ closeout S125-S126 tới HEAD lúc đo); "nhãn-phiên" = S-label xuất hiện trong commit-subject/session-log (proxy 2-nguồn); "tick" = increment counter trong .session-counter.json; đếm bằng git log --format=%s --since=… | grep -c (occurrence trên subject-line đơn, không mega-line ⇒ -c an toàn ở đây).

Phép Kết quả Số + lệnh
1 — tick vs cửa FAIL (kẽ sống, đúng GAP-1) Nhãn-phiên trong cửa-sổ: 9 (S127…S135). Điểm dừng wal: pause: 7. Tổng cửa+dừng ≈ 16. Tick cùng kỳ: +3 (5→8: S127, S131, S133 — đọc history+diff counter). ⇒ ~13 cửa "câm". Riêng bằng-chứng tối-thiểu: S134+S135 vào /tiep, 0 tick.
3 — closeout thiếu nghi-thức PASS 3/3 theo UNION-per-label (caveat bên dưới) S134 99fc373: STATUS✓ HANDOFF✓ session-log✓ agent-memory✓(4 diary). S133 e53a693: STATUS✓ HANDOFF✓ session-log✓ + agent-memory qua 9f404d3 wal-flush cùng kỳ (per-commit-naive thì FAIL oan). S131-S132 72f68d1+tail 9e874ca: đủ 4 sổ (union). ⚠️ Caveat: PASS này là SAU vá E-011/AS-15 @S131; kỳ S127-S130 trước đó chính là ca FAIL (GAP-2 đã báo hub — "dồn H1/H2 S127→S131"). Proxy mtime+commit-log không phân biệt "không chạy" vs "chạy không ghi sổ" (B2 ghi-chú (v)) — cả hai đều lỗi nên vẫn bắt đúng.
4 — per-ROLE có sổ PASS 14/14 Xem T5 — 0 vai đã-chạy thiếu sổ (2 sổ H24 seeded 72f68d1).
2 — dòng-nợ tại cửa CHỜ IMPLEMENT (T2) — PASS-able sau wave n/a
5 — probe chạy-lại-được CHỜ IMPLEMENT (nhip-no-probe.ps1 0-mutation) n/a
6 — giết probe điểm dừng sống CHỜ IMPLEMENT (fault-inject case T2) n/a
7 — dừngnối +1 CHỜ IMPLEMENT (T1) + cần restart trước khi đo (command .md no hot-reload) n/a
8 — đối chiếu đóng-sổ vs khối-lượng CHỜ IMPLEMENT (T3 force-fire chưa wire; phép 8 hub cũng CHƯA dogfood — khai thẳng) n/a

T7 — RESIDUAL DO-TOKEN (reply e50a4bd0 mục 2c/2d/3)

(i) crystallized-backfill.ps1 — LỆCH-TIỀN-ĐỀ (đo đĩa + git-history)

  • Grep TRỌN file cho token|draft|do-token|NO-GO|calibrat|method|provenance|e0bb5bbf: cụm "draft 2026-07-15" KHÔNG TỒN TẠI trong file hiện tại. Đuôi provenance thật :117 (TRÍCH NGUYÊN VĂN): # heuristic RANGE (invariant 4): divisors = convention char/4 + VN ~3.0-3.5 byte/tok -- CHUA do tokenizer that tai SE (see dinh-chinh letter 58f5afd8 2026-07-16). tok_low = optimistic (bytes/4), tok_high = worst (bytes/3.0) + :25 (4) HEURISTIC RANGE (convention, NOT measured) + :227 char/4 is NOT a real token count.
  • git log -S 'draft 2026-07-15' -- scripts/crystallized-backfill.ps1 = RỖNG ⇒ file CHƯA TỪNG chứa cụm đó trong toàn lịch sử. Anchor sống của ps1 = 58f5afd8 (đính-chính letter ĐÃ PUBLISHED) — hợp lệ, ngữ-nghĩa honest-RANGE sạch.
  • Residual #1 của hub đặt SAI landing-site. Cụm "draft 2026-07-15" thật sự sống ở 2 chỗ (grep repo-wide, loại history/letters): memory-budget.json:65 + memory-budget.json:90 — cả hai do commit 949ec33 (S129 disposition (iv)/(ii)) thêm vào. ⇒ ps1 = NO-CHANGE; errata-note blameless gửi hub trong adap-report. (Cùng class S134 hash-stale + S129 dương-giả-erratum: claim thư phải re-đo đĩa.)

(ii) memory-budget.json — dòng THẬT hiện tại

  • :65 (mfe honest_caveats.token_estimate) — TRÍCH đoạn mang bệnh: …real-N when it matters = harness Read-truncation notice per hub 'do token that' method, draft 2026-07-15, adopt-on-broadcast… → mang CẢ 2 bệnh: anchor NO-GO + đánh-đồng notice = "real-N".
  • :90 (harness_floor _owner_override_note) — TRÍCH đoạn mang bệnh: …when a real figure is needed, MEASURE FRESH via harness Read-truncation notice N (hub 'do token that khong can API key' method, draft 2026-07-15, adopt-on-broadcast), do NOT store-and-trust… → anchor NO-GO + "MEASURE FRESH via notice" ngầm coi notice = phép đo.
  • Note "tương-tự Hub": dòng THẬT = :121 (_owner_ratified trong h24_cadence) — hub nói :121 ĐÚNG, thư SE ghi :123 lệch 2 dòng. TRÍCH: "_owner_ratified": "owner-decisions-15-07-2026 Q2 -- anh chot 6/15/3, 'tuong tu Hub'. HONEST-CAVEAT…hub explicitly said 'your numbers = your config…'. SE picked the same 6/15/3 as a DELIBERATE STARTING POINT…Re-tune after cycle-2…".

(iii) Sweep ngữ-nghĩa quanh đó (grep real|measured|token 2 file + liên quan)

Chỗ đánh-đồng số-cắt-ngắn = real-N/đã-đo: CHỈ 2 site sống = budget :65 + :90 (như trên). Các site khác sạch: ps1 :25/:117/:227 honest-RANGE; mfe-eval.ps1 honest-RANGE không-nhãn (S128 đã sweep); các file mang cụm còn lại = lịch-sử/thư đóng băng (runs/2026-07-16-S127-…/owner-gated-proposals:44 · broadcasts/outbox/…disposition…:17 · inbox reply chính nó) — KHÔNG sửa history; riêng docs/governance/adap-reports/2026-07-16-…-san-su-that-nhan-da-do.md:19 ghi "ask do-token giữ MỞ" = trạng-thái NAY ĐÃ LẬT → cần append 1 dòng đính-chính (additive, không rewrite).

(iv) Dòng thay ĐỀ XUẤT (theo reply, để hmw áp)

  • :65 thay đoạn bệnh → …khi cần số thật: dùng notice cắt-ngắn của Read làm CẬN-TRÊN bảo-toàn (heuristic ký-tự/2, đếm-thừa ~1.4-2x KHÔNG cố-định — KHÔNG phải real-N/đã-đo) → báo DẢI [sàn bytes/4 — trần tín-hiệu-cắt-ngắn], token thật nằm trong dải; per bản published 2026-07-15-Governance-phuong-phap-dem-token-tien-de-vong4 (content_sha256 e0bb5bbf)… (giữ phần RANGE [bytes/4 .. bytes/3.0] + FIT bytes/3.0 nguyên vẹn — đã đúng).
  • :90 thay MEASURE FRESH via harness Read-truncation notice N (hub…draft 2026-07-15, adopt-on-broadcast)lấy DẢI TƯƠI [sàn char/4 — trần notice-cắt-ngắn (cận-trên ~1.4-2x không cố-định)] per bản published …tien-de-vong4 (e0bb5bbf); CẤM dán nhãn real/đã-đo cho một đầu dải.
  • :121 _owner_ratified thay trọn → giữ 2 chốt-gốc + ratification + sửa cụm "tuong tu Hub": owner-decisions-15-07-2026 Q2 (anh chot 6/15/3 cho SE) + hub H0-LEAD-AUDIT-DECISION-CAPTURE-2026-07-14.md:105 (6/15/3/3, 'doi = anh', 2026-07-14); ratified = anh mark cong reply 2026-07-16-ai_infra-to-se-reply-adap-dot-16-07 (e50a4bd0) ngay 2026-07-17. 6/15/3 = moc khoi-dau CO Y anh chon — KHONG phai muon so song cua hub: hub-counter DA GO per 85bf89ca, khong con moc so song. Re-tune sau chu-ky-2 CUA SE (deep-audit lan 2). (ASCII-safe trong JSON — file này đang toàn ASCII-VN-không-dấu, giữ nhất quán.)

T8 — SESSION-START.MD:206 (F10 re-sync)

  • Vùng :195-215 đã trích ở T1. :206 NGUYÊN VĂN hiện tại = honest-caveat 6/15/3: > 🟡 Honest-caveat mang theo khi báo hub: hub nói rõ "số của các em = config của các em; ĐỪNG chép 3 số này". SE chọn cùng 6/15/3 là điểm khởi-đầu anh CỐ Ý chọn, KHÔNG phải chép vô-thức. Chỉnh lại sau chu-kỳ-2 CỦA SE (deep-audit lần 2, xem .session-counter.json last_audit). Hub đã GỠ counter (bookend 07-15, sha 85bf89ca) → ví-dụ 6/15/3 "ở nguồn" = lịch-sử, KHÔNG còn mốc hub để so; delta hub hứa từ run-2 KHÔNG BAO GIỜ có (hub gỡ trước run-2) — chưa ai được bán câu "đã chứng minh hiệu-quả".
  • Grep toàn file do-token|ratified|owner_ratified|e0bb5bbf|85bf89ca|reply: :206 là chỗ DUY NHẤT nhắc chuyện này (match khác = generic: :76 chờ-anh-chọn, :148 marks, :158/:167 pending-decisions bucket). ⇒ KHÔNG có câu "CHỜ HUB pending" riêng trong session-start.md; trạng-thái treo sống ở HANDOFF carry + adap-report :19 (T7-iii/T13).
  • Re-sync đề xuất (additive 1 vế cuối :206): …— chưa ai được bán câu "đã chứng minh hiệu-quả". ✅ Ratified 2026-07-17: anh mark cổng reply e50a4bd0; canonical = memory-budget.json h24_cadence._owner_ratified (B1 — đọc wording sống ở đó, đừng chép lại đây). — con-trỏ về key canonical, không nhân bản wording.

T9 — NON-JSON-ARGS 3 CHỐT (broadcast 6c2eb2b1)

(i) Parse-guard hiện tại — TRÍCH hmw.js:97-98,101

  • :97 // S4b — args có thể tới OBJECT hoặc JSON-STRING (harness đôi khi stringify object args) → normalize defensive
  • :98 const A = (typeof args === 'string') ? JSON.parse(args) : (args || {})
  • :101 throw msg …(đã thử JSON.parse nếu args bị stringify.)Chốt-3 ĐÃ ĐÚNG VAI sẵn: comment tự khai "harness đôi khi stringify" = lưới-cuối cho ca tầng-máy, khớp nguyên văn B6 mục 4.3. (Vị trí cũ :38 S110 → nay :97, file đã lớn thêm.)

(ii) Args hiện mang gì (tiền lệ S134 đo runs/2026-07-17-S134-pe-luyke-tam-tinh/run.md)

  • Spec bơm qua args.taskList[].prompt (string DÀY nhét trong JSON args) — run.md ## taskList snapshot giữ bản mirror trên đĩa; spec-v2 file cũng nằm sẵn runs/<id>/spec-*.md (lead ghi @H21①3). S134 hmw INV-2 wf_58302bd5 + INV-3 wf_97d6a582 chạy 0-garble 2/2 + 1/1 với prompt-embed ⇒ đường hiện tại CHẠY ĐƯỢC (n=3 lane gần nhất), nhưng args phình theo spec = đúng vector B6 mục 4.2 cảnh báo.
  • hmw.js:14-19 shape args {taskList, run, checkpointApproved…}; memory-pack cũng inject qua args (memory-budget.json:103 "hmw.js:124 args inject").

(iii) Đánh giá 3 chốt

Chốt B6 Hiện trạng SE Verdict
1. args = object-thật Lead practice truyền object (Workflow tool); CHƯA có câu LUẬT tường minh "CẤM tự stringify" trong fable-real.md/hmw.js — chỉ có comment mô tả GAP nhỏ: thêm 1 dòng luật (điểm chèn: hmw.js:97 comment + fable-real.md block args.run)
2. args-MỎNG (dày → FILE) CONFLICT THẬT với H21: fable-real.md:31 nguyên văn: 4. **Worker thực-thi THEO spec** — spec bơm **QUA ARGS/prompt** (worker KHÔNG tự Read file). — trong khi B6 4.2: "nội-dung dày để trong FILE; args chỉ mang đường-dẫn + vài cờ — worker tự Read tệp đó" Use⟂mention: (a) engine-đắt lệnh-A/B = Agent-tool prompt string — KHÔNG đi qua tầng parse JSON-args của Workflow ⇒ B6-class không áp, prompt-embed GIỮ; (b) hmw fan-out = Workflow args JSON ⇒ B6 áp. Reconcile đề xuất: sửa fable-real.md:31 → "spec bơm qua args = CON-TRỎ runs/<id>/spec-*.md (bản lead-đã-verify) + digest ngắn/AC-ids; worker Read ĐÚNG file con-trỏ (được phép per B6 chốt-2); CẤM tự lục file NGOÀI con-trỏ" — giữ nguyên intent gốc (worker không tự đoán nguồn), bỏ đúng phần xung đột. Decision-point anh/lead (đổi luật H21).
3. giữ normalize = lưới-cuối :98 giữ nguyên, đúng vai KHỚP — 0 việc

(iv) Sổ SE — ca chết-non parse

grep -rn "JSON Parse error|Unexpected identifier" docs/gotchas.md docs/changelog/sessions/ .claude/agent-memory/ = RỖNG ⇒ SE CHƯA TỪNG ghi sổ ca chết-non B6-class. Phân loại 3 ca cũ: S65/S73 = args-đến-dạng-STRING từ harness (guard :98 cứu — KHÔNG chết-non) · S108 + #53×20 = return-garble (class KHÁC hẳn — sau khi agent đã chạy). ⇒ 3 chốt = phòng-ngừa forward + 1 luật thiếu + 1 reconcile; KHÔNG có nợ hồi tố.

T10 — VÒNG 4 GIẤC-NGỦ (broadcast 89e4d818)

Khuôn SE hiện tại (.claude/commands/sleep-recovery-memory-l2.md, 125 dòng)

Map 1-1 với khuôn 4-vai hub B5 mục 2:

Vai hub SE (đã có TRƯỚC broadcast) Cite
Máy đề-xuất (propose-only) harvest-curator PROPOSE-ONLY, charter cấm-ghi :63-70 Phase 1
Đầu-tàu chưng-cất lead distill 4-field {VIỆC·KẾT-LUẬN·BÀI-HỌC·BẤT-NGỜ} + GỘP + reflection 3-5 :72-82 Phase 2
Cổng đối-chiếu tất-định coverage-diff DETERMINISTIC 5 token-class {surprise·guard·file:line·root-cause·gotcha#} LUÔN chạy + G-009 byte-scan mojibake :88-91 Phase 3a + :101 Phase 4.3
Cửa-duyệt độc-lập fidelity reviewer gate keep-vs-drop, G-001 lead KHÔNG tự chấm :93-95 Phase 3b
Marker chống-nén-2-lần: distill-gen: N refuse pass-2 (:60 Phase 0.3 + :118) ✓ additive file-MỚI không đè (:116) ✓. ⇒ 3 câu hỏi B5 mục 4 = CÓ/CÓ/CÓ — chi tiết số dưới.

Số đo đĩa 2026-07-17

  • 10/14 role có archive/; 29 verbatim + 13 gist, tổng archive 946,133B (~924KB); L1 tổng 14 role ≈ 203KB. Gist phủ kỳ 2026-05 + 2026-06; 2026-07 verbatim CHƯA nén (còn tươi — đúng nguyên tắc tuổi). investigator-api archive rỗng (133B).
  • distill-gen marker sống trong gist thật (cicd/impl-be/fe-designer/harvest…: gen-1; inv-cb 2026-06 = gen-2 tiền lệ guard).
  • Mốc nén gần nhất: last_sleep_at = "2026-07-10" (memory-budget.json:4) — hôm nay 17-07 = đúng 7 ngày → INFORM-7d đã fire (S132 closeout subject có "sleep-INFORM-7d").
  • (a) Tầng thoát: CÓ, không phình một chiều (curate L1→L2 nhiều đợt S70/S80/S125 + sleep ≥2 đợt). (b) Cổng tất-định: CÓ nhưng mức thủ-tục Grep-do-lead, chưa script-hoá (hub = script grep 58-token + byte-scan). (c) Vai độc-lập chấm: CÓ (reviewer).

GAP so B5 (3 nâng-khuôn + 1 lệch-nguyên-tắc)

  1. Cross-file bleed (bài hub trả giá 1 token thật): SE chưa có luật "khi nén NHIỀU tệp cùng lượt → grep TỪNG token trích-dẫn về ĐÚNG verbatim CỦA TỆP ĐÓ". Chèn Phase 3a.
  2. Tổng-hợp đầu tệp + grep-ngược: SE :77 reflection 3-5 entry nhưng KHÔNG buộc đặt ĐẦU tệp (hub: tổng-hợp = lớp nạp-nóng, viết TRƯỚC chi-tiết — owner-3-chốt) + KHÔNG có bước grep-ngược số/mốc trong tổng-hợp về phụ-lục/nguyên-bản (hub lesson 3: tổng-hợp = lớp trôi nhanh nhất). Chèn Phase 2 + 3a.
  3. (optional) Script-hoá cổng 3a → nâng "cơ-chế" cột-7 checklist A.
  4. Trigger 7-ngày = ngày-lịch — LỆCH khung mới (B1 mục 3.4 cadence ngày-lịch KHÔNG vào chuẩn + row-4 bảng: "NÉN theo ngưỡng tích lũy, KHÔNG theo phiên"). Đề xuất: đổi INFORM-trigger last_sleep_at ≥ 7dngưỡng tích lũy byte verbatim-chưa-gist (đo được: tổng byte <period>.md không có .gist.md tương ứng). Số ngưỡng = owner đặt (KHÔNG bịa); baseline đo hôm nay in kèm để anh chọn. Timing wave: chỉ NÂNG SKILL (sửa command .md + trigger) — KHÔNG chạy nén trong wave (2026-07 còn tươi; chạy khi chạm ngưỡng anh đặt).

T11 — MAPPING 5-VÒNG (bảng A f71c5b65)

Vòng Vai/cơ-chế SE thật Nấc THẬT Tự-verify cột-5
1. tooling+harvest H1 tooling-auditor + H2 harvest-curator: MỞ session-start.md:109-110,:123-124 (diff vs last) · ĐÓNG session-end.md:100 (g) + :57,:59 (d)(f) runtime (nhiều lượt thật; gần nhất DỒN S127→S131 @72f68d1) FAIL hiện hành: git log --since 08:39 -- agent-memory/{tooling-auditor,harvest-curator} = 0 vết ⇒ 2 closeout gần nhất (S133 e53a693 + S134 99fc373) KHÔNG spawn cặp — class E-011 "chạy tắt khi dồn/feature-session" TÁI DIỄN ngay sau vá. (d)-harvest lead tự làm ✓ nhưng (f)(g) monitor-gate skip. ⇒ đúng chỗ force-fire T3 + detector T4 cắn.
2. soi-lead (view+omission) 2 vai H24 + counter + h24_cadence 6/15/3 (memory-budget.json:122-124) — reply B4 câu-2: "thưa-số hợp lệ, chỉ cần vá GAP-1" runtime (first-run S124 owner-triggered, 0-garble; 9+4 flag + 1 escalate) Tính: counter=8, last light@3 → 5/6 chưa OVERDUE; fire @counter 9 (deep 5/15 @18). Sau wire T1 + restart: phiên kế /tiep tick →9 ⇒ light OVERDUE fire NGAY ⇒ đề-xuất-2 S131 (light-run-now) gần-moot.
3. bộ-ba đo→đề-xuất→kiểm trí nhớ Mảnh CÓ: đo = measure-agent-memory.ps1 + bảng-số crystallized-backfill.ps1 @(c) · đề-xuất = memory-archive-gate.ps1 DRY-PLAN + memory-selfimprove-audit.ps1 (eval) · kiểm = mfe-eval.ps1 coverage + reviewer/H2 gate · lead single-writer D9 ✓ PARTIAL — GAP THẬT, không gượng-map: 3 mảnh chạy RỜI trong §L.b(c), KHÔNG có run-record 3-stage tuần-tự (cột-5 "mtime tăng dần" KHÔNG chạy được as-is); vai kiểm độc-lập chỉ có ở sleep (reviewer) — daily flush dựa H2 5-trục vốn đang bị skip (vòng-1) Đề xuất rẻ: gói 3 script thành block "memory-triple đo→đề-xuất→kiểm" 3 dòng ghi session-log mỗi closeout chạy (c) — artifact-hoá tuần-tự, 0 vai mới
4. giấc-ngủ distill T10 — khuôn 4-vai ĐỦ + marker + additive executed-file + runtime (13 gist 2 kỳ; last 2026-07-10) Mốc nén đọc được (budget.json:4) + verbatim nguyên vẹn per-file (additive by-construction; hash-assert per-file = nâng-cấp đề xuất T10)
5. sàn-sự-thật "đã-đo" adap-report …san-su-that-nhan-da-do.md executed (LUẬT + 2 site budget.json + câu cửa-duyệt) verified-pending DUY NHẤT = 4c reviewer.md:46 (:17,:60,:80: cần restart + 1 spawn-test) — ĐO WAVE NÀY: điều kiện ĐÃ XẢY RA — S129 commit 23:16 → S130+ = app-launch mới (restart implied) + reviewer spawned ≥2 lần S133/S134 (fable-real reviewer + precommit wf_8bb5abee PASS) ⇒ persona nạp lại chắc chắn. Caveat trung thực: câu :46 được NẠP, việc nó được EXERCISE trong verdict chưa chứng riêng; nấc verified vẫn của AI_INFRA /adap-audit. Wave: append note flip vào adap-report.

T12 — COMPLETENESS-GATE C

  • 5 vòng mức chức-năng: 4 CÓ + 1 PARTIAL (vòng-3; vòng-1 CÓ-chức-năng nhưng kỷ-luật đứt khi dồn — tự-verify FAIL). Phép sàn 1-4: 2/4 PASS (phép 3 union ✓, phép 4 ✓; phép 1 FAIL sống; phép 2 chưa-wire).
  • Kết luận: CHƯA ĐẠT hiện tại — "đạt-sau-wave" dự kiến 5/5 vòng + 4/4 phép sàn, trong đó: phép 2 PASS ngay khi probe wire; phép 1 PASS-able sau restart + 1 chu-kỳ dừngnối đo thật (KHÔNG khai trước khi đo); vòng-3 lên CÓ khi block memory-triple artifact-hoá; vòng-1 tự-verify về PASS nhờ force-fire T3 + detector T4 (cơ-chế thay trí-nhớ). n/a hợp lệ: KHÔNG có — SE đã adopt cadence + soi-lead nên gate ÁP ĐỦ (B2 §C).

T13 — CARRIES ĐÓNG ĐƯỢC + VIỆC ĐÃ HẸN

(i) Carry đóng nhờ 2 reply (HANDOFF nay 332 dòng — mega-line ĐÃ TÁCH @S130 cdb6279, cảnh báo đề-bài stale; grep thẳng được):

Carry (HANDOFF:7/:11/:15/:19) Mục reply đóng
"CHỜ HUB reply-batch (i) _owner_ratified" B3 mục 3 (2 chốt-gốc + wording + ratification tại cổng) → wave áp :121+:206 xong là ĐÓNG
"do-token errata/ask" B3 mục 2a: method published e0bb5bbfadap NGAY + đóng ask (giữ pending = chờ nhầm bản); residual :65/:90 vá wave
"(iii) seal-verify" B3 mục 1 cặp-hai: tự-khớp (defer theo hub) — ĐÓNG, 0 việc mới
"phản-hồi closure-cadence/3-gap" B4 trọn thư: CONFIRM 3 gap + khung SE vào chuẩn — ĐÓNG (việc còn lại = thực-thi wave)
"chữ-ký bản owner-sign 07-14" B3 mục 4: git-anchor e597497, KHÔNG re-stamp — ĐÓNG
"carry-age — bằng-chứng S130 đủ đóng?" KHÔNG thuộc 2 reply — để anh chốt riêng (ngoài wave)

(ii) 4 việc SE hẹn hub — NGUYÊN VĂN broadcasts/outbox/ai_infra/2026-07-17-se-to-ai_infra-h24-h22-van-hanh-3-gap.md:40-42: 1. Wire tick vào /tiep (+ cân nhắc tick-at-close idempotent) — vá trong repo SE, sẽ báo kết quả đo sau. · 2. Spawn dồn H1+H2 re-report phủ S127→S131 + harvest hồi tố diary 2 vai H24 từ run S124 (VERIFY→APPEND) + ghi error-ledger cho 3 closeout chạy tắt. · 3. H24 light-run owner-triggered ngay thay vì chờ counter 9. (B4:24 đọc gộp thành 4 việc — tách harvest khỏi 2.)

  • Việc 1 → VÀO SPEC wave (T1). Việc 2 → ĐÃ XONG @S131-S132 72f68d1 (dồn H1/H2 GAPS→CLOSED + seed 2 diary 3332B/3691B + E-011/AS-15) — wave chỉ còn BÁO-LẠI hub kèm số. Việc 3 → riêng, chờ anh (phân tích moot ở T11 vòng-2).

(iii) 2 đề-xuất S131 "CHỜ GẬT" — đã đủ tính là gật chưa? HANDOFF:15 ghi CHỜ GẬT của ANH (không phải hub; outbox:38 "đã trình owner, chờ gật từng mục"). Phân tích để anh/lead chốt: đề-xuất-1 (wire tick) nay = khoản floor 3.1 của bản CHUẨN hub + anh gõ /adap-apply wave này ⇒ gật-implied qua lệnh áp chuẩn (defensible); đề-xuất-2 (light-run NGAY) = one-shot action KHÔNG nằm trong broadcast nào ⇒ /adap-apply KHÔNG tự cover — cần anh gật riêng HOẶC để OVERDUE @counter-9 tự kích phiên kế (gần-moot sau wire). Không tự quyết — flag 2 dòng này trong spec cho anh.


SPEC PROPOSE 3-MỤC (để lead verify + ghi spec-*.md, fable-real reviewer soi, hmw Opus 4.8 MAX implement)

① Đề-bài gộp wave

Áp khung owner-chốt "đo rải · làm dồn · nợ hiển thị" (3daf5ee4 4-khoản floor + 2 detector) + checklist 5-vòng/8-phép (f71c5b65) + đóng residual do-token & _owner_ratified (e50a4bd0) + 3 chốt non-JSON-args (6c2eb2b1) + nâng khuôn giấc-ngủ (89e4d818) — mục tiêu đo được: SE qua completeness-gate C (hiện 2/4 phép sàn + 1 vòng PARTIAL → 4/4 + 5/5 sau wave, phép 1/7 đo sau restart).

② Cách làm per-item (file đích + thay đổi cụ thể)

  1. Tick đa-điểm-vào — (a) .claude/governance/.session-counter.json _contract.tick (:6): thêm OR-guard if head==last_ticked_head OR session==last_ticked_session -> NO-OP; (b) tiep.md chèn bước mới cuối §2 "TICK counter (contract §2.1.8 session-start — con-trỏ, không chép logic)"; (c) pause.md bước 3.5 (TRƯỚC commit bước 4 để tick nằm trong wal: pause); (d) session-end.md (j) thêm "(v) tick-at-close"; (e) session-start.md §2.1.8 thêm 1 dòng đơn-vị: "counter đếm nhãn-phiên S (phiên thường — SE chưa adopt session-logic 9234a7aa; nếu adopt, đọc lại = phiên-LOGIC)". DP-1 (anh): OR-guard session-label (khuyên — 4 điểm tick, phép 7 vẫn +1) vs tick-chỉ-tiep+close (không đổi contract). DP-2: candidate-fix dangling-head (counter history :30/:35) gom wave này? (fire mỗi phiên-đầu-sau-squash).
  2. Dòng-nợ — script MỚI scripts/nhip-no-probe.ps1 (PS5.1 ASCII #30, NO-API, 0-mutation, exit-0-LUÔN): đọc counter+cadence → light a/e deep b/f OVERDUE?; scan agent-memory/*/MEMORY.md vs cap 25600 → x over-cap; port orphan DUAL-ACCEPT (2 dạng, port đúng tiep.md:40-53) → y run-chua-gom; in ĐÚNG 1 dòng; exception → probe-loi (khong chan). Gọi tại 4 điểm: /pause bước 5 (+ý 5) · /tiep cuối §2 · session-start §2.1.8(e) · session-end (j)(i) — nâng dòng H24 hiện có thành dòng-nợ 3-vế.
  3. Force-fire bùsession-end.md (j) "(vi)": P=git log --format=%s <closeout-trước>..HEAD | grep -c '^wal: pause' (LUÔN so-sánh SỐ, né bẫy exit-code :175); P>=1 HOẶC label S<a>-S<b> → coi như OVERDUE(light): in dòng-nợ + INFORM-bắt-buộc + đề-xuất spawn cặp H24 ngay closeout. DP-3 (anh): consent-gate (khớp luật :94 + hẹn "owner-triggered", khai carve-out với hub) vs auto-run đúng chữ khung.
  4. Detector H25-closeout-ritual — append scripts/governance-detectors.ps1: commit gần nhất match ^\[CLAUDE\] Docs: S\d+.*(closeout|session-end) → cửa-sổ (closeout-liền-trước..commit]union git log --name-only → thiếu 1 trong {docs/STATUS.md, docs/HANDOFF.md, docs/changelog/sessions/* mới, .claude/agent-memory/**} → FLAG MED kể tên sổ. Fault-inject 3 ca (T4c): giả-closeout-1-file → FLAG · shape-99fc373 → PASS · tail-thiếu-HANDOFF-nhưng-union-có → KHÔNG FLAG.
  5. Detector H25-role-notebook — cùng file: roster từ .claude/agents/*.md (trừ README); evidence-đã-chạy = runs/*/sub-<role>-*.md (prefix-map, UNMAPPED → in danh-sách không FLAG) OR diary đã tồn tại; vai đã-chạy thiếu agent-memory/<role>/MEMORY.md (byte>0) → FLAG MED. Fault-inject: cây tạm xoá 1 diary → FLAG; 14/14 → PASS.
  6. Residual do-token + ratified — dòng thay GHI SẴN tại T7(iv)/T8: memory-budget.json:65 + :90 (re-anchor e0bb5bbf + ngữ-nghĩa DẢI cận-trên ~1.42×) + :121 _owner_ratified bản mới (2 chốt-gốc + ratified cổng reply + bỏ "tuong tu Hub") + session-start.md:206 vế additive trỏ key canonical. crystallized-backfill.ps1 = NO-CHANGE (T7i: chưa từng chứa cụm — errata-note blameless cho hub). docs/governance/adap-reports/2026-07-16-…-san-su-that…md — 2 append additive: đóng-ask do-token (per e0bb5bbf published) + flip-note 4c (restart+spawn-test đã xảy S133/S134, nấc verified vẫn của hub).
  7. Non-JSON-argshmw.js:97 comment + fable-real.md (block args.run): thêm câu LUẬT "args LUÔN object-thật — normalize :98 = lưới-cuối, KHÔNG phải giấy phép stringify (per 6c2eb2b1)". DP-4 (anh): fable-real.md:31 reconcile → "spec bơm qua args = CON-TRỎ runs/<id>/spec-*.md + digest/AC-ids; worker Read ĐÚNG file con-trỏ; CẤM lục ngoài con-trỏ" (B6 chốt-2) — hay GIỮ prompt-embed (S134 tiền lệ 3/3 lane 0-garble, chưa từng chết-non — T9iv)?
  8. Sleep khuôn nâng (SKILL-only, KHÔNG chạy nén)sleep-recovery-memory-l2.md: Phase 3a + "cross-file bleed check: nén nhiều tệp cùng lượt → grep TỪNG token trích-dẫn về ĐÚNG verbatim CỦA TỆP ĐÓ"; Phase 2 + "TỔNG-HỢP 3-5 ý đặt ĐẦU tệp, viết TRƯỚC chi-tiết + grep-ngược mọi số/mốc trong tổng-hợp về phụ-lục/nguyên-bản"; DP-5 (anh đặt số): trigger INFORM 7-ngày (:52 — ngày-lịch, LỆCH khung 3.4) → ngưỡng tích-lũy byte verbatim-chưa-gist (match theo PREFIX kỳ, không exact-filename); baseline đo 17-07: kỳ 2026-07 chưa nén ≈ 183KB/5 file (tooling 46.1K · harvest 42.9K · reviewer 39.8K · inv-cb 31.0K · cicd 23.4K), raw un-gisted toàn kho ~374KB (caveat naming q-file).
  9. Báo-lại hub — adap-report wave mới + email: nấc từng khoản + baseline T6 + errata mis-site crystallized-backfill + việc-2 done @S131-S132 + carve-out DP-3 nếu chọn consent.

③ Checklist phân-rã hmw (worker Opus 4.8 MAX — anh chỉ định) + acceptance ĐO ĐƯỢC

Vai: governance .md/.ps1/.json KHÔNG khớp boundary implementer-backend (.NET-only)/implementer-frontend (FE-only) ⇒ 3 lane role-less model:'opus' (tiền-lệ feedback_workflow_fanout_reliability; hmw tier: hmw-only). ≥3 task ⇒ args.run BẮT BUỘC (Sàn-1).

  • LANE-A commands (items 1+2-wire+3): đổi 5 file command + contract JSON. AC-A: grep -c "tick" tiep.md pause.md session-end.md ≥1 mỗi file (baseline 0/0/0-tick) · contract chứa OR-guard session · 4 điểm gọi nhip-no-probe · KHÔNG chép logic tick (chỉ con-trỏ §2.1.8, fault-check B1).
  • LANE-B scripts (items 2-script+4+5): AC-B: nhip-no-probe.ps1 chạy 2 lần output byte-y-hệt (phép 5) + -RepoRoot sai → in probe-loi (khong chan) exit-0 (phép 6) + baseline in light 5/6 deep 5/15 | 0 over-cap | 1 run-chua-gom (khớp số T6/T2 hôm nay) · 2 detector: inject-matrix 5 ca PASS/FLAG đúng chiều (ghi output vào sub-file lane) + happy-path repo thật 0 FLAG-mới ngoài expected + exit 0 + 0 self-match.
  • LANE-C residual+doc+sleep (items 6+7+8): AC-C: grep -rn "draft 2026-07-15" ngoài {runs/, broadcasts/, adap-reports history} = 0 (baseline 2 site sống) · grep -c "e0bb5bbf" memory-budget.json = 2 + :121 chứa "e50a4bd0" · :206 có vế Ratified-con-trỏ · adap-report 2 append · hmw.js+fable-real câu luật · sleep 2 chốt mới + trigger theo DP-5.
  • Sau merge (lead, KHÔNG lane): RESTART Claude Code (pause.md:9 no-hot-reload) → phiên kế đo phép 7 (1 pausetiep → counter 9, +1 đúng) + phép 1 re-đếm cửa-sổ mới + light-OVERDUE fire @9 (T11 vòng-2) → báo số cho hub (việc-1 đã hẹn "báo kết quả đo sau"). Mốc so baseline (T6, đo 17-07): counter=8/S133-uncommitted · tick +3/9-nhãn/7-pause cửa-sổ (e9124fc..a6cd0a2] · orphan=1 (self-open S135) · sổ-vai 14/14 · closeout-union 3/3 · H1/H2 last-vết 72f68d1 · un-gisted-2026-07 ≈183KB.

CAVEAT chung: KHÔNG chép số hub (n=2, ví-dụ 6-mã→4-tick); mọi số trên = SE tự đo, đơn-vị + cửa-sổ khai tại chỗ. "Đắt/rẻ" tương đối. 6 decision-point (DP-1..DP-5 + T13iii gật-implied) = anh/lead chốt, spec không tự quyết.

STATUS: COMPLETE