Some checks failed
Deploy SOLUTION_ERP / build-deploy (push) Has been cancelled
Phien-LOGIC L7 window 5, vao bang /tiep. Governance/adap-only: 0 prod-code, 0 migration, 0 test moi. Test do tuoi 562 PASS (45D+517I). Counter 31->32. VIEC - /tiep recovery tron: San-3 5 tin-hieu MANH deu keu DUNG (corroborate WAL), verify: 5/5 PASS 0 lech, bien-nhan _tiep-4.md (window-ordinal 5). - /check-email AI_INFRA: verify bang NOI DUNG - 22/22 file outbox/se co trong inbox, cmp 0 byte-drift => se=0 that + khong co stamp-then-edit (H18). - /adap-apply day-wake-probe-first qua /fable-real investigator-codebase: nac AGREED (0 file co-che bi sua). Spec 3-muc + adap-report + 4 phan-bien gui nguoc hub + 1 datum dogfood (hub tu khai co 0). Engine BAC 2 tien-de cua lead: mo-coi 0/8 (khong phai "co squash => co mo-coi") va probe PHAI dung phep-2 - chung bang cua S158 noi 2 phep cho verdict NGUOC NHAU. - Ra 6 HIGH lens-wave spec KHKK: 4 phu tron, 2 con ho (H5 W3 N chua pin => N=0 van PASS; H6 §2.4:224 giu co-che IsVisible da bi chinh file do do-dia bac). - Bookend-close 10 spawn / 5 vong. V4 nen-ngu KHONG-NHIP (shard 15/15 => IM). VA TRONG PHIEN - STATUS:459 RAG khai "alive" -> lat DOWN (3 phep do doc-lap: chunk_count=0 cho ca 7 project + shared_global; canonical tu mau thuan voi :473 cach 14 dong, song 5 nhan phien). - STATUS:461 bundle hash prod da chet -> 8-QYcMOg/DptYR4wL (control-am 900/876 B). Hai that: cicd-verify:58 dung chinh o nay lam baseline. - STATUS:6 4->5 cua-so, counter 31->32; M-1 nhet lai nguyen van owner "da xong buoc thu 6 tuc CEO duyet" (ring2: grep = 0/STATUS + 0/HANDOFF). - WAL:5 + WAL:21 tick; HANDOFF segment S155->S158 + slot (42)...(48). - GATE 5-ANCHOR di-tru khoi WAL sang HANDOFF NEXT-em TRUOC khi §6.4 reset xoa no (lead-gap FLAG-4, han chot = cua ke). - ef-core-migration SKILL: va CAU TRUC (frontmatter thoi khai bang la nguon "moi nhat") thay vi them row - ring1: day la lan 3 cung class. - contract-workflow:371 "Contract V2 chua" SAI ~2,3 thang -> dinh chinh (ring1 thach-CLEAN thung H1). - C12: +3 dong run= hoi-to S155/S156/S157. 2 orphan run-folder -> synthesis dang-1. - M9 seed on-behalf 3 diary: ctx-verifier, investigator-codebase, ctx-audit. #53 x8 - DOI-CHUNG NOI-PHIEN SACH DAU TIEN Ep-ghi-dia KHONG giam garble (3/3 vai bi ep van garble) nhung dua thiet-hai ve 0 (2.818/5.354/7.957 B nam san); 4 vai khong ep MAT TRANG phai resume. => chong #53 = thiet-ke ARTIFACT, khong phai PROMPT (xac nhan lan 5). So #53 ghi bu sau 5 nhan phien dung yen: 66 can-duoi qua S158. +2 sub-class moi: skeleton-ruot-rong nac-2 (byte>0 ma ruot rong) va engine-process-exit (0 delta dia). BAY CHAN DUOC Moi-ngam neo bang SO DONG trong file append-o-TREN da nen 3 lan. Dong 99 hom nay la van-de MO THAT (luat nen ho) => spawn ctx-audit ma khong xu = hoac DAT-ao, hoac dan nhan "bay cai san" len dung cau dang trinh owner. Lead khoi phuc tu git, pin bang NOI DUNG. ring2 chung them: neo SAI NGAY TAI COMMIT SINH RA NO (stale-at-birth), khong phai troi-do-nen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
149 lines
11 KiB
Markdown
149 lines
11 KiB
Markdown
# SPEC — Lệnh DẬY-NHẸ probe-first cho SOLUTION_ERP (adap `2026-07-28-Governance-day-wake-probe-first-resume`)
|
||
|
||
> Engine: `/fable-real investigator-codebase` (Fable, single deep-pass, propose-only) — anh GÁN vai @S158.
|
||
> Pipeline H21 ①: engine propose → **lead verify** → **lead ghi (file này)** → worker thực-thi theo spec.
|
||
> Propose đầy đủ: `sub-invest-day-1.md` (25.440 B, cùng run-folder). File này = bản lead ĐÃ VERIFY.
|
||
> 🔴 **CHƯA THI CÔNG.** 3 chỗ chạm canonical cần anh gật — xem §③ cuối.
|
||
|
||
---
|
||
|
||
## ① TÍNH-NĂNG / ĐỀ-BÀI
|
||
|
||
Thêm **một đường dậy RẺ** cho vòng đời tạm-dừng/nối-lại: khi máy **chứng minh được 0-delta** kể từ điểm dừng,
|
||
mở cửa sổ mới **không phải trả giá `/tiep` trọn** (nạp-nền + spawn vai kiểm-lúc-đọc). Mọi trường hợp khác **tự nâng**
|
||
về `/tiep` đầy đủ. Kèm **guard chống-trùng** ở bước-0 của `/pause` + `/tiep`, và **marker dậy đếm-được từ đĩa**.
|
||
|
||
**Vì sao SE cần:** SE fit hạng cao nhất của thư (có ĐỦ nền 17-07 kit phiên-logic + nền 25-07 vòng-canh 3-vai
|
||
+ `tiep_reload`) ⇒ khoản tiết-kiệm lớn nhất của F1 áp dụng trọn.
|
||
|
||
**Giá đo được ở SE (engine đo tươi, đơn-vị BYTE — 🔴 CẤM quy ra token, thư nói rõ token nằm trong dải mở):**
|
||
|
||
| Nguồn `tiep_reload` | Byte |
|
||
|---|---|
|
||
| `docs/STATUS.md` (2 đoạn khoanh) | 3.295 + 56.210 |
|
||
| `docs/HANDOFF.md` (segment mới nhất) | 4.352 |
|
||
| `.claude/WAL.md` | 5.369 |
|
||
| `_mind-s-7.md` | 30.305 |
|
||
| `_context-s-7.md` | 22.584 |
|
||
| **Tổng** | **122.115 B** |
|
||
|
||
Cửa CLEAN sẽ **SKIP 86.441 B (70,8%)** + **1 spawn `ctx-verifier`**.
|
||
🔸 So hub: hub 439.328 B / 8 file — **nền SE nhẹ hơn 3,6×**, nên lợi tuyệt-đối nhỏ hơn hub. Khai thẳng, đừng mượn số hub.
|
||
|
||
**🔴 Datum dogfood SE có mà hub KHÔNG có** (thư tự khai *"dogfood: 0 phiên"*) — đo TRƯỚC khi đọc thư:
|
||
chính cửa `/tiep` @S158 này probe ra **CLEAN** (anchor `6c263dd` = HEAD, cây sạch, 0 sentinel) ⇒ **lẽ ra đi đường dậy-nhẹ**,
|
||
mà lead đã trả giá full. **1 điểm dữ-liệu, KHÔNG phải bộ số.**
|
||
|
||
---
|
||
|
||
## ② CÁCH IMPLEMENT (per-khoản F1-F4, tailor FORM theo SE)
|
||
|
||
### 🔴 Câu khó nhất — đã có phán quyết CÓ BẰNG CHỨNG: **DỰNG PHÉP-2, KHÔNG tái dùng Sàn-3**
|
||
|
||
Lead vào cửa này **nghiêng về tái dùng Sàn-3** (sợ 2-nguồn-sự-thật, B1). **Engine bác, và bác đúng** — bằng chứng
|
||
lấy từ CHÍNH cửa S158 này, nơi hai phép cho **verdict NGƯỢC NHAU**:
|
||
|
||
- **Sàn-3 tín-hiệu ②: HIT** — `origin/main..HEAD` có 2 commit non-`wal:` (`d7eaece` spec · `3b6fabc` dọn nợ sổ). *(lead tự đo @§0, độc lập.)*
|
||
- **anchor-delta: 0 ⇒ CLEAN** — `_pause-4` head-sha `d7eaece` → carrier `6c263dd` = HEAD. *(lead tự đo, độc lập.)*
|
||
|
||
⇒ Hai phép trả lời **hai câu KHÁC NHAU**: Sàn-3 hỏi *"có tồn-tại việc dở không?"* (neo `origin/main`) ⟂ probe hỏi
|
||
*"có gì ĐỔI so với điểm dừng không?"* (neo marker pause). **Khác câu hỏi thì khác nguồn sự-thật là hợp lệ — B1 không cấm.**
|
||
|
||
**4 ràng hygiene BẮT BUỘC kèm theo** (thiếu là thủng):
|
||
1. Sentinel `closing:` **GỌI CHUNG** tín-hiệu ③ của Sàn-3 (con-trỏ, không chép logic).
|
||
2. Mọi verdict DELTA **đổ về `/tiep`** — `/tiep §0` giữ độc quyền là nhà DUY NHẤT phán chữ "sạch".
|
||
3. **CẤM dùng từ-vựng "sạch"** trong `/day` (dùng `CLEAN-delta`) — chống người đọc nhầm thành phán quyết Sàn-3.
|
||
4. `/tiep §0` ⑤(b) ORPHAN-L: **r-set phải cộng `_day-*`** — thiếu thì phiên có `/day` sẽ **kêu oan**; và **RE-RUN fault-inject** block đó.
|
||
|
||
### F1 — probe rẻ, chỉ-đọc
|
||
|
||
- **NEW** `.claude/commands/day.md` — 2 nhánh, bước probe đứng **TRƯỚC**.
|
||
- **EXTEND** `scripts/session_ctx.py` + sub-command `day-probe` (`--json`). Tái dùng `_TS_KEY_RE` sẵn có
|
||
(`:48-55` đã đón trước reader loại này). 🔴 Glob **phải lọc theo TÊN FILE** kẻo ăn nhầm `_mind-s-<N>.md`.
|
||
- Chọn marker cuối bằng **dấu-thời-gian GHI TRONG file**, KHÔNG dùng mtime (Dropbox chạm lại mtime — SE chạy trong Dropbox).
|
||
- **Khoá `day_wake`** trong `memory-budget.json`, có **allowlist dirty**. 🔴 Bắt buộc gồm `.claude/governance/.session-counter.json`
|
||
— nó dirty NGAY lúc probe chạy (tick fire ở cửa vào) ⇒ thiếu allowlist thì F1 **chết nửa số ca**.
|
||
- CLEAN → nạp lõi (WAL + `_mind` mới nhất), **SKIP** nạp-nền + **SKIP** spawn `ctx-verifier`.
|
||
- Nghiêng an-toàn: probe lỗi / nghi ngờ ⇒ coi là **DELTA**.
|
||
|
||
### F2 — guard chống-trùng ở HAI lệnh cũ
|
||
|
||
- `pause.md` **§0**: marker cuối đã là `_pause-*` + probe CLEAN ⇒ **no-op**, 0 marker/0 commit/0 spawn.
|
||
🔴 **Răng thật, không phải lý thuyết:** double-pause hiện đốt **1 spawn `ctx-curator`** (~100K floor theo config).
|
||
- `tiep.md` **§-1**: probe CLEAN ⇒ route sang `/day`.
|
||
- Cửa thoát cưỡng chế `--full` ở cả hai để anh ép chạy trọn.
|
||
|
||
### F3 — anchor: **SE-form MẠNH HƠN hub**
|
||
|
||
- **Bẫy-một XÁC NHẬN 4/4 THẬT ở SE:** mỗi `_pause-i` head-sha → commit kế tiếp **chính là** `wal: pause` của nó
|
||
(`8d4075a` · `976945c` · `73166c5` · `6c263dd`) ⇒ đếm thô từ head-sha ra **DELTA-giả 100%**.
|
||
- **SE-form:** anchor = **carrier-commit** `git log --diff-filter=A -1 -- <marker>` (commit ĐẦU TIÊN thêm chính file marker).
|
||
Đo **8/8 resolve được**; **sống-sau-squash by construction**; và **nuốt luôn bẫy-một** (không cần bước resolve riêng).
|
||
`head-sha` trong marker hạ xuống làm **fallback**, guard đúp.
|
||
- **Bẫy-hai (sha mồ-côi): 0/8 ở SE hôm nay — tiền-đề của lead SAI, đã bác.**
|
||
Squash `session-end` §5.0/§5.2 **chỉ gọt trailing-`wal:` CHƯA push**; 6/8 sha đã push nên bất khả mồ-côi.
|
||
*(lead re-đo độc lập: `cat-file -e` + `is-ancestor` → **sống 8 / mồ-côi 0**.)*
|
||
🔴 **Guard VẪN BẮT BUỘC**, 3 lý do: (i) tiền lệ **S127** `f9fa77d6` dangling có thật — và nó chứng luôn rằng
|
||
`cat-file -e` **một mình THỦNG** (object còn, ancestor mất) ⇒ **phải kèm `is-ancestor`**; (ii) `6c263dd` (đang là
|
||
anchor `_pause-4` **và** `last_ticked_head`) nằm trong vùng fold-able; (iii) 🔴 **chính feature `/day` tự đẻ điều kiện
|
||
orphan** — chuỗi cửa-nhẹ Q&A sản xuất trailing-`wal:` thuần, đúng thứ squash gọt.
|
||
- Mồ-côi ⇒ verdict `anchor-lost` **khai TO** trong report + tự nâng. Hỏng-an-toàn nhưng **phải CÓ TIẾNG**.
|
||
|
||
### F4 — marker dậy đếm-được
|
||
|
||
- `_day-<i>.md` **7 trường**, khuôn `_pause-<i>`/`_tiep-<i>`. **0 commit riêng** — hook `wal-flush.ps1` path ④
|
||
(`.claude/sessions/`) chở miễn phí ⇒ **KHÔNG nới hook** ⇒ **KHÔNG đẻ điểm mù mới** cho Sàn-3.
|
||
- **Falsifier 2 chiều** cho tầng audit: *CLEAN-giả* (marker ghi CLEAN mà có commit thật giữa anchor và ts ⇒ FLAG)
|
||
· *luôn-DELTA* (mỗi lần tự nâng phải khai signals/`anchor-lost` ⇒ chuỗi tự-nâng dài bất thường là soi được).
|
||
- **Drift F4 SE-local đo được (gửi hub — đúng shape s109 hub kể):**
|
||
**`_snapshot` 3/4 vs contract auto-snap `pause.md §2.6(D)`** — PAUSE-4 **thiếu vết snapshot**. *(lead re-đo: snapshot 3, pause 4.)*
|
||
`_context` PAUSE **4/4 khớp**. 🔸 Hai thứ KHÔNG tính là drift: `_tiep` 3-vs-4 (write-order benign) ·
|
||
WAL "window 4" / STATUS "counter 31" (by-design ghi tại pause cửa trước).
|
||
|
||
### Phản-biện / SKIP (engine nêu, lead nhận)
|
||
|
||
1. **Không quy token** — chỉ báo byte. Đây chính là lỗi làm thư hub trượt vòng r1 (dán nhãn "token tự đo" lên proxy ký-tự).
|
||
2. **Không tái dùng Sàn-3** làm probe (đã luận ở trên).
|
||
3. **Không nới hook** để chở `_day-*` — path ④ có sẵn.
|
||
4. Lợi tuyệt-đối SE **nhỏ hơn hub 3,6×** — đừng bán bằng số hub.
|
||
|
||
### 🔎 2 phát hiện NGOÀI đề-bài (engine tự nêu — lead xác nhận cả 2)
|
||
|
||
- 🔴 **`docs/HANDOFF.md` segment mới nhất = S153**, không có segment cho S155-S157 ⇒ **nguồn-2 của `tiep_reload`
|
||
đang nạp brief cũ 3 nhãn phiên**. *(Lead đụng đúng chỗ này ở §2.6 cửa này: đọc HANDOFF thấy "Last updated: 2026-07-26 (S153)".)*
|
||
- `_tiep-1.md` head-sha ghi **7 ký tự** trong khi 7 marker còn lại ghi đủ 40 ⇒ **form drift trong cùng một loại marker**
|
||
(nếu probe so sánh chuỗi thay vì gọi git thì sẽ vấp).
|
||
|
||
---
|
||
|
||
## ③ CHECKLIST — acceptance ĐO ĐƯỢC (A1-A8, mỗi phép CÓ ĐƯỜNG TRƯỢT)
|
||
|
||
> 🔴 Sàn: phép mà **implement sai vẫn PASS** là phép **0-bit**. Thư này bị chính reviewer của hub đánh trượt **2 vòng**
|
||
> vì lỗi loại đó ⇒ mỗi dòng dưới phải nêu rõ **trượt khi nào**.
|
||
|
||
| # | Phép đo | TRƯỢT khi |
|
||
|---|---|---|
|
||
| **A1** | Chu trình `/pause` sạch → `/day` ⇒ CLEAN; `day-probe --json` in **cả `anchor` lẫn `head-sha` field** và chỉ ra chúng KHÁC nhau | Ai đó cài đếm-thô từ `head-sha` ⇒ DELTA-giả ⇒ FAIL |
|
||
| **A2** | Cây tạm: inject marker mang sha **dangling** ⇒ verdict `anchor-lost` + tự nâng | Chỉ dùng `cat-file -e` (không `is-ancestor`) ⇒ lọt ⇒ FAIL — **đúng shape S127** |
|
||
| **A3** | `/pause` sạch rồi gõ `/pause` lần 2 ⇒ **số file marker + `git log -1` bất biến** | Sinh thêm marker / commit / spawn `ctx-curator` ⇒ FAIL |
|
||
| **A4** | `/tiep` trên nền sạch ⇒ report khai **SKIP nạp-nền + SKIP `ctx-verifier`**; đĩa sinh **đúng 1 `_day-*`, 0 `_tiep-*` mới** | Vẫn nạp nền, hoặc sinh `_tiep` ⇒ FAIL |
|
||
| **A5** | Inject (a) dirty 1 byte ngoài allowlist · (b) 1 commit thường ⇒ **DELTA cả 2 chiều** | Một trong hai vẫn CLEAN ⇒ FAIL |
|
||
| **A6** | Đếm `_day-*` = N; **falsifier PHẢI FLAG** ca inject CLEAN-giả (marker CLEAN + có commit thật giữa anchor và ts) | Falsifier im ⇒ FAIL (lớp *vắng-mặt trông giống ổn*) |
|
||
| **A7** | Sau khi có `_day-*` trên đĩa, `/tiep §0` ⑤(b) ORPHAN-L **im đúng**; rồi **RE-RUN fault-inject** block ⑤(b) 2 chiều | Quên cộng `_day-*` vào r-set ⇒ ORPHAN-L **kêu oan** ⇒ FAIL |
|
||
| **A8** | `grep` report `/day`: **0 hit** con số gắn nhãn token | Có số token đơn lẻ ⇒ FAIL (lỗi r1 của hub) |
|
||
|
||
**Vai + deliverable**
|
||
|
||
- **Thi công = lead tự tay** (KHÔNG giao implementer): 3 chỗ chạm **canonical**, sai một chỗ là hỏng nghi-thức đang chạy tốt.
|
||
- **REVIEW = workflow RIÊNG** — Harness-9 mandate (adap = 2 workflow: IMPLEMENT ⟂ REVIEW độc lập) + report hub kèm run-id.
|
||
- **Dogfood 2 cửa** trước khi báo hub — hub tự khai 0 phiên, SE đừng lặp lại lỗi đó.
|
||
|
||
### 🔴 3 chỗ chạm CANONICAL — CHỜ ANH GẬT, lead KHÔNG tự làm
|
||
|
||
1. **`tiep.md §0` ⑤(b)** — sửa r-set ORPHAN-L (đụng **nhà canonical của Sàn-3**).
|
||
2. **`CLAUDE.md`** — câu *"nối lại DUY-NHẤT bằng `/tiep`"* nay có ngoại lệ `/day` ⇒ phải sửa, nếu không là **ghost-wire chiều ngược**
|
||
(chạy thật mà khai chưa — đúng lớp H18 mà `lead-stale-auditor` bắt @S146).
|
||
3. **`check-email.md`** — nhịp "4 CỬA PHIÊN" thành **5 cửa** nếu `/day` cũng dò thư.
|
||
|
||
<!-- END · 4 KHOAN F1-F4 · 8 ACCEPTANCE A1-A8 · 4 PHAN-BIEN · 2 PHAT-HIEN-NGOAI-DE · 3 CHO-ANH-GAT -->
|