docs: M2 收口 — auto-vs-golden 门抓到单数 target 契约漂移 + 蒸馏(WU-C 5.4 阻塞)
M2 机制全交付(U1-U3 门 + R5 灰度设计、全套件 106 测绿)。full 批 n=5: whack-mole/shop-serve aligned、click-score regressed(E_live/G_input auto 0.8< golden 1.0,3 次复跑确定性复现)。retire_authorization 三条:M1✓+002✓+ auto-vs-golden✗ → authorized=False。 根因(systematic-debugging 定位)= 生成契约漂移:~20% click-score 款 forensics 暴露单数 target(对象)而非复数 targets(数组),_build_play_spec 推断漏判→误推 key-cycle + tap-targets 驱动器 targetsPath 找不到。门正确履职(证伪评审「恒过」 预测)、退役授权诚实卡住。创始人定:收口 M2 机制 + 登记 WU-C 5.4 阻塞(修后转绿)。 蒸馏:auto-vs-golden 同款双驱动 delta 门范式 + 单数 target 契约漂移实证 → gen-path-parity-harness.md;M2 收口结论 + WU-C 5.4 阻塞 → M2 plan。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
8038109ce8
commit
e963db3a34
@ -70,6 +70,18 @@ node_type: skill
|
||||
|
||||
> 配套的两个生成质量前置(M1 同里程碑、归生成侧不归达标门):**U1 护栏**——共享 oracle `tools.mjs` 的 `check()` 在打包前堵「返 void 的绘制 API 被误当返回值用」这类能静态判的幻觉(过 check 却运行期卡菜单的子集),救回卡死品类进样本池;**U4 预算闸**——便宜档复用 tier2 `CircuitBreakerMiddleware`,发起每次模型调用前预估累计 ¥、越 ¥10 硬上限即 fail-closed,成本按 new-api quota 口径落盘(取价不可达降级到次数/token 闸 + 告警,不静默超支也不静默阻断)。
|
||||
|
||||
## auto-vs-golden 门:同款双驱动 delta(M2 实证)
|
||||
|
||||
对照门验「换实现没回退」、达标门验「绝对够格」,还差一道验「生产里那把自动产的驱动器,跟人手写的金标比有没有退化」。生产不会用金标 spec,每款游戏的驱动器是 `ensure_play_spec` 当场据 smoke state 推断产的、通常比金标薄。所以「金标 spec 下达标 / 等价」不等于「自动 spec 下生产真达标」,后者才是 Node 退役授权的条件。
|
||||
|
||||
**做法:同一款产物 play 两次、只换驱动器。** 生成一次(gen-only)→ 同一份 staged src/ 上先自动 spec(`ensure_play_spec`)play、后金标(`inject_golden`)play,逐门比过门率。同款产物两次 play 把生成方差摘掉,delta 纯反映驱动器差。编排序的坑:自动 play 必须在金标注入**之前**捕获(否则 auto_gates 被金标覆盖);ensure_play_spec 是「已存在不覆盖」语义,跑前要断言 staged 无残留 spec(撞号 / 重跑会静默复用旧 spec、污染 auto_gates)。
|
||||
|
||||
**方向是单边的**:门查「自动有没有比金标**驱得差**」(`delta < 0` 退化),不是查「自动有没有比金标松」。这点容易写反——动机一不小心就写成「防自动放过坏局」(更松),但断言同质时自动不可能比金标松(M1 已把自动 spec 断言加厚到与金标逐字段一致),真正会发生的是自动**驱不动**(薄 spec 把金标能驱起来的可玩局判进不去)。关键门 {E_live,H_progress,G_input} 容差 0(`delta≥0`)、其余六门容差 -1/N(单款 flake)。double-low 守卫:关键门两路都 <0.5(同挂)→ inconclusive,不被 delta=0 误判等价(同 `compare_node.doubleLowRed`)。
|
||||
|
||||
**鉴别力别预判为零**。评审一度判这门在 tap-targets 上「自动与金标字段同质、delta≈0 恒过、没鉴别力」。M2 实测证伪:click-score 5 款里 1 款真退化(E_live/G_input auto 0.8 < golden 1.0),3 次复跑确定性复现、非 flake。根因是一类**生成契约漂移**——M3 合法地用**单数 `target`(对象)**暴露当前目标(屏上一次只一个),而整条 tap-targets harness(`_build_play_spec` 的驱动器推断 + 驱动器 `targetsPath:"targets"`)只认**复数 `targets`(数组)**:单数款被推成 key-cycle(发方向键)、连「开始」都没点到 → 进不了 live。即门确实能逮住「自动驱动器对某类合法 forensics 形态失效」,delta≈0 只在自动与金标对该款都驱得动时才成立。教训:**自动 spec 的驱动器推断键在某个具体字段名 / 形态上时,生成侧任何等价的别样表达都会让它静默误分类**——这类漂移要么在生成侧立硬契约(强制复数 `targets`)、要么让推断与驱动器认全部等价形态。
|
||||
|
||||
**这门是「不退化确认」、不是决定性独立闸**。退役授权的强证据仍是绝对达标(M1)+ 两路等价(002);auto-vs-golden 补「生产自动 spec 没把达标驱虚」这一层。三条齐(M1 达标 ∧ 002 等价 ∧ auto-vs-golden 不退化)才授权切默认路由——任一不绿,授权如实判 NOT authorized 并列明欠哪条(`retire_authorization` 只读三份既有报告聚合、零真跑零 LLM)。M2 实证:auto-vs-golden 这条因上述契约漂移判未绿,退役授权正确卡住、把精确根因交回生成侧(WU-C 5.4)。
|
||||
|
||||
## 并发(可选,提速)
|
||||
|
||||
并发的真约束不是产物隔离(gameId 前缀已隔离),是九门 play/smoke 的固定端口 + Chrome 实例。
|
||||
@ -85,6 +97,7 @@ node_type: skill
|
||||
|
||||
- `cheap-worker/compare_node.py`:`judge_genre`(两层判据)/ `inject_golden` + `_write_spec_atomic`(金标覆写 staged)/ `run_pair_sync`(生成→注入→play 整对)/ `run_multi`(端口池 + 线程 + 限并发)/ `_port_pool`。
|
||||
- `cheap-worker/bake_off.py`(达标门):`judge_genre`(质量口径 = 分母 converged + rawPassRate 并报 + unconverged 单列)/ `aggregate`(按品类逐项 ≥0.8 + unconvergedTotal 汇总 + 缺收敛样本报 insufficient)/ `run_one_sync`(透传 breakerKind 供未收敛诊断)/ `run_bakeoff`(端口池有界并发 + 报告不覆盖)。
|
||||
- `cheap-worker/auto_vs_golden.py`(auto-vs-golden 门 + 退役授权):`judge_genre_delta`(逐门 delta + 关键门容差 0 / 其余 1/N + double-low 守卫)/ `aggregate_delta`(按品类聚合)/ `run_pair_dual_sync`(同款双驱动 play、auto 先于 golden、ensure 前断言无残留 spec)/ `run_batch`(端口池有界并发 + 报告不覆盖)/ `retire_authorization`(读 M1+002+auto-vs-golden 三报告聚合、零真跑零 LLM)。
|
||||
- `cheap-worker/fixtures/golden-specs/`:每品类一份金标 play-spec。
|
||||
- 九门 harness 本体(驱动器家族 / play.cdp.cjs / 出厂红线)见 [game-e2e-cdp-harness](game-e2e-cdp-harness.md);AgentScope 2.0.2 便宜档实现 API 见 [agentscope-2.0-facts](../knowledge/agentscope-2.0-facts.md)。
|
||||
|
||||
@ -93,3 +106,5 @@ node_type: skill
|
||||
WU-A 后续(2026-06-26,`docs/plans/2026-06-26-002-feat-cheap-worker-multi-genre-plan.md`):三 tap-targets 品类 n=3 对照 Python 新路 vs Node 旧路全 equivalent,坐实范式未回退。Codex + Opus 双评审揪出的四个真坑都在本范式里固化成了铁律:注入路径错(evidence 而非 staged)、品类族判错(点击得分是 occupied 反应族不是放置族)、判据缺绝对地板(双低被判等价)、只精化单侧 spec 污染对照。
|
||||
|
||||
M1 达标门(2026-06-27,`docs/plans/2026-06-26-003-feat-cheap-worker-M1-达标门绿-plan.md` U3 收口):三 tap-targets 品类各 7 款 M3 实测 + click-score 补跑 7 款确认抖动,质量口径逐品类 ≥0.8 全过——click-score 11/12=0.917、whack-mole 7/7=1.0、shop-serve 6/7=0.857,M1 达标门绿。关键发现 = 上「达标门口径」节的口径铁律:同一批 14 款 click-score,原始 0.786(边界下)与质量 0.917(稳过)之差全在 2 个编排未收敛款(timeout/step_cap),口径决定收口。收口报告 `cheap-worker/results/bake-off-M1-final.json`(results gitignored、本地证据)。
|
||||
|
||||
M2 auto-vs-golden 门(2026-06-27,`docs/plans/2026-06-27-001-feat-cheap-worker-M2-node退役授权-plan.md`,过双评审):U1 逐门 delta 判据 + U2 同款双驱动 play + U3 三条齐退役授权判定全交付,全套件 106 测绿。full 批 n=5:whack-mole/shop-serve aligned、**click-score regressed**(E_live/G_input auto 0.8<golden 1.0,3 次复跑确定性复现)。根因 = 单数 `target` vs 复数 `targets` 契约漂移(见上「auto-vs-golden 门」节),~20% click-score 生成方差,属生成侧 / WU-C 5.4。**门工作正常、退役授权正确判 NOT authorized**(M1 达标 ✓ + 002 等价 ✓ + auto-vs-golden ✗);创始人定收口 M2 机制 + 把契约漂移登记为 WU-C 5.4 的 Node 退役阻塞。报告 `cheap-worker/results/{auto-vs-golden-2.json,retire-authorization-M2.json}`。
|
||||
|
||||
@ -7,6 +7,7 @@ slice: 切片一 · M2(上线就绪 · Node 退役条件齐)
|
||||
predecessor: docs/plans/2026-06-26-003-feat-cheap-worker-M1-达标门绿-plan.md
|
||||
reviewed: 2026-06-27 双评审(plan 双评审门 §6.8)—— Opus 对抗评审权威(1 MAJOR + 6 MINOR 全在档内修);Codex 实跑评审但读完 plan① 后停在半途未产汇总(回落 Opus 单评 §6.8),其停前的方向性发现(gate 语义 vs 动机文案不一致)已纳入并修。创始人 2026-06-27 定门定性=建全门 + 诚实降权
|
||||
scope: 创始人 2026-06-27 定 — M2 细化 plan 聚焦可本地执行的 auto-vs-golden 门;灰度切换基础设施只出设计、真接线随 M3
|
||||
status: 2026-06-27 M2 机制收口(U1-U3 门 + R5 设计全交付、106 测绿);退役授权 authorized=False(auto-vs-golden 抓到单数 target 契约漂移)→ Node 退役放行登记为 WU-C 5.4 阻塞(见「M2 收口实测结论」节)
|
||||
---
|
||||
|
||||
# 便宜档 M2 上线就绪(切片一第二里程碑)
|
||||
@ -228,6 +229,14 @@ M2 上线就绪的收口判据:
|
||||
- R5:灰度切换基础设施设计章节落档(九项语义 + 本地可验 vs 归 M3 边界钉清)。
|
||||
- 里程碑级(硬收口):auto-vs-golden 门三品类实测(每品类 ~7 款、与 M1 同覆盖面)逐品类 delta 在阈值内(关键门 delta ≥ 0)、报告落盘;Node 退役授权判定三条齐(M1 达标 ✓ + 002 对照等价 ✓ + M2 auto-vs-golden ✓)产「authorized」结论——便宜档具备把默认路由切到 Python 的全部条件(本机口径,生产复验在 M3)。
|
||||
|
||||
## M2 收口实测结论(2026-06-27)
|
||||
|
||||
四块全交付:U1 逐门 delta 判据(11 测)+ U2 同款双驱动 play 编排(mock 3 测 + 小批真跑端到端验证)+ U3 三条齐退役授权判定(6 测)+ R5 灰度基础设施设计(九项语义钉清),全套件 106 测绿。auto-vs-golden full 批 n=5/品类实测:whack-mole / shop-serve aligned,**click-score regressed**(E_live / G_input auto 0.8 < golden 1.0,3 次复跑确定性复现、非 flake)。Node 退役授权 `retire_authorization` 读三份真实报告判定:M1 达标 ✓ + 002 对照等价 ✓ + auto-vs-golden ✗ → **authorized=False**(报告 `cheap-worker/results/retire-authorization-M2.json`)。
|
||||
|
||||
这是 M2 门正确履职的结果,不是 M2 缺陷:评审一度预测这门「字段同质、delta≈0 恒过、无鉴别力」,实测证伪——门真抓到一处生产自动 spec 的实在缺陷。M2 机制完整可用、退役授权诚实卡在 auto-vs-golden 不绿,把精确根因交回生成侧。
|
||||
|
||||
**WU-C 5.4 阻塞登记(Node 退役放行前必修)**:auto-vs-golden 抓到的根因是一类**生成契约漂移**——约 20% click-score 款的 `_forensicsView().state()` 用**单数 `target`(对象)**暴露当前目标(屏上一次只一个,合法设计),而整条 tap-targets harness 只认**复数 `targets`(数组)**:① `cheap_run.py` 的 `_build_play_spec` 驱动器推断 `isinstance(state.get("targets"), list)` 漏判 → 误推 key-cycle(发方向键)→ 点击类游戏进不了 live(auto E_live/G_input 挂);② tap-targets 驱动器 `targetsPath:"targets"` 也找不到单数 `target` → H_progress 在 auto 与 golden 两路都挂。修向(WU-C 5.4 / 生成侧,二选一或并用):让 `_build_play_spec` 推断与 tap-targets 驱动器认全部等价形态(单数 `target` 也归 tap-targets、包成 1 元素 occupied 列表),或在生成侧立硬契约(tools.mjs check / prompt 强制复数 `targets` 数组、单数即拦/纠)。这是 Node 退役的真前置——修后 auto-vs-golden 转绿、retire_authorization 三条齐才放行。
|
||||
|
||||
## Sources & Research
|
||||
|
||||
- 主计划 plan① `docs/plans/2026-06-25-生成引擎统一执行计划-AgentScope三档-plan.md`:§4 切片一 M2 定义(auto-vs-golden delta + 灰度基础设施 + Node 退役门)、迁移安全契约九项、§7 设计面对账(WU-C 5.4 / WU-F)。
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user