Pipeline anh lệnh: /check-email + /adap-apply -> /fable-real invest (spec 9-task/24-checklist) -> hmw Opus-5-MAX 2 đợt + lead-solo T6-T8 -> checklist verify. Thư ① 9c909007 (model-default Opus 5 MAX): TRỌN — filing 2-tuyến + probe-sau-restart 2-nguồn claude-opus-5[1m] + thư hub d432f5eab5cd + caveat (e) đóng. Thư ② 0df10df4 (pause-tiep Ctx soft-memory, sàn 7-khoản): EXECUTED - máy mind-check: scripts/session_ctx.py +542 dòng (7 phép + 2 phụ, 4 mức, draft/closed/--root/--session PIN, exit 0/1/3) - template .claude/templates/session-mind-template.md + wire 4 lệnh (pause C-bis+2bis+§1-carve-out, tiep §2.6+§3-ter, session-start Phase 3.5, session-end §L.b(l)+6.3-bis) - memory-budget: mind_ctx_kb=32 + tiep_reload + ĐÓNG ghost-wire session_ctx_kb (H18 class-2 sống S146->S153) - fault-inject 18/18 + 2 fix hậu-T4 (FI 6/6): GAP-#9 closed-mode E-0-con-trỏ CỜ->TRƯỢT (chặn gradient thưởng xoá-con-trỏ-trung-thực, họ bẫy F-1 của chính thư hub) · secrets-sweep +--root parity - số ĐO THẬT pause +117ms thay ước lệch 2.2-5.4x OWNER 2 quyết trong-phiên: - (38) VETO: 1-vai -> hub-form 3-vai (ctx-curator @pause + carve-out pause §1 · ctx-verifier @tiep · ctx-audit @2-bookend) - RENAME theo chuẩn hub/sisters để audit chéo: ctx-pause-check->ctx-curator, ctx-reload->ctx-verifier (đo đĩa 3 nhà; hub≠sister => SE theo HUB-form, tiền lệ S149). Roster 20->23, VALID_ROLES 23. Gap còn lại: ring5-audit (V5 truth-floor) hub CÓ, SE+VIPIX chưa -> slot (41). Bookend 2 đầu (12 spawn) + trio auto 1 vòng: - @open: H1 7f · H2 4f · H24 5+3 FLAG · ring1 28Đ/4T · ring2 8/8Đ + M-1 MISS thật · trio eval-MIXED-14/refine-3A-7B-4N/audit-25Đ-3T (re-chạy 7 instrument, 24 số byte-exact) - @close: H1 6f · H2 8f (baseline S154 = 16/10, tự sửa bản ~23/11) · H24 4+2 FLAG · ring1 47Đ/5T/1KC/53 · ring2 6/6Đ + 21 phép phụ - lead xử 11 mục: 9 FLAG H24 + 3 RESIDUAL ring2 + F-r2 (plugin 3 hard-site) + M-1 cả 2 persona + M9 14 sổ diary + F-3/F-5/F-6 + nit Sàn-5 + BÁC F-4 (fan-out không vào _index) #53 x14-cận-dưới, 0 mất dữ liệu (WRITE-lane derive-from-body · Agent-resume · SendMessage-resume x6). Datum: trio return-only hết miễn nhiễm (3/3 CLEAN -> 1/3). 4-A suýt xảy ra thật (bản committed của 2 file H24 là bản cắt 24%/48%). completeness-gate: 5 vòng đủ · phép ĐẠT 4 / TRƯỢT 0 / vacuous 0. State: Mig 67 · 89 bảng · 532 test · gotcha 83 · Sub-agents 23 · counter 27 · bundle FROZEN · governance-only 0 prod-code. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
8.8 KiB
sub-implementer-backend-1 — T1 MÁY mind-check (extend scripts/session_ctx.py)
GHI TRONG LÚC LÀM (chống #53). Thứ tự: design → diff-summary → acceptance-runs → END-line. Task: T1 spec
spec-ctx-adopt-26-07-2026.md+sub-fable-invest-S153.mdMục 2 §T1 / Mục 3 / PHẦN B. Vết ủy quyền: OWNER-DELEGATED qua lệnh pipeline 26-07 (KHÔNG ghi "owner chốt" ở bất kỳ file nào).
⚠️ Lệch tên file (khai ngay, không tự ý chọn im lặng)
TASK-block nói ghi sub-implementer-backend-1.md + END-line <!-- END sub-implementer-backend-1 · TOTAL=<n> acceptance -->;
RUN-TRACE boilerplate (đoạn footer chung mọi vai) nói sub-implementer-backend-0.md.
⇒ Theo chỉ-thị task-specific (nêu 2 lần, kèm đúng END-line) ⇒ ghi -1. Em main đọc -1, KHÔNG có -0.
PHẦN 1 — DESIGN (chốt trước khi code)
1.1 Ranh scope
- SỬA ĐÚNG 1 FILE:
scripts/session_ctx.py(ADD-only: 1 hằng module-level + 1 khốimind-check+ 1 parser CLI + 1 nhánh dispatch). - KHÔNG tạo
.ps1(spec T1 chốt: extend python, 1-nguồn_SECRET_RES/_TS_KEY_RE). - KHÔNG đụng
machine_block/secrets_sweep/_SECRET_RES/SECRET_PATTERNS/ helper git — hành vi 2 subcommand cũ BẤT ĐỘNG (proof = insertion-only diff, xem §2). - KHÔNG đụng
memory-budget.json(T7 = lead-solo), KHÔNG đụng template (T2 = lane khác), KHÔNG đụng command .md (T6 = lead).
1.2 Quyết định thiết-kế + lý-do đo được
| # | Quyết định | Vì sao (chứng) |
|---|---|---|
| D1 | Config đọc LAZY — chỉ đọc memory-budget.json khi CÓ tệp để đo |
2 dòng acceptance Mục 3 chỉ đồng-thời đúng khi đúng thứ tự này: repo thật --session 6 (chưa có _mind, chưa có khoá mind_ctx_kb vì T7 land SAU) ⇒ bỏ-qua-có-khai exit 0; cây tạm CÓ _mind mà THIẾU khoá ⇒ exit 3. Nguyên tắc phát biểu tường minh trong code: "không có gì để đo thì không đọc trần; có thứ để đo thì TỪ CHỐI đoán trần" (khuôn H24-2 cấm default) |
| D2 | Full-mode đòi {mind_ctx_kb, session_ctx_kb}; draft-mode chỉ đòi {session_ctx_kb} |
draft-mode bỏ phép 6/7 (spec) ⇒ không tiêu thụ mind_ctx_kb ⇒ đòi nó = fail-loud oan; và cho /pause draft-gate (T6a) DÙNG ĐƯỢC NGAY trước khi T7 land. Thiếu khoá ⇒ in TÊN KHOÁ thiếu (tên-sai-phải-nêu-tên) |
| D3 | Vùng nội-dung = slice DƯỚI <!-- MIND-RULES-END -->; marker VẮNG ⇒ quét TRỌN tệp + CỜ |
enclosure use⟂mention (feedback_citation_trap_selfreference): khối luật CHỨA chuỗi cấm để giải thích. Hướng hỏng chọn NGHIÊM (quét trọn + cờ) vì tệp thiếu marker = tệp sai khuôn, phải lộ chứ không được im |
| D4 | Rào-3 in pattern-name + file:line, KHÔNG in snippet | mind-check là gate chống rò; in snippet = tự tay rò ra log/transcript. (Khác secrets-sweep cũ có in snippet — KHÔNG sửa hành vi cũ, chỉ không lặp ở phép mới) |
| D5 | Nhãn che nhận DUY NHẤT dạng có dấu [đã che <8-hex>] (escape đã) |
spec literal. CỐ Ý không nhận biến-thể ASCII "da che": gate bảo-mật thì lệch về phía QUÁ NGHIÊM (fail-safe), không nới bằng suy diễn |
| D6 | Mọi đoạn trích in ra đi qua _ascii_safe() (backslashreplace) |
giữ ASCII-source ⟂ ASCII-output: console cp1252 gặp diacritic sẽ UnicodeEncodeError = máy chết giữa gate. Đây là bẫy THẬT trên Windows PS 5.1 (họ gotcha #30/#37) |
| D7 | Phép-9 nhận họ hình-dạng heading A-E (### A — · **A.** · - **A** — · A) · #### A:) |
T2 (template) do lane KHÁC viết SONG SONG ⇒ code khớp marker theo SPEC (MIND-RULES-*/MIND-TOP/^## MIND-<k>), còn hình-dạng A-E spec KHÔNG chốt ⇒ nhận rộng + in ra đúng "họ dạng đã nhận" khi trượt để chẩn 1 nhát. Khai coupling: nếu T2 chọn dạng ngoài họ này ⇒ phép-9 trượt oan ⇒ T4/lead phải chạy lại trên template THẬT |
| D8 | p (phép-6) = ĐẾM ĐĨA _pause-*.md + pause-*.md (dual-accept); markers:/mind-blocks: trong _end CHỈ cross-check ⇒ cờ-INFO |
spec + tiep.md:102 (glob pause-* KHÔNG khớp _pause-1.md ⇒ cộng thẳng an-toàn, 0 đếm đôi). Tự-khai KHÔNG BAO GIỜ là nguồn đếm |
| D9 | exit {0 = 0 trượt · 1 = ≥1 trượt · 3 = config/state} ; argparse giữ 2 = usage | spec T1 + khuôn session-scaffold.ps1 (exit 2 usage / 3 config) |
1.3 Bảng phép (7 chuẩn + 2 phụ) — nguồn dữ liệu + 4 mức
| Phép | Đo gì | đạt | trượt | cờ | bỏ-qua-có-khai |
|---|---|---|---|---|---|
| (1) rào-1 lời-anh | ^[ \t]*>[ \t]*anh[ \t]*: trong vùng nội-dung |
0 hit | ≥1 hit + file:line | — | draft: vẫn chạy |
| (2) rào-2 ts-key | _TS_KEY_RE (module-level, canonical) |
0 hit | ≥1 hit + file:line | — | — |
| (3) rào-3 secret | _SECRET_RES per-line, trừ dòng có nhãn che |
0 hit | ≥1 hit (pattern+line, 0 snippet) | — | — |
| (4) con-trỏ E top | path trong backtick ở mục E block TRÊN CÙNG | mọi path tồn tại | broken (cha KHÔNG có) — mọi mode · pending khi closed | pending khi open · E có nội dung mà 0 con-trỏ | E = (trống — khai) · token placeholder <>/* |
| (5) số-hiệu | ^## MIND-(\d+) |
duy nhất ∧ top ≥ mọi số dưới | trùng số / top < số dưới | — | 0 block |
| (6) bất-biến | ` | block | ∈ {p, p+1}` | trong tập | ngoài tập |
| (7) trần | size(_mind) vs mind_ctx_kb×1024 (LIVE) |
≤ trần | — (nợ hiển thị, KHÔNG trượt) | vượt trần (+hướng nén / "TỪ-CHỐI nén" khi <3 block) | draft-mode |
[phụ-8] _context |
size(_context-s-N.md) vs session_ctx_kb×1024 |
≤ trần | — | vượt | tệp vắng |
| [phụ-9] cấu-trúc | 5 mục A-E mọi block + nhãn D | đủ | thiếu mục / bullet-D thiếu nhãn | — | — |
- Nhãn D nhận:
mới-nêu·đang-cãi·gần-chốt·treo-chờ-anh(escapeớ ê đ ã ầ ố ờ). - Mục trống:
(trống …→\(\s*trống.
1.4 Chế-độ + thứ tự thi hành (fail-order)
--session N (BẮT BUỘC, không default-latest) --root PATH (seam fault-inject) [--draft F] [--closed]
1. resolve root/sessions/session-N ; closed = --closed OR exists(_end)
2. DRAFT? -> đọc file nháp; đếm block trên đĩa (canonical, 0 nếu vắng); phép 1,2,3 + 5-draft(số==count) + 4 + phụ-8 + phụ-9 ; phép 6,7 = bỏ-qua-có-khai
3. FULL: canonical vắng -> glob '*mind*' NÊU ĐÚNG TÊN ứng viên
open -> bỏ-qua-có-khai, exit 0 (CHƯA đọc config = D1)
closed -> TRƯỢT, exit 1
4. FULL có tệp: require keys -> thiếu = exit 3 (nêu tên khoá) ; rồi 7 phép + 2 phụ
1.5 Câu hỏi đã cân + BÁC
- Có nên
--sessiondefault "mới nhất"? BÁC — spec §3 "input chỉ đích danh — 2 cửa sổ song song sẽ đua" (kẽ 2-cửa-sổ nêu ở PHẦN B #24(ii)). - Có nên máy tự canh bất-biến block cũ (immutability)? BÁC — cần git-history diff, ngoài tầm $0; PHẦN B #17 đã khai lưới = luật + git + ctx-audit.
- Có nên gộp
secrets-sweepvào mind-check? BÁC — 2 lưới ĐỘC LẬP (PHẦN B #7 đo đúng tính chất đó: sweep rglob vốn phủ_mind).
PHẦN 2+3 — ACCEPTANCE-RUNS (lead on-behalf @S153 — lane mất return [schema-fail #53-biến-thể], code ĐÃ LAND; lead chạy 4 acceptance độc lập, dán số thật)
| # | Lệnh | Kỳ vọng | Đo được | Verdict |
|---|---|---|---|---|
| a | python scripts/session_ctx.py mind-check --session 6 (repo thật) |
bỏ-qua-có-khai + exit 0 + glob nêu ứng viên | (0) ... bo-qua-co-khai · glob *mind* (0 ung vien) · chua doc memory-budget.json · exit 0 |
ĐẠT |
| b | --root <cây thiếu mind_ctx_kb> (có _mind) |
exit 3 + nêu TÊN khoá | CONFIG/STATE ERROR: missing key(s) mind_ctx_kb ... CAM default (khuon H24-2 fail-loud) · exit 3 |
ĐẠT |
| c | python -c "...decode('ascii')" |
pass | ascii OK · exit 0 |
ĐẠT |
| d | --root <cây đủ khoá + fixture render từ template THẬT 8845B> |
exit 0 | 8 đạt / 0 TRƯỢT / 0 cờ / 2 bỏ-qua-có-khai (E (trống) khai · _context vắng khai) · phép-7 đọc LIVE 32×1024 · phép-6 đếm-ĐĨA p=0 dual-accept · exit 0 |
ĐẠT |
Chứng code trên đĩa: _TS_KEY_RE :59 (canonical, comment single-truth) · vùng mind-check :196+ · mind_check() :535 · CLI parser :698 + dispatch :729 · 55 hit mind. Diff = ADD-only (2 subcommand cũ bất động — machine-block/secrets-sweep giữ nguyên hành vi).