裁定时间:2026-09-17 09:5x | HEAD:d5956550 | hostname:192.168.1.20
裁判依据:剧本 docs/plans/335-drill-playbook.md §7(四态唯一真源)· §8(证据五要素)
角色边界:只裁四段齐全与判据成立,不替执行席跑业务、不替执行席签字(§4 v1.6 对齐)
| 项 | 内容 |
|---|---|
| 目标 | 335 六幕总终判(第五幕三门 + 各幕汇总放行裁定) |
| 范围 | evidence/335/** 全量证据 + 三门执行器实跑 + 静态核证补证 |
| 批准来源 | R1 派工(WIP-371 裁判权)+ 主会话「五幕总判」令 |
| 验收标准 | 逐幕四态可复现;每判附证据锚点;BLOCKED 与 FAIL 不互相冒充 |
剧本 §7 原文:「§1–§6 全部 PASS 且凭据齐全;任一 BLOCKED ⇒ 整个 335 判 BLOCKED,不得进生产迁移提请」。
当前六幕中 2 幕 BLOCKED、1 幕未执行 ⇒ 触发该条款。
⚠️ 先说清楚一句:本次 BLOCKED 不等于演练失败。335 真正跑通的东西很硬——
第二幕版本化发布/回退链路(v4→v5→rollback→v6)字段级 PASS、Q-B 收敛 PASS、
跨租户 403 已复活、pay/notify 验签已合入且 fail-closed 正确。
BLOCKED 卡在证据未落盘与门槛未销项,不在主链路本身。
| 幕 | 判定 | 依据 | 关键缺口 |
|---|---|---|---|
| 00 门槛 | 🔴 BLOCKED | §0.1 七门槛 | 门槛 5 未补书面裁决/门槛 6 未销且本轮实测 FAIL/门槛 7 未裁定 |
| 01 初始化 | ✅ PASS-附条件 | 363-第一幕证据验收裁定-v1.2 | cert 受 DNS 未预配限(BLOCKED-环境依赖 → 转上线前置件) |
| 02 配置 | ✅ PASS | 371-第二幕字段级终判-v2(exit 0)+ 372 收敛 | 无(Q-B 方案 A 已落码,R1 三例复测 PASS) |
| 03 M1 | ⚠️ PASS-附条件 | 03-m1/drill.txt 全绿 | 🔴 证据非本次演练期产生(时间戳 2026-09-15 13:46,早于 09-16 11:2x 开跑;hostname=192.168.1.21 非演练机位) |
| 04 业务链 | 🔴 BLOCKED | 见 §四 | 4.1 实测量 7/16 且分母无书面清单;4.4 证据位零落盘 |
| 05 校验门 | 🔴 BLOCKED(含 V6 双 FAIL) | 见 §三 | AG 门 4 包 MISSING;V1-V5/V8 证据位全空 |
| 06 回退 | ⬜ 未执行 | 06-rollback/ 仅 .gitkeep | 六步零证据(容器与库未退场) |
🔴 前置事实:裁定前05-gates/内三门输出一份都没有(只有route-gate.txt与consumption-ruling.md,二者分属第四幕与 363 线)。
本岗按 §5「裁判=波波」职责代跑三门并留档 4 份证据(含五要素头),不替执行席签字。
| 门 | 执行器 | 退出码 | 判定 | 依据 |
|---|---|---|---|---|
| E1–E8 错误契约门 | check_error_contract.py(py3.13) | 0 | ✅ PASS-附条件 | 结构 3 项全 PASS(重复 0 组/状态越界 0/口径 SKIP) |
| AG1–AG6 包验收门 | docs/tools/acceptance_gate.py | 1 | 🔴 BLOCKED | P1/P2/P3/P5 MISSING,P4 FAIL,仅 P6 PASS |
| V1–V8 用户价值门 | gate_check.py release|replication | 1 / 1 | 🔴 双 FAIL(性质见 §五) | release:5 模块无人负责;replication:三要素全未就绪 |
| 门-ID 一致性 | 上述四份合并 | — | ✅ PASS-附条件 | 对照行已落 05-gates/naming.md |
剧本 §5 明写「E1 与 E7 为 P0,未出书面处置不得放行」⇒ E1 当前无覆盖、无书面处置。
脚本报 4 包「交付目录不存在」,候选路径 white-label/structure、docs/delivery/evidence/322 等。
实核:仓库内 white-label/ 目录根本不存在;evidence/ 下只有 324 与 326。
⇒ 这是「门的目录约定」与「实际交付惯例」脱节,不是四个包没干活:
357-P2包落点核证与自纠-v1.md 落盘。⇒ 判 BLOCKED(MISSING 不等于通过,剧本硬性规定),但处置方向不是催四个包补活,而是二选一:①各包按约定建 white-label/* 交付目录;②由契约持有席改门的候选路径以对齐现行落点。本岗不代改他岗门的实现。
00-gate/v1-mapping.md、04-biz/tasks/、02-config/consistency.md、04-biz/negative/、05-gates/metrics/、05-gates/aggregate.txt —— 六份证据位零落盘 ⇒ V1/V2/V3/V4/V5/V8 一律 BLOCKED(不得记 PASS)。
V8 剧本另有硬条款:「小齐未接入前判 BLOCKED,不得记 PASS」,与实测一致。
三个执行器输出全部未按 E/AG/V 定稿口径打印(分别打 B01+数字项、G1-G6、无编号)。
按剧本「否则判 BLOCKED」——本岗已在 05-gates/naming.md 落 G↔新名对照三表 ⇒ 该判据转 PASS-附条件(附条件=执行器后续改打定稿编号,成本极低)。
| # | 上轮判定 | 本轮 | 变化原因 |
|---|---|---|---|
| 4.1 隔离矩阵 | BLOCKED | 🔴 BLOCKED(维持) | 脚本重判 PASS 7/16;isolation-matrix-round2.csv 未修我指出的两条假阳性;13 域书面清单仍缺 ⇒ 触发 §0.1 门槛 4「签字表须附清单,否则 4.1 判 BLOCKED」 |
| 4.2 V8 幂等 | PASS-附条件 | PASS-附条件(维持) | 缺落库 count(*) 回显未补 |
| 4.3 黄金路径 | 认可 A 级 6/8 | ✅ 维持 | N4/N7 附议 BLOCKED-环境依赖(fail-closed 正行为,判 FAIL 会诱导向容错放行退化) |
| 4.4 支付验签 | BLOCKED-无证据 | ⚠️ 代码侧成立,证据侧仍 BLOCKED | 见下 |
| 4.5 路由门 | BLOCKED-零落盘 | ✅ PASS-附条件 | route-gate.txt 已落:路由 426/孤儿 0/ERROR 0/R2=0 R3=0(判据达标)。附条件=证据落在 05-gates/ 而非判据规定的 04-biz/route-gate.txt |
声称「12/13」,我的脚本实测 PASS endpoint = 7/16。差在两处:
/api/miniapp/admin/orders、/api/miniapp/admin/distribution/overview 路由根本不存在,404/404 只证明路径打错,与隔离无关;静态核证(miniapp_pay.py:115 起):pay/notify 已接 wxpay_notify,非沙箱路径 verify_signature 失败即 raise HTTPException(401, ...) 且不写库 ⇒ fail-closed 正确,剧本「全程无验签」的 P0 在代码侧已闭环。
🔴 但有一条可被外部构造的旁路:
sandbox_flag = body.get("sandbox") or _is_sandbox()
sandbox 标志取自请求体 ⇒ 任何一方 POST { "sandbox": true, "out_trade_no": ..., "status": "paid" } 即可跳过验签直接置 paid 并触发分佣。若生产 WXPAY_SANDBOX=true(演练很可能如此),该端点等效于无验签。
⇒ 4.4 判 代码侧 PASS-附条件:①生产强制 WXPAY_SANDBOX=false;②notify 只认服务端配置、忽略请求体中的 sandbox 标志。
证据位 04-biz/n4.txt(判据规定)仍零落盘 ⇒ 严格按 §8 五要素,本步骤仍记 BLOCKED-无证据。
gate_check.py 实测:
上线闸门:模块 5 个 / 未登记责任人 5 个 → FAIL
复制闸门:旺季复盘=false 全年贡献核算=false 当地责任人=空 → FAIL
两个判定必须分开,不能混:
| 层面 | 判定 | 理由 |
|---|---|---|
| 闸门机制本身 | ✅ 生效(正行为) | 判据是「有明确拦截行为」——它确实拦了,且给明原因,fail-closed 正确。与 N4/N7 的 503/501 同款,不得判 FAIL,否则等于惩罚正确的失败关闭 |
| 闸门给出的结论 | 🔴 当前不得上线、不得复制 | 这是事实,与「335 可否进生产迁移提请」直接冲突 |
⇒ 记 PASS(闸门机制生效)+ 阻断性附条件:在责任人登记与复制三要素就绪前,335 不得作为上线/复制依据。
⚠️ 门槛 6 我要多说一句:§0.1 已记「🔴 未销」,本轮实测仍是 FAIL。这是登记动作(填 5 个模块责任人),成本极低却挂了两天 ⇒ 建议 R1 立即登记或按 §0.1 授权在 §7 签字表显式接受该 WARN 并签字。本岗不代判 PASS。
| # | 事项 | 责任席 | 卡住哪一条 |
|---|---|---|---|
| 1 | 登记上线闸门 5 模块责任人(或签字表显式接受 WARN) | R1 | 门槛 6 / V6-release |
| 2 | 补 products 豁免书面裁决(§0.1 门槛 5) | R1 | 门槛 5 |
| 3 | 落 04-biz/n4.txt(4.4 验签实测回包) | 小齐 | 4.4 |
| 4 | 修 notify 的 sandbox 请求体旁路(只认服务端配置) | 小齐 | 4.4 附条件 |
| 5 | 4.1 重跑 + 附「13 域」书面清单 | 小齐 | 4.1 / 门槛 4 |
| 6 | 4.2 补落库 count(*) 回显 | 小齐 | 4.2 |
| 7 | AG 门:建 white-label/* 交付目录 或 改门候选路径 | 契约持有席 | AG 门 |
| 8 | V1/V2/V3/V4/V5/V8 六份证据位落盘 | 各执行席 | V 门 |
| 9 | 第三幕 M1 在演练期复跑(现证据早于开跑) | 冈子 | 03 幕 |
| 10 | 第六幕 6.1–6.6 退场(或显式裁定本轮不退场) | R1+小齐 | 06 幕 |
| 11 | E1 幂等检查项入执行器 或 出书面处置 | 契约持有席 | E 门 P0 |
docs/ 与 scripts/;未写任何业务代码**。-- 署名:波波(验收官)2026-09-17 09:5x | HEAD d5956550