fix(rectification): keep one delivery and adopt with the birth date
Accept and GET now decide with the same birth snapshot as the answer, so an under-age probe cannot flip can_adopt. The exit skips a second write when this reply already delivered. The card stays without an adopt button when adoption is not allowed, and a refusal shows the Chinese sentence.
This commit is contained in:
@@ -16674,6 +16674,52 @@
|
||||
- 复发自:无
|
||||
- 修复版本:研究分支 `codex/rectification-nadi-seconds-research-20261005`,2026-10-05 Claude 验收后合入 staging(只有研究脚本与文档,没有运行时改动)
|
||||
|
||||
## BUG-1241 | 校正交付后同一轮又补出第二段回答
|
||||
|
||||
- 状态:resolved(分支 `codex/rectification-delivery-dup-adopt-20261006`)
|
||||
- 首次发现 / 最近更新:2026-10-06 / 2026-10-06
|
||||
- 来源:10-06 测试环境真机。任务书 `docs/tasks/TASK-rectification-delivery-dup-adopt-20261006.md`。
|
||||
- 影响面:生时校正答完最后一题后的交付。不改引擎,不改数据库。
|
||||
- 现象:同一轮出现两段助手回答。前一段是采用旁白的改写。后一段是确定性兜底,带分钟范围和「还剩几个候选」。刷新后两段都在。
|
||||
- 触发条件:答题路径已经把改写后的交付句写入本轮;收尾补位找不到已问轮次编号,又用子串去比对。改写句不是兜底原文的子串,于是再写一条。
|
||||
- 根因:BUG-1153 的防重只看「上一条是否包含确定性原文」。当时的测试把上一条写成已经包含这段原文,所以没覆盖「上一条是另一句改写」。60 秒内不重复记账的标记也没有拿来比对这句已经写下的交付。
|
||||
- 修复:答题回复在落库前记下这句交付原文。收尾补位若发现上一条助手原文(去掉空白后)就是这句,就不再写。子串比对保留。没有任何回复承载这句时,补位仍写 1 条。不把旁白函数传进收尾,也不改旁白提示词。选择题 JSON 在已有轮次编号时带上 `x-rectification-turn-id`,作为额外保险;真库验收不依赖这个头。
|
||||
- 验证:`frontend/tests/rectification-delivery-dup-adopt-20261006.test.ts` 覆盖「上一条是改写句则 0 条新写入」和「上一条不是这句则仍写 1 条」。BUG-1153 原测试仍通过。真 PostgreSQL 17 上,种好的并列卷宗走同一条收尾后,助手交付消息恰好 1 条。本机没有星历引擎,收尾里的刷新失败得很快,失败之后也没有写出第 2 条。
|
||||
- 防复发:上述测试。跳过条件是「上一条等于已记下的交付句」,不能只靠加长子串。
|
||||
- 相关记录:BUG-596、BUG-1149、BUG-1153。
|
||||
- 复发自:BUG-1153。旧测试的上一条已经包含确定性原文,改写句走不到那条断言。
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-1242 | 点采用被拒,因为采用和读取没用答题时的出生日期
|
||||
|
||||
- 状态:resolved(分支 `codex/rectification-delivery-dup-adopt-20261006`)
|
||||
- 首次发现 / 最近更新:2026-10-06 / 2026-10-06
|
||||
- 来源:同上,同一轮真机。卡片上能点采用,接口返回 409 `adoption_not_allowed`。
|
||||
- 影响面:生时校正的采用与案例读取。不放宽采用门,不改成年下限,不改数据库。
|
||||
- 现象:答题当时判定可以按代表时间采用。点采用时同一份卷宗被判成还在区分候选,`can_adopt` 为假,返回 409。案例读取和采用走的是同一种缺出生日期的判定,和答题不一致。
|
||||
- 触发条件:证据指纹已经对上,卷宗里还有一道低于成年下限的区分探针。答题路径带了出生日期,探针被拿掉,结论是可以采用。采用和读取只传指纹,缺出生日期时这道探针仍像能问,结论翻成不可采用。只补「快照仍是当前」不能对齐;出生日期能对齐。过期指纹上强行标成当前也会改结论,生产重算不会对着过期指纹这样做。
|
||||
- 根因:BUG-598 只把成年下限接到答题和巡检回退。GET 与 accept 仍各自调用判定,不带出生日期。BUG-680 的成对测试没有把出生日期算进「两边必须相同」的入参。
|
||||
- 修复:出生快照读出校验过的日期,答题、GET、accept 以及其余生产判定调用共用这一份入参。读不到快照就失败关闭:accept 返回 503「暂时无法采用」,GET 仍是「暂时无法读取校正记录」,不退回缺日期的相反结论。快照是否当前仍由卷宗自己算,答题路径不再单独传 true。采用门的集合没有加成员。
|
||||
- 验证:对拍测试覆盖有无未成年探针、并列与不并列。修前那种只传指纹的调用仍是不可采用;共享入参后答题、采用、GET 都是可以按代表时间采用。源码合同要求生产代码里新增的判定调用旁边出现共享入参函数。真 PostgreSQL 17 上同一份并列卷宗:共享入参 `can_adopt` 为真,GET 与之相同,旧的只传指纹仍为假。
|
||||
- 防复发:上述对拍与源码合同。`collect_evidence`、`discriminate_candidates`、`validate_holdout` 的公开 `can_adopt` 仍必须为假。
|
||||
- 相关记录:BUG-399、BUG-417、BUG-497、BUG-598、BUG-680。
|
||||
- 复发自:BUG-598。关联 BUG-680:成对测试没有覆盖出生日期这一个入参。
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-1243 | 不能采用时卡片仍给出采用按钮,拒绝文案是英文代码
|
||||
|
||||
- 状态:resolved(分支 `codex/rectification-delivery-dup-adopt-20261006`)
|
||||
- 首次发现 / 最近更新:2026-10-06 / 2026-10-06
|
||||
- 来源:同上。卡片在交付结果上显示采用,点下去被拒,界面带出 `adoption_not_allowed`。
|
||||
- 影响面:盘型卡和旧分钟卡。不新增结果字段,不新增第二张卡。
|
||||
- 现象:交付结果里只要卡片出现,按钮也出现,不看公开的 `can_adopt`。拒绝时原文把机器代码给到界面。快照不刷新,按钮还在。
|
||||
- 根因:BUG-681 让交付结果都显示卡片,按钮却没有使用和采用接口相同的判据(采用集合且 `can_adopt` 为真)。客户端把 409 的代码直接显示出来。
|
||||
- 修复:盘型卡和分钟卡都只在采用集合且 `can_adopt` 为真时显示按钮和「采用后按…排盘」。不能采用时卡片仍在,没有按钮,也没有那一行。已采用仍显示「已采用」。409 的 `error` 改为「这次的结果还不能采用,已刷新到最新状态」,`code` 仍是 `adoption_not_allowed`。客户端先重拉快照,再显示这句中文。
|
||||
- 验证:组件测试覆盖交付但不可采用、可以采用、分钟卡三种。渲染结果里没有 `adoption_not_allowed`。409 的假请求会重拉快照,错误文案是那句中文。本轮没有在浏览器或手机上点过按钮。
|
||||
- 防复发:上述组件测试和 409 测试。`frontend/DESIGN.md` 校正状态表写明不能采用时卡片仍在、没有按钮。
|
||||
- 相关记录:BUG-497、BUG-681。
|
||||
- 复发自:无。BUG-681 要求卡片出现,没有要求按钮和公开 `can_adopt` 一致;BUG-497 禁止把不可采用的结果放进采用集合,本轮没有放宽。
|
||||
|
||||
## BUG-1244 | 普通对话首轮按固定小标题汇报,读起来不像聊天
|
||||
|
||||
- 状态:fixed-pending-verify(分支 `codex/consult-conversational-answer-20261006`;部署和真机清单完成前不标 resolved)
|
||||
|
||||
Reference in New Issue
Block a user