embedding / OCR 的 reasoning_applies=False 无测试守护:改成 True 后全套件仍绿 #26
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
一句话
embedding.py:416与ocr.py:459传的reasoning_applies=False没有任何测试守着——改成True后全套件仍绿,而 ARCHITECTURE 与 CHANGELOG 都明文承诺「embedding / OCR 路径该列恒NULL」。怎么发现的
2026-09-05 合并前的独立验证做了 27 个变异测试(在仓库副本里改实现、看套件红不红),24 个被杀。存活的 3 个里有 2 个是这一条(M15 / M23),第 3 个(M22,装配守卫的
effort_fallback)已在bb9ef03补上。现状(2026-09-08 实测)
reasoning_applies是 1.3.3 给TelemetryEmitter.emit_attempt加的无默认值参数,用途是区分「这条路径有没有推理语义」。它无默认值这一点本身是有守卫的(tests/unit/test_telemetry.py::test_reasoning_applies_has_no_default用inspect.signature断言),缺的是取值正确性的守卫。失败场景
三条路径共用
SourceConfig类型。一个 embedding 源若误配了ENABLE_THINKING(该键对 embedding 无意义,但配上不报错),而reasoning_applies又被写成True,那么:effective_effort(...)回落,把enable_thinking=True的语法糖算成auto;llm_calls.reasoning_effort列上被挂了一个auto;这正是
tests/unit/test_telemetry.py::test_a_reasonless_path_never_records_a_tier想防的形态——但那条用例只覆盖了 emitter 内部的分支逻辑,没有覆盖两个调用点实际传了什么。文档承诺
research-wiki/ARCHITECTURE.md§7.8 遥测列口径:「embedding / OCR 两条路径没有推理语义,该列恒NULL」CHANGELOG.md1.3.3 段「遥测:第 26 个 INSERT 字段」同款表述承诺写了、代码是对的、没有执法点——属于典型的「今天正确,明天被人顺手改坏而无人察觉」。
修法
给两个调用点各补一条断言。可选形态:
inspect或 mock 捕获emit_attempt的实参,断言 embedding / OCR 路径传的是False(最直接,离线可跑);llm_calls.reasoning_effort IS NULL(更贴近承诺本身,但要起 recorder)。第 2 种更接近「验的是承诺而不是实现细节」,若成本可接受优先它。
验收判据:把任一调用点的
False改成True,套件必须红。这是本 issue 的唯一验收标准——补完请用变异确认,否则补的还是假证据。真实 GatewayClient→治理→emitter→recorder 路径覆盖 embedding、OCR text/layout 成败 NULL,临时 SQLite 持久化锚点及 chat 阳性防止全 NULL 假绿。已有独立核验的 embedding False→True、OCR两入口 False→True、chat True→False、移除 applies 短路变异均被目标断言杀死并还原通过;本轮按复用原则不重复制造相同证据。
发布:v1.3.4,main/tag 提交 af57f93adce24b43fd10b6d8e1281ab8ee43c0a8。合并后 make lint 通过;make test:1518 passed / 23 skipped / 108 deselected,95%覆盖率;定向 M2.5/M2.7 AUTO:2 passed(各5轮,并发1);Redis时间语义:18 passed。wheel/sdist 从 registry 独立下载,散列与构建一致,解包及独立 target 安装行为、README元数据通过;Release正文、包页面正文和仓库链接已亲查。
2026-09-09 用户批准不补全模型矩阵:embedding 503仍FAIL、claude-opus-5开启命题仍FAIL,UNKNOWN/身份不足/不可达/缺轮/缺下游现行配置证据保持例外,不改成PASS,不宣称三项目已完成迁移。
Release · 包页面 · 验证与例外记录
原始本轮日志:tests/outputs/134/publish-20260909/;既有红绿与独立审查见上述验证记录。