Archived
fix(w05): S3 补一笔只重算派生列 —— 人改了四态,结论才跟得上
浏览器走查实测:件上承诺「你改动下表里任何一条四态,这五项当场重算」, 而把使能阈值由 mismatch 改成 match 保存后,同一行的 judgement_class 仍是 hard_mismatch、risk_level 仍 high —— 行内自相矛盾,结论纹丝不动 (仍「不推荐 / 高风险 / 1 项硬约束不符」)。 断链在:S3 复用的 RELATION_PROJECTION 算结论读的是 judgement_class 的 tally, 而 judgement_class 由 difference_status 在差异明细那一笔的 when 链推出来 —— 那一笔只在 S2。人改的 difference_status 没有任何东西把它转成 judgement_class。 当初不把那一笔放进 S3 是有真理由的:它的 difference_status 走 lookup:'result:items', 而 result: 只在 analyze 那一拍存在,在 S3 重跑会把人刚改的值抹成空。 修法:加 DIFFERENCE_ITEM_RECOMPUTE 作 S3 的第一笔 —— each(mine:…) 不 prune (避开「已落地行不许 prune」),fields 只有两个主键列 + JUDGEMENT_DERIVED_FIELDS (judgement_class / risk_level),**一列都不多写**,稀疏 patch 绝不碰 difference_status 与人可改的叙述列;排在 RELATION_PROJECTION 之前。 when 链提成 JUDGEMENT_DERIVED_FIELDS 一处真源,S2 与 S3 spread 同一个, 新测试用 toBe 断言引用相等(不是形状相同)。 **旧测试为什么漏掉**:w05-s3-review-recompute.test.ts 的 HUMAN_EDIT mock 在同一个 patch 里同时写了 difference_status 和 judgement_class —— **把系统本该做的翻译自己 先算好了**,那座缺失的桥就此被掩盖。现改为只写人真能碰的列(difference_status + evidence_note),并加修前/修后成对断言。 变异验证两路都真红:①拆掉配方里那一笔 → 2/3 红,复原 → 3/3 绿; ②git stash 真 case-model.ts → steps.test.ts 5 条结构测试红,pop → 38/38 绿。 包版本 2.1.8(已装,SQL 核过)。pnpm gates 退出码 0(2454 测)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LKMZDwMbyKzjw6Hembwvet
This commit is contained in:
@@ -54,7 +54,7 @@ export const manifest: ActivityManifest = {
|
||||
activityId: ACTIVITY_ID,
|
||||
name: 'ACT-WORK-05 · 差异评估',
|
||||
/* 重写不是改 —— 同版重装是 no-op(静默丢失,踩过) */
|
||||
packageVersion: '2.1.7',
|
||||
packageVersion: '2.1.8',
|
||||
category: '需求分析与方案匹配',
|
||||
sdkVersion: '0.1.0-m5',
|
||||
checksum: 'dev-checksum-part-substitution-assessment',
|
||||
|
||||
Reference in New Issue
Block a user