30 Commits

Author SHA1 Message Date
91fcd3b185 [CLAUDE] Governance: 3 quyet owner S201 - YC-045 DONG (gate DA co @S197, dinh chinh do-sai-tang) + YC-046 hook se-write-guard FI 9/9 + ST-003 chay-tron-spec
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 9m11s
- YC-045 ((106)=b1): KHONG code moi - ContractCreationGate 55a01643 @S197 da chan tron
  (tap RONG = 7 loai + CA duong PE->HD 1-click; bridge KHKK = write-site duy nhat; seeder
  demo mien tru chu dich). Verify tuoi: 3/3 test PASS + ancestor HEAD + probe 404->409 @#492.
  DINH CHINH ghi thang vao so: lead + lead-gap do tang CONTROLLER roi ket luan 'API mo' = SAI
  (guard song o dau handler) -> loi anh hom nay = RATIFY. Memory two-layers khac CHIEU NGUOC.
- YC-046 ((90)=a): hook PreToolUse se-write-guard.ps1 chan Write/Edit/NotebookEdit vao
  .claude/agent-memory/** khi vang token lead (B3 thanh luat MAY). Fault-inject 9/9 hai chieu
  (ke ca path THAT ca S201 + backslash chr92). Hieu luc tu RESTART ke (capture-at-startup).
  BAY-THUOC khai trong comment hook: Bash-tool un-escape 1 lop backslash -> JSON test viet tay
  hong -> fail-open, trong y het guard thung.
- ST-003 (Khoi 2): plan chot du cau hoi o dau => chay TRON spec, gom hoi ve cuoi, bao 1 lan.
  YC-008 don so =2 (satellite YC-010 -> '-'; no tang-2 bao 4 luot S189/192/195/201 DONG).
- _mind-s-18 MIND-1 refresh + va r1 instance (mind-audit hub khong enclosure-aware - vi du
  literal trong khoi luat go khoi instance, template goc giu nguyen lam chung).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 23:57:44 +07:00
6a67615756 [CLAUDE] Skill: ap HARNESS-100% MANDATORY (YC-044, owner chon nhanh (a)) + bookend @open L18
- Copy 212 file theo manifest hub: 6/6 job robocopy, 0 loi (exit>=8 = 0).
- SE vs DIA HUB = 212/212 KHOP TUNG BYTE (do truc tiep, khong qua manifest).
- harness_manifest.py --verify = exit 1 / LECH 1 khoan: KHONG phai loi SE.
  Manifest hub stale 45 phut so voi chinh dia hub -- tests/eval/test_naming_dual_read.py
  hub sua 22:45:52, manifest chup 22:00:30 (+331 B). Cho hub phat manifest moi.
  KHONG nan exit 0.
- Ranh MAY/STATE giu dung: settings.json ngoai manifest => hook wal-flush.ps1 CON SONG;
  13 vai san-pham SE con du tren dia (45 file = 32 hub + 13 SE); tests/ .NET nguyen
  (88 .cs + 2 csproj) + 55 .py hub; 37 script .ps1 nguyen nhung MO COI.
- Dut that: hmw.js VALID_ROLES thanh roster hub => 13 vai san-pham SE rung khoi mat workflow.
- Bookend @open L18 tron 10 vai: H1 9 finding / H2 GATE-FAIL 7 / lead-stale 6 FLAG /
  lead-gap 7 FLAG / ring1 39-7-6 / ring2 12-1-2 / ctx-audit TRUOT 5 / diem 3 tang KHONG DO DUOC.
- Duong lui: tag pre-harness100-S201 @ bbc806a4.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 23:19:30 +07:00
f2297ff9fc [CLAUDE] Docs: YC-043 3-phan-quyet dong duoi S200 — waive prod-test (4 ma dong nac TAM) + (94)=BYTE cap+20% (30720/36864) + nen moved-not-cut 2 vai (over-BYTE=0, G.6 LIVE) + (74) owner-tu-quan
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 20:49:13 +07:00
f74ec06a20 [CLAUDE] Docs: owner-batch YC-042 13-phan-quyet + H24 deep S200 (9+7 FLAG, ring2 15D/0T, fix-wave 20/20) + gotcha #94 + probe 2-cot + thu hub 2-anomaly
- So yeu-cau +YC-042 (verbatim) + YC-002 dong (79)
- HANDOFF: 4-cong ban-do + ANH-CHOT markers + 33 gach slug + VERBATIM-block + bang 2-cot (94) + 4 slug moi
- Tombstone migration-todos (77/96b) + 5 site tro-ve + check-email:67 theo P6 (78)
- error-ledger: o chua sai-LUC-SINH (91b) + RCA-lite 5b
- engine G.6 drain-on-append (105b, ARM cho 94) + scripts/mem-two-unit-probe.py (94c)
- ACTIVE-MARKS chu-thich S200 (F-6/F-7) + personas H24 cau nhip doi-3 (F-3)
- STATUS: moc song S200 + Gotchas 94
- broadcasts: thu ai_infra MCP-instr-block + SDK-tools-append (92c/90a)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 20:17:08 +07:00
a698f7c8b8 wal: pause 2026-08-15 18:39:36 +07:00
c7c15c4c5d wal: pause 2026-08-14 21:04:43 +07:00
55a01643ae [CLAUDE] Contract: chặn mọi đường tạo HĐ ngoài KHKK — YC-040 (106)=(b), chuỗi NCC→KHKK→HĐ khép kín
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 10m0s
Owner chốt: "(b) Chặn HẾT 7 loại — mọi HĐ đều phải từ KHKK -> Tao nghĩ nên như vậy trước đã."

BE: ContractCreationGate (1 chỗ, AllowedDirectTypes rỗng — nới = thêm loại, không sửa handler)
chặn 409 ở 2/3 write-site: POST /contracts (tạo tự do) + POST /purchase-evaluations/{id}/
create-contract (PE→HĐ 1-click nhảy cóc KHKK, di tích Phase 6). Bridge KHKK giữ nguyên
(write-site duy nhất). Gate đứng TRƯỚC mọi load — không lộ tồn tại dữ liệu. Seeder demo
là write-site miễn-trừ có khai (flag-gated).

FE ×2 app (8 lối): menu Create per-loại ẩn (Layout, policy Ct_*_Create giữ DB) · nút
"Tạo HĐ mới"/"Thêm mới" → "Tạo từ KHKK" trỏ /khkk/list (MyContracts + Dashboard +
ContractCreatePage) · ?mode=new → EmptyState chỉ đường KHKK · nút PE→HĐ ẩn (PeDetailTabs).
ContractCreatePage + PeDetailTabs giữ SHA-mirror 2 app.

Tests 697 pass + 6 skip / 0 fail (total 703): +4 gate mới (quét-trọn-enum fail-closed +
chặn-trước-NotFound + đổi message ApplicableType); 6 test multi-winner PE→HĐ chuyển
Skip-có-khai (spec di sản Mig 58, mở lại khi owner nới gate). Reviewer PASS_WITH_FIXES,
6/6 issue vá trong lượt (kể cả 3 chuỗi EmptyState/ListPanel còn mời tạo trực tiếp).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 19:39:28 +07:00
a01147e9df wal: pause 2026-08-14 16:32:21 +07:00
24566a500c [CLAUDE] Docs: S195 closeout L16 — 14 vai bookend, vá 3 ô canonical + cứu clobber-rot + trả nợ harvest S188
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 10m12s
Phiên governance thuần, 0 code product. Bookend @close chạy trọn 1 lượt (YC-018/YC-027).

14 vai: H1 8 FLAG · H2 GATE-FAIL 6 · cặp H24 deep (10+7 FLAG) · trio 3/3
(MIXED 38 trục → 4 action/18 BÁC → 50Đ/5T/15KC trên 70 claim) · ring1 41Đ/5T/19KC
· ring2 15Đ/0T/2KC · ring5 1Đ/2 xoá-án/1KC · ctx-audit TRUOT 6 FLAG · tầng-2/3 chấm.

Vá đã land:
- 3 ô SỐ canonical STATUS: Mig 73→74 · test 697→699 (45+654) · gotcha 92→93;
  bổ 3 ô vào ledger WAL TRƯỚC khi vá; lan Mig 74 sang CLAUDE.md + docs/CLAUDE.md.
- CG-1 attempt #1: cứu front-end-reviewer-style 1.192→5.913 B (clobber-rot, 4 chứng;
  harness-audit xác nhận md5 nối thuần, 0 mất).
- Trả nợ harvest S188 4 vai/42.975 B; đóng orphan S194 bằng synthesis hồi-tố.
- Vá gốc dòng rách so-yeu-cau:58-59 => máy đổi muc 28→29, hội tụ đếm tay.
- Đính chính tiền-đề SAI reinject-ledger:70 cho CẢ HAI vai (matcher DÍNH-vs-TÁCH).
- MIND-4 => mind-check --closed từ exit 1 sang exit 0.

3 RCA lỗi của lead: FAKE-VERDICT-S195 (verdict bịa cho vai chưa chạy) ·
RITUAL-ECHO-S195 (tái phạm lần 3) · SCORE-T1-S195 (đọc hụt số máy).

#53 nổ 10 lần, cứu 10/10 bằng resume-in-session.
4 vai tự phát hiện thước hỏng của chính mình — không có bước tự-falsify thì
lượt này có >=7 cáo buộc oan.

completeness-gate S195: vong 4/5 chuc-nang (khong-nhip: V4) | phep DAT 3 / TRUOT 1

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 11:51:33 +07:00
88bdd05492 [CLAUDE] Contract: tách HĐ Thầu phụ thành 01A/01B + thân document-view + pre-fill + khoá bản cứng (YC-032)
Some checks failed
Deploy SOLUTION_ERP / build-deploy (push) Failing after 2m41s
Owner YC-032/033/034/036 — 4 vế:

1. TÁCH LOẠI: +2 ContractType (HopDongThauPhuVatTu=8 / HopDongThauPhuThietBi=9),
   họ HD-TP-VT / HD-TP-TB, menu 01A./01B. (giữ 02.-07. nguyên, loại cũ =1 legacy).
   Bịt 5 nhánh câm nuốt loại mới: WorkflowPolicy (mất trạm CCM), ContractCodeGenerator
   (sai mã RG-001, không hồi tố được), ContractDetailsFeatures x2 (bundle rỗng HTTP 200),
   SeedWorkflowDefinitions (Designer V1 rỗng). ContractDetailsHelpers.ThauPhuFamily —
   3 loại chung bảng ThauPhuDetails ⇒ 0 migration cho vế này.

2. THÂN DOCUMENT-VIEW: ContractBodyView.tsx + lib/contractBody/ (002.02 = 36 ô/2 bảng/5 điều ·
   002.03 = 46 ô/6 bảng/6 điều · PHẦN 2 dùng chung 5 điều read-only gắn CUỐI theo YC-034).
   Lưu vào Contract.DraftData lược đồ {schemaVersion,kind,body,paymentTerms}.
   Gỡ draftData:null hardcode 4/4 site — trước đây mỗi lần Lưu là xoá trắng thân HĐ.

3. PRE-FILL: cầu KHKK đổ 17 ô (Bên B · chủ đầu tư · gói thầu · số HĐ · giá trị) — 17/17 khớp
   slot.key. Địa điểm lấy pe.DiaDiem (0% rỗng) thay Project.Location (93% rỗng). Vá regression
   cầu KHKK đánh rơi PaymentTerms + BypassProcurementAndCCM so với cầu PE cũ.

4. KHOÁ BẢN CỨNG MỘT CHIỀU (YC-033 "giấy trắng mực đen"): Mig AddContractSealedAt
   (+SealedAt +SealedByUserId), set ??= (upload lần 2 không đè mốc đầu), rào 2 cửa —
   xoá đính kèm bản cứng ⇒ 409, sửa HĐ ⇒ chặn. Test-before 2 ca.
   + print CSS in trình ký (ô điền in ra thành đường kẻ, không phải khung input).

Template: 002.02/002.03 convert .doc→.docx vào wwwroot + trỏ đúng 2 loại mới (trước cùng trỏ
loại cũ ⇒ dropdown Mẫu sẽ rỗng) + reconcile IsActive giới hạn 2 FormCode (bản đầu quét toàn bộ
sẽ hồi sinh mẫu admin đã xoá mỗi restart — database-reviewer-style bắt).

Đo: build 0 error · test 697→699 PASS (+2 seal) · has-pending-model-changes = No changes ·
tsc --noEmit exit 0 x2 app · mọi cặp file 2-app sha256 trùng · Menu keys 120→122 · Policies 480→488.

NỢ ĐÃ-BIẾT (owner cố ý hoãn, không phải bỏ sót): VAT (chưa VAT, để sau) · bảng tóm tắt PHẦN 1
trỏ "xem ĐIỀU 8/12" mà 002.04 chỉ có 5 điều ⇒ con-trỏ chết · phân quyền upload bản cứng ·
12 điều PHẦN 2 không có trong tài liệu. Chưa soi: 2 vai style FE/BE (lane không tạo được artifact).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 04:11:20 +07:00
d6026b1436 [CLAUDE] Docs: S191 closeout — vá 10 FLAG H24 + gotcha #92 đổi root-cause + RCA P0-BUNDLE + 3 action refine (A7 429→432) [skip ci]
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 01:58:29 +07:00
091073f910 [CLAUDE] Docs: YC-029/YC-030 ghi sổ 5 điều chỉnh GĐ3 + 5 phán quyết Q1-Q5 + STATUS S190 row
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 11m37s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 22:10:10 +07:00
92d8215a62 [CLAUDE] PurchaseEvaluation: YC-028 sự cố prod A/059 — FE tách "404 thật ⟂ lỗi hệ thống" 5 site ×2 app + guard disk/orphan vào runbook+cicd-monitor
Sự cố 2 tầng (đã giải trọn trong phiên, chi tiết runs/2026-08-10-S189-bookstart-open/run.md + WAL):
- T1: ổ C VPS 0 byte (gitea repo-archive 16,49GB + npm-cache SYSTEM 12,76GB) → SQL Error -2
  → "ko duyệt được" rồi FE vẽ mọi lỗi thành "Không tìm thấy phiếu" (#44). Dọn ~30GB cache
  + AUTO_CLOSE OFF ×3 DB + gỡ nén NTFS 4 file template (#88 tái phát).
- T2: 3 sshd mồ côi (lệnh đo ssh bị cắt output) bão hòa 3/3 core → mọi GET detail 5-47s,
  A/059 (5 NCC) vượt trần hủy ~30s của FE. Kill orphan → A/059 47s→0,38s · phiếu bé 0,17s.

Code (5 site cùng lớp, SHA-mirror 4 cặp MATCH, build ×2 xanh):
- lib/apiError.ts +isNotFound(err) — chỉ 404 mới được nói "không tìm thấy"
- PurchaseEvaluationsListPage (inline + overlay + fullpage) + KhkkListPage + KhkkCreatePage:
  detail.isError && !404 → "Hệ thống đang chậm hoặc lỗi khi tải phiếu — thử lại (refetch)"

Ops-guard (YC-028 (4)): cicd-monitor persona +bước 1b server-health (fsutil free <5GB = FAIL,
CPU-delta tìm orphan) · iis-deploy-runbook +§"Disk-free + orphan guard" + sửa path log Serilog
sai (Logs\log-*.txt → logs\solution-erp-*.log, đo thật). (6) đóng: log 10/08 mất do đợt "giải
phóng dung lượng" hôm qua (retention 30 file config đúng). (3B) cron archive_cleanup Gitea +
decompress Vietreport_Master = chờ ngoài giờ (restart service dùng chung VIETREPORT).

Sổ: +YC-028 (nguyên văn + 2 tầng đã xử). Squash wal: trailing theo §5.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 11:25:51 +07:00
9b3c0edba3 [CLAUDE] Docs: S189 bookstart L15 TRỌN 1 lượt (YC-018/YC-027) — 12 vai/5 vòng + vá 7 bề mặt + 2 RCA + PN-002
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 9m6s
Nghi-thức mở phiên chạy trọn một lượt sau khi owner bắt lỗi lead dừng ở BƯỚC 0.7(b)
hỏi consent trong khi PN-001/YC-026/YC-027 đã chốt từ lượt trước (→ PN-002, YC-027 nhắc 1→2).

Vòng @open — 12 vai, 8/12 lượt return dính #53, 0 byte mất (artifact-first vào LỆNH GỐC):
- V1 tooling PASS_WITH_FLAGS-7 + harvest GATE-FAIL-5 → ring1 26Đ/4T/6KC trên 36 claim
- V2 stale 11 FLAG + gap 7 FLAG (deep) → ring2 7Đ/3T/14KC trên 24, enum-gate 18/18
- V3 trio eval MIXED 38-trục/13-REGRESSION → refine 2-action/16-BÁC → audit 24Đ/7T/4KC (98 số byte-exact)
- V4 shard IM ⇒ NO-OP có khai · V5 detector 58+26 INFORM
- Khối chấm điểm → KHÔNG ĐO ĐƯỢC (A8 cấm in điểm; tầng-3 bác phép đếm tầng-2, tầng-1 0 lỗi)
- Phase 3.5 _mind-s-15 block-0 qua mind-check 10/0 → ctx-audit TRUOT 5 FLAG

Vá bề mặt (đều do đội bắt, lead đo lại từng cái):
- CLAUDE.md:77 KHKK 69,71 → 69,71,72 (ring1 phán ef-core-migration/SKILL.md là DƯƠNG-GIẢ ⇒ 1 chỗ là đủ)
- contract-workflow/SKILL.md: "cầu KHKK→HĐ (W5) chưa làm" → ĐÃ LÀM b275893c; giữ vế liên-danh N-HĐ còn nợ THẬT
- WAL: gỡ cụm gộp *conversation tiếp tục* với *phiên-LOGIC chưa khép* (_end L14, 6 bề mặt chọi 1); C5 39/40 OK
- HANDOFF: lật 3 mục NEXT-em đã land ef1d4fbb (harvest-curator 21.308 · reviewer 85,7% · measured 30 row 29/29)
- error-ledger +2 RCA: SCORE-T2-S189 (tầng-2 sai L1+L2) · H24-RESET-S189 (máy gộp đo-ra-0 với không-đo-được)
- tally H24 18 class nấc deep ⇒ deep 1/1 OVERDUE → 0/1 ok; orphan run-folder 0

Load-bearing: ring5 = 0 hit session-start.md ⇒ guard RCA ONESHOT-S188 không fire được ở cửa MỞ ·
YC-027 land 2/4 cửa (tiep/pause = 0) ⇒ cần phép kiểm ĐỦ-CỬA · byte⟂ký-tự: theo ký-tự 0/29 vai
vượt (max 96,5%) ⇒ cảnh báo "2 over-cap" kêu oan (câu 76) · CẤM chạy PROPOSE archive cho
ring2-audit (move-set = {Role baseline, Runs} ⇒ xoá thước của vai KIỂM).

Squash 16 commit wal: trailing chưa-push theo §5.0 (mark RC-pqhuy1987-15-07-2026-15-32-20).
Docs-only ⇒ CI path-filter skip, không deploy.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 01:24:27 +07:00
ef1d4fbb22 [CLAUDE] Docs: S188 chạy-bù bookend TRỌN theo PN-001/YC-027 — ring5 lật 6 nhãn tự-ý-bỏ + RCA ONESHOT-S188 · ring2 lần-3 → HOÀN 8 class tally từ git · trio khép (eval-return v2 TRỌN) · E1-E3/A1-A2 · RULE YC-027 khắc 2 site · RE-STAMP 47 slug dựng-từ-nguồn · slot (89)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 10m0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 21:30:43 +07:00
80febec977 [CLAUDE] Docs: sổ yêu-cầu +YC-025 (làm trọn, review 1 lần)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 19:47:26 +07:00
0149f106f9 [CLAUDE] Docs: YC-024 — 9 đáp án (80)-(88) vào sổ yêu-cầu + HANDOFF lật khối + (73) đóng; spec đợt-1 AC-W7/F-3
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 9m44s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 18:20:41 +07:00
5a77f4f127 wal: flush 20260810 S188 dot-1 run-trace + governance state 2026-08-10 18:20:40 +07:00
f624535c8c [CLAUDE] Docs: YC-022 anh gat bang tham-quyen — DRAFT -> chinh thuc + doi-soat 210K (nha that crystallized_backfill.target) + tro tu engine SE
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 03:58:03 +07:00
2fdb589014 [CLAUDE] Docs: lat YC-021 dong trong so
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 03:51:52 +07:00
87e979ff02 [CLAUDE] App: acceptance DONG local A2+T8 PASS (state-that + changelog-shape + guard-409 runtime) + YC-021 W-3 nguong 500ms + ring1-persona va + goi-chot 4.3 PASS
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 03:22:38 +07:00
2a5290a88e [CLAUDE] Scripts: YC-020 5 phan quyet — fold C13/C14/C15 vao TOTAL (nen S185), H24-1 doi don-vi PHIEN (nguong owner 14, 2 flag that fire ngay), grid-c trio liveness, -Detail da cam truoc do
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 02:59:20 +07:00
c2f4523199 [CLAUDE] Docs: YC-019 6 phan quyet thi hanh — YC-013/016 dong tam-OK, ring2 nen 24.859B duoi cap, deep_every 15->1 moi-bookend, no cu S181+VK-5+(72)+E1-Detail dong
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 02:49:28 +07:00
f69af273cf [CLAUDE] Docs: bookend @close S185 ONE-SHOT (YC-018) — trio+H24deep+ring1/2+ctx 9-vai mot-mach, harvest 698KB->11 so, 16-FLAG patched, Tests canonical 668
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 02:35:20 +07:00
6282806c30 [CLAUDE] Docs: adap 08-08 executed (3 phep thu + f-bis re-measure) + orphan S182 closed + 3 self-ref sites patched (S185)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-09 21:15:12 +07:00
72568f052e [CLAUDE] App: YC-016 guard file-khi-duyệt KHKK theo TAY CẦM PHIẾU (slot 67 đóng)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 6m17s
Anh chốt "(c) THEO TAY CẦM PHIẾU": Nháp/Trả-lại (tay người soạn) ⇒ chỉ
người soạn up file duyệt; Chờ-duyệt ⇒ chỉ thành viên quy trình đã pin
(membership, không đòi đúng-lượt — chữ anh @S171 không thu hẹp); terminal
DaDuyet/TuChoi ⇒ chặn cả hai (hồ sơ đã chốt).

Guard mới EnsureApprovalAttachmentUploaderAsync (WorkflowGuards) wire vào
UploadContractSigningPlanAttachmentCommandHandler — CHỈ rẽ nhánh
Purpose=ApprovalAttachment; đường căn-cứ dossier giữ nguyên hành vi cũ
(có control-test chặn nới guard ngoài phán quyết).

Đóng lỗ đo prod @S172: drafter qua policy KeHoachKyKet.Update up được
file vào phiếu không thuộc tay mình (#82 hai tầng — policy là quyền
module, không phải quyền theo tay). FE 0-đổi (nút vốn chỉ trong dialog
duyệt — display-layer; guard này là API-layer thật).

Test 660 → 668 (+8: 3 nhánh tay × 2 chủ thể + ngoài-cuộc + terminal-2-vế
+ control đường-soạn). YC-016 vào sổ; YC-013 nhắc=2 (YC-015 verify 4-chân).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 13:10:31 +07:00
706134daa9 [CLAUDE] Workflow: KHKK 8 panel nhóm mirror DuyetNcc + BE guards (0-mig)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 6m24s
YC-013 (S182/L13). 8 leaf "Duyệt KHKK — Nhóm 1..8" ra đúng khuôn trang
DuyetNcc: slice per-Code + lockedCode + Sửa-tại-chỗ/Tạo-version/Ghim/Xoá.
D3=C (YC-014): 6 ô chưa-wire disabled-giữ-state-thật + tooltip trên label
(Chromium không hiện title trên input disabled — MAJOR-1); ô #4 thêm chữ
nhìn thấy được; #7 giữ; #8 Finalize 0-chạm (prod 8/88 dựa nó); ô CEO
disable type-10 + POST null.

BE 5 guard (0 migration):
- W1a deactivate-per-Code cho type-10 (Code+Type+IsActive — cấm regex);
  Code normalize Trim().ToUpperInvariant() tại đường ghi + IgnoreCase belt
  trong GroupCodePattern (MAJOR-2: SQLite test case-sensitive nguoc prod
  CI_AS collation)
- W1b ContractSigningPlanWorkflowGuards (public static, Application) —
  rào nhóm 3 cửa Create/UpdateDraft/Submit, giữ cho-qua-code-ngoài-họ
- W1b2 (D6) pin-check IsActive+IsUserSelectable 2 cửa, 2 message tách
- W1c changelog PUT type-10 vào ContractSigningPlanChangelogs
- W1d DELETE usage-check 409 đích danh (8 module pin, IgnoreQueryFilters
  cho PE/Contract/KHKK; 5 module office pin loose-0FK — guard là rào duy
  nhất chống dangling) + 404 NotFoundException + D5 rào version-cuối nhóm
  (+ ApplicableType — MINOR-3)

Test 645 → 660 (+14 spec + T15 D6-Create MAJOR-3); MINOR-1 pin nguyên câu
thứ-tự 1 ca. File test thứ 3 (GroupAndCatalog) đổi 1 assertion theo câu
409 mới của W1b — spec-change, không phải nới bar.

Khai accepted (reviewer PASS_WITH_FIXES 0C/3M+6m, đã vá 3M+2m):
- MINOR-4: panel nhóm tạo-version-mới ⇒ 6 cờ khoá đóng băng default FE
  (vô hại — BE không đọc 6 cờ đó cho type-10)
- MINOR-5: bỏ ghim/bỏ active bản cuối nhóm = đóng cửa tạo phiếu nhóm đó
  (răng thật của nút Ghim — không rào đợt này)
- race 2-admin cùng Code → 2601/500 thô (UNIQUE đỡ data, chấp nhận)

Evidence: .claude/workflows/runs/2026-08-08-S182-khkk-awf-mirror-ncc/
(3 fable-invest + 2 fable-review + spec FINAL + 4 lane + precheck prod
12 phiếu/pin-lệch-0 + reviewer pre-commit)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 12:14:37 +07:00
d29187902a [CLAUDE] Docs: S181 closeout — bookend @close 21 FLAG, va 20 + 2 loi lead tu gay
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 6m30s
Bookend @close chay du 6 vai + 2 vai KIEM vong. Ket qua dat nhat cua phien.

Con-DO:
- tooling-auditor  PASS_WITH_FLAGS 6  (F-1 o canonical Sub-agents 26 -> 28,
  la dich cua 5 con-tro B1 ⇒ 1 o sai = 5 con-tro resolve sai)
- harvest-curator  GATE-FAIL 6        (F-03: cong thuc cot-A MU khi phien
  khong mo run-folder ⇒ A∖B = ∅ ⇒ bao PASS trong khi 7/7 vai thung.
  DAT-ao do CAU TRUC — may khong hong, may HOI SAI CAU)
- lead-stale-auditor 9 FLAG · lead-gap-auditor 6 FLAG

Con-KIEM:
- ring1-audit 26 DAT / 5 TRUOT — thach-CLEAN THUNG mat "skill sach" cua H1:
  ef-core-migration heading tu mau thuan (vua tro STATUS canonical vua ghi
  "moi nhat = row cuoi bang", row cuoi = Mig 71, dia = 72).
- ring2-audit 14 DAT / 0 TRUOT — 15/15 FLAG trung vat that, 0 gan oan.

🔴 HAI LOI LEAD TU GAY, ca hai do phep do doc lap bat:
1. Tu MO RONG tham quyen: viet "Chu du an phan P7 ve (ii)" tren vat GUI HUB,
   trong khi so quyet-dinh ma chinh bao-cao tro toi ghi "CHUA phan, VAN TREO".
   Anh noi "OK lam het roi khep tron di" = uy quyen chay not, KHONG phai phan
   noi dung. Da ha chu 3 site. Anh bac thi go, 1 luot.
2. Sweep "roster 23->28" TOAN CUC an vao 2 anh chup DONG BANG (STATUS:15 ky
   S159-S160 · :478 lineage S153). Bang chung noi-tai: o :15 moi so lang gieng
   cung dong van gia tri cu, CHI roster nhay. Da hoan ca 2 ve 23.
   ⇒ LUAT: literal trong segment " S…" = ANH CHUP, CAM sweep theo pattern.

Va them: vi pham C1 dong-bang be-mat-do (ghi STATUS/HANDOFF trong luc 4 vai
dang do; vai gap chung bang chinh phep do cua no: 285/54 -> 287/56). RCA
C1-S181 vao error-ledger, kem khai NO CHUA TRA: 0 cong may nao chan.

Da xu 20/21 FLAG: seed 9/9 nhat ky vai · re-stamp 20 slug mo + 3 moi · RC
-21-42-10 vao ACTIVE-MARKS kem PHAM VI KY · va cong thuc cot-A · YC-007..012
loi anh nguyen van · 2 bai hoc vao auto-memory.

§L.c gate: vong 3/5 (khong-nhip V3 trio, V4 nen-ngu) | phep DAT 4 / TRUOT 0.
mind-check closed-mode: dat=10 TRUOT=0 exit 0. _end da ghi (FROZEN).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 23:31:01 +07:00
de8167c2cf [CLAUDE] Docs: he 4 tang bat loi dem cua chinh tang-1 (spawn-probe 2 vai moi)
2 vai W4b SONG NGAY khong can restart (dinh chinh: lead da bao "chi an tu
RESTART ke" - SAI). Ca 2 be mat khop: registry song + VALID_ROLES 28 = 28 dia.

Spawn-probe that, ca 2 PASS:
- tang-3 score-count-auditor: SKIP-CO-KHAI, tool_uses = 0 => fail-closed
  THAT (khong di tim "ban moi nhat"). Tu choi ca 5 cua thung: glob, tu dem
  thay, de xuat diem, ghi error-ledger, cham flag_classes.
- tang-2 score-counter: KHONG DO DUOC + 4 phep do doc lap chung so thua.

🔴 Tang-2 BAT LOI CUA TANG-1 (lead):
  lead dem 3 muc (theo DONG) - tang-2 dem 1 muc (theo MUC). Lap luan: luat
  lay vi du "muc nhac 5 lan tru dung 1, khong phai 4"; ma hoa ca do thanh 5
  dong thi dem-dong ra 4 = DUNG con so luat goi la SAI. So 3 cua lead = 4-1,
  cung dau van tay.

2 defect that da va:
- So ma hoa sai don-vi: 1 yeu-cau duoc cap 4 ma. Ma vinh vien + cam xoa dong
  => chua bang cot MOI 'nhac-lai-cua' tro ve ma goc + luat dem "chi dem dong
  co cot do TRONG".
- nhip-no-probe dem LAN thay vi MUC => in "nhac2+ 3". Nay dem MUC, in kem mau
  so. Re-fault-inject tren chinh vi du cua luat: 1 muc nhac 5 lan => nhac2+ 1
  (khong phai 4). Phan biet chua-co-du-lieu / treo 0 van giu.
- Ban dau so thang '**mo**' co dau nhan markdown => treo 0 sai; nay strip.

YC-002 giu trang thai MO: plan chua chay het (con W3b/W5b/W6).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 21:53:29 +07:00
a3776eaac4 [CLAUDE] Docs: thi hanh tron plan adap dot-2 (P2/P3/P5/P7i + W4 + khoan 5/6)
Chu du an chot 6 cau @S181; so quyet-dinh o
runs/2026-08-07-S180-adap-upgrade-pack-phased/owner-decisions-07-08-2026-dot-2.md

- P2=PB-2 sua luat da ratify du 2 SITE (tiep.md §3-bis canonical + pause.md
  b6 chi TRO). Cau cam san-3 GIU NGUYEN, chi them ranh REQUEST ⟂ TASK.
- W4: docs/governance/so-yeu-cau-chu-du-an.md 3 khoi, ma YC/ST/PN vinh vien.
  Config: tiep_reload.sources 8->9 + owner_request_verbatim_char_cap.
  nhip-no-probe ve-5 "so-yc treo/nhac2+", fault-inject 5/5, phan biet
  chua-co-du-lieu ⟂ treo 0. Ky luat ghi-NGAY + A5 cam CLAUDE.md + rules.md §6.0.
- P5: ACTIVE-MARKS §LT3 luat tu-tri 3 bac + mark RC-...-07-08-2026-20-57-48.
- P7(i): docs/governance/expensive-runs-view.md derive-view 5 cot.
- P3=B: niem phong _sealed_P3B_S181 (forward-only). Phep thu A10 da co rang
  (fault-inject: class tu che => exit 2; class hop le => exit 0).
- Khoan 6: scripts/naming-baseline.json = NGUON, script chi doc.
  Fault-inject 6/6 hai chieu. 7/7 baseline xanh. 0 byte non-ASCII.
- Khoan 5: broadcasts/_index.md +cot "ap" cuoi hang, backfill 42/4/23 = 69.
- W3 acceptance 6/6 dong + va defect con-tro bang-19-cua (view-stale-status).

Con treo: P8/W4b, W5, P7 ve (ii), VK-5, P3 hoi-to hay forward-only.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 21:25:50 +07:00