Files
solution-erp/docs/governance/session-model-se-draft.md
pqhuy1987 a1e2416f37
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m35s
[CLAUDE] Docs: S143 closeout — §L.a E-012/AS-16 + vá 4 drift H1 + harvest GATE-PASS-5
§L.a RCA:
- E-012 + AS-16 NEW "bằng-chứng-tự-huỷ-sau-squash": outward artifact cite sha
  chưa-push / stamp trước khi git status sạch. Root = tiêu-chí verify chọn theo
  cái MÌNH đo được, không theo cái NGƯỜI NHẬN sẽ đo (cùng lớp E-010).
  Đối chứng: wave trước cite commit đích -> sống hết.

§L.b:
- (c) memory-triple: do exit 0 · de-xuat A7 251/251 · kiem reviewer FAIL 1C/4M/4m/1nit
  · do-record TOTAL 47 + nhip-no 4-vế. sleep-check 4d < 7d -> không INFORM.
- (d)(f) harvest-curator GATE-PASS-5, 5-trục PASS, Fidelity on-behalf PASS STRONG
  0-fabrication, C5 dạng-1 đủ, orphan 0/40, Sàn-5 khớp. Spawn-record 5 sub.
- (g) tooling-auditor DRIFT-FOUND(4) -> vá hết: F-A doc "3-vế" vs script 4-vế
  (7 site prescriptive; giữ 15 file frozen) · F-B ghost-enum HIGH (mở enum 10->11
  mà quên chính vai dùng nó + 2 site số) · F-C lead-model pin chưa ghi sổ
  (thêm dòng Lead row S143; cell canonical để owner quyết) · F-D marketplace.
- (j) H24: class_repeat cập theo 2 vai · last_audit light/deep = 17 · history +S143
  (khai rõ force-fire SỚM 1 nhịp theo lệnh owner, KHÔNG tới-hạn tự-nhiên).
- (k) trio SKIP có vết (cần restart CLI) -> ghi CẢ session-log vì §6.4 reset WAL.

Sửa-một-phía bắt được 4 lần trong phiên (tool-grant · enum · sổ đếm garble · _note
counter) -> bài: đổi một con số thì grep con số đó repo-wide trước khi đóng.

#53: 5/5 sub garble, 0 mất dữ-liệu nhờ ghi-đĩa. Tally ×20 -> ×25, +path-4
lead-on-behalf khi resume không cứu được diary.

Test 528 kế-thừa (0 file src/fe/tests bị đụng, verify bằng diff). Bundle FROZEN.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 14:05:48 +07:00

9.7 KiB
Raw Blame History

Session-model SE — bản nháp thiết kế (DRAFT v0, chưa wire)

Trạng thái: ĐỀ XUẤT — chưa wire bất kỳ cơ chế nào. Sinh @S140 (2026-07-18) theo direction owner: "đóng đủ 5 vòng → chạy theo cách mới session-model mà AI_INFRA đã làm rất tốt → owner tập trung 100% product, làm việc xuyên session". Nguồn khuôn: broadcast 9234a7aa (session-logic tách session vật-lý — SE nấc agreed) + checklist năm vòng f71c5b65. Theo chỉ đạo đồng-bộ cross-project của owner (S139: "mọi project một khuôn, anh + hub cùng audit, hub review trước khi thành chuẩn"), bản này là input cho hub review, không phải chuẩn tự-phong.

1. Đích đến (theo broadcast 9234a7aa §2)

Một phiên-LOGIC = khởi-động nặng MỘT lần (/session-start — read-set ~368K) → làm việc qua N cửa-sổ vật-lý nối bằng điểm dừng chủ-động (/pause → cửa-sổ mới /tiep, nhẹ) → chốt nặng MỘT lần (/session-end). Chi phí cố định (bootstrap + closeout) trả 1 lần thay vì N lần; không còn tổn thất nén-ép do máy cắt.

2. Nền SE đã có (không phải xây từ đầu)

Thành phần session-model Cơ chế SE hiện hành Trạng thái
Điểm dừng chủ-động /pause + .claude/WAL.md (≤40 dòng, ghi-đè) + Stop-hook wal-flush.ps1 persist 3-path VERIFIED-RUNTIME S111, dùng dày từ S133
Nối lại từ đĩa /tiep §0§4 (Sàn-3 + ground-truth-thắng + relaunch-cắt-gọt) chạy thật nhiều lần (S134/S137/S138…)
Đếm nhịp không phụ thuộc cửa-sổ counter content-addressed + OR-guard (head + session-label) phép 7 PASS đo S137
Điều kiện nền 5 vòng completeness-gate ĐẠT @S137 (5/5 vòng + 4/4 phép sàn); các khoản hở đang đóng @S140 xem adap-report f71c5b65

Khoảng cách thật: SE hiện coi mỗi conversation = một phiên ĐẦY ĐỦ/tiep đã nhẹ (không nạp lại full read-set) nhưng nghi thức quản trị (nhãn, tick, kỳ vọng closeout, monitor re-report) vẫn tính theo cửa-sổ, chưa có khái niệm phiên-LOGIC làm đơn vị nhóm.

3. Ba điểm va chạm với luật hiện hành (cần quyết TRƯỚC khi wire)

VC-1 — Label-convention S135 (PIN LUẬT) vs nhãn phiên-logic

Luật hiện hành: "mỗi conversation MỚI = một nhãn-phiên S<nn> MỚI, kể cả khi vào bằng /tiep" — sinh ra để vá OR-guard NO-OP nhầm (phép-7 +0). Nếu đổi thẳng "S = phiên-logic giữ nhãn qua /tiep" thì session-clause của OR-guard khớp nhãn cũ → tick chết → đúng cái bẫy luật này vá. Đề xuất v0 (ít rủi ro nhất): nhãn HAI TẦNG. Giữ nguyên nhãn vật lý S<nn> per-conversation (mọi cơ chế tick/counter/H24/phép-đo GIỮ NGUYÊN đơn vị, zero regression) + thêm trường logic: L<mm> (mở tại /session-start, đóng tại /session-end, sống trong WAL + session-record). Phiên-logic = tập các S giữa hai đầu nặng. Cách đọc "phiên" trong nghi thức = đọc theo L khi nghi thức thuộc nhóm 2-đầu-nặng, theo S khi thuộc nhóm per-cửa.

VC-2 — Nghi thức nào chạy per-CỬA, nghi thức nào per-PHIÊN-LOGIC

Đề xuất phân loại (bảng để anh + hub duyệt từng dòng):

Nghi thức Hiện tại Đề xuất session-model
Phase 1 READ full read-set mỗi /session-start per-L (1 lần đầu phiên-logic)
Monitor re-report H1/H2 đầu phiên (skip được) per-L mở + đóng
H24 tick counter mỗi cửa (mỗi S) GIỮ per-S (content-addressed — đo nhịp thật)
NHIP-NO probe 4-vế 4 điểm lệnh GIỮ per-điểm-dừng (per-S)
Sàn-3 WAL-check mỗi /tiep + /session-start GIỮ per-cửa (an toàn nối mạch)
governance-detectors + H17 + M.B mỗi /session-start (skip light) per-L mở (giữa phiên chỉ khi nghi drift)
Master-checklist 2-tầng 4 cửa (in @mỗi cửa) GIỮ per-cửa (rẻ, chống rơi việc)
session-end đầy đủ (§L.b harvest + memory-triple + squash + push) mỗi lần "đóng" per-L (1 lần cuối phiên-logic)
Force-fire H24 khi closeout gộp ≥2 phiên-dừng @closeout GIỮ — phép 8 checklist đã chuẩn hóa đúng ca này

VC-3 — WAL ghi-đè ≤40 dòng vs "tệp ngữ-cảnh cộng-dồn"

Hub §2 mô tả điểm dừng ghi delta vào "một tệp ngữ-cảnh cộng-dồn của phiên". WAL SE là sổ mạch-sống ghi-đè (giữ nhỏ có chủ đích — detector C5 cap 40 dòng). Hai vai KHÁC nhau, không nên nhập một. Đề xuất v0: GIỮ WAL nguyên vai (mạch-sống hiện tại, ghi-đè) + thêm .claude/logic-sessions/L<mm>.md (tệp cộng-dồn per-phiên-logic, append 1 khối mỗi /pause: quyết-định-đã-chốt trong cửa đó · delta-còn-sống · con-trỏ run/commit). /tiep đọc WAL (mạch) + tệp L (bối cảnh tích lũy) — vẫn KHÔNG nạp lại read-set nặng. /session-end đọc tệp L làm nguồn gom-bài-học rồi đóng nó (frozen).

4. Điều kiện tiên quyết (mapping 5 vòng — vì sao phải đóng trước)

Theo 9234a7aa §4: nối phiên qua nhiều cửa-sổ = tin trạng-thái trên đĩa. Trạng thái đóng vòng của SE @S140: vòng 1/2/3/5 chức-năng CÓ + runtime; vòng 4 lượt nén-sau-nâng đang chạy @S140; vòng-3-có-SUB (bộ ba harness-eval/refine/audit — owner đã quyết CÓ) chờ khuôn hub (email fc2b218d3eed). SE không bật session-model trước khi:

  • (a) hub phát mẫu áp dụng — ĐÃ VỀ (đợt 2026-07-18): 101e69d6 kit + manifest (broadcasts/inbox/2026-07-17-Governance-session-model-phien-logic-manifest.md, thư đề ngày 2026-07-17, pull trong đợt 07-18). ⚠️ Câu 4 (van-ngưỡng "kiểm giữa phiên khi phiên-logic quá dài") CHƯA được trả lời — kit đến mà van thì không; và hub cố-ý KHÔNG mang khoá counter trong manifest (đã soát: 0 hit counter/đếm trong thư). Nên "(a) đã về" ≠ "(a) đã đủ để bật".
  • (b) khuôn bộ-ba SUB — ĐÃ VỀ 2026-07-18: 58e28bae khối B (broadcasts/inbox/2026-07-18-ai_infra-to-se-reply-tong-bo-ba-harness-sub-4-khoan.md) → SE đã adopt trio @S141.
  • (c) anh duyệt bảng VC-1/2/3 — CHỜ ANH. Đây là điều-kiện CUỐI, và giờ là điều-kiện duy nhất còn đứng chắn.

🔴 Ba khoản MỚI lộ ra sau khi (a)(b) về — CHỜ ANH DUYỆT CÙNG BẢNG VC (không tự quyết, không wire):

  1. K4 form-conflict: hub quy-ước thư-mục phiên là .claude/sessions/session-<N>/ (manifest §"một thư mục quy-ước chung"), còn draft này ở VC-3 đề .claude/logic-sessions/L<mm>.md. Hai form khác nhau về cả tên lẫn hình (thư-mục-per-phiên vs một-tệp-per-phiên) — phải chốt một trước khi có bất kỳ đường ghi nào.
  2. session_ctx_kb: manifest ghi session_ctx_kb: 64 (đơn vị KB, đọc code nhân 1024). SE chưa có khoá này, cũng chưa đo xem 64 có hợp không — mượn số của hub mà chưa đo là đúng thứ K6.2 cấm.
  3. meld-forward-gap (hook 3→4 path): hub dựa vào "meld-forward khi gộp sổ" để lịch-sử phiên-logic không rớt lúc squash. Nhưng Stop-hook SE (.claude/hooks/wal-flush.ps1) quét đúng 3 path (.claude/WAL.md, .claude/agent-memory/, .claude/workflows/runs/) — thư-mục phiên sẽ là path thứ 4 và hiện KHÔNG được quét ⇒ nếu bật mà quên nới, dấu-mốc phiên không vào sổ và meld-forward chẳng có gì để nhập-tiến. Đây là khoản sửa-hook, tức chạm cơ-chế → dứt khoát chờ anh.

5. Câu hỏi gửi hub (đánh số — sẽ đi trong email S140)

  1. Hub đã chạy phiên-logic thật (checklist f71c5b65 ghi "một-hai phiên-logic đầu tiên") — xin mẫu áp dụng + bài học (đặc biệt: điểm mù "phiên nối lại có bộ-nhớ nhưng không biết mình có" đã kiểm bằng dùng thật chưa, kết quả?).
  2. Nhãn: hub dùng một tầng (đổi hẳn đơn vị đếm sang phiên-logic) hay hai tầng (vật-lý + logic như đề xuất VC-1)? Nếu một tầng — hub giải bẫy OR-guard/label-reuse thế nào?
  3. Tệp ngữ-cảnh cộng-dồn của hub có cấu trúc chuẩn gì (per-pause block? field bắt buộc? cap kích thước? quan hệ với sổ mạch-sống kiểu WAL)?
  4. Van "kiểm giữa phiên khi phiên-logic quá dài" (ghi-chú trung-thực (ii) của checklist) — hub đã đặt được ngưỡng chưa?

6. Không-biết + rủi ro (khai thật)

  • Con số "rẻ đi ba-bốn lần" là ước lượng CỦA HUB theo cấu trúc chi phí, chưa đo trên SE — SE sẽ đo thật (token bootstrap/closeout per-L trước-sau) khi chạy thử, không mượn số.
  • Nối qua nhiều tài-khoản: nguyên lý OK (trạng thái trên đĩa) nhưng cả fleet chưa chạy thật; SE đã có kinh nghiệm gần (S138 /tiep đổi acc theo tiep.md:130) — vẫn cần lượt đo riêng.
  • Rủi ro chính của nhãn hai tầng: thêm 1 khái niệm = thêm chỗ drift (L không đóng khi phiên-logic chết giữa chừng → cần Sàn-3 mở rộng: tệp L mồ-côi = tín hiệu mạnh thứ 5?). Ghi nhận, chưa giải trong v0.

(DRAFT v0 — em-main single-writer D9. Bước kế: hub reply + anh duyệt bảng VC → wire qua 1 lượt adap có reviewer-gate + fault-inject.)