# Memory Index — SOLUTION_ERP

> One line per memory. **Feedback** = how I work · **Project** = ongoing context · **Pattern** = reusable scaffold. Detail lives in topic files; this index = recall hook only. Compacted S93 (was 23.7KB).

## Feedback — how I should work
- [Charter v2 — infra ownership](feedback_aiinfra_charter_v2.md) — AI_INFRA owns infra (RAG/MCP/agent/skill); SE focus product, phản-biện infra chỉ khi derail
- [Monthly drift audit](feedback_monthly_drift_audit.md) — cron ngày 1: investigator ground-truth-from-disk → em-main patch từng cite (gotchas no self-count)
- [STATUS/HANDOFF tiering](feedback_status_handoff_tiering.md) — giữ lean (current + 2-3 session); archive verbatim trước rewrite; re-ground count từ code
- [Implementer truncation mitigation](feedback_implementer_truncation_mitigation.md) — heavy scaffold truncate mid-MEMORY; Strategy B = em-main proxy-append next session
- [High→Max multi-agent quality](feedback_high_to_max_multiagent_quality.md) — Max reasoning ↑ cross-stack reliability; Max re-review wire/financial claim BẮT BUỘC
- [Background spawn visibility](feedback_background_spawn_visibility.md) — long foreground spawn "looks frozen" → `run_in_background` + report ngay
- [RAG MCP recovery + concurrency](feedback_rag_mcp_recovery_concurrency.md) — MCP rớt → quit+relaunch FRESH trust .mcp.json (KHÔNG resume); KHÔNG 2 SE-session cùng repo; git-add file cụ-thể
- [store_memory rebootstrap protection](feedback_store_memory_rebootstrap_protection.md) — at-risk ⟺ content NOT in {exists ∧ corpus-glob ∧ not-excluded}; promote-to-disk twin trước re-bootstrap
- [Session-end memory write verify](feedback_session_end_memory_write_verify.md) — closeout Write có thể 0-byte (#53); verify byte>0 sau mỗi memory Write (S45 mất index)
- [AI_INFRA adap-* channel](feedback_aiinfra_adap_channel.md) — federated adoption /adap-apply|report|request; read outbox→apply own repo→adap-report (§J2); lead=sole RAG-writer
- [Monitor residual-write containment](feedback_monitor_residual_write_containment.md) — propose-only sub vẫn Bash-write được (G-015); git-diff commit-gate = backstop THẬT (AS-10/E-006)
- [Agent kill/truncation recovery](feedback_agent_kill_recovery.md) — kill/truncate/die-0-byte giữa task → recover qua git/disk/prod truth + em-main-solo redo + self-gate evidence-checklist (S52)
- [Agent cwd-relative memory mis-land](feedback_agent_cwd_relative_memory_misland.md) — sub cd subdir → MEMORY Write rơi `<subdir>/.claude` stray; session-end git-status scan + reconcile (S54)
- [Harness-7 outward writing quality](feedback_harness7_outward_writing_quality.md) — outward (email/broadcast/report + lead→anh) = full-grammar VN; internal stays compressed (asymmetric, S64)
- [Workflow fan-out reliability](feedback_workflow_fanout_reliability.md) — fan-out parallelism thật; return: schema-NHỎ 3-field 4/4-clean S108 (S73 "tránh schema" thu hẹp còn schema-SÂU) + free-text VERDICT-header-dòng-1; 2 bẫy Workflow-tool: args-đến-dạng-STRING → parse-guard · `tier:` hmw-only → generic dùng `model:'opus'` (S65/S73/S108)
- [Fault-injection proves teeth](feedback_faultinjection_proves_teeth.md) — chứng checker/guard có RĂNG bằng inject-lỗi-vào-cây-tạm (`-RepoRoot`) → confirm FLAG, KHÔNG chỉ happy-path PASS; boundary + anti-Goodhart-flip; verify anchor bằng chính regex script (S95)
- [Harness-9 L2-recovery + 2-workflow adap](feedback_harness9_l2_recovery_2workflow_adap.md) — mỗi adap = 2 workflow (impl+review) + run-id; L2 _INDEX/gist dark-matter recovery; self-gate khi reviewer no-schema (S70); **+ vocab-collision-check on adopt** (review bắt tên-trùng: memory-fidelity H6.7≠H16; alias-map KHÔNG seed detector, S93)
- [Stale diagnostic in background agent](feedback_stale_diagnostic_background_agent.md) — IDE diagnostic giữa agent NỀN = snapshot dở; chỉ tin build SẠCH chạy SAU agent (gotcha #68, S69)
- [Harness-10 run-trace folder](feedback_harness10_run_trace.md) — git-tracked `runs/<id>/` FLAT (`sub-*`+`*-synthesis.md`); raw-Workflow≠writeGuard→residual caught+revert; detector-tailored-out (S71-72)
- [Harness-11 engine adopt](feedback_harness11_engine.md) — engine governance tự-bảo-trì: `governance-detectors.ps1`+`memory-archive-gate.ps1`; B1 derived-trỏ-canonical; #30-via-Edit (.ps1 pure-ASCII+code-point) (S75)
- [Canonical spec over broadcast](feedback_canonical_spec_over_broadcast.md) — adap khi anh trỏ LỆNH canonical → pull command/§P/ledger, ĐỪNG phỏng-theo broadcast cô-đọng; report-before-stamp (S79)
- [Review presentation & stale config](feedback_review_presentation_and_stale_config.md) — review độc-lập bắt honesty-PRESENTATION gap + stale-config đánh-lừa reviewer; tighten-wording + re-measure TRƯỚC review (S81)
- [Derived-flush = execution](feedback_derived_flush_execution.md) — derived-doc flush khớp canonical owner-set = em-main tự làm KHÔNG gate; chỉ ĐỔI con-số/policy = quyền anh (S84)
- [Cơ-chế đúng, dữ-liệu không có](feedback_mechanism_right_data_absent.md) — lớp ×6; UAT báo "không chạy" ⇒ ĐO DỮ LIỆU PROD trước, đừng đọc/viết code (S157: auto-fill đúng, 57/62 dự án rỗng `Location`)
- [Root-cause over symptom](feedback_root_cause_over_symptom.md) — bug lặp sau band-aid → truy field/case LỆCH-quy-ước vào pattern đã-đúng = fix 1 chỗ; verify "tạo lỗi MỚI còn lặp?" (S85, #72/#73) · **+S122 anh nêu: (i) được-chỉ-1-chỗ ⇒ PHẢI grep cùng-lớp (script thứ-2 lòi ra khi anh hỏi — thoát vì MAY) · (ii) 🔴 bài-học nằm-trong-context KHÔNG tự bật (file này auto-inject mà lead vẫn vá triệu-chứng; +SHA-bịa tái-phạm sau 1 NGÀY) ⇒ chặn được = LUẬT soi-được, không phải trí-nhớ · chứng: hardcode sống 27 ngày qua 1 đợt "double-check" vì nó hỏi "logic đúng?" mà logic VẪN đúng · truy-gốc ≠ tự-sửa-gốc (harness owns → R6 hỏi hub)**
- [Cardinality change grep consumers](feedback_cardinality_change_grep_consumers.md) — đổi field single→multi = grep MỌI consumer; sửa write-site sót read-site → vỡ feature (S87/S88 PE multi-winner)
- [Prod config: inspect-before-change](feedback_prod_config_inspect_before_change.md) — đổi config prod = inspect LIVE trước (runbook STALE); backup→apply→verify-LIVE→commit; replicate mọi rule cũ + delta (S88)
- [Wipe durability — check re-seed](feedback_wipe_durability_check_reseed.md) — sau prod-wipe audit seeder: ungated per-code seed RE-ADD mỗi restart; gate sau env-flag + verify-by-restart-THẬT (S91, #75/#76)
- [Verify deployed artifact byte-level](feedback_verify_deployed_artifact_byte_level.md) — UAT "fix chưa ăn" sau deploy → curl-grep bundle prod byte-level (cache≠deploy); incognito=golden-test (S96, #77)
- [Agent return-garble recover](feedback_agent_return_garble_recover.md) — sub trả wrong-slice-of-transcript thay verdict (#53, **×66-cận-dưới qua S158 — derive-from-body, đếm-cái-chắc** [🔴 **S158 = ĐỐI-CHỨNG NỘI-PHIÊN SẠCH đầu tiên (cùng lead/ngày, khác đúng 1 biến): ép-ghi-đĩa KHÔNG giảm garble (2/2 vẫn garble) nhưng đưa thiệt-hại về 0 B** — 4 vai không-ép mất TOÀN BỘ phải resume, 2 vai có-ép mất 0; ⇒ chống #53 = thiết-kế ARTIFACT không phải PROMPT, xác nhận lần 5 · **+2 sub-class**: `skeleton-nấc-2` (1.661B byte>0 mà ruột toàn heading ⇒ guard "verify byte tăng" KHÔNG bắt được) · `engine-process-exit` (0 delta đĩa = lượt chạy chưa từng tồn tại) · **câu garble CHỨA finding thật, đừng vứt** (ring1/ring2 chết ngay chỗ nghĩ sắc nhất) · S153-S157 CHƯA đếm được — "~27" của lead-gap neo bằng SỐ DÒNG `_mind`, ring2 bác, KHÔNG nhập tally]; [qua-S148 33 · S149 ×5 · S150 ×7/7 · S151 ×5/6 write-boundary · **S152 ×10 (7 @open + 3-chắc @close, 2 UNKNOWN-sau-compact không đếm; ring2-STRICT + trio = 4 CLEAN cùng phiên; MỚI: pin-bản-cắt 4-A — file ghi-từng-finding LUÔN hợp-lệ giữa chừng, lead pin 16.911B/30.195B mất 3 FLAG → đề END+TOTAL-line chờ owner; commit-subject `1b85713` "53"=SAI errata)** — skeleton-rỗng 2-strike → AS-17; `ngược-#53` ×3 lifetime]; S143 ×5 5/5-sub; +path-4 lead-on-behalf; **+sub-class S150 `ngược-#53`/`skeleton-ruột-rỗng` ⇒ ghi-đĩa-trong-lúc-làm = CẦN KHÔNG ĐỦ — verify byte-content**) → recover: **(0) WRITE-lane→disk-truth (git+build+test) · VERIFY-lane→em-main-re-curl+sqlcmd (2-nguồn-khớp)** → (1) diary → (2) SendMessage-resume in-session → (3) em-main solo; garble ∝ reasoning-lane; **WRITE-lane garble≠mất-code** (S114 ×5); cicd tái-phạm dai + tự-dán "CLEAN-return" sai (harvest-curator bắt S118)
- [H18 ghost-wire + stamp-integrity](feedback_h18_ghostwire_stamp_integrity.md) — hash-verify TRƯỚC khi áp broadcast (bắt stamp-then-edit THẬT → HELD + re-stamp); ghost-wire 2 class (cron-claim CronList=0 · config-key defined-but-unread); KHÔNG stamp run-id chưa chạy (S100)
- [Resume premise re-verify](feedback_resume_premise_reverify.md) — re-verify tiền-đề từ ĐĨA trước execute (header+git-date, match NỘI-DUNG KHÔNG tên-file 1:1); **S121: bảng-kế-hoạch ≠ đĩa — "không-ai-được-giao" ≠ "chưa-làm"; khẳng-định trạng-thái-đĩa = phải chạm đĩa 1 lệnh**; +bẫy `grep -c` (dòng) vs `-o|wc -l` (occurrence) trên mega-line; +bẫy Get-Content-no-Encoding no-BOM = ANSI đếm ×2-3 → báo-số-sai-owner, đính-chính-ngay (S130 E-010/AS-14); +acceptance literal tự-lão-hoá (S109/S121)
- [Permission grant = 2 layers](feedback_permission_grant_two_layers.md) — cấp/verify quyền = display-layer (menu CanRead) ⟂ API-authz-layer (controller `[Authorize(Policy)]`) 2 tầng ĐỘC-LẬP; grep authz controller đích TRƯỚC khi tin grant (menu-ẩn ≠ API-đóng; `[Authorize]` trần = lỗ hổng); reviewer-adversarial bắt, em-main-solo sót (S118, #82)
- [Meta-count self-coverage blind-spot](feedback_meta_count_selfcoverage_blindspot.md) — lead ĐO tốt (~80% đúng) nhưng ĐẾM-VỀ-MÌNH sai (~13%, tập trung TRỌN ở meta-count/coverage); "vá 19 finding" khi thật 23 = con-số đóng vai đã-phủ-hết → bảng disposition TỪNG DÒNG thay số tổng; giữ kết-luận thì giữ cả caveat (S119)
- [Return terminates agent](feedback_return_terminates_agent.md) — CẤM lệnh "trả verdict TRƯỚC, làm việc SAU" = bất-khả-thi vật-lý; sub mô-tả ý-định rồi tắt → claim-sai mà lỗi ở LỆNH lead; thứ-tự đúng = làm→verify→return, hoặc lead ghi on-behalf sau VERIFY-đĩa (S119) · **+S123: prompt-đúng KHÔNG chặn được #53** (cấm bẫy từ prompt đầu cho cả 3 sub, cả 3 vẫn garble ×4) ⇒ chặn được = **ghi-đĩa-TRONG-lúc-làm** (harvest-curator vớt ngay từ đĩa; 2 vai kia phải resume) + resume-in-session; reviewer **tự rút luật "ghi diary TRƯỚC return"** từ garble-1 và nhờ đúng nó mà garble-2 vớt được
- [Citation-trap self-reference](feedback_citation_trap_selfreference.md) — doc định-nghĩa anti-pattern TẤT-YẾU chứa mẫu đó ⇒ detector khớp-mẫu bắt chính nó, **lây qua trích-dẫn** (3 đời/1 wave); discriminator = **enclosure use⟂mention**, KHÔNG port charset-guard; vá 1 CLASS ⇒ grep MỌI matcher cùng-lớp TRONG diff (gen-2 xảy ra thật)
- [Goodhart: rời tập-đo](feedback_goodhart_leave_measurement_set.md) — "vá" bằng đổi HÌNH-DẠNG thứ đang bị đo = rời tập-đo; **flag-count giảm trông y hệt thành công** ⇒ hỏi "cái mất đi là dương-giả hay CHỨNG-NHÂN?"; kể chuyện bằng THÀNH-PHẦN không bằng tổng; +2 phép thử rẻ (trục-nào-KHÔNG-có-ca · áp-luật-cho-nhánh-anh-em)
- [Vắng-mặt trông giống ổn](feedback_absence_looks_like_clean.md) — slot-index tái-dụng xoá IM-LẶNG (mất uỷ-quyền owner, hỏi lại 3 lượt) · phép trích RỖNG đọc thành sạch (`.{50}x` vs `.{0,60}x`) · ghost-wire soi 2 CHIỀU (wired-but-declared-unwired); vá xong PHẢI grep lại bằng lệnh KHÁC (S146)
- [Claim mạnh hơn việc đã làm](feedback_claim_stronger_than_work.md) — "đã ghi/đã archive/đã VERDICT" = CLAIM ĐO ĐƯỢC, đo trước khi viết; 0-hit phải kèm control-dương (S162 ×3 ca/1 phiên)
- [Edit phải có trước review](feedback_edit_must_predate_review.md) — edit-cần-review (nhất là file vai reviewer) LAND TRƯỚC lượt L3 (no-self-exempt cần vật tồn-tại trong diff); spec tự-mâu-thuẫn → fix-mới thắng footer-cũ + khai trong report (anh ratify S139)

## Project — ongoing decisions / context
- [H22 WAL session-continuity](project_h22_wal_session_continuity.md) — sổ WAL ≤40 + Stop-hook persist VERIFIED-RUNTIME S111 (hot-reload ENV-DEP #2/#3) + /pause·/tiep 1-đường + squash wal: + FLIP run-trace ≥3-task + D10 AS-6-taxonomy-đổi; hook PS1 KHÔNG bash (PATH 3-context); pilot kill/đổi-acc pending
- [Model-tier evolution → worker-tier-pin S124](project_harness4_two_tier_model.md) — H4 two-tier → H8 all-inherit → **S124 worker-tier-pin (14/14 sub = opus+effort:max, lead owner-choice, Fable qua /fable-real)**; restart-lesson: EDIT-agent-tồn-tại/command cần restart (hot-reload ENV-DEP, agent-MỚI khác)
- [H23 spawn-precedence — ĐO S126](project_h23_spawn_precedence.md) — spawn-param tier THẮNG frontmatter hard-pin ⇒ /fable-real SỐNG · worker-pin ăn runtime (no-tier=opus DÙ lead=Fable ⇒ không inherit); đo 2026-07-16 spawn-model-audit 0-mismatch
- [Session-model direction S140](project_session_model_direction.md) — owner 2026-07-18: 5-vòng đóng (hở=khuôn bộ-ba-SUB chờ hub) → adopt phiên-LOGIC xuyên cửa-sổ; draft VC-1/2/3 nhãn-2-tầng + email b9ef5ede chờ hub; CẤM wire trước mẫu-hub + anh duyệt
- [database-agent verified + local-drift catch](project_database_agent_verified_local_drift.md) — verified-runtime S53; read-advisory DB lens bắt committed-but-unapplied-local mig (green tests+prod miss)
- [HoSoLink open-from-web browser block](project_hosolink_open_from_web_browser_block.md) — web KHÔNG click-open file:// từ https (browser block); chỉ Edge GPO `IntranetFileLinksEnabled` one-click; FE render + Copy fallback (S67)
- [Harness 1·2·3 adopt](feedback_harness_123_adoption.md) — roster 8→10 (+2 monitor INFORM-only tooling-auditor+harvest-curator) · email channel `broadcasts/` self=se; verified-runtime S50
- [7-agent split upgrade](feedback_7agent_split_upgrade.md) — multi-agent 4→7: backend/frontend split + test-specialist, budget +50%, split theo trục workload (S39)
- [Phase 10 NamGroup port](feedback_phase10_namgroup_port.md) — port 11 module; scope FULL / DB single dbo / reuse WF V2 ApplicableType / rollout per-module (S32)
- [Skeleton-first aggressive finish](feedback_skeleton_first_aggressive_finish.md) — "finish cho xong" → schema FULL + logic SKELETON defer, trade-off ghi commit + UI banner (S38)

## Pattern — reusable scaffold
- [Declarative KIND_CONFIG](feedback_declarative_kind_config_pattern.md) — single-page multi-kind CRUD via `:kind` URL + `KIND_CONFIG: Record<Kind,...>` (S29/S35)
- [Pattern 12-ter — N-satellite scaffold](feedback_within_module_n_satellite_scaffold.md) — within-module N-satellite CRUD: 1 mega file N `#region` + controller extend (S34)
- [Real-data master import](feedback_realdata_master_import.md) — Excel master data qua UNGATED DbInitializer idempotent seed → reaches prod; extract→spec→Dev-proof→cicd-check (S55, Mig 48)
- [Multi-entity create + self-committing codegen](feedback_multi_entity_create_self_committing_codegen.md) — N entity cần mã codegen TỰ-COMMIT → gen TẤT mã TRƯỚC (local) → atomic final SaveChanges no-partial (S88)
- [Prod screenshot → docx pipeline](feedback_prod_screenshot_to_docx.md) — chụp prod khoanh-đỏ chèn Word: PowerShell `CopyFromScreen`+Win32-lọc-chrome + DOM overlay + python-docx; prod xem-only (S90, #74)
