二七王:第八轮核对(流程/牌型/玩法/算分)+ 新增阶段机迁移矩阵用例
规则方复述「开局庄家先叫分、不允许不叫分;第一局无庄家时默认座位0开始叫分」, 据此按四个维度重新取证,未发现不一致。 新增此前从未做过的取证:**阶段机迁移矩阵**。前几轮每个 handler 只测了 1~2 条 代表性失败路径,从没系统验证过「某个请求在别的阶段会不会被误放行、会不会静默 丢弃」。本轮把 8 个 RPC × 5 个阶段做成 40 格矩阵逐格驱动,全部符合:每个 RPC 只在应允阶段受理,其余一律回 STEP 失败包,无静默丢弃。 叫分起始者规则逐条取证,与规则方复述一致: - 第一局 firstseat=0、待叫者=0 - 之后每局起始 = 暂定庄家:连打 6 局逐局比对「上局 banker + result」 - 庄赢连庄:随机对局几乎打不出 result=0,用「叫70分 + 首家出最大牌」专门构造 - 庄输/投降顺延下家 - 首家不允许「不叫」:第一局与其后每局(含连庄局)发 call=0 一律回 RULE, 且叫分过程不变、仍轮到他自己 固化为 test/test_flow.js(7 项聚合断言,0.3s)。断言里带 cells===40,防止驱动 失败导致整行「跳过」而假绿。变异检验:去掉 chupai/maipai 的阶段校验、把 jiaofen 的阶段校验改成静默丢弃 —— 三条全部转红。 全套单测 540 → 547 项全绿。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -250,6 +250,48 @@ design §4(暗牌只有庄家可见 / 70 分亮 3 秒)、§9(查牌模式
|
||||
|
||||
---
|
||||
|
||||
## 第八轮核对(按 流程 / 牌型 / 玩法 / 算分 四个维度复核)
|
||||
|
||||
> 规则方复述了一条叫分规则:「开局庄家先叫分,不允许不叫分;第一局在没有庄家的情况下,默认座位号 0 玩家开始叫分」。据此按四个维度重新取证,**未发现不一致**。
|
||||
|
||||
**新增取证(此前从未做过):阶段机迁移矩阵。** 前几轮每个 handler 只测了 1~2 条代表性失败路径,从没系统验证过「某个请求在**别的**阶段会不会被误放行、会不会静默丢弃」。本轮把 8 个 RPC × 5 个阶段做成 **40 格矩阵**逐格驱动:
|
||||
|
||||
| | step1 叫分 | step2 选主/投降 | step3 埋牌 | step5 出牌 | step6 结算 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| jiaofen | ✓ 受理 | × STEP | × STEP | × STEP | × STEP |
|
||||
| xuanzhu | × STEP | ✓ 受理 | × STEP | × STEP | × STEP |
|
||||
| touxiang | × STEP | ✓ 受理 | × STEP | × STEP | × STEP |
|
||||
| maipai | × STEP | × STEP | ✓ 受理 | × STEP | × STEP |
|
||||
| chupai | × STEP | × STEP | × STEP | ✓ 受理 | × STEP |
|
||||
| mingpai | × STEP | × STEP | × STEP | ✓ 受理 | × STEP |
|
||||
| tishi | × STEP | × STEP | × STEP | ✓ 受理 | × STEP |
|
||||
| zhunbei | × STEP | × STEP | × STEP | × STEP | ✓ 受理 |
|
||||
|
||||
**40 格全部符合**,无误放行、无静默丢弃。(`mingpai` 在 step5 还需「已有人报无主」这一前置,首轮矩阵曾把它标红——是期望表漏了前置条件,不是缺陷。)
|
||||
|
||||
**叫分起始者规则逐条取证**(`design §4.2 + §4.6`,与规则方复述一致):
|
||||
|
||||
| 规则 | 取证 | 结果 |
|
||||
| --- | --- | --- |
|
||||
| 第一局默认座位 0 开始叫分 | `makewar → do_new_paiju(0)` → `firstseat=0`、待叫者=0 | ✅ |
|
||||
| 之后每局由**暂定庄家**先叫 | 连打 6 局,每局 `firstseat` 与「上局 banker + result」逐局比对 | ✅ |
|
||||
| 庄赢 → **连庄**(起始仍是该庄家) | 随机对局几乎打不出庄赢,用「叫 70 分 + 首家出最大牌」专门构造出 `result=0` 局 | ✅ |
|
||||
| 庄输 / 投降 → 起始顺延到下家 | 6 局中逐局验证 | ✅ |
|
||||
| **首家不允许"不叫"** | 第一局与其后每一局(含连庄局)的首家发 `call=0`,一律回 `RULE` 且叫分过程不变 | ✅ |
|
||||
|
||||
四个维度的现有取证汇总:
|
||||
|
||||
| 维度 | 取证手段 | 规模 |
|
||||
| --- | --- | --- |
|
||||
| **流程** | 阶段机 40 格矩阵、叫分序列 DFS 80 条终局、多局大局(6 局/12 局)、轮庄含连庄、中途解散、端到端整局 | 本轮新增矩阵 |
|
||||
| **牌型** | §3 等级序列逐级、§5.3 相邻链(副牌同花色 / 主牌不限花色 / 同档位不相邻)、§5.2 跟牌穷举差分 11 万组 | `test_arith`/`test_followdiff` |
|
||||
| **玩法** | §5.4 甩牌最大性 6000 例差分、甩错惩罚、§5.4.4 分量拆解、整局带牌型模糊每墩胜者差分、§9 查牌门控、下发面泄露审计 1.8 万次判定 | `test_fuzz`/`test_leak` |
|
||||
| **算分** | §7 算子全量对拍 7308 格 + design 表 141 格、§6.3 扣底、§8.1 算奖、§8.4 分配公式、结算零和 | `test_calc`/`test_paiju` |
|
||||
|
||||
**固化产物**:新增 `test/test_flow.js`(7 项聚合断言,0.3s)。变异检验:去掉 `chupai`/`maipai` 的阶段校验、把 `jiaofen` 的阶段校验改成静默丢弃——三条全部转红。全套单测 **540 → 547 项**全绿。
|
||||
|
||||
---
|
||||
|
||||
## 结论摘要
|
||||
|
||||
> **注**:下表是**首轮核对**的初始发现快照(保留以记录起点)。其中 §4.4、§5.4、§6.3、§7、§8.1-8.4、§9、§10、§11 等标 🟥/🟧/🟨 的项**后续均已修复并验证**——当前逐节状态以本文档后面的分节详情及全套单测(270 项全绿)为准。
|
||||
|
||||
Reference in New Issue
Block a user