Files
solution-erp/.claude/agent-memory/cicd-monitor/archive/2026-05-q2.gist.md
2026-08-03 10:53:28 +07:00

6.3 KiB
Raw Blame History

cicd-monitor/2026-05-q2 — gist

distill-gen: 1 source-verbatim: .claude/agent-memory/cicd-monitor/archive/2026-05-q2.md (1 entry + header-rule → 4 cụm) pointer-style: substring

TỔNG-HỢP (3-5 ý)

  1. Deploy-xanh ≠ feature-dùng-được. Run #231 PASS đủ mọi lớp máy (CI 3m30s, bundle 2/2 rotate, Mig 32/33 applied prod, smoke 5/5) nhưng seed V2 = 0 row ⇒ VERDICT PARTIAL — lớp verify quyết-định là DỮ-LIỆU SEED (sqlcmd đếm row theo ApplicableType), không phải bundle-hash + smoke-200.
  2. Hai chủ-đích đúng va nhau, không phải bug: cờ DemoSeed:Disabled=true (thiết-kế Plan T cho UAT sạch) nuốt seed hạ-tầng của Plan B ⇒ sinh gotcha #51; đóng bằng Run #232 38f1c4d carve-out option (b). Monitor từ-chối tự quyết fix-option — escalate em-main.
  3. Refactor ~150 LOC ApproveV2Async + 0 test = đúng khuôn rủi-ro gotcha #48 — UAT-skip-test không áp cho scope refactor.
  4. Log-ERR trùng cửa-sổ deploy ≠ do deploy: SlaExpiryJob 5 entry ERR là nhiễu V1 có trước — quy trách bằng enum/phase trong message, không bằng thời-điểm.

Entries

[cao] A2+A3 — Run #231/#232 Plan B Contract V2 (PARTIAL → đóng)

  • VIỆC: Verify Run #231 (id=345) push 6eec8d7..3e92584 11 commit — Plan B wire Contract V2 (Mig 32/33 + ApproveV2Async + 6 FE × 2 app).
  • KẾT-LUẬN: VERDICT=PARTIAL — deploy PASS (CI 3m30s; bundle 2/2 rotate leEMWFLU→BBADl46y + Dgn1iU9E→DA_VI3zO; Mig 32 20260522051059_AddApprovalWorkflowToContract + Mig 33 20260522052240_AddContractLevelOpinions applied prod; API 200 + 5/5 smoke; 7 HĐ V1 nguyên-vẹn) nhưng SEED PARTIAL: QT-HD-V2-001 0 row (ApplicableType=3) ⇒ dropdown FE rỗng ⇒ V2 KHÔNG test được E2E. Đóng bằng Run #232 38f1c4d carve SeedSampleContractWorkflowV2 ra khỏi DemoSeed-gate (option b) + gotcha #51.
  • BÀI-HỌC: deploy-xanh ≠ feature-dùng-được — phải verify DỮ-LIỆU SEED (sqlcmd đếm row đúng ApplicableType), không dừng ở bundle-hash + smoke-200. Và: refactor >100 LOC (ApproveV2Async ~150 LOC) đi kèm 0 test = đúng khuôn rủi-ro gotcha #48, UAT-skip-test không áp cho scope refactor.
  • BẤT-NGỜ: thứ chặn feature lại là feature-flag CỐ Ý (DemoSeed:Disabled=true, thiết-kế Plan T S23 t10 để UAT sạch), không phải bug — 2 chủ-đích đúng đắn va nhau; và CICD-monitor từ chối tự quyết (a) hay (b), escalate em-main. → substring:"38f1c4d"

[thấp] A4 — SlaExpiryJob ERR cluster

  • VIỆC: phân-loại 5 entry ERR 12:58:16 nổi lên cùng lúc deploy.
  • KẾT-LUẬN: pre-existing V1 noise — ConflictException Transition X→Y không hỗ trợ trên 4 cặp phase (DangInKy→DangKiemTraCCM, DangSoanThao→DangGopY, DangGopY→DangDamPhan, DangTrinhKy→DongDau); 0 dính V2; 0 regression.
  • BÀI-HỌC: log-ERR trùng cửa-sổ deploy ≠ do deploy — phải soi enum/phase trong message để quy trách.
  • BẤT-NGỜ: job auto-approve V1 vẫn đang fail âm-thầm trên HĐ legacy, tách hẳn thành việc điều-tra riêng. → substring:"SlaExpiryJob"

Phụ-lục token (coverage)

  • gotcha#: #48 (dẫn — refactor >100 LOC Service chạm changelog/audit) · #51 (SINH MỚI — DemoSeed gate) · "44 gotchas cross-ref" (không ở file này, xem q3)
  • surprise: CRITICAL DISCOVERY #6 (NEW gotcha to add) · "seed gap is feature-flag design choice not deploy failure" · "Decision NOT for CICD Monitor — escalating" · "0 new tests added Plan B (~150 LOC ApproveV2Async NO test cover)" · "bro UAT ... V2 wire E2E NOT testable UAT mode"
  • guard: DemoSeed:Disabled=true feature-flag gate · Reviewer ApplicableType=Contract guard (hotfix commit trong range) · paths-ignore/test-gate 111 baseline · feedback_uat_skip_verify (rule được viện-dẫn) · Rule §6.5 "KHÔNG cắt narrative"
  • root-cause: "DemoSeed feature flag gates Plan B Chunk A2 sample V2 workflow seed" ⇒ QT-HD-V2-001 NOT seeded in prod (0 rows ApplicableType=3) ⇒ V2 endpoint trả {"active":null,"history":[]} ⇒ dropdown Create rỗng
  • file:line / định-danh: log 2026-05-22 12:57:44 [INF] DemoSeed:Disabled=true → skip workflow + contracts + PE + sample V2 seed (Plan T S23 t10 + Plan B Chunk A2 Contract V2) · SeedSampleContractWorkflowV2 · ApproveV2Async (~150 LOC) · Run #231 id=345 · Run #232 sha=38f1c4d · push range 6eec8d7..3e92584 (11 commit) · Mig 32 20260522051059_AddApprovalWorkflowToContract · Mig 33 20260522052240_AddContractLevelOpinions · cột ApprovalWorkflowId + CurrentApprovalLevelOrder · bảng ContractLevelOpinions (0 row) · bundle leEMWFLU→BBADl46y (admin) / Dgn1iU9E→DA_VI3zO (user) · QT-HD-V2-001 (ApplicableType=3) / QT-DN-V2-001 v1+v2 (ApplicableType=1) · CI 3m30s 12:54:24→12:57:54 · SlaExpiryJob 5 ERR @12:58:16 · 4 transition DangInKy→DangKiemTraCCM / DangSoanThao→DangGopY / DangGopY→DangDamPhan / DangTrinhKy→DongDau · archive-header: S32 curate, 27KB→~24KB, ngưỡng 25KB

Bổ-sung coverage @P3-gate S170 — ⚠️ LƯỚI GREP THUẦN, KHÔNG PHẢI DỮ KIỆN (đoạn trích sau mỗi token là phần ĐẦU DÒNG verbatim chứa token — dòng archive là mega-line nên đoạn trích thường KHÔNG liên-quan token; CHỈ dùng để coverage-diff grep trúng, đọc nội-dung thì tra verbatim theo token — reviewer P3 @S170)

  • #215 — > KEEP in MEMORY: S32 startup, S29 wrap summary (Run #229-#232 cumulative aggregate including #231 + #232 hotfix DemoSeed gate catch), S28 Layer A…
  • #216 — > KEEP in MEMORY: S32 startup, S29 wrap summary (Run #229-#232 cumulative aggregate including #231 + #232 hotfix DemoSeed gate catch), S28 Layer A…
  • #229 — > KEEP in MEMORY: S32 startup, S29 wrap summary (Run #229-#232 cumulative aggregate including #231 + #232 hotfix DemoSeed gate catch), S28 Layer A…
  • Run #215 — > KEEP in MEMORY: S32 startup, S29 wrap summary (Run #229-#232 cumulative aggregate including #231 + #232 hotfix DemoSeed gate catch), S28 Layer A…
  • Run #229 — > KEEP in MEMORY: S32 startup, S29 wrap summary (Run #229-#232 cumulative aggregate including #231 + #232 hotfix DemoSeed gate catch), S28 Layer A…