Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
7.7 KiB
S187→S188 — YC-023/024/025: module Duyệt Hợp đồng (GĐ3) từ KHKK
2026-08-10 · phiên-LOGIC L14 (window 2-3) · lead = Fable 5 (đổi Opus 5 @closeout) · 0 migration · test 668 → 680 Run-trace:
.claude/workflows/runs/2026-08-10-S187-duyet-hd-tu-khkk/(11 artifact) +…/2026-08-10-S188-bookend-close/Push:bc309c55..0149f106(đợt-1) ·0149f106..b275893c(cụm) ·80febec9(sổ) — cicd 4/4 + 5/5
1. Owner-decisions (nguyên văn → sổ yêu-cầu)
| mã | tóm | thi hành |
|---|---|---|
YC-023 (S187) |
mở module Duyệt HĐ GĐ3 mirror PE/KHKK, quy trình per-LOẠI, kế thừa KHKK đã duyệt; điều phối 2 invest + 1 style-review + 1 plan-review ×/fable-real → fan-out Opus 5 MAX per-wave |
4/4 lượt Fable xong → spec → 2 đợt fan-out |
YC-024 (S188) |
9 đáp án (80)-(88) | 7-LOẠI · PA-A · mở-tất-cả-trước (W8 HOÃN) · roster sao khuôn KHKK · 2-nút · admin giữ ẩn (W9 HỦY) · khoá cứng · 0-cột-gợi-ý · ruột pre-fill |
YC-025 (S188) |
"làm tiếp hết đi, xong hết tao review 1 lần" | W3-W6 + W10 chạy trọn không dừng giữa wave; push gom; trình review 1 lần |
2. Chuỗi 4 lượt /fable-real (STAGE A-C) — S187→S188
- invest BE (26.119 B) + invest FE (21.981 B) song song 2 lăng kính. Lõi: V2 tái dùng 100% ·
ApplicableType=3không phân loại · phiếu GĐ3 = chínhContract(0 entity mới) · 0-mig · vỏ FE đủ 42 leafCt_*· khuôn duyệt =KhkkWorkflowPanel. - style-review (
back-end-reviewer-style×Fable, 21.680 B) —PASS_WITH_FLAGS — 7 flag; nặng nhất FLAG-2 wave MỒ CÔI: F1/F2 cần BE-DTO mà wave-list không có. - plan-review (
reviewer×Fable, 29.647 B) — 12/12 claim re-verify bằng code + 3 phát hiện mới: ① FE đề xuất DTO khuôn PE trong khi panel mirror là khuôn KHKK (chọn PE = viết lại panel) · ②fe-adminẩnCt_*2 TẦNG (ADMIN_HIDDEN_KEYS+ prefix-rule:248) · ③ đường fetch cây workflow đã có sẵn. Ra plan 11 wave + hợp nhất 12 nhãn CHỜ-ANH → 9 câu + 3 tự-quyết. - Lead verify + ghi
spec-duyet-hd-10-08-2026.md(H21① 3 heading).
3. Thi công — 2 đợt ship
Đợt-1 (0-chặn-owner, 0149f106): W1 gỡ 2 bom per-type (test-before 3 ĐỎ-hành-vi → XANH) · W2 BE-DTO nền (ContractSourceDto reverse-join KHKK + CurrentWorkflowStepIndex + cây thô khuôn KHKK) · W7 server-filter per-type. Reviewer PASS_WITH_FLAGS — 8: F-1/F-2 MAJOR (3 tên field FE↔BE lệch + nullability — build xanh nên không máy nào bắt) vá ngay trước commit; F-4 sửa AC-W7 + nợ [carry:w7b-inbox-param]; F-3 treo W6.
Cụm W3-W6 (b275893c): W3 seed 7 quy trình HD-* sao khuôn KHKK (builder chung; cờ finalize false có khai — tránh config-lie #78) + 7 key AwV2_Hd* by-construction + menu-row T6 + 2 row canonical STATUS · W4 guard 4-cửa nhà chung ContractWorkflowGuards (khoá cứng theo loại; bridge ApprovalWorkflowId → nullable auto-pin) · W6-BE Đ2 guard đúng-trạm V2 (V1 giữ nguyên) + test security · W5 card "Nguồn gốc KHKK" · W6-FE panel duyệt 2 nút mirror KhkkWorkflowPanel (dual-render V1) + Designer type-3 family-slice.
4. Nghiệm thu
- cicd đợt-1 4/4 · cicd cụm PASS 5/5: run #482 success (gate 680) · bundle rotate ×2 app · seeder chạy thật prod: 7
HD-*+ 7 menu-row, FK sạch, 8KHKK-N*control nguyên · smoke 9/9 · DLL markerContractWorkflowGuards0→4. - W10 dry-run Dev PASS 5/5 (lead tự chạy sau 4 đời agent chết non): nhánh A
HD-TPauto-pin → 5 trạm → DaPhatHanh (APVN01/HDTP/SOL&NCC-DIEN/01) · sai-trạm 403 nêu đích danh Bước/Cấp · nhánh B gửi mã sai họ → 409 nêu tên mã, auto-pin →APVN01/HĐDV/SOL&DV-BAOVE/01· F3 inbox 2 chiều đúng (approver thấy / ngoài cấp không). - Sổ ID Dev (seq đã cháy — không phải data thật):
KHKK/2026/901+ 2 HĐZZTEST-W10.
5. Bài học phiên (ứng viên gotcha/memory)
- 🔴 #53 garble ~90% return (≈15/17 lượt sub) — đĩa cứu 100%, 0 byte mất. Lượt nào lead ép "ghi file TRƯỚC TIÊN" thì recover trọn; lượt reviewer-cụm không ép → chết trắng 0 trace ×2 ⇒ ép-ghi-trước-tiên là biến quyết định, không phải lời khuyên.
- Agent chết non ≠ mất việc, NHƯNG ledger phải tiến từng đời: W10 qua 4 đời agent, mỗi đời để lại B0/B1 trên trace ⇒ đời sau nối được; cuối cùng lead tự chạy B2-B5. Trace = đơn vị tiến-độ, không phải return.
- Tiền-đề spec sai 3/4 ở W7 (fe-admin không có
MyContractsPage; inbox không có param) — implementer BLOCKED đúng kỷ luật thay vì làm bừa ⇒ nợ có mã thay vì bug câm. - Build xanh ≠ hợp đồng đúng: 3 tên field FE lệch BE mà
tsc/680 test đều im (0 consumer) — chỉ reviewer đọc chéo 2 phía mới bắt. - sqlcmd
-imặc địnhQUOTED_IDENTIFIER OFF⇒ mọi DML trên bảng có filtered index chếtMsg 1934;sqlcmd < file(stdin) chạy im lặng 0 dòng. Dùng-I. - Rate-limit login 5/phút/IP (
Program.csRateLimit:AuthLoginPerMinute) — kịch bản nhiều danh tính phải cache token, không login lại mỗi bước.
6. Nợ mang sang
[carry:w7b-inbox-param]— BE/contracts/inboxthêm?type=+ bỏTake(100), rồi FE gỡ client-filter (kèmContractCreatePage×2 cùng lớp).- W8 authz Đ1 HOÃN theo (82) — chờ anh nói "ổn rồi". W9 HỦY theo (85).
- F-3
ActiveOthers— Designer đã đi hướng lát-cắt-history (khuôn KHKK) ⇒ field API còn 0 consumer, quyết giữ/gỡ ở wave sau. - Slot chờ anh còn: (74)(76)(77)(78)(79) + tồn (22)(67)(72).
7. memory-triple + gate (điền ở closeout)
memory-triple: do=scripts/measure-agent-memory.ps1 · exit 0
memory-triple: de-xuat=scripts/memory-archive-gate.ps1 DRY · (xem harness-eval return)
memory-triple: kiem=harness-audit · (verdict trong run-folder bookend-close)
memory-triple: do-record=governance-detectors TOTAL=59 (INFORM 24 tách riêng)
memory-triple: do-record=NHIP-NO: kiem light 2/6 deep 2/1 OVERDUE:deep | tran-bo-nho 5 over-cap l2idx 0 over | run-chua-gom 1 | pull-cach 0 ngay | so-yc treo 4 / nhac2+ 2
8. Chạy-bù bookend TRỌN theo PN-001/YC-027 (owner bác "ngân sách" — cùng phiên)
completeness-gate S188 (SAU chạy-bù): vong 5/5 chuc-nang (khong-nhip: V4-shard-8/15) | phep DAT 3 / TRUOT 1 / vacuous 0
V1 ring1 (roster 29 5/5-nguon + A-00 bat loi lead-pin) · V2 ring2 lan-3 (2Đ1T2KC — TRƯỢT=RESET-tally-sai ⇒ HOÀN 8 class tu git + history entry) ·
V3 trio (eval MIXED-35 [return v2 TRANSCRIBE TRỌN — v1 lead scribe TÓM làm mất bảng, audit C1 bắt] · refine 2A/16BÁC/4E · audit gộp 4Đ2T1KC) ·
V4 khong-nhip · V5 floor áp mọi verdict. Phép-1 tick (62, 3 số) ĐẠT · phép-2 NHIP-NO nguyên văn ĐẠT · phép-3 closeout-4-sổ ĐẠT · phép-4 vai-có-sổ TRƯỢT-lúc-đo→SEED-12-vai-đã-vá.
memory-triple: kiem=harness-audit gộp 3 lượt · 4Đ2T1KC (2 TRƯỢT đều lỗi phía lead: scribe-tóm + đề-bài sai tiền-đề)
ring5: 6 nhãn — 1Đ·5T·0-xoá-án ⇒ 6 `tự ý bỏ` + SÓT-1 (đảo thứ tự §6.4 — cửa sổ mù Sàn-2 ~73') ⇒ RCA ONESHOT-S188 + [carry:sentinel-truoc-bu]
headroom @audit-tick = 122.555 (giảm tiếp — hotload đo 6 file docs, HANDOFF phình do chính RE-STAMP; N4 đúng)