
joywayerandClaude Opus 5
e2d470d37f
二七王:修复夹具导出的活引用污染并引入固定种子
审查发现 C-1(阻塞):export_packets.js 的 snap() 直接存了
class.export.js get_deskinfo() 返回的 PushCards.playproc/seatlist——这两个
字段在服务端是无拷贝的活引用赋值,脚本却在整局跑完后才统一 JSON.stringify
写盘,导致中途出牌不断原地改写这两个对象,已存的 step5 快照被事后篡改成终
局状态。修法是在 snap() 里对 get_deskinfo 的返回值套一层已有的 clone()。这
是导出脚本"延后序列化"这个用法本身的缺陷,不动 server/。
同时按裁决引入固定种子:min_random 只在 class.paiju.js 的发牌洗牌里用到,
原始实现走 Math.random();改为在导出脚本进程内 monkey-patch 一个 xorshift32
确定性 PRNG(写法与服务端既有测试 test_flow.js 等一致),种子值 DEAL_SEED 写
成具名常量。连跑两次导出脚本,packets.json 逐字节无 diff。
test_fixture.js 补强三条断言:底牌"只发给部分座位"改为精确断言恰好1个座位;
新增 packetIndex/roomtype/step 自洽性检查;step5 快照的 playproc 回归锁直接
捕获本次的活引用污染类缺陷;deskinfo 阶段覆盖从"≥3个"改为显式钉死
[1,2,3,5,6]。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 18:35:02 +08:00
..
2026-08-27 18:35:02 +08:00
2026-08-26 19:51:31 +08:00
2026-08-26 19:51:31 +08:00
2026-08-26 19:51:31 +08:00
2026-08-26 22:27:05 +08:00
2026-08-26 22:17:09 +08:00
2026-08-26 20:01:51 +08:00
2026-08-27 09:06:01 +08:00
2026-08-27 18:15:04 +08:00
2026-08-27 18:35:02 +08:00
2026-08-27 17:19:43 +08:00
2026-08-27 17:46:01 +08:00
2026-08-27 17:41:09 +08:00
2026-08-27 18:01:56 +08:00
2026-08-27 18:04:33 +08:00
2026-08-27 18:09:06 +08:00
2026-08-26 22:24:16 +08:00
2026-08-27 18:15:04 +08:00
2026-08-27 17:21:39 +08:00
2026-08-27 17:32:44 +08:00
2026-08-26 22:27:05 +08:00
2026-08-26 19:51:31 +08:00
2026-08-27 08:40:48 +08:00