DeepSeek V4.1 Flash
48bc534bc1
边沿统计改为「定向失效」:改一个信号的参数不再重算其它信号的统计
一、问题
加载 VERY_BIG_DATA.CSV 并把所有信号显示在同一个网格,同时启用「边沿计数」与
「中心轴边沿计数」(两个面板都作用于网格内全部信号)。此时改变**一个**信号的
中心轴边沿计数参数,两个浮动面板里的**所有**统计值都从头重新计算。
二、根因
参数提交路径(PlotView::EndEdit)与勾选切换路径里用的是 m_edgeScans.clear():
它把两个面板、所有信号的累积统计状态全部丢掉。于是:
- 其它信号(参数没变、键没变、块和依然有效)被迫从头重扫;
- 连普通「边沿计数」(centre == false)的状态也被一起丢掉 → 另一个面板也全部重算。
三、修法
1. 新增 PlotView::InvalidateEdgeScansFor(const SignalData* signal, bool centreOnly):
按键(文件/信号/种类/样式指纹/参数/区间)只擦除**该信号**的累积状态;
centreOnly = true 时只擦除它的「中心轴」状态。
2. EndEdit 的参数提交分支:
- 中心轴参数(EDGE_CENTER_POINTS / EDGE_CENTER_ITERATIONS)变化 →
InvalidateEdgeScansFor(该信号, true);该信号的普通边沿计数、以及其它信号完全不受影响;
- 均值滤波参数变化 → 与统计无关(中心轴用**自己的**条目列表与自己的曲线键)→ 不作废任何统计。
3. 勾选/取消勾选信号:该信号的统计(与参数相关)依然有效,只是"是否显示"变化 →
删除原来的三个 clear()(m_meanCurveCache/m_edgeScans/m_weakPeakCurveCache),
不再作废任何缓存(改为依赖 m_sceneDerived 快照做局部重画)。
四、验证(全部离屏,不占用鼠标/键盘/屏幕;harness 与探针均降到 BELOW_NORMAL 优先级)
- .preflight/uitest 新增 [AT]:3 个信号合并到同一网格,中心轴统计全部扫完后,通过**真实编辑路径**
(plot.BeginEdit(EDGE_CENTER_POINTS, 0, L"7") + plot.EndEdit(true))修改第 2 个信号的参数,
断言:
* 被改信号的中心轴状态已作废,且其条目参数确实变成 7;
* 另两个信号的 scannedPair / rising **逐位不变**(累计块和没有被丢弃);
* 被改信号的**普通**边沿计数状态 scannedPair / rising **逐位不变**(另一个面板完全未失效);
* 未被改动的信号下一次查询仍然 complete(瞬时返回,不需要重扫)。
- 合计 774/774 通过(连跑 3 次稳定);make release 零警告。
规则同步:Documents/agent_mem.md 新增 §9.24,§11.2 新增第 39 条硬约束(参数变化必须定向失效、
禁止对累积缓存整体 clear()),变更日志补一行。
2026-10-14 16:30:12 +08:00
..
2026-10-14 15:24:19 +08:00
2026-09-29 15:05:29 +08:00
2026-10-14 16:30:12 +08:00
2026-10-14 11:40:49 +08:00
2026-10-10 11:30:07 +08:00
2026-10-09 09:30:30 +08:00