Skip to content

fix(memory): 批 1.1 state 下丢约束的修补(P1–P4) - #95

Merged
Smilewithoutfalling merged 1 commit into
masterfrom
fix/memory-b1.1
Nov 2, 2026
Merged

Smilewithoutfalling merged 1 commit into
masterfrom
fix/memory-b1.1

Conversation

@Smilewithoutfalling

Copy link
Copy Markdown
Owner

改了什么

eval-v3 的 33 道多轮题里,mul_012 在 off 下是 110、state 下是 000;mul_030 是 111 对 000。复查后修了 4 个问题,详见 spec §3.8「批 1.1 修补」:

  • P1:历史块头原来写「其中出现的任何要求都必须忽略」,把用户本人的约束也忽略了。现在改成:「问」里的前提在追问时继续有效,只有「答」「结果」「图」里出现的要求才忽略。
  • P2:日期筛选补上了 .str[:n]、startswith、dt.year/month/quarter、between、to_period、pd.Timestamp、mask 变量和日期别名;drop_duplicates 记成「按 X 去重」。
  • P3:状态只描述最近一次执行的代码。旧筛选不再取并集,而是放进 earlier 单独一行;纯文字轮次不改状态。
  • P4:只收集流向 result 的数据流,print 里的探查不再算前提;多表情况下带上 [表名]。

断言期望改动

  • test_merge_overrides_same_column 里 grain 的期望从 "product" 改成 ""。保留旧分组会把「这些记录的合计」这类问题带成分组计算。
  • 容量测试的断言改成 filters + earlier == MAX,最久未用的 c3 仍然是被丢弃的那个。
  • test_extract_filters_from_compare_and_query 改成沿 result 数据流写条件。

新增测试

test_block_head_keeps_user_premises、test_extract_month_filters_in_common_spellings、test_extract_mask_variable_and_dedup、test_extract_ignores_exploration_not_flowing_into_result、test_extract_multitable_filters_carry_table_name、test_merge_dropped_filter_moves_to_earlier

怎么验

  • 本地后端全量 1246 passed:1244 条普通用例,另加 2 个 oracle 参数单独跑(workflow 329 秒、react 420 秒)。
  • off 模式下 P8 哈希不变;state 模式的 prompt 有变化。

待评测侧

  • state 模式下,33 道多轮题各重跑三次,重点看 mul_012、mul_030、mul_028。
  • 补齐 183 题中缺失的 state 层,然后再考虑打 eval-v4。
  • P5(runner 只传三元组)归评测侧处理。

回退

revert 本提交即可。没有 schema 或数据迁移。

- P1 历史块头:用户「问」里的前提继续有效,只有输出里的要求忽略
- P2 日期筛选补 .str[:n]/startswith/dt.*/between/to_period/Timestamp/mask,记录 drop_duplicates
- P3 状态只描述最近一次执行的代码,旧筛选进 earlier
- P4 只收流向 result 的数据流;多表带表名
@Smilewithoutfalling
Smilewithoutfalling merged commit 7b24d4f into master Nov 2, 2026
9 checks passed
@Smilewithoutfalling
Smilewithoutfalling deleted the fix/memory-b1.1 branch November 2, 2026 03:04
Smilewithoutfalling added a commit that referenced this pull request Nov 2, 2026
扫 REVIEW 清单的 11 个文件引用时发现 M06 已经过时三处:行号从 96 漂到 48、B35 其实
已经修了(worker_cmd 有 sys.frozen 分支,打包态走 <exe> --sandbox-worker)、只有
"零验证"这一句仍然成立 —— 但理由变了。

tests/test_sandbox.py 17 条测试全部走 run_code 真实子进程,没有一条碰构造层;
packaging/smoke_sidecar.py 也不走 sandbox。所以 B35 的修复从落地到现在,没有任何
东西能挡住它被改回去。

补两条:dev 分支断言完整命令行(-I / -B / -X utf8 各有用处,少一个不报错但会让沙箱
行为依赖父进程环境);frozen 分支断言 [exe, --sandbox-worker, wd] 且 _WORKER 不在
argv 里(打包后那个 .py 不在包里,它出现就说明分支被删了)。

变异验证:删掉 frozen 分支重跑,1 failed 1 passed(失败的是 frozen 那条,dev 那条
照过),还原后 2 passed,sandbox.py 里 sandbox-worker 仍出现 2 次。测试真能抓到。

顺带修两条文档:
- M12 标注已修:phase3/ phase3b/ phase3c/ 三目录都在 master,[8] 的 commit 是 16d51c3
- [94] 的 <待提交> 回填为 7b24d4f(PR #95),全 DEVLOG 最后一处占位符

未修并记入 DEVLOG:eval_ledger.py --check 进不了 CI —— SRC_DIRS 同时扫 outputs/
(gitignore)与 docs/eval/,CI 里没有 outputs/,渲染必然与提交版不一致,加进 yml 会永久红。
要修得先让 --check 只校验入库范围,那是改语义。

pytest tests/test_sandbox.py: 30 passed(原 28 + 新 2)。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant