显示生时校正里还活着的时间段,不再把空档涂进目前范围。
交付卡、旁白和遥测在有簇区间时按段书写。打分、出题和进区间门槛未改;对半出题和门槛 6 因为没有真值保留回放而没有交付。 Co-Authored-By: Grok (agent loop)
This commit is contained in:
co-authored by
Grok (agent loop)
parent
712a0fd2a1
commit
56a3c08145
@@ -36488,3 +36488,48 @@
|
||||
- 相关记录:BUG-1361、BUG-1362。
|
||||
- 复发自:无。
|
||||
- 修复版本:分支 `codex/beta-safety-net-20261014`。本机没有装到生产主机,也没有点生产按钮。
|
||||
|
||||
## BUG-1367 | 交付范围按声明窗口的首尾显示,中间空档也被算进去
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现 / 最近更新:2026-10-16 / 2026-10-16
|
||||
- 来源:issue #77。任务书 `docs/tasks/TASK-rectification-narrower-delivery-20261016.md`。研究记录里 ±60 的显示宽度中位约 71 分钟、实际剩余中位约 42 分钟。那份 77 例回放本轮没有重跑。
|
||||
- 现象:问完题后,交付卡上的「目前范围」是一整段首尾。中间已经排除的空档仍看起来像还可能的时间。
|
||||
- 触发条件:同一声明窗口里有多段还活着的簇,段与段之间的空档大于 4 分钟。`segment_index` 是用户声明的窗口段,不是候选簇。
|
||||
- 根因:`interval_union_width` 和 `unionWindowIntervals` 把同一声明段里的区间收成最早到最晚。交付卡标题走这条包络。
|
||||
- 修复:卡片、旁白、口头可说的钟点和遥测宽度改用还活着的簇。落后峰值达到 8 分的候选不进这段显示,和现在的进区间门槛相同。相邻空档不超过 4 分钟的段合并;超过三段时只写前三段,并写一共几段、大约还剩多少分钟。打分、采用、确认、分离和 `MIN_SEPARATION_LEAD` 不动。写盘和读盘仍用同一个 8。会话标题仍由数据库里的单段生成,本轮不改表。
|
||||
- 验证:`frontend/tests/rectification-living-display-20261016.test.ts` 覆盖单段、空档 4 分钟合并、空档 5 分钟拆开、五段只显示前三段,以及卡片标题不再画出整段包络。`tests/test_rectification_living_display_intervals.py` 锁定同一套合并,并断言同一对区间的决策包络宽度不变。
|
||||
- 防复发:上述测试。显示函数放在密封打分文件之外,打分路径不引用它。没有簇区间的旧结果仍用原来的首尾。
|
||||
- 相关记录:BUG-423、BUG-560。
|
||||
- 复发自:无。
|
||||
- 修复版本:分支 `codex/rectification-narrower-delivery-20261016`。
|
||||
|
||||
## BUG-1368 | 剩余候选大多同侧时题目切不开,题数上限仍是 8
|
||||
|
||||
- 状态:blocked
|
||||
- 首次发现 / 最近更新:2026-10-16 / 2026-10-16
|
||||
- 来源:issue #77 任务书根因 2。本轮没有新的回放来复核「同侧占比」。
|
||||
- 现象:后面几题往往排除得很少。可出题数量和轮数上限都停在 8 这一档。
|
||||
- 触发条件:探针仍按原有顺序供给;`DEFAULT_MAX_DISCRIMINATION_ROUNDS = 8`。
|
||||
- 根因:任务书指向探针供给上限和选题不按剩余后验对半。本轮没有改这些文件,也没有用新回放重新测量,根因沿用任务书。
|
||||
- 修复:未改。探针文件在密封打分身份里。对半出题会改变问哪些题,必须先有红线里的真值保留对照。本轮没有跑成 77 例、三个窗口、全对以及分别翻转第 1、3、5 题的生产回放,所以这项撤下。红线没有放宽。
|
||||
- 验证:轮数上限仍是 8。没有新增选题测试。
|
||||
- 防复发:在这项真正交付之前,不得把「少数一侧不足两成仍不出题」写成已经生效。
|
||||
- 相关记录:BUG-1367。
|
||||
- 复发自:无。
|
||||
- 修复版本:未修。
|
||||
|
||||
## BUG-1369 | 进入交付区间仍要落后峰值 8 分
|
||||
|
||||
- 状态:blocked
|
||||
- 首次发现 / 最近更新:2026-10-16 / 2026-10-16
|
||||
- 来源:issue #77 任务书根因 3。本轮没有分档回放。
|
||||
- 现象:一道题通常只拉开约 4 分。候选至少要连续两道题都反向,才会离开交付区间。
|
||||
- 触发条件:`credible_range`、`credible_intervals` 和还有效的候选都用 `MIN_SEPARATION_LEAD = 8`。
|
||||
- 根因:任务书写明进区间门槛是 8,而单题分差更小。本轮没有把门槛改成 6,也没有新回放证明改成 6 之后真值仍留在区间里。
|
||||
- 修复:未新增另一套交付门槛,也没有按窗口回退表。写盘和读盘仍都用 8,避免一边 6、一边 8。分离、采用、确认和盘型段汇总仍用 8。
|
||||
- 验证:`MIN_SEPARATION_LEAD` 仍是 8。没有「写 6 读 6」的新测试,因为这条路径没有落地。
|
||||
- 防复发:不得只改写盘或只改读盘。不得用修改 `MIN_SEPARATION_LEAD` 来收窄区间。
|
||||
- 相关记录:BUG-423、BUG-560、BUG-1367。
|
||||
- 复发自:无。
|
||||
- 修复版本:未修。
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
# 进度:生时校正交付区间收窄 2026-10-16
|
||||
|
||||
issue #77。分支 `codex/rectification-narrower-delivery-20261016`。
|
||||
|
||||
## 结论
|
||||
|
||||
这一轮只交付分段显示(T1)。问完题之后,卡片和旁白按还活着的时间段写「目前范围」,不再把中间已经排除的空档涂成一整段。打分、采用、确认、出题和进区间门槛都没有改。
|
||||
|
||||
T0 基线回放没有跑。T2 对半出题、T3 门槛 6、T4 合并回放都没有做。原因:任务书的红线要求先在同一套生产回放上量出「真值还在不在交付区间」。现有回放脚本不记录这一格,也不翻转第 1、3、5 题。没有这组数字就不能改「谁留在区间里」或「问哪一题」。红线没有放宽。
|
||||
|
||||
## 基线
|
||||
|
||||
- 计划里的 base `712a0fd2a19947405a1dfb486bad96a7661d41c3` 在 `git fetch origin --prune` 之后存在,分支从这里开出。
|
||||
- 任务书示例里的 `origin/staging` @ `9b7509155` 不是这次开工点。fetch 时 `origin/staging` 已经是 `712a0fd2a19947405a1dfb486bad96a7661d41c3`。
|
||||
- 研究记录 `docs/research/rectification_width_funnel_2026_10_16.md` 只作背景,不用它代替本轮基线。
|
||||
|
||||
## 做了什么
|
||||
|
||||
- 前端 `livingDisplayFromCandidates`:还没淘汰、并且离峰值不足 8 分的候选,取出各自的簇区间。空档不超过 4 分钟的相邻段合并;空档 5 分钟保持两段。宽度按每段首尾都算进去的分钟数相加。超过 3 段时,`windowIntervalsLabel` 只写前 3 段,再写「等 N 段,共约 X 分钟」。
|
||||
- 没有簇区间的旧结果仍用原来的首尾,避免把缺字段收成空白。
|
||||
- 交付卡标题、盘型交付的分钟范围、采用和中间轮旁白、口头可说的钟点、遥测里的范围宽度,在有簇区间时改用上面的结果。
|
||||
- Python 侧同一套合并放在 `scripts/rectification/living_display_intervals.py`。没有放进 `candidate_window.py`,因为那个文件在密封打分身份里,改它会改冻结哈希。打分代码不引用这个新文件。
|
||||
- `frontend/DESIGN.md`、`frontend/docs/VOICE.md`、`CHANGELOG.md` 已同步。
|
||||
|
||||
## 口径
|
||||
|
||||
| 位置 | 这一轮用的口径 |
|
||||
| --- | --- |
|
||||
| `scripts/rectification/candidate_window.py` 的 `interval_union_width` | 决策包络,未改 |
|
||||
| `scripts/rectification/api_service.py` 的宽度 | 决策包络,未改 |
|
||||
| `scripts/rectification/decision_policy.py` 的平台宽度 | 决策包络,未改 |
|
||||
| `credible-range.ts` 的还有效区间 | 决策包络,门槛仍是 8 |
|
||||
| `windowIntervalsWidth`、精度门、候选平台 | 决策包络,未改 |
|
||||
| 技能报告里的「不可分宽度」 | 决策包络,未改 |
|
||||
| 时间轴色带 | 仍是 `credible_range` 的单段首尾 |
|
||||
| 会话标题 | 仍是数据库函数里的单段。本轮不改表 |
|
||||
| 扫描块上的钟点标签 | 仍用块自己的区间;段数超过 3 时会走同一句「等 N 段」 |
|
||||
| 交付卡、盘型范围、旁白、口头钟点、遥测宽度 | 有簇区间时用还活着的段;没有则仍用旧首尾 |
|
||||
|
||||
只读范围那一行要等结果里已经有 `credible_range` 才出现。簇完全拆开、旧范围为空时,这行仍不显示;卡片标题仍按活着的段写。
|
||||
|
||||
## 没做的
|
||||
|
||||
- T0:没有产出 `docs/research/rectification_narrower_delivery_baseline_2026_10_16.json`。
|
||||
- T2:`DEFAULT_MAX_DISCRIMINATION_ROUNDS` 仍是 8。探针供给、对半选题、少数一侧不足 20% 就不出,都没改。记为 BUG-1368,状态 blocked。
|
||||
- T3:没有 `DELIVERY_RANGE_LEAD`,没有分档回退表。写盘和读盘仍都是 8。记为 BUG-1369,状态 blocked。
|
||||
- T4:没有产出 `docs/research/rectification_narrower_delivery_replay_2026_10_16.json`。
|
||||
- 显示用的候选是虚构的卡片形状,不是一份 ±60 黄金样本。仓库里现成的黄金样本没有「前后 60 分钟、中间有大于 4 分钟空档」的簇,本轮也没有跑出这样一份回放。
|
||||
- 真机清单写在 `docs/testing/rectification-narrower-delivery-20261016.md`,没有在手机或浏览器里走一遍。
|
||||
|
||||
## 检查
|
||||
|
||||
| 检查 | 命令 | 结果数字 |
|
||||
| --- | --- | --- |
|
||||
| 类型检查 | `frontend` 下 `tsc --noEmit` | 0 错误 |
|
||||
| lint | `frontend` 下 `npm run lint` | 0 error,123 warning(原有警告,没有顺手改) |
|
||||
| 显示单测 | 含在下面的前端测试里 | 6 条都通过 |
|
||||
| Python 显示 | `.venv\Scripts\python.exe -m pytest tests/test_rectification_living_display_intervals.py -q` | 4 passed |
|
||||
| 隐私标记 | `.venv\Scripts\python.exe -m pytest tests/test_repo_privacy_markers.py -q` | 62 passed |
|
||||
| 前端测试 | 564 个不含数据库夹具的测试文件,`tsx --test --test-concurrency=8` | TAP 计 3938 条:通过 3893,失败 45,退出码 1 |
|
||||
| 生产路径 PG 回放 | `varga_resolution_persisted_replay.py`,77 例 × 三档 × {全对,翻第 1/3/5 题} | 未跑 |
|
||||
| Python 快速门 | `run_quality_gate.py --profile quick` | 未跑 |
|
||||
| 数据库套件 | `npm run test:db` | 未跑(没改表) |
|
||||
| 首屏构建 | `frontend` 下 `npm run build` | 退出码 0。`/` 为 Static。首页引用的 29 个 JS 按 gzip-9 合计 570406 字节。没有用改动前的代码在这台机器上再构建一次,所以不写增减百分比 |
|
||||
|
||||
现有回放脚本固定全答对、最多 6 轮、两种段顺序都跑,记录的是分盘段是否保住真值,不是「真值在不在交付区间」。一次中途编译失败的单例冒烟不能当作基线,已经作废。
|
||||
|
||||
`npm test` 先按全量启动。数据库容器的健康检查一直停在 starting,C 盘当时只剩约 4.2 GB,所以中止了这次全量,并清掉测试容器。随后改跑 564 个不启动数据库夹具的测试文件,跳过 50 个会拉起 PostgreSQL 的文件。45 条失败都不是这次显示改动的断言:4 条是 Windows 上把盘符拼成 `G:\G:\` 后找不到文件;6 条是本机没有 WSL;约 32 条是加载 `tailwind-merge` 时解析失败。其中首页往返那一个文件单独再跑仍是 17 失败、0 通过,同一条解析错误,不是并行才出现;1 条是回答计时期望 `answer_truncated` 实际得到 `empty_answer`;2 条是技能路径用反斜杠,对不上写成正斜杠的断言。本轮 6 条分段显示测试都在通过的 3893 条里。日志没有打出运行器最后的汇总行,上面的数字是按 TAP 的 ok / not ok 行数出来的。
|
||||
|
||||
## 偏离
|
||||
|
||||
- 任务书让步是先交 T0+T1。T0 没有数字,所以不能声称 ±60 已从约 71 分钟降到约 42 分钟。代码只保证:有空档时卡片不再画包络。
|
||||
- 会话标题和「不可分宽度」仍是决策包络。标题要改数据库函数,任务书禁止本轮改表。
|
||||
- 显示成员仍用门槛 8,因为门槛 6 没有交付。这和写盘、读盘保持同一个数。
|
||||
@@ -0,0 +1,15 @@
|
||||
# 真机清单:交付范围按还活着的段显示(2026-10-16)
|
||||
|
||||
这一版只改「目前范围」怎么写。题数仍是原来的上限,进区间的门槛仍是 8 分。不要把任何人的出生日期、钟点或姓名写进这份清单、进度或聊天记录。
|
||||
|
||||
在一台已登录的测试账号上,用前后各 30 分钟的窗口走完一次校正:
|
||||
|
||||
1. 问完这一轮会出的选择题,直到出现范围卡片。
|
||||
2. 看卡片标题是一段,还是用顿号分开的几段。
|
||||
3. 若是两段或三段,旁白里应能看到「剩余约 X 分钟,分 N 段」。不应出现「定到分钟」。
|
||||
4. 若超过三段,标题只写最前面的三段,并写一共几段、大约还剩多少分钟。
|
||||
5. 中间已经空出来的间隔,不应再被画成一整段连续时间。
|
||||
6. 点「更像这个」之后,排盘用的是选中的那一分钟,不是把整段都确认掉。
|
||||
7. 这一版不会因为门槛改成 6 而少留人,也不会多问到 12 题。若题数或收窄幅度和改版前一样,这是预期。
|
||||
|
||||
本轮没有在真机上执行这份清单。
|
||||
Reference in New Issue
Block a user