test(w05): 补一条读真文件的引用相等断言 —— 镜像测试证明机制,这条钉住真文件此刻是对的

复审 Important:w05-s3-review-recompute.test.ts 手写镜像、不 import case-model.ts(架构上也
不能),证明的是"少了 let 会怎样"这个机制,却没有任何东西钉住真文件此刻还带着 let: SHARED_LET
——AutoRecipe.let 是可选字段,typecheck 不报;明天有人把 S3_review.auto.let 删掉,原样重犯
这次的 Critical,镜像测试的红绿完全脱钩、不会发现。

在 steps.test.ts 里"S2 与 S3 用的是同一份投影"那条 toBe 断言旁边加同风格的一行:
expect(stepOf('S3_review')?.auto?.let).toBe(stepOf('S2_assess')?.auto?.let) ——
零新增 import,读的是真 case-model.ts。变异验证:把 S3_review.auto 的 let: SHARED_LET, 那一行
删掉(diff 核过只改了那一行),这条断言变红(undefined vs 期望的绑定对象);加回来
(diff 核过与原文件逐字节相同),变绿。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LKMZDwMbyKzjw6Hembwvet
This commit is contained in:
xcs
2026-08-29 17:47:36 +08:00
co-authored by Claude Opus 5
parent 392d085f51
commit b2159022bc
@@ -314,6 +314,18 @@ describe('S3 / S4 配方', () => {
expect(s3[1]).toBe(s2[3]);
});
/*
* **这一条读的是真 `case-model.ts`,不是任何镜像**(2026-08-29 复审 Important fix round 2)——
* `w05-s3-review-recompute.test.ts` 证明的是机制(S3 少了 `let`,复用的投影主键就算不出来,
* 写会被静默丢掉、或拼出一行垃圾);但那份测试手写镜像、不 import 这份真文件(架构上也不能),
* 红绿与 `case-model.ts` 此刻写的是什么**完全脱钩**——明天有人把 `S3_review.auto.let` 删掉,
* 原样重犯这次的 bug,`AutoRecipe.let` 是可选字段(typecheck 不报),镜像测试也不会变红。
* 这一条补上「读真文件」那一半:S3 与 S2 的 `auto.let` 必须是**同一个引用**,少了就在这里当场炸。
*/
it('S3 与 S2 共用同一个 `let` 引用 —— 少了它,复用的投影主键在 S3 那一拍就是未绑定的空串', () => {
expect(stepOf('S3_review')?.auto?.let).toBe(stepOf('S2_assess')?.auto?.let);
});
it('S3 的卡:审核面孔、单一选项、挂本步的件', () => {
const card = s3[2];
expect(card?.kind === 'card' && card.as).toBe('decide');