Files
solution-erp/docs/changelog/sessions/2026-06-29-S93-pe-projectcode-harness16-mfe.md
pqhuy1987 ea075bac00 [CLAUDE] Docs: S93 closeout — PE project-code (Run #473) + Harness-16 MFE adopt + harvest
Closeout 2 task: (1) PE tree node Du an hien MA du an (8ee8f3e Run #473
prod-verified) (2) adopt Harness-16 MFE memory-fidelity-EVAL (9580098, 2-workflow PASS).

- STATUS + HANDOFF: prepend S93 (mega-line via PowerShell, S92->Prev).
- session log 2026-06-29-S93-pe-projectcode-harness16-mfe.md.
- error-ledger E-006: AS-10 2nd-fire recurrence (WF1 3-agent residual caught+reverted;
  WF2 explicit-return-only -> 0 residual) + containment guard verified S93.
- harvest (B3 single-writer APPEND): investigator-codebase (MFE ground-truth extraction-spec)
  + reviewer (MFE adoption review WF2 PASS) diaries.
- user-MEMORY index compacted 23.7->7.8KB (hook), all 38 entries kept, vocab-collision
  lesson folded into 2-workflow entry.

State unchanged (Mig 59 · 88 tables · 434 test · gotcha 76 · bundle CDn40vpV/CoPmPBg7).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 19:01:19 +07:00

45 lines
6.8 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.

# S93 (2026-06-29) — PE tree project-code (anh Kiệt) + adopt Harness-16 MFE (2-workflow)
> HMW-mode ON. 2 việc: (1) sản phẩm PE prod-verified · (2) governance adopt 0-production-code. ~9 agent/workflow spawn.
## Task 1 — PE: cây Duyệt NCC node Dự án hiện MÃ thay tên dài (prod-verified Run #473 `8ee8f3e`)
**Anh Kiệt FDC (Zalo + screenshot):** node 📁 Dự án trong cây "Năm > Dự án > Hạng mục > Phiếu" hiện TÊN dài ("Phân xưởng homecare 75 tấn/ngày và các hạng mục") → "bắt mã dự án nhé" (tên quá dài, user thấy vướng).
**Chẩn:** `PurchaseEvaluationsListPage.tsx` tree render `pg.projectName` (line 452). `PeListItem``projectName` nhưng KHÔNG `projectCode`; BE list query select `p.Name` không `p.Code`. → cross-stack tight (1 field BE→FE) = em-main solo nhanh hơn fan-out.
**Fix (7 file, 17+/10, NO migration):**
- BE: `PurchaseEvaluationListItemDto` +`ProjectCode` (positional record) + thread `x.p.Code`/`p.Code` vào **3 projection** (List 622 + Inbox 739 + ListApproved-from-evaluation `CreateContractFromEvaluationFeatures:178`) + search PE khớp thêm `p.Code`.
- FE 2 app SHA-mirror: `PeListItem` +`projectCode`; tree node render `pg.projectCode || pg.projectName` + tooltip=tên + sort theo code (fallback name).
- **3 DTO construction site** — `replace_all` bắt 2, grep `new PurchaseEvaluationListItemDto(` bắt site #3 (`e.ProjectId, p.Name,` không có `x.` prefix → thoát replace_all) → BE build đỏ CS7036 → fix. **Bài học `feedback_cardinality_change_grep_consumers`: đổi positional record = grep MỌI construction site.**
**Verify:** dotnet build 0/0 · npm build ×2 PASS · test **434** (45D+389I). Commit `8ee8f3e` → cicd **Run #473/#359 PASS** ~5m23s: bundle admin `xz8FdmLN`→**`CDn40vpV`** / user `CA8Rla2w`→**`CoPmPBg7`** (JS rotate, CSS frozen logic-only); Mig prod=59 unchanged; smoke 4×200. **NEXT UAT anh Kiệt:** node 📁 hiện FLOCK02/RMIT01 (mã) thay tên; nếu ô khoanh là Hạng-mục (không phải Dự-án) → đổi sang work-item code (1 phút).
## Task 2 — adopt Harness-16 MFE (memory-fidelity-EVAL), commit `9580098`, 0 production code
**Flow:** `/check-email AI_INFRA` (0 thư directed mới) + `/adap-apply` (33 broadcast vs 23 report) → **MỚI = Harness-16 MFE (3 broadcast 29/06)**; H15-v3-sub-load-channels = covered-S83 + fold; 8 broadcast cũ = verify-covered (name-drift).
**2-workflow mandate (Harness-9):**
- **WF1 IMPLEMENT** `wf_4c63e1bd-99e` (3 agent ground-truth: lead-denominator-spec + sub-role-denominator + cross-harness-map). **Bắt 1 BLOCKING vocab-fork** (xharness reviewer): "memory-fidelity" ĐÃ là H6.7 `memoryDelta`-routing-fidelity → đặt tên H16 = **MFE = memory-fidelity-EVAL**, ghi alias-map §H, KHÔNG seed `$aliasSets` (2-khái-niệm-1-từ ≠ fork-to-merge). **#53 recover-from-disk:** sub-role-denominator agent return rỗng nhưng ĐÃ ghi finding vào diary trước → em-main đọc lại.
- **AS-10 2nd-fire dogfood:** 3 WF1-agent (return-only) tự-ghi agent-memory (diary + archive-self-curate + stray `project_s92_*` mis-named) → git-diff post-P2 containment bắt ALL → em-main revert (giữ cicd-monitor PE-harvest). Guard HELD. → ledger E-006 recurrence.
- **em-main author** (single-writer, 8 artifact): `scripts/mfe-eval.ps1` (deterministic NO-API ASCII#30 exit-0: LEAD coverage-FIT token-RANGE live-read-cap + age-band flag-not-cut + Goodhart-anchor strikes/RCA · SUB per-role coverage đo-thật content-word-match defeat-leading-verb · sub-workflow N/A · prose-role→N/A KHÔNG 0%) + `budget.json:mfe` config + `eval/mfe/` (seed 12-câu stable-id + README) + engine §H + artifact-row + C3-comment + wire `session-start §2.1.6`/`session-end §L.b(c)` opt-in + agents/README S93. Judge layer = SCAFFOLD-only (honest: số chưa nghĩa tới khi age-mature + independent judge).
- **WF2 REVIEW** `wf_13e3d35a-023` (3 lane) = **PASS 0-blocking, RETURN-ONLY honored (0 residual** — WF2 thêm "do NOT write" prompt → instruction-fix worked): code-gate re-derived denom-29 to-the-digit + leading-verb-trap adversarial-probed-DEFEATED; cross-harness READ-ONLY-budget proof (1 write-op=.mfe-state.json) + 0-conflict; honesty 5-floor + live-numbers-KHỚP-§H (S81 stale-config trap KHÔNG tái). 2 minor → fixed (read_only_scope caveat + README judge-cost wording).
**MFE đo SE hiện tại:** LEAD denom **29 item** (4 mark + 13 AS + 5 guard + 7 gotcha, dedup-by-AS-cross-reference) / 220K = **1.5%** FIT thừa; Goodhart strikes 21/RCA 9. SUB: impl-backend 94% · impl-frontend 85% · reviewer/inv-codebase 88% · cicd 100% · 3 prose-role N/A.
**Artifact:** adap-report `2026-06-29-Governance-harness-16-mfe.md` + `2026-06-21-Governance-harness-15-v3-sub-load-channels.md` (covered/folded) + email `outbox/ai_infra/2026-06-29-se-to-ai_infra-harness-16-mfe-report.md` (hash `da768330…`) + `.gitignore` state-file. commit `9580098` push (docs-only CI-skip).
## Lessons
- **Cardinality/positional change = grep MỌI consumer** (`feedback_cardinality_change_grep_consumers`) — site #3 thoát `replace_all` vì viết khác prefix; chỉ grep construction-site toàn repo mới lộ.
- **Vocab-collision on adoption** — adopt khái-niệm-có-tên → grep term-collision (tên mới có thể đã mang nghĩa khác trong hệ); 2-workflow review là cái bắt được (1-workflow self-chấm sẽ trượt). alias-map ≠ seed-detector (2-concept-1-word KHÔNG phải fork-to-merge). Folded vào memory `feedback_harness9_l2_recovery_2workflow_adap`.
- **AS-10 instruction-fix:** workflow-agent frontmatter "update MEMORY before return" đấu với return-only → prompt PHẢI override tường-minh ("do NOT write ANY file") + git-diff post-P2 = net. WF1 (không override) → 3 residual; WF2 (override) → 0 residual.
- **MFE dogfood "đóng vòng":** detector D1 OOM đầu phiên (STATUS mega-line 61K-char) = "đã-nạp khổng-lồ nhưng dùng được %?" — đúng câu hỏi MFE trả lời.
## State THẬT (GIỮ NGUYÊN — Task 2 = 0 production code; Task 1 NO-migration)
**Mig 59 · 88 bảng · 434 test (45D+389I) · gotcha 76 · menu 54 · bundle admin `CDn40vpV`/user `CoPmPBg7` · prod 17 user/7 NCC.**
## 🔴 NEXT
- **Anh:** ⚠️ restart CLI (MFE opt-in + wire session-start/end + agents/README no hot-reload) · UAT eoffice node Dự án hiện mã (anh Kiệt).
- **Em (carry):** monthly **2026-07-01 (2 ngày) GẤP** — re-tier STATUS/HANDOFF mega-line (detector D1 **OOM do bloat** = tooling vỡ, không chỉ "khó Read") + ef-core SKILL Mig→59 + docs/CLAUDE Budget-removed + 3 vocab-fork alias-map. + curate test-specialist/FD L1 WATCH (carry). MFE retention chạy `/session-start … eval` sau restart.
- **Pending product:** Section B cột Dự-án wire · Ngưỡng giá CEO Mig 54 Designer UAT · "C" chuyển phiếu→dự án chờ spec.