Files
solution-erp/docs/HANDOFF.md

13 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# HANDOFF — Brief 5 phút cho session tiếp theo
> **Tiering rule (S40):** giữ **2-3 session gần nhất**. Cũ hơn → `docs/changelog/sessions/`. Full brief history pre-S40 → `docs/_archive/HANDOFF-preS40-fullhistory.md`.
**Last updated:** 2026-07-07 (S105 — **Bootstrap all-green + BVAAU cross-repo assist (favicon + auth-RCA) + closeout eval-all — docs/memory-only 0 prod-code SE, em-main-led + 3 spawn.** Bootstrap: **440 ✓** · detector 36-benign 0-HIGH · 2 monitor RE-REPORT (**H2 tự-bắt mồ-côi record CHÍNH NÓ S104** → retro-append ×2 [self-record blind-spot gate-agent] · **H1 #53-garble lần-6 → recover-diary**, 2 flag → em-main vá **4 derived-flush**: skills/README:20 Mig62 + agents/README:3 + session-start:37 flip-chain + session-end:113 trailer→Fable) · ✅ **Fable VỀ lần 3** (flip-6, ×3 self-report runtime-verified). **BVAAU cross-repo (repo BENHVIEN_A_AU, anh gửi — chỉ đụng 1 file disjoint, session BVAAU kia live song song):** favicon Home teal-cross → brand thật (trắng+navy `#00249b`+pip nhà vàng, hệ S81) commit `0cc815b` (**prod-verify pending CI** — curl lúc đóng còn teal cũ) · investigator RCA 3-Q (⚠️ **#53 lần-7 → recover-path MỚI: SendMessage-resume** khi diary trống): **Q1** Home Google "đá-ra" = **FE mù session** (bundle cũ relative `/api` trên site tĩnh → 404 → anonymous; hub-side 7-nghi-vấn đều KHÔNG, cookie set đúng) — fix `51c69fb` CHÍNH session-BVAAU cùng-lúc, em **byte-verify LIVE** (Home `CtTKjYz2` + CRM1 `Cr8wJMpn` marker PRESENT) · **Q2** CRM1 hở 2 tầng → FE-redirect-home live; **API-gate `AUTH_ENFORCE_CRM_GATE=true` chờ anh** (đề nghị bật SAU UAT login ổn) · **Q3** User_ID Zalo KHÔNG có trong UI (ProviderUserId backend GIỮ — identity-map). `/fable-real` nhầm → hủy 0-marker. **eval-all:** MFE FIT (30-item 1.1% cap) + SUB 85-100% + A7 226/226 + 0-GAP + 0-AS-hit + guard #53-recover HELD 2/2. State GIỮ: **Mig 62 · 89 bảng · 440 test · gotcha 79 · menu 54**. **🔴 NEXT anh:** (1) **BVAAU test incognito** Home→Google→kỳ vọng vào Dashboard (vẫn đá-ra → soi LoginAudits/Serilog server-side); (2) quyết **AUTH_ENFORCE_CRM_GATE=true**; (3) carry S97: UAT incognito "8 MEP Sub Hệ thống solar" + **số-phiếu/user** vụ PE "lỗi phân quyền"; (4) trường User_ID anh Mỹ = ngoài repo, có hình gửi em truy tiếp. **🔴 NEXT em:** ✅ favicon BVAAU prod VERIFIED @refine-all cùng phiên (curl `00249b`=3/teal=0, CI `0cc815b` deployed) · Supplier Phase B 🅿️ PARKED giữ. → log `2026-07-07-S105-bootstrap-bvaau-auth-favicon.md`) · **Prev S104** (S104 — **Session-start audit bắt Mig 62 Supplier docs-lag → reconcile (docs/memory-only 0 prod-code, em-main-led + 2 monitor).** Cùng-ngày commit `778fc98` `[CLAUDE] Supplier: Mig 62 expand 30-field` (16:06, Opus) ship BE+FE 2-app + Mig 62 + deploy Run #488 NHƯNG bỏ closeout docs (STATUS/HANDOFF kẹt "Mig 61/S103"). Session-start `/session-start` bắt qua **governance-detectors 1 HIGH** (`STATUS Mig=61 disk=62`) + **2 monitor** (H1 4-mặt PASS + patch-list D1-D4 · H2 5-trục CLEAN: investigator-harvest-in-HEAD verified moved-not-cut + 3 cicd file uncommitted commit-worthy Run #488 bundle admin `ChSNAJBK`/user `Bn2w1znH`) + **`dotnet test` 440 PASS re-verified** (#65 no-bite). **Reconcile:** STATUS Mig 61→62 + mega-line + In-Progress S104 + Sub-agents S104-Opus + Supplier-backlog Phase-A + HANDOFF + ef-core SKILL row Mig 62 + commit 3 cicd memory. Mig 62 = Supplier 9→27 field (18 AddColumn) + `SupplierType +CaHai=6` + enum `SupplierStatus` + seed 4 NCC 30-field + FE 2-app SHA-mirror (form 4-section + `PathLink` NAS-link) — no new table (89), Phase B Excel-auto-map defer. ⚠️ runtime S104=Opus (Fable outage flip-5). State: **Mig 62 · 89 bảng · 440 test · gotcha 79 · menu 54**. **🔴 NEXT em:** commit S104 (2 commit docs/memory CI-skip) + ⚠️ restart CLI nếu S103 đổi command/agent (session-start/end + agents/README) chưa ăn. **🔴 NEXT anh (carry):** UAT **incognito** phiếu "8 MEP Sub Hệ thống solar" [fix 1-3 S97] + cho **số-phiếu/user** vụ "lỗi phân quyền vào phiếu" **Supplier Phase B** (Excel upload auto-map) = 🅿️ **PARKED theo anh S104** — chờ anh nhắc, KHÔNG tự khởi động. → log `2026-07-06-S104-mig62-supplier-reconcile.md`) · **Prev S103** (S103 — **AI_INFRA 6-broadcast adap (crystallized-backfill + Harness-20 + memory-hygiene) — governance/scripts-only, em-main-led + 2 workflow HMW-ON.** `/check-email` 3 new pulled+verified → `/adap-apply` hash-MATCH cả 6: **Harness-20** §L (dogfood model-note 4-tầng-sweep incl PERSONA + 220K→380K neo-supersede + **2-đầu-catch** review bắt 2 DẪN-XUẤT stale-trailer sweep-sót→fixed) · **F4 crystallized-backfill** NEW `scripts/crystallized-backfill.ps1` (measure-then-fill DRY, **default target=0=OFF** owner-authority, **file-floor=UPPER-BOUND honest** peak~368K) + `budget.json` config + budget-table wire · **F1/F3 already-met** · budget-runloop 2-tầng (**Up2 largely-already-met §L.b(c)**) · **H16 no-key** `scripts/applied-eval-nokey.ps1` (adversarial-gate fail-closed 3-ca + fault-inject FLIP; **mechanism-built numbers-DEFERRED**) · memory-hygiene A/B already-met **C n/a JS-sandbox**. engine §L+§M. 2-workflow: WF1 implement `wf_55ef6778-a0d` (schema-clean, selftest exit-0 ×2 + teeth) + WF2 review `wf_3c5c37cb-aa2` fable-clone (**Lane-C PASS returned + Lane-B recover-from-memory PASS**, 0-BLOCKING; ⚠️ **#53 garble ×3** [investigator + 2 review-lane]→em-main recover, **investigator AS-10 garble-curation REVERTED** git-backstop). **6 adap-report + 1 adap-request** (`…53-garble-reasoning-lanes-mitigation` — evidenced build-3/3-clean vs review-1/3 → N-lane-redundancy+narrow-schema+em-main-recover) + send-email `fc1e22ac` selftest-MATCH + STAGE-2 move. ⚠️ **runtime S103=Opus** (Fable outage lại, per-session flip S98→S101-Opus→S102-Fable→S103-Opus, H5-fallback revert-free). State GIỮ: Mig 61·89 bảng·440 test·gotcha 79·menu 54. **🔴 NEXT em:** ⚠️ restart CLI (2 script no-hot-reload-issue-free nhưng session-start/end + agents/README đổi) · mark-decision = **codify-only KHÔNG mark** (anh chọn S103, như H16/H17/H18; ACTIVE-MARKS giữ 5) · cicd verify Run mới (push có `scripts/*.ps1` → CI CHẠY không skip). **🔴 NEXT anh (carry S97):** UAT **incognito** phiếu "8 MEP Sub Hệ thống solar" [fix 1-3 S97] + cho **số-phiếu/user** vụ "lỗi phân quyền vào phiếu". → log `2026-07-06-S103-crystallized-backfill-harness-20-adopt.md`) · **Prev S101** (S101 — **H18 WF2 closeout + session-start audit — governance/docs-only, em-main-led + 1 review-workflow HMW-ON.** WF2 gốc `wf_31ea3985-92c` MẤT theo CLI-restart (TaskList empty) → đúng report-before-stamp KHÔNG bịa → **re-run fresh 3-lane `wf_955643c3-f7d` → PASS_WITH_CONCERNS 0-BLOCKING:** Lane-A detector-teeth PASS (fault-inject 4/4 tái-dựng độc-lập) · Lane-B ledger PWC (**1 CONCERN `workflows/README:51` nhãn-cũ "ledger orphan-scan" sweep-S100-sót → FIXED S101** + 2 NIT) · Lane-C PARTIAL (codify+n-a-H8+containment first-hand ✓; frontier-hash+reviewer_gate dựa **record-S100 do broadcast-inbound VẮNG repo** → process-gap). ⚠️ Lane-C **#53-garble tái-diễn** → em-main recover first-hand KHÔNG re-spawn. Stamp adap-report:5 + engine §J:283; **model-note reconcile: runtime=Opus S101** (Fable unavailable, settings pin fable → H5-fallback revert-free, tooling-auditor bắt). 2 monitor RE-REPORT clean (`513aa09` baseline). **🔴 NEXT em (CHƯA xong S101):** (1) `/send-email AI_INFRA` run-id `wf_955643c3-f7d` + **3 flag** (reviewer_gate-field-missing · frontier-hash-mismatch · **process-gap broadcast-inbound-not-committed**) → (2) commit docs-only **CI-skip** (KHÔNG scripts/src → path-filter #41) + cicd #486 dirty-delta gộp. **🔴 NEXT anh (carry S97):** UAT **incognito** phiếu "8 MEP Sub Hệ thống solar" [fix 1-3 S97] + cho **số-phiếu/user** vụ "lỗi phân quyền vào phiếu". ⚠️ restart CLI nếu đổi command/agent. **PART 2 (`/check-email AI_INFRA` + `/adap-apply`, anh-directed):** ack `batch13` (AI_INFRA ack trọn 13 báo-cáo, SE bắt-kịp H-17, Fable-restore H-8 ghi-nhận) + **re-stamp H10** body-hash + **frontier flag#2 RESOLVED** (AI_INFRA re-stamp `8b6a8354`=SE-computed). **H19 fable-clone FORMAL ADOPT + RC-stamp `RC-…03-07-2026-17-46-35`** (2-workflow WF1 `wf_5f308fd8-744` + WF2 `wf_ed5b972f-a4d` PASS_WITH_CONCERNS): 2 command `/fable-real`+`/fable-clone` thật/ảo-toggle + marker gitignored + engine **§K** + session-start **BƯỚC 0.5b reader** + 4 adap-report; model-tier **12/12** (all-inherit form-valid). Mapping reviewer+investigator-codebase; VACUOUSLY-MET-honest. **GAP-3 AS-10 fired-LIVE** (WF2 lanes tự-ghi reviewer-memory → dogfood-validate convention). **🔴 NEXT em PART-2 (CHƯA xong):** `/send-email AI_INFRA` (ack-reply + model-tier 12/12 + H19 run-id WF1+WF2 + re-stamp-H10-confirm) + commit docs/.claude-only (CI-skip). **⚠️ restart CLI** (2 command fable-* + BƯỚC 0.5b + send-email 6c = no-hot-reload). → log `2026-07-03-S101-h18-wf2-closeout.md` + `2026-07-03-S101-h19-fable-clone-adopt.md`) · **Prev S100** (S100 — **Harness-18 adopt + frontier HELD-integrity — governance/scripts-only, em-main-led + WF1 `wf_50a817ce-a69` / WF2 `wf_31ea3985-92c` (IN-FLIGHT lúc đóng).** Hash: H18+checklist MATCH ✓ / **frontier MISMATCH → HELD** (không codify, đề nghị re-stamp) + cả 3 thiếu `reviewer_gate` field → flag AI_INFRA. Adopt: **J.A detector v2** (ratio-band mismatch-only + glob commands/skills, fault-inject 4/4, MED 11→0) · **J.B retire `_ledger.md`** (0/15 lifetime + mode-A 0/8, freeze 🧊 reversible, sweep 15 điểm/8 file, orphan = folder-scan) · **J.C** 2/3 n-a-by-H8 + revisit viết ra · **J.D** spot-check wired §L.b(i) + REUSE CG-1. Frontier self-audit: **cron monthly = ghost-wire THẬT (CronList=0) → honest-retire 5 file** (audit thủ-công em-main, vẫn đúng hạn) · 3 script đo GLOB-LIVE · defer D-1/D-2 backlog. Hygiene: F2 SendMessage patch (KHẢ DỤNG lại, runtime-verified) + B1-pointer 130/cron-date + trailer Fable. Checklist **10/12 ĐẠT + 2 n-a-reasoned**. 3 adap-report committed. Test 440 ✓ đầu phiên + 2 monitor ALL-PASS/CLEAN (`513aa09`). **🔴 NEXT em (#1 việc đầu session kế):** đọc WF2 (`w4xb4vlm2`) → fix theo verdict → điền run-id §J + report H18 → harvest reviewer → **`/send-email AI_INFRA`** (2 flag trên) → cicd-verify Run mới (push S100 có `scripts/*.ps1` → CI CHẠY, không skip). **🔴 NEXT anh (carry S97):** UAT **incognito** phiếu "8 MEP Sub Hệ thống solar" [fix 1-3 S97] + cho **số-phiếu/user** vụ "lỗi phân quyền vào phiếu". ⚠️ **restart CLI** (session-start/end + agents .md đổi — no hot-reload). → log `2026-07-02-S100-harness-18-adopt.md`) · **Prev S98** (S98 — **Harness backlog batch ĐÓNG** — docs/memory-only, 2 commit `4263d63`+`8a249c5` CI-skip: Fable-restore gỡ caveat H5.6 (spawn-test ×2 self-report `claude-fable-5`, H8 runtime-verified) · monthly→2026-08-01 · skill ef-core +Mig 60/61 · re-tier S93/S94→archive-S98 · 3 orphan-append H2 + cicd L1 curate + sleep-compress implementer-frontend · email AI_INFRA. State: Mig 61·89 bảng·440 test·gotcha 79. **🔴 NEXT anh (carry S97):** UAT **incognito** phiếu "8 MEP Sub Hệ thống solar" [fix 1-3 S97] + cho **số-phiếu/user** vụ "lỗi phân quyền vào phiếu". **NEXT em:** patch session-start.md F2 SendMessage-note @session-end + monthly count-grep mở rộng `commands/*.md` (H1 P3/P4). *(Flip hồi-tố @S99-start — H1 F1.)*) · **Prev S97** (S97 — **PE finalize 4-fix UAT anh Kiệt FDC buổi live — em-main-led, prod-verified Run #481+#482.** **(1)** badge `"không trình tới"`→**`"Kết thúc tại {finalizeLevelName}"`** (hiện "Kết thúc tại CCM")+tooltip. **(2)** đảo default checkbox "Cấp KẾT THÚC" **opt-out→opt-in** (`useState true→false`+reset+helper reword+comment-drift fix). Mirror 2-app SHA `bcf812fd`, 0 BE/mig/test (BE tôn trọng cờ FE; param default=fallback). Workflow `wf_0e01fdba-209` (reviewer PASS 0-issue). Commit `1c8fb6a`. **cicd #481 PASS byte-level #77:** JS admin `COYAX-yQ`→**`Cf0o8dx8`**/user `0MU-kb4N`→**`x8rppRAK`** · NEW `Kết thúc tại`+helper PRESENT / OLD `không trình tới`+`Đã BỎ tick` ABSENT · Mig 59/88 frozen · smoke 200×3. **Lesson:** #53 return-garble **lần-4** (cicd trả memory-curation thay verdict → recover-from-diary NO re-spawn) · BE-honors-explicit-flag → đảo-default chỉ-FE zero-BE-churn. **(3) endsBeforeCeo config→RUNTIME (Mig 60 `EndedByLevelFinalize` `8037fa0` #482 cross-stack):** phiếu opt-out finalize→lên CEO nhưng sơ đồ báo sai "không qua CEO" (endsBeforeCeo suy config). Fix field runtime set-nhánh-finalize → DaDuyet đọc runtime; 4 projection + FE gate + backfill; test 440 (repro peFinButWentCeo) + reviewer PASS 0-issue + cicd #482 **bug fixed LIVE** (PE-detail endsBeforeCeo=False). gotcha #78. **(4) badge "✅ Đã được CEO duyệt" (`9e12e80` #483 FE-only):** phiếu DaDuyet+`!endsBeforeCeo`→PeFinalizeChip badge (đối xứng fix-3, tận-dụng cờ runtime, 0 BE/mig, mirror 2-app+6 site, byte-#77 PRESENT). **(5) Mig 61 backfill fix (`fb2dfa9` #484 data-fix):** check A/005 "CEO duyệt chưa" → A/005/A/008 finalize-CCM KHÔNG qua CEO nhưng badge sai (Mig 60 backfill nhầm bảng Approvals→Changelogs). Mig 61 đúng bảng → prod A/005/A/008 flag 0→1 endsBeforeCeo-True (cicd #484), A/010 control. gotcha #79. **State: Mig 61·89 bảng·440 test·gotcha 79·menu 54·bundle admin `mEGqlNWc`/user `Dnrp4PU1` (Run #484 data-fix, #69-rebuild rotate — `CeTA7Z82`/`CGaAyXen` = #483)·prod 21 NCC/17 user.** **🔴 NEXT anh:** UAT **incognito** phiếu "8 MEP Sub Hệ thống solar": (a) sơ đồ hết "không qua CEO" + Bước 3 CEO KHÔNG mờ [fix-3], (b) badge+checkbox [fix 1-2] (+ vụ cũ "lỗi phân quyền": số-phiếu+user). **🔴 NEXT em:** monthly re-tier mega-line (giờ 5-blurb). → log `2026-07-01-S97-pe-finalize-wording-default-flip.md`) · **Prev S96** (S96 — **buổi UAT LỚN anh Kiệt/chị Trà/anh Chương live + monthly-audit, em-main-led, 5 commit prod-verified.** **(1)** Monthly drift audit `881783c` (docs-only CI-skip): ef-core SKILL Mig→59 + rows 57/58/59 · skills/README + docs/CLAUDE Budget-removed · **`vocab-alias-map.md` MỚI** (3 fork + `$ExcludeExact`) · **re-tier mega-line 5→3** (S92/S91→archive, conservation delta=0 BOM) + hoist UAT-carry→blockers · **FD distill** (H17 strike-1 CLEARED L1 26129→21492B + archive/`_INDEX`/gist + Lessons L1). Workflow `wf_2d687d27` 4-cluster (reviewer bắt #74-drift + AS-10 residual reverted). detector 27→25. **(2)** Import NCC **DONGDUONG** `ba4b8e0` (Excel anh Kiệt; 3 NCC đã sẵn → +1 no-mig prod 21 NCC Run #477); backlog 15-18 field→Next-up. **(3-5)** 3 PE bug-fix UAT: `e657faa` ô "KẾT THÚC quy trình" (S89-auto)→**opt-out bỏ-tick-được** (2-tier grant/exercise +`applyLevelFinalize`, #478) · `36cbf8b` **chuông tự-sạch** noti "cần duyệt" (mark-read ExecuteUpdate BE-only, #479) · `0c2f9f6` **khóa sửa giá PRO/CCM sau gửi-duyệt** ("duyệt là fix" non-admin Nháp/TraLai+Admin-override, +4 test, #480). Test 434→440. **Delete-sau-duyệt = ĐÃ chặn sẵn**. Checkbox "ko-được" = **browser-cache** (verify byte-level prod `0MU-kb4N` chứa fix; incognito golden). **State: Mig 59 · 88 bảng · 440 test (45D+395I) · gotcha 77 · menu 54 · bundle admin `COYAX-yQ`/user `0MU-kb4N` · prod 21 NCC/17 user.** **🔴 NEXT anh:** ⚠️ restart CLI · UAT **incognito** checkbox + cho **số-phiếu/user** vụ "lỗi phân quyền vào phiếu". **🔴 NEXT em:** cicd S-tag-drift S97/S98→S96 reconcile (closeout) · monthly re-tier mega-line (giờ 4-blurb). **Lessons:** verify-deployed-artifact-byte-level (cache≠deploy; incognito golden — gotcha #77) · #53-return-garble ×3 recover-from-agent-memory (instruction-fix "return-verdict" ăn) · 2-tier-permission · spec-change→update-test. → log `2026-07-01-S96-uat-pe-fixes-monthly-audit.md`) · **Prev S95** (S95 — **Harness-17 adopt (Vòng tự-cải-thiện bộ-nhớ Đo→Tinh-chỉnh→Kiểm) — governance-only 0 prod code, em-main-led 3-workflow.** `/check-email AI_INFRA` (0 directed mới; H16 áp trọn S93) → `/adap-apply` H17 (2 broadcast hash-MATCH `reviewer_gate:PASS`). **10/10 mục 🔴:** REUSE-cite A2=§H MFE/C3=D9/CG-2=value_protect/archive=§A + **build mới** `scripts/memory-selfimprove-audit.ps1` (C1 spec-audit NO-API, **runtime-verified bắt frontend-designer over-cap thật**) + `.claude/governance/reinject-ledger.md` (B2 CG-1 N=3) + engine §I + `session-start §2.1.7`/`session-end §L.b(c)` wire + HCV alias no-seed. **3-workflow:** WF1 `wf_f085d7c4-d78` ground-truth + WF2 `wf_8e73c1d6-ee6` 3-lane PASS + WF3 `wf_6f44eddf-680` **fault-injection 13-inject teeth-proof** + integration + cross-doc (0 application-defect). **2 commit:** `18a17f5` (cicd **Run #476 PASS** prod 200×3 bundle `0T6vVJST`/`BGXEVZO6` Mig 59) + `65b434a` (docs-only CI-skip). adap-report + 2 email AI_INFRA (`54789e19`+`8c94fa34`). **Dogfood AS-10 4-fire reverted** (git-diff = net thật; **WF3 explicit-return-only STILL self-wrote → instruction-fix NOT 100%**, E-006 recurrence, guard HELD 4/4; cicd-monitor diary KEPT = legit normal-spawn). **Lessons:** fault-injection-`-RepoRoot`-temp chứng checker-teeth · Lane B #53 empty→em-main self-gate. **State: Mig 59 · 88 bảng · 434 test · gotcha 76 · menu 54 · prod 17 user/7 NCC.** **🔴 NEXT anh:** ⚠️ restart CLI (§2.1.7 + §L.b(c) H17-loop wire runtime — command `.md` no hot-reload). **🔴 NEXT em:** frontend-designer distill (WATCH strike-1 = H17 loop's live finding, chờ strike-2/anh) · monthly **2026-07-01 (hôm nay)** re-tier STATUS/HANDOFF mega-line + ef-core SKILL Mig→59 + docs/CLAUDE Budget-removed + 3 vocab-fork alias-map. **Pending product (carry):** Section B cột Dự-án · Ngưỡng CEO Mig 54 · "C" chuyển phiếu→dự án. → log `2026-07-01-S95-harness17-adopt.md`) · *(S93-S94 blurb đã tách → `docs/_archive/STATUS-HANDOFF-tier-S98-2026-07-02.md`, re-tier S98; session ≤S90 → `docs/_archive/STATUS-HANDOFF-tier-S94-2026-06-29.md` + `docs/changelog/sessions/`, re-tier S94)*
---
## 📚 Session detail cũ (S84 → trở về trước)
> Brief 4 session gần nhất (S98/S97/S96/S95) = mega-line trên (re-tier S95 defer monthly 2026-08-01). Blurb S93-S94 → docs/_archive/STATUS-HANDOFF-tier-S98-2026-07-02.md (re-tier S98). Chi-tiết per-session S84↓ đã tách (re-tier S94) → docs/_archive/STATUS-HANDOFF-tier-S94-2026-06-29.md + bản đầy-đủ ở docs/changelog/sessions/.