裁定:波波(验收官 · 第五幕裁判)
时点:2026-09-17 11:1x | HOST192.168.1.20| HEADcffa61d1
依据:剧本 §5(第五幕 · 校验门)+ §5·B V 系判据合入表(v1.4/v1.5 冲突登记)+ §7(四态不冒充)
输入:R1cffa61d1「销项全清请五幕复判」+1d8ee5a3AG 门甲案裁定 +00-thresholds/thresholds-closure.md+ 小齐05-gates/v1–v8六份新证据 +04-biz/isolation-matrix-v2.csv(v2.1)
实数:11 项销项全部有回应;其中 9 项实质销项,2 项部分销(已转附条件,见 §七)。
不再有 BLOCKED 幕:剧本 §7「任一 BLOCKED ⇒ 整个 335 判 BLOCKED」的触发源已全部处置——
⇒ 335 演练 = PASS-附条件(待第六幕完成后汇总终签)。
⇒ 第六幕(退场)可立即开跑:R1 + 小齐,t_demo 退场六步,完成后即可由签字表收官。
⚠️ 一句提醒:PASS-附条件 ≠ 可进生产迁移提请。附条件分两类——「六幕开跑前不必清」与「上线前置件必清」(见 §七),不要合并处理。
| # | 事项 | 我的核验方式 | 证据锚点 | 裁定 |
|---|---|---|---|---|
| 1 | 登记 5 模块责任人 | 实跑 gate_check.py release | 输出「模块 5 个 / 未登记责任人 0 个 / PASS」 | ✅ 销(附:owner=刘总待签字确认) |
| 2 | products 豁免书面裁决 | 查 commit + 文件 | cabd788c 在库;docs/plans/2026-09-15-products离群裁决包.md(11058 字节) | ✅ 销 |
| 3 | 04-biz/n4.txt 验签回包 | 读原文 | 401 + request_id: fd2ff58cd1c0 +完整错误体形态(真实回包,非转述) | ✅ 销 |
| 4 | notify 沙箱旁路修复 | 读代码 | miniapp_pay.py:130 sandbox_flag = _is_sandbox();body.get("sandbox") 已无 ⇒ 只认服务端配置 | ✅ 销 |
| 5 | 4.1 重跑 + 13 域书面清单 | 跑自写 check_335_isolation_v2.py + 读 thresholds-closure | 13 域清单落 333/03-隔离域适配矩阵;v2.1 补回 miniapp_distribution(显式 N/A,未删行);矩阵覆盖 13/13 | ✅ 销-附条件(附条件=下文 C1) |
| 6 | 4.2 落库计数 | 读 v8-count.txt | count = 1(五并发幂等后恰好一行) | ✅ 销 |
| 7 | AG 门二选一 | 读裁定 | 1d8ee5a3 + TASKS AG 门裁决行:采方案甲(独立验收线,不阻断 335) | ✅ 销(乙规格落实派给本岗 ⇒ 自持备用单) |
| 8 | V1/V2/V3/V4/V5/V8 证据位落盘 | 读六份全文 + 对编号 | 六份已落 05-gates/v{N}-*.txt | ⚠️ 部分销(形式销、编号错位,见 §三) |
| 9 | 第三幕 M1 演练期复跑 | 查剧本原文 | 335-drill-playbook-v1335-drill-playbook.md:122 延后裁决(刘总 09-16 12:4x)实证存在 | ✅ 销(按延后处理,转第二实例接入时触发) |
| 10 | 第六幕退场 | 读裁定 | thresholds-closure:本轮不退场,作收官最后一步 | ✅ 销(=本裁定触发 R1 跑六幕) |
| 11 | E1 幂等书面处置 | 读处置 | 过渡期 E1 以 4.2 V8 实测(v8.txt+v8-count.txt)替代;执行器补 E1 检查项排给本岗 | ✅ 销(补检查项=本岗自持单,见 C4) |
较上轮的两处实质进步(点名表扬,不是客气):
miniapp_distribution 被整行删除,v2.1 已补回并标注 ⚠️N/A + 原因(身份闸先行,403/403=身份拒非隔离拒)。这是正确做法:判不过就标注,不判不过就删行。sandbox:true 的请求可跳验签),现只认服务端配置。六份文件形式上落了,但两处与剧本不符:
① 证据位不符:剧本 §5·B 表 C 指定的是 00-gate/v1-mapping.md、04-biz/tasks/、02-config/consistency.md、04-biz/negative/、05-gates/metrics/、05-gates/aggregate.txt —— 六个指定路径一个未落,改落在 05-gates/v{N}-*.txt 新命名。
② 编号语义错位(剧本 §5·B v1.5 已登记的「第二套 V 系」冲突,本轮首次实际发生):
| 文件名 | 内容实际所属(小齐脚本口径=D 原则) | 剧本 V 编号口径(=G7 判据) | 是否支持所归档项 |
|---|---|---|---|
v1-映射文档引用.txt | D1-D10/R1-R4 十四映射无悬空 | V1=G7-1 原则覆盖完整 | ✅ 支持 |
v2-反攀比扫描输出.txt | D3 反攀比 | V2=G7-2 用户任务真机可完成 | ❌ 不支持 |
v3-三字段查询回显.txt | D5 溯源三字段 | V3=G7-3 界面承诺与实际一致 | ❌ 不支持 |
v4-负向用例.txt | D8 付费/安全解耦 | V4=G7-4 四红线负向测试 | 🟡 部分相关 |
v5-记录分离回显.txt | D9 记录分离 | V5=G7-5 双指标可复核 | ❌ 不支持 |
v8-gate_check-selftest.txt | 实为 G7-6 两闸门自检 | V8=G7-8 适用域证据聚合 | ❌ 错档(该文件实为 V6 的证据) |
裁定(依裁判职责②「凡引 V 编号证据必附 V↔G7 对照行,缺则判 BLOCKED」):
05-gates/naming.md 新增「表 D · V↔G7↔VG 三列对照」(本次随裁定一并推送)。这不是替别人补作业:缺的是「编号映射表」这一裁判产物 ;取证、回显、五要素(时间/执行人/命令/输出/判定)六份都齐。
🔴 但六份缺 hostname 与 commit 两项(我的五要素口径),且本机 192.168.1.20 不可达 staging ⇒ 登记为证据要素补齐项,不阻断。
两者的 PASS 在自己的口径下也不成立。判据明文写在 G7 草案:
而 check_g7_value_gate.py 的实现是全文 token 存在性计数(v3_provenance() 第 287-303 行、v5_record_split() 第 339-358 行):
for t in PROV_TOKENS:
if re.search(r"\b%s\b" % t, txt): # ← 只看「词出现在文件里没有」
found[t].append(relpath)
V5 更松:只筛出含 dispute 的文件,再检查 blob 里有没有 status / statement / judgment 类 token —— status 在几乎任何 SQL 里都会出现 ⇒ 恒真。
实测(本岗用 AST 精确定位,scripts/check_g7_token_hits.py):
| token | 真实落点 | 与 D5 语义的关系 |
|---|---|---|
source | packages.py 组合成分来源(self/external)、admin_ops.py source_name | 商品成分来源,不是信息条目溯源 |
verified_at | quotes.py:144 券核销时间(全仓 1 处) | 单个业务时间戳,不是条目属性 |
season | feed_demand.py:504 查询参数(全仓 4 处) | 筛选入参,不是条目字段 |
⇒ 产品侧不存在统一的「信息条目溯源三字段」模型。门的 PASS 是关键词假绿,与我此前多次踩过的同类陷阱同款:「命中=达成」是最大的验收幻觉。
裁定:V3 / V5(VG 口径)= BLOCKED-判据不成立,形式 PASS 不采信。
是否阻断 335 —— 不阻断。理由同 §五的甲案逻辑推广:门的判定方法论缺陷属于「执行器改造项」,不是「演练链路未通过」;335 放行判据取内层(E 门+V 门+门-ID)依然满足。记为本岗自持整改单(见 C3)。
v4-负向用例.txt 报「付费态与安全/风险态同函数共现 3 处,需人工确认」,并点名请裁判裁定。本岗用 AST 逐个查到行:
| 报点 | 精确定位结果 | 裁定 |
|---|---|---|
main.py:64 unified_validation_exception_handler | 函数体内零命中。查 func_blocks() 实现(check_g7_value_gate.py:142):按「下一个 def 行」切块,该函数(64)的下一 def 在 170 ⇒ 其「函数体」= 全文件 64–169 行,把模块级 include_router(safety.router)(L101) 与「福钥任务域」注释(L152) 并了进来 | ❌ 误报(切块错误) |
admin_distribution.py:209 overview | L213 DOCSTRING「现金佣金/福钥/订阅档概览」+ L216 DOCSTRING「后台风控阈值」⇒ 中文设计说明,非代码耦合 | ❌ 误报(文档串) |
miniapp_pay.py:116 pay_notify | 「安全」仅出现于 L132 注释「微信支付回调验签(G1 P0 安全项)」;全部 paid 均为订单状态迁移(状态机 enforce_order_transition) | ❌ 误报(注释+无关语义) |
⇒ V4 判 PASS。三条误报同源根因:执行器未剥离注释与文档串,且 func_blocks 用行号切块而非 AST。
merchant_console 写侧隔离零接线(不是零测试)#5 的 v2.1 矩阵给该域标「✅身份语义(staff 域·写路径隔离另证)」,并承诺另证。本岗去查该域代码:
PUT /payment-mode、POST /payments/{id}/confirm、POST /orders/{id}/merchant-confirm、POST /orders/{id}/merchant-reject、POST /tasks/review、POST /services、PUT /services/{id}、DELETE /services/{id}(实为 8 条写路由)。resolve_destination 仅 1 处(L252),归属 GET /orders/pending-confirm(读端点)。destination_id 痕迹。定性:这正是剧本 §5·B V4-N1d「写侧跨目的地」登记表标记为 🔴 BLOCKED-未实测 的那一条——现在可以把它从「未测」推进到「已见零接线证据」。
不自负声明:本判据只能命中 resolve_destination / destination_id 两种显式写法;若该域另有 membership 侧归属校验(经 memberships 反推租户),命中不到。⇒ 结论是「至少不属于已接入的目的地解析体系」,是否等同可越权写,须由 368 逐个端点交代后才定。(沿用我上轮的教训:零命中不能当结论,先把判据边界说清楚。)
| 编号 | 事项 | 责任席 | 备注 |
|---|---|---|---|
| C1 | merchant_console 8 条写路由逐个交代隔离机制(排除 membership 侧) | 368 承接/新单 | 本轮新发现,最优先的一件实体活 |
| C2 | 三个执行器改打 E/AG/V 定稿编号;VG1-VG9 改名落地 | 契约持有席(本岗) | 乙规格+命名对照,本岗自持 |
| C3 | check_g7_value_gate.py 三项方法论整改:AST 切块 / 剥离注释文档串 / V3·V5 由 token 计数改 schema 断言 | 本岗(自持) | 草案 §一已明文要求 schema 断言,实现偏离 |
| C4 | E 门补 E1(幂等)检查项 | 本岗(自持) | 已有过渡期书面处置,不构成放行阻断 |
| C5 | 门槛 6 owner=刘总待签字确认(现已登记,运营侧如有他人改 owner 即可) | R1 → 刘总 | 纯签字动作,成本最低 |
| C6 | E7 剩余 9 条写端点零错误分支(实测 WARN 9/224) | 后端 | 存量风险,非本轮引入 |
docs/ 与 scripts/;未写任何业务代码**,未改他岗的执行器实现(只出整改规格)。100.64.1.230)⇒ 本轮全部结论为静态核证 + 已落盘证据复核 + 本地实跑,未伪造任何机位回显。-- 署名:波波(验收官)2026-09-17 11:1x | HEAD cffa61d1