Files
solution-erp/.claude/agent-memory/harvest-curator/MEMORY.md
pqhuy1987 3e2c18b637 [CLAUDE] Docs: S101 session-end closeout — §L auto-maintain (AS-10 recurrence + 2 monitor CHOT + model-note uniform)
- error-ledger E-006: AS-10 recurrence S101 (fire 5-6 from workflow-lanes; harvest-curator Fidelity-gate PASS -> KEEP per keep-if-correct, differs from S95-revert because S101-writes clean; GAP-3 dogfood-validate convention-not-mechanism; guard git-diff HELD 6/6 0-escape)
- session-start BUOC 0.6: +S101-Opus caveat (F-H19b, uniform with STATUS:24 + agents/README:3)
- harvest-curator diary: S101 @closeout GATE PASS 5/5 truc + AS-10 legit-keep Fidelity-call (on-behalf B3)
- tooling-auditor diary: S101 @closeout CHOT 4-mat + command 14->16 (COMMAND not skill) + model-drift #5 + F-H19a-defer (on-behalf B3)
- monitors verdict: harvest-curator GATE PASS (0 orphan, 0-byte 0/11, U+FFFD 0/11, containment OK) + tooling-auditor CHOT (11=11=11, 18/15/3, H19 docs full path:line-verified)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 18:32:11 +07:00

9.7 KiB
Raw Blame History

Harvest-Curator Agent — Persistent Memory

Persistent diary cross-session. Auto-injected first ~200 lines at spawn (L1 HOT). Update BEFORE every stop. Tiered Memory v1: L1 self-target ≤17.1KB (hook read-limit 24.4KB) · L2 archive/ on-demand · L3 RAG search_memory just-in-time. Keep entry ≤ 1.5K chars. NEW agent 2026-06-07 (adopt AI_INFRA Harness 1 — H2 harvest-integrity; TÁCH khỏi tooling-auditor H1 per anh-mandate "H1/H2 hay quên+nhầm → riêng-biệt").


🎯 Role baseline

H2 harvest-MD-integrity auditor SOLUTION_ERP-self. Read-only + propose-only (em main = single-writer, VERIFY→APPEND B3; ngoại lệ duy nhất = diary chính mình khi em main cho phép). Verify HARVEST mỗi session ĐỦ+ĐÚNG 5-trục: Coverage · Completeness · Fidelity-FLAG · Placement · Corruption. @session-end GATE trước đóng + gom run-folder; @session-start báo harvest mới + delta mồ-côi + orphan run vs ledger.

🚫 Split boundary

  • MINE: harvest-memory integrity (5-trục) + spawn-record 4-field + run-folder gom (Harness-10) + delta mồ-côi — SOLUTION_ERP-self
  • NOT: tooling/skill/plugin/docs-freshness → tooling-auditor (H1) · corpus/RAG/deploy → cicd-monitor · Fidelity tự-phán "bịa" → escalate reviewer · write/decide → em main

📋 Baseline state (re-ground S99)

  • Spawn-record 4-field SE: {task · verdict · learned · surprise} (memoryDelta R1 contract HMW).
  • agent-memory: 11 folder .claude/agent-memory/<role>/MEMORY.md (placement target). Cap L1 = 25.6KB (H11 memory-archive-gate.ps1); hook self-target 17.1KB.
  • Run-trace (Harness-10, thay wave-folder Harness-2): .claude/workflows/runs/<run-id>/ git-TRACKED, FLAT (run.md + sub-*.md + *-synthesis.md); 5 run cũ 06-18 giữ sub-md/+harvest/ subfolder (dual-accept). 🧊 Ledger runs/_ledger.md RETIRED H18-B S100 (true-catch 0/15 lifetime + mode-A coverage 0/8; 15 row frozen giữ lịch-sử) — orphan-authority = folder-scan: folder có run.md*-synthesis.md VẮNG/0-byte. Mode-A ephemeral (S98 note): HMW default KHÔNG tạo run-folder = by-design, vắng folder ≠ orphan.
  • Nền H2 gốc: session-end.md Phase 1.5 §L.b = 3/5 trục; sub này nâng +Fidelity-escalate +Placement = đủ 5.

⚠️ Anti-patterns

Tự ghi/overwrite memory ngoài diary mình (propose→em main APPEND) · tự phán Fidelity "bịa" (→ reviewer) · tick "đã flush?" nhị-phân (phải đủ 5-trục) · đụng tooling-freshness (đó là tooling-auditor) · G-015 overclaim "read-only enforced" · final-message trả narrative memory-curation thay verdict (#53 return-garble).

Methods (giữ vĩnh viễn — đúc từ S50-S66, verbatim → archive/2026-06.md)

  1. Chunk-count qua RAG MCP list_projects, KHÔNG shell-probe Qdrant (MCP trỏ host khác → false-negative).
  2. Sub killed-mid-write → verify tail terminates-clean (wc -l + closing-Tag), KHÔNG chỉ -size 0 (partial-write ≠ 0-byte).
  3. Detect interrupted-session: so mtime agent-memory vs closeout-commit timestamp.
  4. Commit-stat "có append" ≠ "có fanout-record" — classify bằng grep tag session + mtime, đừng tin stat.
  5. Extract added-bullet trong diff: grep "^+-" (filter grep -v "^[+-][+-]" NUỐT dòng +- **…).
  6. tail -c N cắt giữa UTF-8 multibyte in ra ký-tự-thay-thế GIẢ — corruption thật = grep literal U+FFFD (đừng viết literal đó vào L1 kẻo tự false-alarm).
  7. Mojibake quoted-cũ vs mới: arithmetic line-shift = đúng số dòng insert phía trên → cũ.
  8. Sub die không để delta → commit-body = spawn-evidence (S60 reviewer tự khai trong msg).
  9. U+FFFD self-quote trong file MÌNH + archive = quoted-evidence cố-ý — đừng false-alarm.
  10. Trend self-tag session-drift (cicd s50→s51 · inv s56→s57 · inv s57bis→s58 · cicd s98→s97 ×4): entry mới soi tag vs session thật.

📅 Recent activity (FIFO — older → archive/2026-06.md)

S50→S66 (14 entry) verbatim → archive/2026-06.md — curate S99 (hook 19.9KB > self-target 17.1KB), moved-not-cut grep-verified 5/5 + entry-count 14. Digest: verified-runtime S50 · GATE PASS 5/5 ×6 (S50/51/58/59/63/66) · chuỗi 4-MISS post-S57bis rushed-closeout + reviewer die ×3 (S57bis ×2 + S60) · cicd over-cap saga 32→86.8KB → curate S66 86.8→28.9KB.

  • 2026-07-02 (S98 @start RE-REPORT — post-S97, on-behalf em main APPEND B3): Self-report claude-fable-5 (inherit — Fable-restore evidence, cặp với H1 cùng ngày). Verdict: (a) harvest S97 8-commit CLEAN — 0-byte=0 · U+FFFD=0 · tail 11/11 sạch; archive 2026-H1.md impl-fe moved-not-cut VERIFIED-git (baseline 791ec55 S76/S78/S79 đều present; "S77" = range-label không tồn tại — đừng false-alarm). (b) 3 delta mồ-côi propose-APPEND (em main VERIFY→APPEND cùng session): database-agent MISS ×2 spawn S97 (Part-4 điều-tra Mig60-wrong-table + Part-5 lane integrity; file đóng băng từ S57bis — miss nặng nhất) → 1 record gộp 4-field · reviewer addendum Part-5 fail-return-schema vào entry S97-bis · impl-fe hook 1-dòng Part-2 finalizeFlowStep. (c) Orphan runs 0/15 (ledger chỉ dòng legend); NOTE INFORM: S97 2 HMW workflow (wf_0e01fdba/wf_4951c347) ephemeral KHÔNG ghi run-folder = pattern S94+ — ledger H10 hiện chỉ cover run kiểu cũ. (d) Stray=0 (guard S76 giữ). Flags: cicd self-tag "S98"→S97 ×4 dòng (:54/:55/:73/:75 — session-tag drift lần 4; em main patched replace_all TRƯỚC khi S98 thật ghi entry, tránh grep-collision) · cicd L1 19.9KB > self-target 17.1KB garble-pressure (#53 structural) → archive-sớm @closeout · impl-be 23.9KB gần cap watch. Tag [s98-start, 3-orphan-append, cicd-s98-tag-patched, fable-restore-evidence, on-behalf].
  • 2026-07-02 (S99 @start RE-REPORT — post-S98 same-day): Verdict 🟢 gần-CLEAN — duy nhất 1 delta mồ-côi = cicd :73 entry #485 (rn 371) 8a249c5 GO mtime 11:06:03 SAU commit-cuối 10:57:45 = orphan-by-construction (post-closeout verify, precedent S58 #385/#386) · fidelity ARITHMETIC-verified độc lập: push-range 310b9fc..8a249c5 = 23 file = 22 .md + đúng 1 non-md memory-budget.json khớp claim từng-chữ · tag "S98" ĐÚNG (hết drift sau patch S98) → propose COMMIT vào bundle đầu S99, KHÔNG revert. 3 orphan-append S98 đóng thật tại HEAD (db-agent :36 gộp 4th+5th · reviewer :72 addendum Part-5 · impl-fe :16 hook Part-2 — đủ 4-field + on-behalf label). Orphan run 0/16 ledger all-closed (mode-A note live; folder mới=0 từ 06-18, chỉ _ledger.md mtime 07-02 committed). 0-byte=0 ×2 nơi · tail 11/11 0a · U+FFFD hit đều quoted-cũ (cicd archive/2026-06.md:26 #377 + archive MÌNH — L1 mình + cicd L1 SẠCH sau curate). Chore: impl-be 23.9KB sát cap 25.6KB watch (đứng im từ 06-25, không phình). Self-curate S99: L1 19.9→~9KB, S50-S66 → archive/2026-06.md (17072B, 14 entry, moved-not-cut grep 5/5) — hook-triggered, trong quyền diary-mình. Wrote OWN diary. Tag [s99-start, cicd-485-orphan-sane, arithmetic-fidelity, self-curate-L2, clean].
  • 2026-07-02 (S100 @start RE-REPORT — post-S98+S99, on-behalf em main APPEND B3): Verdict 4-trục ALL-CLEAN + 1 live-delta. (1) Delta S98/S99 committed đúng nhà (4263d63/8a249c5/c112be9), 0 mtime>HEAD; duy nhất tooling L1 dirty 14:38:42 = entry S100 tự-ghi (NOT-in-HEAD) → commit bundle bootstrap. (2) Mồ-côi 0: S98 2-monitor + 3 orphan-append S97 đóng + cicd #485 tại :73 · S99 2-monitor đủ 4-field. (3) Orphan run 0/14, ledger 0 , mode-A by-design. (4) 0-byte 0/11 · tail 11/11 0a · U+FFFD 2-file quoted-cũ known · tooling archive spot-check 3-hit moved-not-cut · impl-fe gist ADDITIVE. INFORM: S99 push 8a249c5..525a01a (9 .md docs-only, CI path-filter skip) chưa cicd-verify — optional. Chore: impl-be 23.9KB đứng-im 06-25 watch · fe-designer 21.5KB + reviewer 20.7KB > self-target 17.1KB garble-pressure watch. Method-new: monitor song-song ghi diary GIỮA 2 batch scan → batch-1 status/mtime = stale-snapshot, re-check trước khi phán dirty/orphan. Tag [s100-start, 4-truc-clean, tooling-l1-live-delta, on-behalf].
  • 2026-07-03 (S101 @start + @closeout — on-behalf em-main APPEND B3): @start RE-REPORT ALL-PASS/CLEAN (0-orphan · 0-byte 0/11 · 0-corruption + cicd #486 dirty-delta fidelity-verified→commit). @closeout GATE PASS 5/5 trục (S101 = 2 commit f229b07 H18-WF2-closeout + e350660 H19-formal-adopt): Coverage COMPLETE 6 spawn-touchpoint (2 monitor + WF1-invest investigator-cb + WF2-H18/H19 reviewer ×2), Corruption U+FFFD=0/11 · tail-0a=11/11, close-gate 0 July-run-folder (mode-A ephemeral confirmed) → 0-orphan. 🔴 AS-10 Fidelity-call: LEGIT harvest NOT residual-violation — WF1+WF2 lanes tự-ghi agent-memory (frontmatter "update-MEMORY-before-return" override HMW-return-only) NHƯNG verify ĐỘC-LẬP content khớp lane-verdict (reviewer README:51-fix landed-verbatim hunk @@-48,5+48,5, 0 fabrication) + containment intact committed → KEEP đúng per keep-if-correct (KHÁC S95-default-revert vì S101-writes CLEAN, quyết bằng Fidelity-gate KHÔNG tự-phán). Cross-link H19 §K.C GAP-3 dogfood-validate "N-lane-return-only = convention KHÔNG mechanism" (fire 6, catch 6, 0 escape). Chore-watch: impl-be 23955B near-cap 93.6% (đứng-im 06-25) · reviewer 20728→19357 net-shrink healthy · self diary 8434B healthy. Method-#5 self-trap: empty-grep từ +--filter choking leading-bullet → dùng method-#5 fix (false-alarm caught). Tag [s101-gate-pass-5truc, as10-fidelity-legit-keep, gap3-dogfood, on-behalf].