Files
solution-erp/.claude/auto-memory/feedback_h18_ghostwire_stamp_integrity.md
pqhuy1987 24483935cb [CLAUDE] Docs: S148 — session-model port form hub + /check-email 4 cửa + Sàn-3 dual-accept
Session-model (owner chốt "đối ứng đúng chính xác như hub"):
- Form hub: _context-s-<N>.md (STOCK-map + FLOW append-only + STOCK-touched)
  + _pause-<i>/_tiep-<i> marker 5-trường + _snapshot-<i> + _end (thay closed.md)
- Port /snapshot + scripts/session_scaffold.py (near-verbatim)
  + scripts/session_ctx.py TRIMMED CÓ KHAI (chỉ machine-block + secrets-sweep;
    KHÔNG port jsonl/overhead/cap-getter vì chưa có caller = ghost-wire)
- session-2 migrate sang form hub; session-1 giữ legacy (FROZEN)

Sàn-3 ORPHAN-L:
- DUAL-ACCEPT hub + legacy; glob pause-* KHÔNG khớp _pause-1.md nên không đếm đôi
- VÁ bug có sẵn từ S146: chốt-kết ĐÓNG TRỌN thư-mục (bản cũ c=1 chỉ tha 1 pause,
  lệch chính câu session-end §6.3-bis vẫn nói "mọi pause")
- Fault-inject 10/10 hai chiều + anti-Goodhart

/check-email:
- Wire 4 CỬA phiên (session-start/tiep/session-end/pause), 2 CHẾ-ĐỘ:
  DÒ ~5ms ở cửa dừng-nối (ràng buộc BINDING hub goi-chot §3) ⟂ KÉO ở bookend
- DÒ quét 2 kênh + định tuyến: outbox/se -> /check-email · outbox/all -> /adap-apply
- STAGE-2: 10 thư fan-out verify 2 tuyến 10/10 -> inbox/ai_infra/; backlog root = 0

HANDOFF re-stamp: #1 ĐÓNG (trio đã chạy S144) · #2 đổi trục · #3 anh chốt (a)
+ 4 mục mới (13)-(16); carry #15/#17 đóng, #16 đóng nửa (khai rõ vế còn hở)

H24 tick S147->S148: counter 21->22 CLEAN

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-24 18:03:41 +07:00

4.6 KiB

name, description, metadata
name description metadata
h18-ghostwire-stamp-integrity H18/frontier adopt S100 — verify hash TRƯỚC khi áp broadcast (bắt stamp-then-edit thật) + 2 class ghost-wire (cron-claim, config-key-unread) + không stamp run-id chưa chạy + S125 sibling-test 2-chiều (verifier-suspect-first)
node_type type originSessionId modified
memory feedback c0d6d8d1-8e0e-46bf-ac36-ab0f45d2629f 2026-07-24T10:21:02.939Z

3 bài học integrity từ S100 H18-adopt (2026-07-02):

  1. Hash-verify TRƯỚC khi áp = có răng thật: broadcast frontier-assessment stamped content_sha256 ≠ body (4 biến-thể canonical đều lệch; 2 file cùng đợt MATCH → phép đúng, body lệch stamp = nguồn phát edit-sau-stamp) → HELD-integrity, không codify, đề nghị re-stamp. Cùng đợt: cả 3 broadcast thiếu field reviewer_gate (24 cũ đều có) → gate-evidence in-body thì áp function-over-form NHƯNG phải flag format-regression về nguồn.

  2. Ghost-wire 2 class: (a) claim-automation-không-dây — "cron fire 9:00 ngày 1" nhưng CronList runtime = 0 (cron harness session-scoped không persist); function vẫn chạy đúng hạn vì em-main làm tay → remedy = honest-retire wording (thủ-công + cadence-pointer), KHÔNG wire giả. (b) config-key defined-but-unreadmemory-budget.json mfe.sub_denominator.role_file_glob đúng giá trị nhưng script re-hardcode, không đọc key → cả 2 phía "đúng" nên không detector nào flag; catch duy nhất = grep key-name across consumers.

  3. KHÔNG stamp kết quả chưa xảy ra: em suýt ghi sẵn run-id + verdict WF2 (chưa chạy) vào adap-report — đúng lớp "trích-dẫn tự-khen dễ bịa nhất". Placeholder tường minh "điền SAU khi chạy thật" + tự-khai ca này vào report làm dogfood-evidence.

  4. Sibling-test 2 CHIỀU (S125, 2026-07-16): mismatch hash có nhánh thứ 3 ngoài tamper/EOL — VERIFIER của MÌNH hỏng. Discriminator: chạy verifier trên sibling known-good. Sibling MATCH ⇒ phép đúng, file bệnh (ca S100 frontier-assessment) · sibling CŨNG FAIL ⇒ verifier bệnh (ca S125: PS 5.1 Get-Content -Raw decode UTF-8-no-BOM bằng ANSI → mojibake → false-TAMPER trên broadcast hub SẠCH; đối chứng stamp_verify.py hub → exit-0). Fix gốc: hash CHỈ từ bytes (ReadAllBytes + UTF8 decode PIN) — CẤM Get-Content -Raw cho hash; đã vá check-email.md/send-email.md S125.

  5. 🔴 Ghost-wire class (c) — CLAIM-OF-FIX: doc khai "đã vá" một kẽ CHƯA vá, và kẽ đó KHÔNG TỒN TẠI ở chỗ nó chỉ (S148, 2026-07-24). C14-disposition-per-khoan.md:21 (@S144) khai "Kẽ đã bịt: /check-email bước 2 chỉ đọc outbox/se, không nhắc outbox/all". Lead tin bản tóm-tắt → sửa check-email.md STAGE 1 đọc thêm outbox/all. Cả hai vế đều sai: (i) grep outbox/all check-email.md = 0 hit ⇒ chưa hề bịt, chỉ được TUYÊN BỐ; (ii) outbox/all chưa bao giờ là việc của /check-email — 2 kênh 2 tool 2 sổ (outbox/se/check-email_indexoutbox/all/adap-applyKHÔNG vào _index, khai ở _index.md header dòng 7). Kiểm ngược bằng máy: 22/22 thư outbox/se đều có dòng index ⇒ tool vốn không thủng. ⇒ lead vá một tool không hỏng, theo một lời khai không đo. 🔴 Kẽ THẬT nằm ở NHỊP, không ở TOOL: không cửa phiên nào outbox/all ⇒ 10 broadcast fan-out nằm im 5 ngày. Cùng lượt còn 1 báo-cáo sai cùng gốc: lead khai "_index thiếu 17 dòng" trong khi cả 17 là fan-out ⇒ sổ đang đúng, chỉ là lead áp nhầm luật cho kênh.

Why: stamp-then-edit + fabricated-citation là lỗi im lặng — chỉ lộ khi RE-COMPUTE đối chứng nguồn gốc; một làn chỉ kiểm "tóm-tắt trung-thành bản-thô" sẽ mù khi bản-thô bịa từ đầu.

How to apply: mọi broadcast/email cross-project → re-compute SHA256(body) canonical trước khi áp; mismatch → sibling-test 2-chiều TRƯỚC: sibling-fail ⇒ sửa verifier của MÌNH, sibling-match ⇒ HELD + báo nguồn (không suy diễn "chắc CRLF", cũng không hô tamper khi chưa loại trừ tool). Mọi report → chỉ cite run-id/số ĐÃ tồn tại; chưa chạy = placeholder tường minh. Đổi config-consumer → grep key-name toàn scripts/ xem có ai đọc thật không. Liên quan: faultinjection-proves-teeth, canonical-spec-over-broadcast, agent-return-garble-recover.