Archived
fix(w05): 重判的行由确定的一侧圈 —— 打回点名工作温度,不许去改静态电流
用户实测:「我打回让修改工作温度的结论,给我改了静态电流的结论」。库里的证据一字不差: 工作温度它没改(还给了理由:候选值 1℃ 远窄于 -40~+85℃,硬约束不满足 —— 这半截是对的), 而没人问过的静态电流被它从 soft_mismatch 翻成 match,evidence_note 里却写着「维持原判」。 根因不是提示词不够严,是**整表交出去、整表写回来**:没有任何东西限制它只动被点名的那一行, 而「我只改了那一条」这句话本身也出自它嘴里。规范 §4.6 纪律一(行由确定的那一侧决定, 不由 AI 决定)—— 昨天刚加的重判轮自己栽在这条上。 S3 复核轮两笔变四笔(全部只在 case_redo_note != "" 那一轮跑): ① 圈范围:按字面点名(contains,与基座给模型摆的「意见点名对上了哪几行」同一种认法)标 named / kept(明细表新增 redo_scope 列); ② 兜底:一条都没点到(意见说的是整批)→ 整表算被点名,读上一笔刚写下的 tally,不重算; ③ 重判只喂 named 的行 —— 没点名的行 AI 连见都见不到,自然改不着(也省 token); ④ 写回也只写这几行;模型漏答某一条时 else 兜回它上一轮的值。 同批修一条挡了两次路的老毛病(昨夜刚记 debt,今晚又撞停、还卡住了我自己的验证): 人答得比发卡那一拍收尾还快时,回传被判 stale、wake 又被那一拍的 park 覆盖,单子停在 awaiting-event 再没人叫醒。deliver 判了 stale 照旧不跑这一拍,但把停着的单子拨回 running。 验收:e2e w05 5/5 released、被拒 0;案例 0 新断言「打回只动了被点名的那几条,其余行一个字没变」 真跑通过(途中逼出脚本自己的坑:放行会清空草稿层,快照得留在放行之前); 模型调用 案例 0 = 2 次、其余 = 1 次。四处变异验证。W05@2.18.0 已装库。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LKMZDwMbyKzjw6Hembwvet
This commit is contained in:
+34
-1
@@ -1721,7 +1721,14 @@ B 表却**不在**同一份 `only` 名单里——B 表对应的那一行仍留
|
||||
|
||||
---
|
||||
|
||||
## 人答得太快,那条回传被判 `stale`,单子就此没人叫醒(2026-08-31 夜,未修)
|
||||
## ~~人答得太快,那条回传被判 `stale`,单子就此没人叫醒~~(2026-08-31 夜发现 → **2026-09-01 已修**)
|
||||
|
||||
**已修**:`task-service.deliver` 判了 stale 之后**照旧不跑这一拍**(stale 的本意不变),
|
||||
但把停着的单子拨回 `running` 交给推进器 —— 三样凑齐时(卡答完了、没有新卡在等、单子停着)
|
||||
再没有第三样东西会叫醒它,补的就是最后这一下。真没事可干,它自己再停回去(代价一拍空转)。
|
||||
`deliver-stale.test.ts` 两条钉死(停着的拨回 running / 本来就在跑的一个字不动),变异验证过。
|
||||
下面是当时的诊断,原样留着 —— 指纹与病理都对。
|
||||
|
||||
|
||||
**实测指纹**(e2e w05 案例 0,ACT-WORK-05):
|
||||
|
||||
@@ -1755,3 +1762,29 @@ B 表却**不在**同一份 `only` 名单里——B 表对应的那一行仍留
|
||||
**别去放宽 stale 守卫本身** —— 它治的是另一个真病(晚到十几秒的事件把没人答的卡收掉,
|
||||
2026-08-27 实测),两件事不要混。
|
||||
|
||||
---
|
||||
|
||||
## 审核卡上的「本轮结论」在重判之后会过期(2026-09-01,未修)
|
||||
|
||||
**实测**(柴浩那一单 f14d94de):两张审核卡的 `本轮结论` 都写着
|
||||
「共 7 项核心参数:0 项一致 / 5 项硬约束不符 / 2 项软约束不符」,而第二张发出去的那一刻
|
||||
草稿里已经是 **1 项一致 / 5 硬 / 1 软**(重判把一条从 soft_mismatch 翻成了 match)。
|
||||
卡上那一行说的是上一轮的数。
|
||||
|
||||
**根因不是 bug,是两条正确规矩撞在一起**:
|
||||
- 卡的 `本轮结论` 取自 `substitution.relation.difference_summary`;
|
||||
- 而 S3 用的是 `RELATION_RECOMPUTE`(只重算 `recommendation_level`),**故意不碰**收口四格
|
||||
(推荐理由 / 差异摘要 / 风险 / 验证要求)—— 2026-08-31 用户定「这四格人可以就地改」,
|
||||
每跑一次就按规则重写会把人写的话冲掉。
|
||||
|
||||
于是:等级会跟着重判变(判据核心那条链没断),**摘要这句话不会**。
|
||||
|
||||
**要治**(方向,未验证):
|
||||
- 卡面那一行改成**按基座读数当场拼**(不读 `difference_summary`)—— 但拼法与
|
||||
`RELATION_PROJECTION.difference_summary` 会成为两处真源,得先把拼法抽成一处;
|
||||
- 或者给 `difference_summary` 一个「人动过没有」的记号:人没改过就随重判重写,改过就留着。
|
||||
记号本身要是基座数得出来的(别又变成模型自报)。
|
||||
|
||||
**先别做的理由**:它只影响卡上那一句话,件上逐条明细与等级都是真的;而两种治法都要动
|
||||
「人可改的格子」这条已经踩过坑的边界(2026-08-31:「人改完一保存就被冲掉」),值得单独一轮。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user