用户要求这份记忆跟着仓库走,而不是只留在本机。 .gitignore 里挡路的是 `.workbuddy/`。改成反忽略六行,并且**只放行 .md**: 别用 `!.workbuddy/memory/**`——它会把 memory 下任何文件都放行,本项目真发生过 `web.test.exe` 混进暂存。复核用 `git check-ignore -q --no-index` 逐条打靶: memory/*.png、memory/sub/x.md、memory/MEMORY.md.bak、plans/a.md 全 IGNORED, 17 个 .md 全 included;`git add -An .workbuddy/` 恰好 16 个文件。 其余 .workbuddy 内容(计划、本地设置、临时产物)继续忽略。记忆里没有真凭据 (唯一命中是 2026-09-14.md 里的 `password=rond-admin`,那是项目默认口令)。 顺带做两件整理: 1. 取证了注入上限。以前按「字节数」判断 MEMORY.md 是否超限是错的: WorkBuddy 的 `getWorkingMemoryContent()` 用 `MAX_MEMORY_CHARS = 1e4` 比 JS `content.length`,即**字符数**(中文 1 字算 1);超了 substring 截断、尾部静默丢失。 本 details 与每日日志都不参与注入,只有 MEMORY.md 受约束。 现已从 6604 字符收到上限的 66%,并把这条上限写进索引抬头。 2. 把「备份合并」「导出/恢复三条铁律」两段长文迁进 MEMORY-details.md 的卅一/卅二节, 索引只留关键词指针。行尾统一为 LF(仓库 .gitattributes 是 `* text=auto eol=lf`)。
3.1 KiB
2026-09-22
第十批(P6 / P7 / P3)——性能:缓存上限、重复查询、批量往返
P6 fillupCache 无界增长
fillup.go 的 fillupCache 是全局 map 只写不清。改成带上限的 FIFO:超过 fillupCacheMax(2048)
丢最旧的四分之一(fillupOrder 记插入顺序),覆盖写同一键不重复记账(否则 order 比 cache 长、淘汰错删)。
守卫 fillup_cache_test.go;变异(阈值抬到 ×1000)⇒ 红。
P7 统计页「周几」查两遍
handlers_public.go 的 d.Weekday 已在 runJobs 的 weekday 任务里查过,渲染前又同步查了一遍
(第二个纯多余)。删掉后者。守卫 stats_weekday_once_test.go(s.q.Weekday( 必须恰好 1 次);变异 ⇒ 红。
P3 adminNotesBulk 逐条往返
三个分支原本都是 for _, id := range ids 逐条调 store(勾 50 个地点 = 50 次、清空 100 次往返)。
新增 notes.DeleteBulk / notes.SetNoteBulk / votes.SaveVerdictBulk,统一用 p.src_pk = ANY($3::bigint[])。
SetNoteBulk 两条语句等价于逐条 SetNote(..., ""):先删「别名与 rond 备注都空」的行、再清其余行的
手写 note(顺带把 dataset_id/src_pk 刷成当前数据集的值,与逐条 upsert 对齐)。
守卫 admin_notes_bulk_test.go:①静态扫描(函数体不许再出现逐条的 Delete(/SetNote(/SaveVerdict(、
必须有三个 *Bulk);②端到端(3 个地点依次走 结论/清空/取消/删除,每步断言全部生效)。
变异:①退回逐条循环 ⇒ 静态守卫红;②给批量 INSERT 加 LIMIT 1 ⇒ 端到端红(「实际 1」)。
新事实:pgx v5 stdlib(走 database/sql)直接接受 []int64 作为 ANY($3::bigint[]) 的数组参数,
既不用 pq.Array,也不必手写 IN 占位符——实测通过(TestAdminNotesBulkAppliesToEveryCheckedPlace)。
第十批验收
- 全量
go test -count=1 -v ./...:234 PASS / 0 FAIL / 0 SKIP,exit=0(第十批新增 4 条)。 - 两段式导出 823/323/8/30/791/557/2246 全等、坐标 0.000000000、时间 0s;迷雾 8701 块逐字节一致(未碰 rond 数据路径)。
- → 已更新
audit-2026-09-21.md(新增「修复记录(第十批)」+ 重写「尚未处理」表,删掉 P3/P6/P7; 「尚未处理」只剩 F5/F6/F8–F10/F14/F16–F18 这批前端交互/无障碍细节)。
收尾:MEMORY.md 精简(注入被截断)
.workbuddy/memory/MEMORY.md 注入时被截断——尾部「安全/跳转」「口径/404/验收」两节根本进不来,
等于白写。就地精简:12452 → 8888 字符(-29%),保留全部规矩与守卫名,把「验证机制细节」
(四件套环境变量之外的那些:静态守卫禁相对路径、? 绑定顺序、-race 的 mingw PATH 等)
指向技能 rond-fix-verify,只留两个最容易「假绿」的坑(缺 ROND_SRC 静默 skip、共用库写数据集串味)。
(随后第十批又补了 2 条性能规矩,当前 9277 字符 —— 已贴近注入上限,后续新规矩优先写进
MEMORY-details.md 或技能,别再往这个索引里堆。)