Files
solution-erp/.claude/workflows/runs/2026-07-17-S135-adap-khung-nhip-nam-vong/sub-task-0.md
2026-07-17 17:26:31 +07:00

8.0 KiB

sub-task-0 — LANE-A (commands + contract) — S135 adap khung-nhịp-năm-vòng

Worker: Opus 4.8 MAX. Spec CON-TRỎ: spec-adap-khung-nhip-17-07-2026.md (Read TRƯỚC khi làm — done). Scope 5 file LANE-A: tiep.md · pause.md · session-end.md · session-start.md · .claude/governance/.session-counter.json. Items thực-hiện: 1(a-e) · 2-wire (4 điểm) · 3 (force-fire vi) · 3-bis (memory-triple) · 6-phần-:206 · 8-phần-INFORM-byte (M-10).

VERDICT: DONE — AC-A(1)-(10) 10/10 PASS (tự chạy lệnh thật), JSON valid + ASCII-clean, isolation clean.


Item 1 — Tick đa-điểm-vào (floor B1 §3.1)

1(a) OR-guard contract — .session-counter.json _contract.tick

  • Sửa line 6: if head == last_ticked_head **OR session == last_ticked_session** -> NO-OP; else counter+1 ...
  • Giải bẫy +2/cycle: Stop-hook dời HEAD giữa phiên ⇒ head-guard đơn để tick fire nhiều lần trong 1 phiên; session-clause pin 1 nhãn-phiên = đúng +1. /pause commit dời HEAD nhưng cùng nhãn-phiên vẫn NO-OP.
  • ASCII-clean (dùng --/+2 không em-dash). Evidence: _contract.tick non-ASCII = ASCII-CLEAN; grep -c "session == last_ticked_session" = 1 (KHÔNG dùng chuỗi trần vacuous).

1(b) tiep.md §2.5 TICK (TICK TRƯỚC, dòng-nợ SAU)

  • Chèn ## 2.5 TICK counter + dòng-nợ sau §2, trước §3. Tick theo contract + CON-TRỎ session-start.md §2.1.8, CẤM chép logic (B1). ≤4 dòng. Nhãn /tiep = nhãn-phiên MỚI ⇒ tick fire ngay cửa vào, OVERDUE @9 hiện tại đây.

1(c) pause.md §3.5 TICK + add-list bước 4

  • Chèn ## 3.5 TICK counter TRƯỚC commit bước 4 (tick nằm TRONG wal: pause). CON-TRỎ §2.1.8, CẤM chép logic. ≤4 dòng.
  • Bước 4 add-list mở rộng thêm đích-danh .claude/governance/.session-counter.json + lý-do (file ngoài hook-3-path; thiếu = claim "tick trong wal: pause" SAI) — M-7.

1(d) session-end (j)(v) tick-at-close + §5.1 add counter-file

  • §L.b(j) thêm (v) TICK-at-close idempotent, CON-TRỎ §2.1.8, CẤM chép logic. Idempotent: cùng nhãn-phiên ⇒ NO-OP.
  • §5.1 thêm bullet: add đích-danh .session-counter.json khi tick-at-close tạo delta (bằng-chứng sống: tick S133 uncommitted qua 2 closeout) — M-7.

1(e) session-start §2.1.8 — đơn-vị + label-convention PIN + reconcile :192

  • Pseudo-code (a) cập-nhật OR-guard (HOẶC session == last_ticked_session) — canonical narrative khớp contract counter.json.
  • Rationale đổi "Vì sao OR-guard" giải-thích +2/cycle fix.
  • Label-convention PIN THÀNH LUẬT: mỗi conversation mới = nhãn-phiên S MỚI, kể cả /tiep (tiep.md:130); CẤM reuse nhãn — thiếu thì OR-guard NO-OP nhầm cửa /tiep ⇒ phép-7 +0.
  • Reconcile gốc "đếm phiên-có-làm-HEAD-đổi" với đơn-vị nhãn-phiên (9234a7aa session-logic caveat B1 §7) + ca hiếm giữ khai: nhãn-phiên mới không-commit cùng-HEAD vẫn NO-OP (+0).

Item 2-wire — 4 điểm gọi nhip-no-probe.ps1 (LANE-A wire; script LANE-B tạo)

  • pause.md bước 5 ý-5 (Báo đúng năm ý) · tiep.md §2.5 (SAU tick — n-3) · session-start §2.1.8(e) (nâng dòng H24 → dòng-nợ 3-vế) · session-end (j)(i) (tương-tự).
  • MỌI lời gọi bọc "lỗi → probe-loi (khong chan) → đi tiếp" — probe KHÔNG BAO GIỜ chặn điểm dừng. Command chỉ GỌI script.
  • grep tên script = 4/4 file, mỗi file đúng 1 call.
  • §L.b(j) thêm (vi): đếm P = git log ... | grep -c '^wal: pause', <closeout-liền-trước> = regex closeout DÙNG CHUNG Item 4 ^\[CLAUDE\] Docs: S\d+.*(closeout|session-end).
  • so-sánh SỐ [ "$P" -ge 1 ] (KHÔNG exit-code — §5.0 (a)). P>=1 HOẶC nhãn S<a>-S<b> ⇒ OVERDUE(light) bất-kể counter → in dòng-nợ + INFORM-BẮT-BUỘC + đề-xuất spawn cặp H24.
  • DP-3 consent-gate GIỮ (luật owner-era §L.b(j)(ii) + session-start §2.1.8(e) "KHÔNG auto-run"): force-fire = INFORM-bắt-buộc + đề-xuất mặc-định, anh gật mới chạy. Báo hub SELF-CHECK ô3 = "PASS-với-carve-out (consent)".

Item 3-bis — memory-triple (B2 vòng-3 → CHỨC-NĂNG)

  • §L.b(c) thêm block 3 dòng memory-triple: (đo → đề-xuất → kiểm) ghi vào session-log: measure-agent-memory.ps1memory-archive-gate.ps1 DRYmfe-eval.ps1|reviewer. 0 vai mới, 0 script mới. grep memory-triple: = 3.

Item 6-phần-:206 — append Ratified (LANE-A thực-thi, nội-dung Item 6)

  • session-start honest-caveat block (nay :207): append additive ✅ Ratified 2026-07-17: anh mark cổng reply e50a4bd0; canonical = memory-budget.json → h24_cadence._owner_ratified (B1 — wording sống ở đó, đừng chép). Giữ nguyên caveat "chưa ai được bán 'đã chứng minh hiệu-quả'".

Item 8-phần-INFORM-byte (M-10) — 2 site RUNTIME

  • session-start §2.1.2 sleep-check + session-end §L.b(c) sleep-check: khi INFORM fire → in kèm tổng byte agent-memory/*/archive/<period>.md CHƯA có .gist.md (match PREFIX kỳ; đo TƯƠI (Get-Item).Length — CẤM Get-Content-đếm E-010; baseline 17-07 kỳ 2026-07 ≈183KB/5 file). Anh đặt ngưỡng sau, KHÔNG bịa số. Giữ INFORM 7-ngày (DP-5). Sleep-cmd chỉ đổi mô-tả (tránh ghost-wire H18) — phần đó LANE-C.

AC-A checklist (tự chạy lệnh thật, số đo)

AC Yêu-cầu Kết-quả
(1) grep -c -i tick tiep/pause/session-end ≥1 (baseline 0/0/0) 3 / 4 / 2 PASS
(2) grep -c "session == last_ticked_session" = 1 (KHÔNG bare vacuous) 1 PASS (bare=2 = context only)
(3) 4 điểm gọi nhip-no-probe.ps1 (grep = 4 file) 4/4 file, mỗi file 1 call PASS
(4) KHÔNG chép logic tick — mỗi điểm ≤4 dòng + con-trỏ §2.1.8 pointer 1/1/3; counter += 1 copy = 0/0/0 (chỉ session-start canonical=1) PASS
(5) session-end (vi) so-sánh SỐ (không exit-code) [ "$P" -ge 1 ] + note §5.0(a) PASS
(6) dòng-nợ KHÔNG chặn: mọi call bọc probe-lỗi-đi-tiếp probe-loi (khong chan) = 4/4 file PASS
(7) :206-vùng có Ratified 2026-07-17 + con-trỏ key canonical present (nay :207) + h24_cadence._owner_ratified=1 PASS
(8) §L.b(c) chứa mẫu 3 dòng memory-triple: 3 PASS
(9) 2 site INFORM có vế byte-chưa-gist Item 8/M-10 + archive/<period>.md + 183KB = 1 mỗi site PASS
(10) pause bước-4 + session-end §5.1 chứa .session-counter.json pause=2 · session-end=3 PASS
extra JSON valid + counter.json ASCII json.loads OK; non-ASCII bytes = 0 PASS

Ghi-chú (transparent disclosure)

  • Em-dash cleanup: counter.json line 20 (last_audit._note) có 2 em-dash U+2014 PRE-EXISTING (committed HEAD từ S124, KHÔNG do tôi thêm). Đã ASCII-hoá - (meaning-preserving) trong CHÍNH file lane tôi để thoả hard-invariant "JSON counter giữ ASCII". Line-6 (Item 1a) tự-nó đã ASCII-clean.
  • Git mechanics: Stop-hook wal-flush auto-commit 4 command-file edit của tôi vào wal: commits (0363495 wal: pause, a7bafd5 wal: flush) — nội-dung ĐÃ ở HEAD (verify: 4/4 file có nhip-no-probe.ps1=1). counter.json ở working-tree ( M, .claude/governance/ ngoài hook-3-path by design). Lead post-merge squash sẽ gộp wal: vào wave-commit. Counter đã live-tick 8→9/S135 (H24 tick ritual phiên này = M-7 delta thật).
  • Isolation: git status dirty NGOÀI lane tôi = fable-real.md + hmw.js (LANE-C) + nhip-no-probe.ps1 ?? (LANE-B) — do lane khác chạy song-song, tôi KHÔNG chạm. 0 MEMORY.md touched (M-2/B6). 0 store_memory/RAG-write.
  • Cross-lane refs (đọc-only, KHÔNG sửa): wire trỏ scripts/nhip-no-probe.ps1 (LANE-B) + Ratified trỏ memory-budget.json (LANE-C) — chỉ CON-TRỎ, không sửa file lane khác.