Rescored candidate sets were widening because new minutes stayed neutral. Derive support/conflict from varga signs and dasha segments, and announce range changes from facts rather than tool names. Co-authored-by: Cursor <cursoragent@cursor.com>
48 lines
3.8 KiB
Markdown
48 lines
3.8 KiB
Markdown
# PROGRESS · 重算后新分钟继承已答题结论(2026-09-08)
|
||
|
||
工作树:`.worktrees/rectification-new-minute-inherit-20260908`
|
||
分支:`codex/rectification-new-minute-inherit-20260908`
|
||
任务书:`docs/tasks/TASK-rectification-new-minute-inherit-20260908.md`
|
||
基线:`origin/staging` @ `6aba672c`(含修复单 `56067fda` 与 BUG-592/593 验收 `6aba672c`;代码头仍是 `6a687085`)
|
||
|
||
本单状态:**待验收**。未 commit、未 push。
|
||
|
||
未改:淘汰阈值 `STRONG_CONFLICT_ELIMINATION_COUNT = 3`、`SCORE_DELTA`、四选项合同、采用门、确认门、Skill 版本(仍 10.0.16)。
|
||
|
||
## 做了什么
|
||
|
||
- **决策 1** `directionFor` 对新分钟按题目语义推结论,不再一律中性。
|
||
- 分盘风格题(`choice_kind = varga_style` 且 `semantic_key` 以 `varga.<layer>.` 开头):`signFromTransitions` 取该分钟该层上升,对照 `style_options[].sign` 与已答 `answer_class` 判 support/conflict。没有 transitions 或该层无星座 → 中性。
|
||
- 大运/激活/事件质量题:新分钟落在某 outcome 集合最小与最大分钟之间、且两侧最近旧分钟同属该集合 → 继承;否则中性。
|
||
- 携带题写入 `outcome_by_minute`;`rounds.score_deltas` 对新分钟可非 0。
|
||
- **决策 2** `signFromTransitions` 下沉到 `core/sign-from-transitions.ts`。`buildCaseInferenceState` / `score-persist` 把 `window_scan.transitions` 传进核心层。`divergence-panel.ts` 改为引用核心函数,再用 D9/D10 类型表收口星座名。
|
||
- **决策 3** `agent-run` 范围句比较本轮开始时与结算时的 `credible_range`,不再看 `toolsUsed.has("rectification-compare-candidates")`。batch 内重算也会接 `withRangeChangedAfterEvidence`。
|
||
- **决策 4** 记录 BUG-594(关联 BUG-587 决策 2 定错)、BUG-588 batch 路径补记、CHANGELOG、手测脚本第 8 条。
|
||
|
||
## 三栏(被触碰断言)
|
||
|
||
| 用例 | 原值 | 新值 | 理由 |
|
||
| --- | --- | --- | --- |
|
||
| 换入 05:14(D9 射手、D10 狮子,2024.04 支持段、2023.05 反对段) | `strong_conflict_count = 0`、活着、范围到 05:14 | `≥ 3`、`eliminated`、范围仍 04:47–04:59 | 决策 1 |
|
||
| 新分钟夹在两个 outcome 集合之间 | 中性(碰巧) | 仍中性 | 决策 1 的「两侧同属」条件 |
|
||
| 分盘题无 transitions | 中性 | 仍中性,不报错 | 决策 1 退化 |
|
||
| 证据轮 batch 内范围 04:47–04:59 → 04:47–05:14 | 无范围句(没有 compare 工具名) | 旁白末尾接范围句 | 决策 3 |
|
||
| BUG-587 旧夹具里的 04:59 | 新分钟 delta 0 | 落在 04:57–05:13 冲突段内,继承 conflict | 推翻决策 2 后的正确结果 |
|
||
|
||
## 测试
|
||
|
||
- `frontend` `./node_modules/.bin/tsc --noEmit`:exit 0
|
||
- 本单改动文件 ReadLints:0 error
|
||
- `tests/rectification-probe-replay-loss-20260908.test.ts`:10/10
|
||
- `tests/rectification-varga-style-weight.test.ts` + `agent-voice-copy-contract.test.ts` 与上一文件合计 31/0
|
||
- 任务书指定 TS 切片(`tests/rectification-*.test.ts` + `agent-voice-copy-contract.test.ts`,排除 database):**1021 passed / 0 failed**
|
||
- `exp_case_head.py` 合成 7 事件序列:仓库无此脚本;4.1 (d) 用事故形状的合成 6 题 + 三次换分钟回放代替
|
||
- 浏览器真人走查:本轮未跑,见 `docs/testing/rectification-scenarios-20260907.md` §8
|
||
|
||
## 偏离
|
||
|
||
1. 任务书基线写 `6a687085`。本 worktree 跟 `origin/staging` 尖端 `6aba672c`(多了修复单文档与 592/593 验收记录,无额外代码差)。
|
||
2. 4.1 (d) 没有 `scripts/exp_case_head.py`,用同文件内的事故形状合成序列。
|
||
3. 4.2 的「落库 assistant_message」用源码锁 + `withRangeChangedAfterEvidence` 合同,没有起一整轮 mock agent 写库。
|
||
4. `signFromTransitions` 的类型表收口仍留在 `divergence-panel.ts`,核心层只返回原始星座名,避免 core 依赖 v9。
|