diff --git a/docs/plans/2026-06-30-便宜档M3-生产cutover-plan.md b/docs/plans/2026-06-30-便宜档M3-生产cutover-plan.md index 2cfe9513..227e5a7b 100644 --- a/docs/plans/2026-06-30-便宜档M3-生产cutover-plan.md +++ b/docs/plans/2026-06-30-便宜档M3-生产cutover-plan.md @@ -454,12 +454,39 @@ live=6-28 jar 健康、dispatcher=http、trace 开、control-plane 关;worker 95 - **在途回调幂等 + 终态保护**:对已成功终态的 task 201 重放 status=failed 回调(正确 HMAC)→ HTTP 200 受理但 **task/version 状态零变化**(仍 succeeded/93150)= 幂等无害、成功终态不被迟到 failed 回调翻转。**验签双向**:正确签名过(日志「验签通过」),错签 **401「回调签名校验未过」**拒(不落库不驱动状态机)。 - **开闸回滚(off→on 全循环)**:先杀 worker(旁路受理的任务无从生成=演练零成本)→ `restart-48080-s2.sh off` 健康 10s → **同一违规赌博 prompt 在 OFF 态被受理**(code=0 建任务,对照 ON 态 1101001004 拒)= 总开关旁路语义逐字生效;→ 恢复 ON 重启健康 → 同 prompt 直出 **`1101001004「Prompt 不安全」`** = 控制面恢复,且 HTTP 层直出类型化拒因 = **studio 透传修(工单 d)生产实证**(创作者可见真实原因,旧 jar 只给 1112002000)。worker 拓扑收尾恢复。演练残留 task 202(OFF 态受理、派发撞死 worker 终 failed)为负例隔离约定内测试残留。 +### S6 · D12 负例四门真机证据(✅ 2026-07-04,零 LLM 成本) + +四拒绝门逐门真机负例,全部做在 worker 关停窗口(拒绝点在派发之前,零生成成本);测毕 `restart-48080-s2.sh` 回标准 flags、health 200,live 态复原。 + +- **暂停门(1101001003)**:`infra_config` 热键 `aigc.generate.paused=true`(fail-open 读)→ 提交被拒,日志「[control-plane] 降级开关开启(aigc.generate.paused=true),拒绝入队」;演练后键值回 `false` 并留 remark。运营免重启熔断入口生效。 +- **日额门(1101001001 日额支)**:临时 flag `--aigc.control-plane.quota.1.daily=0` 重启 → 提交直出 1101001001,日志「门①配额超限 creatorUserId=1 level=1 **当日已用=7 上限=0 → 拒**」——与 S2 并发支(「门①并发位满 在飞=1 上限=1」)同码不同分支,两支线均有独立日志证据。 +- **背压门(1101001002)**:临时 flag `--aigc.control-plane.queue-depth-limit=0` 重启 → 提交直出 1101001002「生成排队过多」,日志「门②背压拒绝 **全局在飞=0 上限=0 → 拒**(保护串行 worker)」。 +- 加上 S2 的并发负例与 GP9 unsafe 负例(1101001004),**control-plane 全部五种拒绝行为(并发/日额/背压/暂停/不安全)都有真机 HTTP 响应码 + 后端日志双证**。 + +### S6 · 六门放行证据表(证据集齐 ✅;放行决策=创始人,S5a 种子内测=前置) + +| 门 | 证据 | 口径 | +|---|---|---| +| D12 四拒绝门 | 并发(S2)/ 日额 / 背压 / 暂停(上节)+ unsafe(GP9)全负例真机双证 | prod(staging 真后端) | +| GP9 安全门 | 违规 brief 拒 1101001004 零成本 + 良性 brief 同日过(误杀对照);off→on 回滚演练同 prompt 对照 | prod | +| 9d trace | task 200:attempts/repairs/cost/gameId/gatespec/models/pass/sevenGateVerdict/similarity/stage/wallS 全齐(DB 实读) | prod | +| D11 readiness | 80012=86、A11 93150=90,远离退化带 45 / 失败带 28,三值判别生产续证 | prod | +| D9 similarity | trace_json.similarity 在席(task 200/201 实读) | prod | +| firstPlay verdict | sevenGateVerdict pass=True(80012;A11 修改路 stage=play pass=True) | prod | +| ——附:S5b ≥80% | 三品类收敛局 4/4 过九门(质量口径 100%,raw 恰 80%)整体达标 | **lab**(生产真实分布待 S5a 种子内测回填) | +| ——附:回滚演练 | off→on 全循环 + 回调幂等 + 验签双向,一次干净 | prod | + +品类路由核对项随 A1 `route_genre` 收口:80007 生产日志「品类路由命中:genre=sim-business template=_template-shop」= 生产首证。**放行(对外放量)与 S5a 种子内测为创始人决策(备案红线 ≤2万人/不接广告/报备删档),证据侧已备齐。** + ### 残余工单(执行中收获,非本窗口阻塞项) -- (a1) C6 反馈「驱动器族错配直指」:genre 命中 + spec.selectionBasis 含「回退」+ H_progress 零增量 → 反馈首条直指「考卷族错配,先修 targets/spec,别改游戏计分」(80007 实证:现反馈把修复方向指向改计分,盲修烧到硬地板)。 -- (a2) `_template-shop` 补 targets 契约(A2 六模板未覆盖它;80007 spec 自证「state 无 targets/target 键 → 按键类回退」)。 +- (a1) ✅ 已修(C6 反馈「驱动器族错配直指」:genre 命中 + spec.selectionBasis 含「回退」+ H_progress 零增量 → fixDirection 直指「考卷族错配,先修 targets/spec,别改游戏计分」;gate_judge 落地 + 7 单测,tier2 97/97,merge f121bb01)。 +- (a2) ✅ 关闭(前提证伪):six 模板 targets 契约本就齐(_template-shop 的 `_forensicsView` 一直暴露 targets);80007 的「state 无 targets 键」是**生成代码丢键**非模板缺口——属 C6 直指(a1)的治理面,模板侧无活可干。 - (c) 软停 finish 逼近强化(observe 注入,A1 T8 教训:on_acting 文案已催 finish 但 M3 可能烧推理到地板不触发)。 -- (d) ✅ 已修(studio 透传,f9b85d42,随下轮 jar)。 -- (e) richness 日志行补 genre 段(纯打印,genre 实参已传)。 +- (d) ✅ 已修(studio 透传,f9b85d42;jar 轮换后回滚演练中生产实证,创作者可见类型化拒因)。 +- (e) ✅ 已修(richness 日志行补 genre 段,2a8d5e45)。 - (f) 收口采集重复打印(崩溃路 `_flush` 两次「收口采集落盘」重复行,幂等无害纯观感)。 - (g) trace 富化:框架 tracing 中间件 raw 只存事件类型骨架,ToolCall/ToolResult 事件的 tool_call_name/state 未入 trace(80009 取证四路全空的一路;涉框架序列化面,单独评估)。 +- (h) Service 进程 Planning/Team/Schedule 工具面收窄(内建六工具已由 ws_builtin_tools_patch 关停;这三组是框架另一面,成本上界有 ¥ 硬地板兜,非急)。 +- (i) bake_off brief 源缺失 fail-fast(空样本打「0 款达标 ✅」的无声截断,S5b 第一跑实录)。 +- (j) studio 透传集扩 1003/1005/1006(现集={001,002,004};1003 暂停态创作者仍见「生成委托失败」,体验税非正确性税)。