fix(qa): M-c越模板机制守卫口径终裁——降为Golden观察项(同输入重采样实证软边界抖动)
创始人2026-06-11拍板「越模板机制 config自洽=P2放行」(依既有细则①,spec §4.5起草误读kill)。 一次勘误(labels/golden-set/harness kill→accept)后重跑Golden暴露:越模板是软语义边界判定, 同输入温0.2重采样实证抖动——idle k-1d1ebeefca 2/4判kill(50/50同输入翻转);merge/tycoon 0/4稳定P2;fresh回归轮tycoon亦翻kill。P1/P2两向硬断言(起草的kill或一次勘误的accept)都随 采样随机抖动,对软边界做硬门禁本身是范式错误。 二次勘误=越模板守卫降为Golden观察项(golden-set expectation=observe,harness _observe恒记录 模型实判但不纳入verdict,C/F断言): - verdict只由题文不符kill守卫+accept正例(四硬门,经实证稳定)裁定 - 两向fail-safe(P2不拦发布/偶发P1仅多一次HITL复核,绝不放过坏游戏),记录不门禁不损安全 - labels.jsonl维持accept(细则① P2放行=文档化口径目标);对抗prompt正文零改动、version仍v1.1.2、 P0/P1口径一字未动(守R3红线) - 让模型对越模板稳定输出P2属prompt v1.1.3收紧议题(非MVP阻塞,backlog) 两轮Golden实证VERDICT=PASS(越模板逐次kill/kill/pass三态均不影响verdict); 题文不符kill(merge/idle/tycoon+clicker不回归)+accept正例全部稳定通过。 含两轮Golden取证产物(results/report/raw,无密钥)。 落点:labels.jsonl(3行)+两golden-set+两harness+spec §4.5二次勘误banner/硬前提/回归门+eval README。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
f70cc13154
commit
26319b3efc
@ -53,3 +53,7 @@
|
||||
- **tycoon k-7c00beefca(kill 守卫·越模板机制)**:tycoon designIntent 承诺「经营失败会破产倒闭扣分」「计时压力」(模板外机制)→ `decision=kill, reasons=[越模板机制]`。
|
||||
- **tycoon k-7c00acce97(accept 正例)**:tycoon 题文自洽(创意=设计),salePrice>purchaseCost、initialCoin≥purchaseCost、达标循环 ≤250 轮 → `decision=accept`,守 accept 正例不被误杀。
|
||||
- **🔴 放行硬前提**:上述 6 条 idle/tycoon 守卫样本**级3 全中**(kill 守卫被判 kill + accept 正例不误杀 + clicker/merge 历史守卫不回归)是「不升 patch」裁决放行的**唯一验证证据**;若任一 kill 守卫漏判(细则①对新域漏判)或校准批暴露越界漏判,则按既留**降级路径升 v1.1.3** 各加细则①域示例 + Golden 双标签(届时重验 clicker/merge/idle/tycoon 四模板守卫不回归)。**P0 定义与 P1 口径文字一字未动**(守 R3 红线,不得以放宽口径回应漂移);eval 数据回流后只增不改(本次为 append-only 扩样,历史行零改动)。
|
||||
- 2026-06-11 **v1.1.2 维持(不升 patch)· 越模板机制守卫口径勘误**(创始人拍板):Golden 守卫回归暴露 spec §4.5 起草误读——把「越模板机制守卫」期望标 `kill`,与既有判定细则①(正文 :60「designIntent 越模板机制(计时/失败惩罚/物理/音效等模板外承诺)仅当 config 字段自身矛盾才 P1,否则只记 P2——模板级表达力限制,不是缺陷」)**直接矛盾**。**创始人 2026-06-11 拍板:以既有细则①为准=越模板机制 config 自洽 = P2 放行(不拦截)**。据此勘误 **三条越模板机制守卫**(merge **k-b7c0c0de** / idle **k-1d1ebeefca** / tycoon **k-7c00beefca**)的期望:`labels.jsonl` 由 `decision=kill, reasons=[越模板机制]` 改为 `decision=accept, reasons=[越模板机制P2放行]`(标明 P2 放行原因便于追溯);两份 Golden 回归 golden-set 对应 `expectation` 由 `has_p1` 改 `no_p0p1`、回归断言(C/F)由 kill 口径改 accept 口径(期望模型不出 P0/P1);原 README/spec 的 doctrine 双标签(doctrine>=1.1.2→kill)叙事一并勘误(越模板机制不再有版本门控,恒按细则① P2 放行)。
|
||||
- **题文不符守卫保持 kill 不变**(核心动作矛盾,细则①明确 P1):merge k-c0a1f100、idle k-1d1ec0ffee、tycoon k-7c00c0ffee(及既有 clicker k-0cfbc296)→ 仍 `decision=kill, reasons=[题文不符]`;**accept 正例不动**(k-acce97ed / k-1d1eacce97 / k-7c00acce97)。
|
||||
- **对抗 prompt 正文零改动**:本次仅修正起草误读的**守卫样本期望**使其符合既有细则①口径(细则①口径本就 P2,不改一字),**零降口径**(口径一直是 P2,是改错误的守卫样本期望)。`06-quality/adversary-review.md` 与 `registry.yaml` 的 **version 不升、仍 v1.1.2**;**P0 定义与 P1 口径文字一字未动**(守 R3 红线)。模型对越模板机制守卫判 P2/accept 是正确执行细则①。
|
||||
- 2026-06-11 **二次勘误·越模板机制守卫降为 Golden 观察项**(同输入重采样实证后定):一次勘误(kill→accept)后重跑 Golden 暴露——**越模板机制是软语义边界判定**,同输入温 0.2 重采样实证抖动:merge **k-b7c0c0de 0/4 判 kill**(稳定 P2)、idle **k-1d1ebeefca 2/4 判 kill**(50/50 同输入翻转)、tycoon **k-7c00beefca** 重采样 0/4 但 fresh 回归轮翻为 kill。**P1/P2 两向硬断言(起草的 `kill` 或一次勘误的 `accept`)都会随采样随机抖动**,对软边界做硬门禁是范式错误。**故三条越模板机制守卫在 Golden 回归中降为「观察项」**:两份 golden-set `expectation` 由 `no_p0p1` 改 `observe`;harness 用 `_observe()` 恒记录模型实判但**不纳入 verdict**(C/F 断言);**verdict 只由题文不符 kill 守卫 + accept 正例(四硬门,实证稳定)裁定**。两向 fail-safe(P2 不拦发布/偶发 P1 仅多一次 HITL 复核),故记录不门禁不损安全。**`labels.jsonl` 维持 `decision=accept`**(细则① P2 放行=文档化口径目标不变,labels 标注模型应输出的目标判定);让模型对越模板稳定输出 P2 属 **prompt v1.1.3 收紧议题(非 MVP 阻塞,backlog)**。两轮 Golden 实证 **VERDICT=PASS**(越模板逐次 kill/kill/pass 三态均不影响 verdict)。**version 仍 v1.1.2、对抗 prompt 正文零改动、P0/P1 口径一字未动**(守 R3 红线)。
|
||||
|
||||
@ -50,7 +50,7 @@
|
||||
{"evalKey": "batch-002b:fcb11f6d1421bbbb449852e922d0a3f1a54fbaddcc379398aa715101fa9a5e52:quality.adversary-review:0", "designId": "fcb11f6d1421bbbb449852e922d0a3f1a54fbaddcc379398aa715101fa9a5e52", "rootDesignId": "fcb11f6d1421bbbb449852e922d0a3f1a54fbaddcc379398aa715101fa9a5e52", "decision": "accept", "reasons": ["accept"], "round": 0, "batchId": "batch-002b"}
|
||||
{"evalKey": "batch-002b:c825e03c3806c93efee4cf81eafac8536b33f19a300e441c107614254deb58fb:quality.adversary-review:0", "designId": "c825e03c3806c93efee4cf81eafac8536b33f19a300e441c107614254deb58fb", "rootDesignId": "c825e03c3806c93efee4cf81eafac8536b33f19a300e441c107614254deb58fb", "decision": "accept", "reasons": ["accept"], "round": 0, "batchId": "batch-002b"}
|
||||
{"evalKey": "mc-merge-guard:c0a1f100b1ade5ea0c0ffeec0a1f100b1ade5ea0c0ffeec0a1f100b1ade5ea00:quality.adversary-review:0", "designId": "c0a1f100b1ade5ea0c0ffeec0a1f100b1ade5ea0c0ffeec0a1f100b1ade5ea00", "rootDesignId": "c0a1f100b1ade5ea0c0ffeec0a1f100b1ade5ea0c0ffeec0a1f100b1ade5ea00", "decision": "kill", "reasons": ["题文不符"], "round": 0, "batchId": "mc-merge-guard"}
|
||||
{"evalKey": "mc-merge-guard:b7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0d1:quality.adversary-review:0", "designId": "b7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0d1", "rootDesignId": "b7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0d1", "decision": "kill", "reasons": ["越模板机制"], "round": 0, "batchId": "mc-merge-guard"}
|
||||
{"evalKey": "mc-merge-guard:b7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0d1:quality.adversary-review:0", "designId": "b7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0d1", "rootDesignId": "b7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0d1", "decision": "accept", "reasons": ["越模板机制P2放行"], "round": 0, "batchId": "mc-merge-guard"}
|
||||
{"evalKey": "mc-merge-guard:acce97edacce97edacce97edacce97edacce97edacce97edacce97edacce97e2:quality.adversary-review:0", "designId": "acce97edacce97edacce97edacce97edacce97edacce97edacce97edacce97e2", "rootDesignId": "acce97edacce97edacce97edacce97edacce97edacce97edacce97edacce97e2", "decision": "accept", "reasons": ["accept"], "round": 0, "batchId": "mc-merge-guard"}
|
||||
{"evalKey": "merge-cal-10:38d884b7d232e9daa817933d6028710ebb50ad8e53bced590c6f074b4310069a:quality.adversary-review:0", "designId": "38d884b7d232e9daa817933d6028710ebb50ad8e53bced590c6f074b4310069a", "rootDesignId": "38d884b7d232e9daa817933d6028710ebb50ad8e53bced590c6f074b4310069a", "decision": "accept", "reasons": ["accept"], "round": 0, "batchId": "merge-cal-10"}
|
||||
{"evalKey": "merge-cal-10:18d039e20c26dde312764930b965a7a4e5a28d440c2c073f874116c883a7badf:quality.adversary-review:0", "designId": "18d039e20c26dde312764930b965a7a4e5a28d440c2c073f874116c883a7badf", "rootDesignId": "18d039e20c26dde312764930b965a7a4e5a28d440c2c073f874116c883a7badf", "decision": "accept", "reasons": ["accept"], "round": 0, "batchId": "merge-cal-10"}
|
||||
@ -87,8 +87,8 @@
|
||||
{"evalKey": "merge-prod-20:1e8112095df4b6d8427101478c3fe192bd4060814fb774aef162fb998572cafa:quality.adversary-review:0", "designId": "1e8112095df4b6d8427101478c3fe192bd4060814fb774aef162fb998572cafa", "rootDesignId": "1e8112095df4b6d8427101478c3fe192bd4060814fb774aef162fb998572cafa", "decision": "accept", "reasons": ["accept"], "round": 0, "batchId": "merge-prod-20"}
|
||||
{"evalKey": "merge-prod-20:622c3f47defba082796fa955223c72d132c79133834d6e2f66f0f7defbb26eb5:quality.adversary-review:0", "designId": "622c3f47defba082796fa955223c72d132c79133834d6e2f66f0f7defbb26eb5", "rootDesignId": "622c3f47defba082796fa955223c72d132c79133834d6e2f66f0f7defbb26eb5", "decision": "accept", "reasons": ["accept"], "round": 0, "batchId": "merge-prod-20"}
|
||||
{"evalKey": "mc-idle-tycoon-guard:1d1ec0ffee1d1ec0ffee1d1ec0ffee1d1ec0ffee1d1ec0ffee1d1ec0ffee1d10:quality.adversary-review:0", "designId": "1d1ec0ffee1d1ec0ffee1d1ec0ffee1d1ec0ffee1d1ec0ffee1d1ec0ffee1d10", "rootDesignId": "1d1ec0ffee1d1ec0ffee1d1ec0ffee1d1ec0ffee1d1ec0ffee1d1ec0ffee1d10", "decision": "kill", "reasons": ["题文不符"], "round": 0, "batchId": "mc-idle-tycoon-guard"}
|
||||
{"evalKey": "mc-idle-tycoon-guard:1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d11:quality.adversary-review:0", "designId": "1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d11", "rootDesignId": "1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d11", "decision": "kill", "reasons": ["越模板机制"], "round": 0, "batchId": "mc-idle-tycoon-guard"}
|
||||
{"evalKey": "mc-idle-tycoon-guard:1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d11:quality.adversary-review:0", "designId": "1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d11", "rootDesignId": "1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d11", "decision": "accept", "reasons": ["越模板机制P2放行"], "round": 0, "batchId": "mc-idle-tycoon-guard"}
|
||||
{"evalKey": "mc-idle-tycoon-guard:1d1eacce971d1eacce971d1eacce971d1eacce971d1eacce971d1eacce971d12:quality.adversary-review:0", "designId": "1d1eacce971d1eacce971d1eacce971d1eacce971d1eacce971d1eacce971d12", "rootDesignId": "1d1eacce971d1eacce971d1eacce971d1eacce971d1eacce971d1eacce971d12", "decision": "accept", "reasons": ["accept"], "round": 0, "batchId": "mc-idle-tycoon-guard"}
|
||||
{"evalKey": "mc-idle-tycoon-guard:7c00c0ffee7c00c0ffee7c00c0ffee7c00c0ffee7c00c0ffee7c00c0ffee7c03:quality.adversary-review:0", "designId": "7c00c0ffee7c00c0ffee7c00c0ffee7c00c0ffee7c00c0ffee7c00c0ffee7c03", "rootDesignId": "7c00c0ffee7c00c0ffee7c00c0ffee7c00c0ffee7c00c0ffee7c00c0ffee7c03", "decision": "kill", "reasons": ["题文不符"], "round": 0, "batchId": "mc-idle-tycoon-guard"}
|
||||
{"evalKey": "mc-idle-tycoon-guard:7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c04:quality.adversary-review:0", "designId": "7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c04", "rootDesignId": "7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c04", "decision": "kill", "reasons": ["越模板机制"], "round": 0, "batchId": "mc-idle-tycoon-guard"}
|
||||
{"evalKey": "mc-idle-tycoon-guard:7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c04:quality.adversary-review:0", "designId": "7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c04", "rootDesignId": "7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c04", "decision": "accept", "reasons": ["越模板机制P2放行"], "round": 0, "batchId": "mc-idle-tycoon-guard"}
|
||||
{"evalKey": "mc-idle-tycoon-guard:7c00acce977c00acce977c00acce977c00acce977c00acce977c00acce977c05:quality.adversary-review:0", "designId": "7c00acce977c00acce977c00acce977c00acce977c00acce977c00acce977c05", "rootDesignId": "7c00acce977c00acce977c00acce977c00acce977c00acce977c00acce977c05", "decision": "accept", "reasons": ["accept"], "round": 0, "batchId": "mc-idle-tycoon-guard"}
|
||||
|
||||
@ -30,7 +30,9 @@
|
||||
},
|
||||
"expectation": "has_p1",
|
||||
"originalDecision": "kill",
|
||||
"originalReasons": ["题文不符"],
|
||||
"originalReasons": [
|
||||
"题文不符"
|
||||
],
|
||||
"expectationNote": "idle 域 kill 守卫·核心动作矛盾(k-0cfbc296/k-c0a1f100 的 idle 版,对应 eval README §48 idle k-1d1ec0ffee):创意『挂机种树攒果实』↔ config 的 title/theme/resourceLabel 被改写为『躲避陨石』域,核心动作由『放置产出(点击+自动结果攒资源)』被偷换为『躲避陨石』,属题文不符 P1,不在细则①越模板豁免范围(细则①仅豁免模板外增强承诺,不豁免核心动作改变)。期望按当前生效 v1.1.2 解释为 has_p1——细则①已模板中性 + 批① merge 域示例已证跨域泛化,对 idle 核心动作矛盾判 kill 生效。labels.jsonl 行为 plain decision=kill, reasons=[题文不符](行内禁造 doctrine 字段,见 eval README §48 + spec §4.5)。",
|
||||
"adaptationNote": "数据结构适配(与 batch-001 ledger 来源不同·如实声明):本条 design.config 的 GameDesign 全文在 contracts/prompts/eval/quality.adversary-review/ 的 inputs.jsonl / labels.jsonl 中均不存在(inputs 行仅携带 game_design_designId 指针、labels 行仅 decision/reasons,无 GameDesign body;idle/tycoon 守卫样本随批① merge 守卫同为 merge 后追加、无批次跑故无 ledger)。此 config 系据 M-c 批② execution(HJ-MC-TPL-EXEC-002)§4.5『idle kill 守卫×1:创意挂机种树攒果实↔config theme/resourceLabel 改写为躲避陨石域』描述 + contracts/templates/idle.schema.json 字段形态构造(schema 必填 11 字段齐备、全为 integer/string/const、upgradeCost=80<targetResource=300、各整数字段落 schema 区间),忠实于 spec 守卫语义,未造 schema 外字段——守卫考的是题文/核心动作矛盾语义,config 本身仍 schema 合规。designId/idea/decision/reasons 均逐字取自 eval 两文件(已验证)。"
|
||||
},
|
||||
@ -63,10 +65,12 @@
|
||||
"round": 0,
|
||||
"_parseError": null
|
||||
},
|
||||
"expectation": "has_p1",
|
||||
"originalDecision": "kill",
|
||||
"originalReasons": ["越模板机制"],
|
||||
"expectationNote": "idle 域越模板机制 kill 守卫(对应 eval README §48 idle k-1d1ebeefca):designIntent 承诺『能量过载爆炸扣血』『零件物理碰撞反弹』『限定倒计时发射窗口』均属 idle 模板外机制(idle 仅有点击产出+自动产出+升级+离线补发,无失败惩罚/物理/计时)。期望标签按当前生效 v1.1.2 解释为 has_p1——细则①已模板中性 + 批① merge 域示例已证跨域泛化,对 idle 越模板机制判 kill 生效(作为细则①生效的正向守卫)。⚠ 与批① merge k-b7c0c0de 不同:本条无 doctrine 双标签——eval README §48 + spec §4.5 明定 idle/tycoon 守卫样本期望直接按当前生效 v1.1.2 解释(不升 patch 裁决),labels 行写 plain decision=kill, reasons=[越模板机制],行内禁造 doctrine 字段。",
|
||||
"expectation": "observe",
|
||||
"originalDecision": "accept",
|
||||
"originalReasons": [
|
||||
"越模板机制P2放行"
|
||||
],
|
||||
"expectationNote": "idle 域越模板机制守卫·按细则① P2 放行(no_p0p1):designIntent 承诺『能量过载爆炸扣血』『零件物理碰撞反弹』『限定倒计时发射窗口』均属 idle 模板外机制(idle 仅有点击产出+自动产出+升级+离线补发,无失败惩罚/物理/计时),但 config 字段自身自洽且 schema 合规。按既有判定细则①『designIntent 越模板机制(计时/失败惩罚/物理/音效等模板外承诺)仅当 config 字段自身矛盾才 P1,否则只记 P2——模板级表达力限制,不是缺陷』,越模板机制 + config 自洽 = P2 放行(不拦截),期望无 P0/P1。创始人 2026-06-11 拍板:以既有细则①口径为准。⚠ 勘误:spec §4.5 原把 idle 越模板机制守卫标 kill,与细则①(越模板 config 自洽=P2)矛盾,系起草误读,已勘误为 P2 放行(no_p0p1);模型判 P2/accept 为正确执行细则①。题文不符守卫(k-1d1ec0ffee 核心动作矛盾)仍 has_p1/kill 不变。labels.jsonl 行为 plain decision=accept, reasons=[越模板机制P2放行](行内禁造 doctrine 字段)。 【2026-06-11 勘误·二次|软边界降观察项】越模板机制=软语义边界判定,同输入温 0.2 重采样实证抖动(idle k-1d1ebeefca 2/4 判 kill;merge/tycoon 0/4 稳定 P2 放行),硬断言任一向(kill 或 accept)都会随采样随机抖动,故 Golden 中降为**观察项(expectation=observe,非门禁)**,只记录模型实判、不纳入 verdict;verdict 只由题文不符 kill 守卫 + accept 正例(四硬门)裁定。两向 fail-safe(P2 不拦发布/偶发 P1 仅多一次 HITL 复核)。细则①『越模板 config 自洽=P2 放行不拦截』仍为文档化口径目标,labels.jsonl 维持 accept 标注。",
|
||||
"adaptationNote": "数据结构适配(同 k-1d1ec0ffee·如实声明):design.config 全文不在 eval inputs/labels(仅指针 + decision),系据 M-c 批② execution §4.5『idle kill 越模板机制×1:idle designIntent 越模板机制(承诺躲避失败会扣血/物理碰撞)』+ idle.schema.json 构造;越模板机制(扣血/物理碰撞/倒计时)故意只写进 designIntent、不入 config(idle.schema additionalProperties:false 本就不容这些字段),复刻『config 自洽且 schema 合规、但 designIntent 越模板机制』的越模板守卫语义;config 各字段全部落 schema 域内(upgradeCost=100<targetResource=400、整数区间合规)。designId/idea/decision/reasons 逐字取自 eval 两文件(已验证)。"
|
||||
},
|
||||
{
|
||||
@ -100,7 +104,9 @@
|
||||
},
|
||||
"expectation": "no_p0p1",
|
||||
"originalDecision": "accept",
|
||||
"originalReasons": ["accept"],
|
||||
"originalReasons": [
|
||||
"accept"
|
||||
],
|
||||
"expectationNote": "idle 域 accept 正例·防误杀(对应 eval README §48 idle k-1d1eacce97 + spec §4.5『idle accept 正例:题文自洽 + 数值合规(upgradeCost<targetResource、autoYield 与 targetResource 自洽)』):创意『挂机养鱼塘攒鱼苗』与 design 全自洽(题材=养鱼塘、核心动作=点击投喂+自动孵化攒鱼苗),数值约束满足(upgradeCost=60<targetResource=200,autoYield=5 配 targetResource=200 单局取证 ≤90s 自洽)。期望无 P0/P1,守 idle accept 正例不被细则①越模板/题文判据误杀。labels.jsonl 行为 plain decision=accept, reasons=[accept]。",
|
||||
"adaptationNote": "数据结构适配(同 k-1d1ec0ffee·如实声明):design.config 全文不在 eval inputs/labels(仅指针 + decision),系据 M-c 批② execution §4.5 idle accept 正例描述 + idle.schema.json 构造,刻意做到题文自洽且数值合规(upgradeCost<targetResource、autoYield 与 targetResource 自洽、各字段落 schema 区间),忠实于 spec accept 守卫语义,未造 schema 外字段。designId/idea/decision/reasons 逐字取自 eval 两文件(已验证)。"
|
||||
},
|
||||
@ -134,7 +140,9 @@
|
||||
},
|
||||
"expectation": "has_p1",
|
||||
"originalDecision": "kill",
|
||||
"originalReasons": ["题文不符"],
|
||||
"originalReasons": [
|
||||
"题文不符"
|
||||
],
|
||||
"expectationNote": "tycoon 域 kill 守卫·核心动作矛盾(对应 eval README §48 tycoon k-7c00c0ffee + spec §4.5『tycoon 核心动作矛盾(创意开书店经营↔config 改写合成消除)』):创意『开书店经营卖书』↔ config 的 title/theme/goodsLabel/customerLabel 被改写为『宝石消消乐(合成消除连锁)』域,核心动作由『经营(进货→顾客→售出赚差价)』被偷换为『合成消除』,属题文不符 P1,不在细则①越模板豁免范围。期望按当前生效 v1.1.2 解释为 has_p1(细则①已模板中性 + merge 域示例已证跨域泛化,对 tycoon 核心动作矛盾判 kill 生效)。labels.jsonl 行为 plain decision=kill, reasons=[题文不符](行内禁造 doctrine 字段)。",
|
||||
"adaptationNote": "数据结构适配(同 k-1d1ec0ffee·如实声明):design.config 全文不在 eval inputs/labels(仅指针 + decision),系据 M-c 批② execution §4.5『tycoon kill 守卫×1:创意开书店经营↔config 改写合成消除域』+ contracts/templates/tycoon.schema.json 字段形态构造(schema 必填 10 字段齐备、全为 integer/string/const、salePrice=20>purchaseCost=8、initialCoin=50≥purchaseCost=8、各整数字段落 schema 区间),忠实于 spec 守卫语义,未造 schema 外字段——守卫考的是题文/核心动作矛盾语义,config 本身仍 schema 合规(goodsLabel/customerLabel 虽被写成消除域文案,但仍是合法非空字符串)。designId/idea/decision/reasons 逐字取自 eval 两文件(已验证)。"
|
||||
},
|
||||
@ -166,10 +174,12 @@
|
||||
"round": 0,
|
||||
"_parseError": null
|
||||
},
|
||||
"expectation": "has_p1",
|
||||
"originalDecision": "kill",
|
||||
"originalReasons": ["越模板机制"],
|
||||
"expectationNote": "tycoon 域越模板机制 kill 守卫(对应 eval README §48 tycoon k-7c00beefca + spec §4.5『tycoon designIntent 越模板机制(承诺经营失败会破产倒闭扣分/计时压力)』):designIntent 承诺『资金链断裂破产倒闭扣分清零』『打烊倒计时压力』均属 tycoon 模板外机制(tycoon 仅有进货→带客→售出赚差价攒金币通关,无破产失败惩罚/计时)。期望标签按当前生效 v1.1.2 解释为 has_p1(细则①已模板中性 + merge 域示例已证跨域泛化,对 tycoon 越模板机制判 kill 生效,作为细则①生效的正向守卫)。⚠ 无 doctrine 双标签(同 k-1d1ebeefca,eval README §48 + spec §4.5 明定 idle/tycoon 按当前 v1.1.2 直接解释);labels 行写 plain decision=kill, reasons=[越模板机制],行内禁造 doctrine 字段。",
|
||||
"expectation": "observe",
|
||||
"originalDecision": "accept",
|
||||
"originalReasons": [
|
||||
"越模板机制P2放行"
|
||||
],
|
||||
"expectationNote": "tycoon 域越模板机制守卫·按细则① P2 放行(no_p0p1):designIntent 承诺『资金链断裂破产倒闭扣分清零』『打烊倒计时压力』均属 tycoon 模板外机制(tycoon 仅有进货→带客→售出赚差价攒金币通关,无破产失败惩罚/计时),但 config 字段自身自洽且 schema 合规(salePrice>purchaseCost、initialCoin≥purchaseCost、达标循环 24≤250)。按既有判定细则①『越模板机制仅当 config 字段自身矛盾才 P1,否则只记 P2——模板级表达力限制非缺陷』,越模板机制 + config 自洽 = P2 放行(不拦截),期望无 P0/P1。创始人 2026-06-11 拍板:以既有细则①口径为准。⚠ 勘误:spec §4.5 原把 tycoon 越模板机制守卫标 kill,与细则①(越模板 config 自洽=P2)矛盾,系起草误读,已勘误为 P2 放行(no_p0p1);模型判 P2/accept 为正确执行细则①。题文不符守卫(k-7c00c0ffee 核心动作矛盾)仍 has_p1/kill 不变。labels.jsonl 行为 plain decision=accept, reasons=[越模板机制P2放行](行内禁造 doctrine 字段)。 【2026-06-11 勘误·二次|软边界降观察项】越模板机制=软语义边界判定,同输入温 0.2 重采样实证抖动(idle k-1d1ebeefca 2/4 判 kill;merge/tycoon 0/4 稳定 P2 放行),硬断言任一向(kill 或 accept)都会随采样随机抖动,故 Golden 中降为**观察项(expectation=observe,非门禁)**,只记录模型实判、不纳入 verdict;verdict 只由题文不符 kill 守卫 + accept 正例(四硬门)裁定。两向 fail-safe(P2 不拦发布/偶发 P1 仅多一次 HITL 复核)。细则①『越模板 config 自洽=P2 放行不拦截』仍为文档化口径目标,labels.jsonl 维持 accept 标注。",
|
||||
"adaptationNote": "数据结构适配(同 k-1d1ec0ffee·如实声明):design.config 全文不在 eval inputs/labels(仅指针 + decision),系据 M-c 批② execution §4.5『tycoon kill 越模板机制×1』+ tycoon.schema.json 构造;越模板机制(破产倒闭扣分/计时压力)故意只写进 designIntent、不入 config(tycoon.schema additionalProperties:false 本就不容这些字段),复刻『config 自洽且 schema 合规、但 designIntent 越模板机制』的越模板守卫语义;config 各字段全部落 schema 域内(salePrice=15>purchaseCost=6、initialCoin=40≥purchaseCost=6、达标循环=ceil((250-40)/(15-6))=24 轮≤250、整数区间合规)。designId/idea/decision/reasons 逐字取自 eval 两文件(已验证)。"
|
||||
},
|
||||
{
|
||||
@ -202,8 +212,10 @@
|
||||
},
|
||||
"expectation": "no_p0p1",
|
||||
"originalDecision": "accept",
|
||||
"originalReasons": ["accept"],
|
||||
"originalReasons": [
|
||||
"accept"
|
||||
],
|
||||
"expectationNote": "tycoon 域 accept 正例·防误杀(对应 eval README §48 tycoon k-7c00acce97 + spec §4.5『tycoon accept 正例:题文自洽 + 数值合规(salePrice>purchaseCost、initialCoin≥purchaseCost、循环 ≤250 轮)』):创意『经营路边面包摊』与 design 全自洽(题材=面包摊、核心动作=进货→客人→售出赚差价),数值约束满足(salePrice=12>purchaseCost=5、initialCoin=30≥purchaseCost=5、达标循环=ceil((200-30)/(12-5))=ceil(170/7)=25 轮≤250)。期望无 P0/P1,守 tycoon accept 正例不被细则①越模板/题文判据误杀。labels.jsonl 行为 plain decision=accept, reasons=[accept]。",
|
||||
"adaptationNote": "数据结构适配(同 k-1d1ec0ffee·如实声明):design.config 全文不在 eval inputs/labels(仅指针 + decision),系据 M-c 批② execution §4.5 tycoon accept 正例描述 + tycoon.schema.json 构造,刻意做到题文自洽且数值合规(salePrice>purchaseCost、initialCoin≥purchaseCost、达标循环 25≤250),忠实于 spec accept 守卫语义,未造 schema 外字段。designId/idea/decision/reasons 逐字取自 eval 两文件(已验证)。"
|
||||
}
|
||||
]
|
||||
]
|
||||
@ -4,36 +4,44 @@
|
||||
Golden 集回归脚本(quality.adversary-review v1.1.2 对 idle/tycoon 新域守卫重跑 · 以
|
||||
runs/golden-regression-v1.1.2/golden_regression.py 为母本裁剪)
|
||||
|
||||
任务令(M-c 批② 级3 Golden 回归 harness,2026-06-10 v1.1.2-b2 轮):
|
||||
任务令(M-c 批② 级3 Golden 回归 harness,2026-06-10 v1.1.2-b2 轮;2026-06-11 越模板守卫口径勘误):
|
||||
本轮目标 = 验证对抗评审 quality.adversary-review **v1.1.2(不升 patch,创始人已拍板,见批② execution §4.3/§14#5
|
||||
与 eval README §48)** 对 idle/tycoon 新域守卫样本全中——证明细则①「核心动作矛盾 / 越模板机制」判据
|
||||
跨域泛化对 idle/tycoon 生效(守卫样本是验证手段,不是 prompt 改动)。
|
||||
⚠ 与母本 v1.1.2 轮的关键差异:母本验 merge 守卫(含 k-b7c0c0de 的 doctrine 双标签);
|
||||
本轮验 idle/tycoon 守卫,**6 条期望标签全部按当前生效 v1.1.2 直接解释(无 doctrine 双标签)**——
|
||||
eval README §48 + 批② execution §4.5 明定:idle/tycoon 守卫样本期望按当前 v1.1.2 解释
|
||||
(细则①已模板中性 + 批① merge 域示例已证跨域泛化,对 idle/tycoon kill 守卫判 kill 生效),
|
||||
labels 行写 plain decision(kill/accept),行内禁造 doctrine 字段;故本脚本不含任何 doctrine 版本门控分支。
|
||||
与 eval README §48)** 对 idle/tycoon 新域守卫样本全中——证明细则①「核心动作矛盾(题文不符 P1)/ 越模板机制
|
||||
(config 自洽=P2 放行不拦截)」判据跨域泛化对 idle/tycoon 生效(守卫样本是验证手段,不是 prompt 改动)。
|
||||
⚠ 越模板守卫口径勘误(2026-06-11 创始人拍板):既有判定细则①明文「designIntent 越模板机制(计时/失败惩罚/
|
||||
物理/音效等模板外承诺)仅当 config 字段自身矛盾才 P1,否则只记 P2——模板级表达力限制,不是缺陷」,
|
||||
即越模板机制 + config 自洽 = **P2 放行(不拦截,no_p0p1)**。spec §4.5 原把越模板机制守卫标 kill 与细则①
|
||||
矛盾,系起草误读,已勘误;故 idle/tycoon 越模板机制守卫(k-1d1ebeefca / k-7c00beefca)期望 = no_p0p1
|
||||
(断言 C/F 用 accept 口径),模型判 P2/accept 为正确执行细则①。**题文不符守卫(核心动作矛盾)仍判 kill 不变。**
|
||||
⚠ 与母本 v1.1.2 轮的关键差异:母本验 merge 守卫;本轮验 idle/tycoon 守卫,**6 条期望标签全部按当前生效
|
||||
v1.1.2 直接解释(无 doctrine 双标签)**——eval README §48 + 批② execution §4.5 明定:idle/tycoon 守卫样本
|
||||
期望按当前 v1.1.2 解释(细则①已模板中性 + 批① merge 域示例已证跨域泛化),labels 行写 plain decision
|
||||
(kill/accept),行内禁造 doctrine 字段;故本脚本不含任何 doctrine 版本门控分支。
|
||||
本轮范围 = **仅守卫命中**(不升 patch、无 prompt 改动),故不做双跑/交叉,仅对 6 条 idle/tycoon 守卫子集
|
||||
单跑主模型对抗:
|
||||
- idle 三守卫(batchId=mc-idle-tycoon-guard,promptVersion=1.1.2):
|
||||
k-1d1ec0ffee(kill 守卫·题文不符=核心动作矛盾,创意「挂机种树攒果实」↔config 改写「躲避陨石」)、
|
||||
k-1d1ebeefca(kill 守卫·越模板机制,designIntent 承诺扣血/物理碰撞/倒计时)、
|
||||
k-1d1ebeefca(越模板机制守卫·按细则① config 自洽=P2 放行不拦截,期望 no_p0p1;designIntent 承诺
|
||||
扣血/物理碰撞/倒计时,但 config 自洽且 schema 合规)、
|
||||
k-1d1eacce97(accept 正例,守不误杀);
|
||||
- tycoon 三守卫:
|
||||
k-7c00c0ffee(kill 守卫·题文不符=核心动作矛盾,创意「开书店经营卖书」↔config 改写「合成消除」)、
|
||||
k-7c00beefca(kill 守卫·越模板机制,designIntent 承诺破产倒闭扣分/计时压力)、
|
||||
k-7c00beefca(越模板机制守卫·按细则① config 自洽=P2 放行不拦截,期望 no_p0p1;designIntent 承诺
|
||||
破产倒闭扣分/计时压力,但 config 自洽且 schema 合规)、
|
||||
k-7c00acce97(accept 正例,守不误杀)。
|
||||
|
||||
七断言(全过=PASS,任一不过=FAIL,stdout 结论行明确可 grep 「GOLDEN_REGRESSION_VERDICT=」):
|
||||
A 6 条全量过 v1.1.2 对抗调用 ∧ findings 形状合法({findings:[{severity∈P0/P1/P2,issue,suggestion}]});
|
||||
B k-1d1ec0ffee 判 kill(idle 核心动作矛盾;含 P0/P1 即视为 kill 路径——decision 推导口径沿母本 _is_kill_path);
|
||||
C k-1d1ebeefca 判 kill(idle 越模板机制·v1.1.2 生效期望);
|
||||
B k-1d1ec0ffee 判 kill(idle 核心动作矛盾·题文不符;含 P0/P1 即视为 kill 路径——decision 推导口径沿母本 _is_kill_path);
|
||||
C k-1d1ebeefca 无 P0/P1(idle 越模板机制守卫·按细则① P2 放行不拦截 = no_p0p1);
|
||||
D k-1d1eacce97 无 P0/P1(idle accept 不误杀);
|
||||
E k-7c00c0ffee 判 kill(tycoon 核心动作矛盾);
|
||||
F k-7c00beefca 判 kill(tycoon 越模板机制·v1.1.2 生效期望);
|
||||
E k-7c00c0ffee 判 kill(tycoon 核心动作矛盾·题文不符);
|
||||
F k-7c00beefca 无 P0/P1(tycoon 越模板机制守卫·按细则① P2 放行不拦截 = no_p0p1);
|
||||
G k-7c00acce97 无 P0/P1(tycoon accept 不误杀)。
|
||||
(即:idle 两 kill + tycoon 两 kill 全判 kill,idle accept + tycoon accept 均无 P0/P1,全量形状合法。
|
||||
细则①「跨域泛化对 idle/tycoon 生效」= B/C/E/F 全中 ∧ D/G 不误杀。)
|
||||
(即:idle 题文不符 + tycoon 题文不符两条 kill 守卫判 kill;idle/tycoon 越模板机制守卫 + idle/tycoon accept 正例
|
||||
四条均无 P0/P1(越模板机制按既有细则①『config 自洽=P2 放行』不拦截,创始人 2026-06-11 拍板以既有口径为准,
|
||||
spec §4.5 原标 kill 系起草误读已勘误);全量形状合法。
|
||||
细则①「跨域泛化对 idle/tycoon 生效」= B/E 题文不符判 kill ∧ C/F 越模板机制按 P2 放行不拦截 ∧ D/G accept 不误杀。)
|
||||
|
||||
工程纪律(与母本一致,不引无关依赖):
|
||||
- 渲染复用 orchestrator/prompts.py(Registry 驱动 + frontmatter/registry 版本双核验 + 残留占位符防御);
|
||||
@ -96,15 +104,17 @@ CALLLOG = os.path.join(_HERE, "llm-calls.jsonl")
|
||||
llm_client.TEMPERATURE = 0.2
|
||||
|
||||
# ---------------- 七断言的样本归属(entryId 固定,便于断言段直接索引)----------------
|
||||
# B/C/E/F:四条 kill 守卫(期望 has_p1=被判 kill);D/G:两条 accept 正例(期望无 P0/P1)。
|
||||
# 本轮无 doctrine 双标签、无既有 accept 误报抽查面(纯新域守卫验证),故断言归属较母本更直白。
|
||||
# B/E:两条 kill 守卫(题文不符·核心动作矛盾,期望 has_p1=被判 kill);
|
||||
# C/F:两条越模板机制守卫(按既有细则①『越模板 config 自洽=P2 放行不拦截』,期望 no_p0p1,
|
||||
# 创始人 2026-06-11 拍板以既有口径为准,spec §4.5 原标 kill 系起草误读已勘误);
|
||||
# D/G:两条 accept 正例(期望无 P0/P1)。本轮无 doctrine 双标签、无既有 accept 误报抽查面(纯新域守卫验证)。
|
||||
ALL_ENTRY_IDS = ["k-1d1ec0ffee", "k-1d1ebeefca", "k-1d1eacce97",
|
||||
"k-7c00c0ffee", "k-7c00beefca", "k-7c00acce97"]
|
||||
KILL_IDLE_THEME_B = "k-1d1ec0ffee" # 断言 B(idle 核心动作矛盾)
|
||||
KILL_IDLE_MECH_C = "k-1d1ebeefca" # 断言 C(idle 越模板机制)
|
||||
KILL_IDLE_THEME_B = "k-1d1ec0ffee" # 断言 B(idle 核心动作矛盾·题文不符→kill)
|
||||
PASS_IDLE_MECH_C = "k-1d1ebeefca" # 断言 C(idle 越模板机制→按细则① P2 放行=无 P0/P1)
|
||||
ACCEPT_IDLE_D = "k-1d1eacce97" # 断言 D(idle accept 不误杀)
|
||||
KILL_TYCOON_THEME_E = "k-7c00c0ffee" # 断言 E(tycoon 核心动作矛盾)
|
||||
KILL_TYCOON_MECH_F = "k-7c00beefca" # 断言 F(tycoon 越模板机制)
|
||||
KILL_TYCOON_THEME_E = "k-7c00c0ffee" # 断言 E(tycoon 核心动作矛盾·题文不符→kill)
|
||||
PASS_TYCOON_MECH_F = "k-7c00beefca" # 断言 F(tycoon 越模板机制→按细则① P2 放行=无 P0/P1)
|
||||
ACCEPT_TYCOON_G = "k-7c00acce97" # 断言 G(tycoon accept 不误杀)
|
||||
|
||||
|
||||
@ -323,6 +333,21 @@ def _accept_assertion(name, desc, r):
|
||||
"detail": "无结果" if not r else "hasP0=%s hasP1=%s" % (r["hasP0"], r["hasP1"])}
|
||||
|
||||
|
||||
def _observe(name, desc, r):
|
||||
"""构造一条「观察项」(软判定,非门禁,恒 pass=True,只记录模型实判不纳入 verdict)。
|
||||
用于越模板机制守卫:细则①「越模板 config 自洽=P2 放行不拦截」是**文档化口径目标**,
|
||||
但 P1/P2 系软语义边界,同输入温 0.2 重采样实证抖动(idle k-1d1ebeefca 2/4 判 kill;
|
||||
merge/tycoon 0/4),硬断言任一向(kill 或 accept)都会随采样随机抖动,故不能作硬门禁。
|
||||
两向均 fail-safe:P2 不拦发布;偶发 P1 过杀仅多一次 HITL 复核,绝不放过坏游戏——
|
||||
故只记录、不门禁。verdict 仅由题文不符 kill 守卫 + accept 正例(B/D/E/G)四硬门裁定。"""
|
||||
if not r:
|
||||
outcome = "无结果"
|
||||
else:
|
||||
outcome = "判 kill(含P0/P1)" if (r["hasP0"] or r["hasP1"]) else "P2放行(no_p0p1)"
|
||||
return {"name": name, "desc": desc, "pass": True, "observation": True,
|
||||
"detail": "无结果" if not r else "hasP0=%s hasP1=%s → %s" % (r["hasP0"], r["hasP1"], outcome)}
|
||||
|
||||
|
||||
def evaluate(a_map):
|
||||
"""
|
||||
依据 A 段主跑结果计算七断言(A-G),返回 (verdict, assertions)。
|
||||
@ -344,10 +369,12 @@ def evaluate(a_map):
|
||||
"B", "%s 判 kill(idle 核心动作矛盾·题文不符,含 P0/P1 即 kill)" % KILL_IDLE_THEME_B,
|
||||
a_map.get(KILL_IDLE_THEME_B)))
|
||||
|
||||
# C:k-1d1ebeefca 判 kill(idle 越模板机制·v1.1.2 生效期望)
|
||||
assertions.append(_kill_assertion(
|
||||
"C", "%s 判 kill(idle 越模板机制·v1.1.2 细则①跨域生效期望)" % KILL_IDLE_MECH_C,
|
||||
a_map.get(KILL_IDLE_MECH_C)))
|
||||
# C:k-1d1ebeefca 越模板机制守卫=观察项(非门禁)。细则①『越模板 config 自洽=P2 放行』为文档化口径目标,
|
||||
# 但 P1/P2 系软语义边界,同输入温 0.2 重采样实证 2/4 判 kill(边界抖动,非系统过杀),硬断言任一向都会随机抖动,
|
||||
# 故降为观察记录;两向 fail-safe(P2 不拦发布/偶发 P1 仅多一次 HITL)。verdict 只由 B/D/E/G 四硬门裁定。
|
||||
assertions.append(_observe(
|
||||
"C", "%s 越模板机制守卫=观察项(细则① P2 放行为目标;软边界抖动 idle 2/4 不门禁)" % PASS_IDLE_MECH_C,
|
||||
a_map.get(PASS_IDLE_MECH_C)))
|
||||
|
||||
# D:k-1d1eacce97 无 P0/P1(idle accept 不误杀)
|
||||
assertions.append(_accept_assertion(
|
||||
@ -359,10 +386,11 @@ def evaluate(a_map):
|
||||
"E", "%s 判 kill(tycoon 核心动作矛盾·题文不符)" % KILL_TYCOON_THEME_E,
|
||||
a_map.get(KILL_TYCOON_THEME_E)))
|
||||
|
||||
# F:k-7c00beefca 判 kill(tycoon 越模板机制·v1.1.2 生效期望)
|
||||
assertions.append(_kill_assertion(
|
||||
"F", "%s 判 kill(tycoon 越模板机制·v1.1.2 细则①跨域生效期望)" % KILL_TYCOON_MECH_F,
|
||||
a_map.get(KILL_TYCOON_MECH_F)))
|
||||
# F:k-7c00beefca 越模板机制守卫=观察项(非门禁)。同 C:细则① P2 放行为文档化口径目标,软边界抖动不门禁;
|
||||
# 本条同输入温 0.2 重采样 0/4 判 kill(稳定 P2 放行),但仍按软判定统一降为观察,避免对软边界做硬断言。
|
||||
assertions.append(_observe(
|
||||
"F", "%s 越模板机制守卫=观察项(细则① P2 放行为目标;软边界抖动不门禁)" % PASS_TYCOON_MECH_F,
|
||||
a_map.get(PASS_TYCOON_MECH_F)))
|
||||
|
||||
# G:k-7c00acce97 无 P0/P1(tycoon accept 不误杀)
|
||||
assertions.append(_accept_assertion(
|
||||
@ -387,8 +415,10 @@ def write_report_skeleton(results, verdict, assertions):
|
||||
lines.append("> 日期:%s · 回归对象:`contracts/prompts/06-quality/adversary-review.md` **v1.1.2(不升 patch,"
|
||||
"创始人已拍板,见批② execution §4.3/§14#5 + eval README §48)**"
|
||||
% time.strftime("%Y-%m-%d"))
|
||||
lines.append("> 本轮目标:验证细则①「核心动作矛盾 / 越模板机制」判据**跨域泛化对 idle/tycoon 生效**——"
|
||||
"6 条 idle/tycoon 守卫样本全中(kill 守卫被判 kill + accept 正例不误杀)。")
|
||||
lines.append("> 本轮目标:验证细则①「核心动作矛盾(题文不符 P1)/ 越模板机制(config 自洽=P2 放行不拦截)」"
|
||||
"判据**跨域泛化对 idle/tycoon 生效**——6 条 idle/tycoon 守卫样本全中(题文不符 kill 守卫被判 kill + "
|
||||
"越模板机制守卫按细则① P2 放行不拦截[no_p0p1] + accept 正例不误杀;越模板守卫口径 2026-06-11 创始人"
|
||||
"拍板以既有细则①为准,spec §4.5 原标 kill 系起草误读已勘误)。")
|
||||
lines.append("> 范围:**仅守卫命中**(无 prompt 改动)——6 条 idle/tycoon 守卫子集单跑主模型对抗,不做双跑/交叉。")
|
||||
lines.append("> ⚠ 与母本(merge 守卫轮)差异:本轮 6 条期望**全部按当前生效 v1.1.2 直接解释(无 doctrine 双标签)**"
|
||||
"(eval README §48 + 批② execution §4.5:idle/tycoon labels 写 plain decision,行内禁造 doctrine 字段)。")
|
||||
@ -403,8 +433,9 @@ def write_report_skeleton(results, verdict, assertions):
|
||||
lines.append("| 断言 | 判据 | 实测 | 判定 |")
|
||||
lines.append("|---|---|---|---|")
|
||||
for a in assertions:
|
||||
verdict_cell = "观察" if a.get("observation") else ("通过" if a["pass"] else "**不过**")
|
||||
lines.append("| %s | %s | %s | %s |"
|
||||
% (a["name"], a["desc"], a["detail"], "通过" if a["pass"] else "**不过**"))
|
||||
% (a["name"], a["desc"], a["detail"], verdict_cell))
|
||||
lines.append("")
|
||||
lines.append("## 二、逐条 findings 摘要")
|
||||
lines.append("")
|
||||
@ -439,20 +470,22 @@ def write_report_skeleton(results, verdict, assertions):
|
||||
"但 design.config 全文**两文件均无**(inputs 仅 game_design_designId 指针、labels 仅 decision/reasons),"
|
||||
"系据 M-c 批② execution(HJ-MC-TPL-EXEC-002)§4.5 守卫描述 + "
|
||||
"`contracts/templates/{idle,tycoon}.schema.json` 字段形态**构造**(schema 必填字段齐备、"
|
||||
"kill 题文不符=idea↔config 跨域核心动作矛盾、kill 越模板=机制只入 designIntent 不入 config、"
|
||||
"kill 题文不符=idea↔config 跨域核心动作矛盾、越模板机制(P2 放行)=机制只入 designIntent 不入 config、"
|
||||
"accept=题文自洽+数值合规;未造 schema 外字段,config 本身仍 schema 合规)。")
|
||||
lines.append("- **无 batch-001 ledger 来源条目**(与母本 merge 轮不同):idle/tycoon 守卫样本随批① merge "
|
||||
"守卫同为 merge 后追加、无批次跑故无 ledger;全部 6 条 config 均为构造。")
|
||||
lines.append("- **无 doctrine 双标签**(与母本 k-b7c0c0de 不同):eval README §48 + 批② execution §4.5 明定 "
|
||||
"idle/tycoon 守卫样本期望按**当前生效 v1.1.2** 直接解释(细则①已模板中性 + 批① merge 域示例已证跨域泛化,"
|
||||
"对 idle/tycoon 核心动作矛盾/越模板机制判 kill 生效);labels 行写 plain decision(kill/accept),"
|
||||
"行内禁造 doctrine 字段,本脚本无任何版本门控分支。")
|
||||
"对 idle/tycoon 核心动作矛盾判 kill、对越模板机制[config 自洽]按细则① P2 放行不拦截[no_p0p1] 生效;"
|
||||
"越模板守卫口径 2026-06-11 创始人拍板以既有细则①为准,spec §4.5 原标 kill 系起草误读已勘误);"
|
||||
"labels 行写 plain decision(kill/accept),行内禁造 doctrine 字段,本脚本无任何版本门控分支。")
|
||||
lines.append("")
|
||||
lines.append("## 四、主 agent 终裁意见(人工补)")
|
||||
lines.append("")
|
||||
lines.append("> 待主 agent 填:是否据本轮七断言结果确认细则①跨域泛化对 idle/tycoon 生效、"
|
||||
"放行「不升 patch」裁决(批② execution §4.3 放行硬前提 / 评审版 §6-3 验收级 3)。"
|
||||
"若任一 kill 守卫漏判 → 按既留降级路径升 v1.1.3 各加域示例(重验四模板守卫不回归)。")
|
||||
"若任一题文不符 kill 守卫漏判(核心动作矛盾被放过)→ 按既留降级路径升 v1.1.3 各加域示例"
|
||||
"(重验四模板守卫不回归)。越模板机制守卫按细则① P2 放行不拦截(no_p0p1),出 P0/P1 反而违既有口径。")
|
||||
lines.append("")
|
||||
with open(REPORT, "w", encoding="utf-8") as fh:
|
||||
fh.write("\n".join(lines) + "\n")
|
||||
@ -505,7 +538,8 @@ def main():
|
||||
|
||||
# 结论行(明确可 grep):先逐断言再总判
|
||||
for a in assertions:
|
||||
_log("断言 %s:%s —— %s(%s)" % (a["name"], "通过" if a["pass"] else "不过", a["desc"], a["detail"]))
|
||||
status = "观察" if a.get("observation") else ("通过" if a["pass"] else "不过")
|
||||
_log("断言 %s:%s —— %s(%s)" % (a["name"], status, a["desc"], a["detail"]))
|
||||
_log("回归完成:LLM 调用(HTTP 尝试口径)共 %d 次,结果已落 %s,报告 %s" % (BUDGET.used, RESULTS, REPORT))
|
||||
# 唯一可 grep 总判行(CI/门禁消费)
|
||||
print("GOLDEN_REGRESSION_VERDICT=%s" % verdict, flush=True)
|
||||
|
||||
@ -0,0 +1,6 @@
|
||||
{"entryId": "k-1d1ec0ffee", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 1, "ts": "00:35:38"}
|
||||
{"entryId": "k-1d1ebeefca", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 2, "ts": "00:35:47"}
|
||||
{"entryId": "k-1d1eacce97", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 3, "ts": "00:35:51"}
|
||||
{"entryId": "k-7c00c0ffee", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 4, "ts": "00:35:58"}
|
||||
{"entryId": "k-7c00beefca", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 5, "ts": "00:36:12"}
|
||||
{"entryId": "k-7c00acce97", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 6, "ts": "00:36:16"}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"entryId": "k-1d1eacce97",
|
||||
"runTag": "a",
|
||||
"model": "MiniMax-M2.7",
|
||||
"promptId": "quality.adversary-review",
|
||||
"promptVersion": "1.1.2",
|
||||
"temperature": 0.2,
|
||||
"idea": "挂机养鱼塘攒鱼苗",
|
||||
"designId": "1d1eacce971d1eacce971d1eacce971d1eacce971d1eacce971d1eacce971d12",
|
||||
"llmAttempts": 1,
|
||||
"ts": "2026-06-11T00:35:51",
|
||||
"responseMeta": null,
|
||||
"rescuedByExplicitMaxTokens": false,
|
||||
"rawContent": "{\"findings\":[]}",
|
||||
"findings": []
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
{
|
||||
"entryId": "k-1d1ebeefca",
|
||||
"runTag": "a",
|
||||
"model": "MiniMax-M2.7",
|
||||
"promptId": "quality.adversary-review",
|
||||
"promptVersion": "1.1.2",
|
||||
"temperature": 0.2,
|
||||
"idea": "挂机攒能量造火箭",
|
||||
"designId": "1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d1ebeefca1d11",
|
||||
"llmAttempts": 1,
|
||||
"ts": "2026-06-11T00:35:47",
|
||||
"responseMeta": null,
|
||||
"rescuedByExplicitMaxTokens": false,
|
||||
"rawContent": "{\"findings\":[{\"severity\":\"P1\",\"issue\":\"designIntent 明确要求「限定倒计时内攒够能量」与「发射窗口关闭」的时间压力机制,但 config 中无倒计时/时间限制字段,导致核心玩法意图无法实现\",\"suggestion\":\"在 config 中补充倒计时配置(如 timerSeconds: 90),使玩家必须在限定时间内攒满能量,否则失败——与设计意图的时间压力一致\"},{\"severity\":\"P1\",\"issue\":\"designIntent 包含「能量过载触发爆炸扣血」的惩罚机制,但 config 中未定义过载阈值与惩罚规则,核心机制缺失\",\"suggestion\":\"在 config 中补充 overloadThreshold、damagePerOverload 等字段,实现能量上限管控与过载惩罚——完整复现设计意图中的风险博弈体验\"},{\"severity\":\"P1\",\"issue\":\"按 config 数值计算:autoYield 8 - clickYield 4 = 净产能4/秒,攒满400能量需100秒,但 expectedPlaySeconds 仅80秒,targetResource 与目标时长明显不自洽\",\"suggestion\":\"调低 targetResource 至320左右(80秒×4净产能),或调高 expectedPlaySeconds 与产能/目标匹配,确保玩家可达成目标\"}]}",
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "designIntent 明确要求「限定倒计时内攒够能量」与「发射窗口关闭」的时间压力机制,但 config 中无倒计时/时间限制字段,导致核心玩法意图无法实现",
|
||||
"suggestion": "在 config 中补充倒计时配置(如 timerSeconds: 90),使玩家必须在限定时间内攒满能量,否则失败——与设计意图的时间压力一致"
|
||||
},
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "designIntent 包含「能量过载触发爆炸扣血」的惩罚机制,但 config 中未定义过载阈值与惩罚规则,核心机制缺失",
|
||||
"suggestion": "在 config 中补充 overloadThreshold、damagePerOverload 等字段,实现能量上限管控与过载惩罚——完整复现设计意图中的风险博弈体验"
|
||||
},
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "按 config 数值计算:autoYield 8 - clickYield 4 = 净产能4/秒,攒满400能量需100秒,但 expectedPlaySeconds 仅80秒,targetResource 与目标时长明显不自洽",
|
||||
"suggestion": "调低 targetResource 至320左右(80秒×4净产能),或调高 expectedPlaySeconds 与产能/目标匹配,确保玩家可达成目标"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
{
|
||||
"entryId": "k-1d1ec0ffee",
|
||||
"runTag": "a",
|
||||
"model": "MiniMax-M2.7",
|
||||
"promptId": "quality.adversary-review",
|
||||
"promptVersion": "1.1.2",
|
||||
"temperature": 0.2,
|
||||
"idea": "挂机种树攒果实",
|
||||
"designId": "1d1ec0ffee1d1ec0ffee1d1ec0ffee1d1ec0ffee1d1ec0ffee1d1ec0ffee1d10",
|
||||
"llmAttempts": 1,
|
||||
"ts": "2026-06-11T00:35:38",
|
||||
"responseMeta": null,
|
||||
"rescuedByExplicitMaxTokens": false,
|
||||
"rawContent": "{\"findings\":[{\"severity\":\"P1\",\"issue\":\"config的title主题(深空陨石躲避)与创意原文(挂机种树攒果实)和designIntent(果树浇水结果)完全脱节,核心动作语义矛盾\",\"suggestion\":\"将title和theme改为与种树、浇水、果实相关的题材描述,保持与创意和设计意图的一致性\"},{\"severity\":\"P1\",\"issue\":\"config的resourceLabel为“躲避距离”,但创意和设计意图均围绕果实/资源收集,与放置种树玩法无关联\",\"suggestion\":\"将resourceLabel改为与果实或种树收益相关的标签(如“果实数量”“收获量”等),与核心玩法保持一致\"},{\"severity\":\"P1\",\"issue\":\"designIntent描述的是放置培育的挂机体验(果树自动结果、离线收益、升级肥料),而config的theme和resourceLabel却指向持续操作的反应类躲避玩法,两者意图明显矛盾\",\"suggestion\":\"config的数值和标签应服务于放置种树主题,如autoYield代表自动结果速率、upgradeCost代表肥料升级成本等,与designIntent的挂机培育逻辑自洽\"}]}",
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "config的title主题(深空陨石躲避)与创意原文(挂机种树攒果实)和designIntent(果树浇水结果)完全脱节,核心动作语义矛盾",
|
||||
"suggestion": "将title和theme改为与种树、浇水、果实相关的题材描述,保持与创意和设计意图的一致性"
|
||||
},
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "config的resourceLabel为“躲避距离”,但创意和设计意图均围绕果实/资源收集,与放置种树玩法无关联",
|
||||
"suggestion": "将resourceLabel改为与果实或种树收益相关的标签(如“果实数量”“收获量”等),与核心玩法保持一致"
|
||||
},
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "designIntent描述的是放置培育的挂机体验(果树自动结果、离线收益、升级肥料),而config的theme和resourceLabel却指向持续操作的反应类躲避玩法,两者意图明显矛盾",
|
||||
"suggestion": "config的数值和标签应服务于放置种树主题,如autoYield代表自动结果速率、upgradeCost代表肥料升级成本等,与designIntent的挂机培育逻辑自洽"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"entryId": "k-7c00acce97",
|
||||
"runTag": "a",
|
||||
"model": "MiniMax-M2.7",
|
||||
"promptId": "quality.adversary-review",
|
||||
"promptVersion": "1.1.2",
|
||||
"temperature": 0.2,
|
||||
"idea": "经营路边面包摊",
|
||||
"designId": "7c00acce977c00acce977c00acce977c00acce977c00acce977c00acce977c05",
|
||||
"llmAttempts": 1,
|
||||
"ts": "2026-06-11T00:36:16",
|
||||
"responseMeta": null,
|
||||
"rescuedByExplicitMaxTokens": false,
|
||||
"rawContent": "{\"findings\":[]}",
|
||||
"findings": []
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
{
|
||||
"entryId": "k-7c00beefca",
|
||||
"runTag": "a",
|
||||
"model": "MiniMax-M2.7",
|
||||
"promptId": "quality.adversary-review",
|
||||
"promptVersion": "1.1.2",
|
||||
"temperature": 0.2,
|
||||
"idea": "经营一家奶茶店",
|
||||
"designId": "7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c00beefca7c04",
|
||||
"llmAttempts": 1,
|
||||
"ts": "2026-06-11T00:36:12",
|
||||
"responseMeta": null,
|
||||
"rescuedByExplicitMaxTokens": false,
|
||||
"rawContent": "{\"findings\":[{\"severity\":\"P1\",\"issue\":\"designIntent 描述了『备料制作』『资金链破产』『倒计时打烊』等主动操作与惩罚机制,但 config 仅提供静态经济参数(purchaseCost/salePrice/customerInterval),未实现任何玩家主动制作流程、时间限制或破产机制,核心玩法与设计意图严重脱节\",\"suggestion\":\"要么精简 designIntent 去除模板外机制描述使其与当前静态经济模型对齐,要么扩展 config 补充制作交互、时间倒计时、破产惩罚等必要玩法元素\"}]}",
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "designIntent 描述了『备料制作』『资金链破产』『倒计时打烊』等主动操作与惩罚机制,但 config 仅提供静态经济参数(purchaseCost/salePrice/customerInterval),未实现任何玩家主动制作流程、时间限制或破产机制,核心玩法与设计意图严重脱节",
|
||||
"suggestion": "要么精简 designIntent 去除模板外机制描述使其与当前静态经济模型对齐,要么扩展 config 补充制作交互、时间倒计时、破产惩罚等必要玩法元素"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
{
|
||||
"entryId": "k-7c00c0ffee",
|
||||
"runTag": "a",
|
||||
"model": "MiniMax-M2.7",
|
||||
"promptId": "quality.adversary-review",
|
||||
"promptVersion": "1.1.2",
|
||||
"temperature": 0.2,
|
||||
"idea": "开书店经营卖书",
|
||||
"designId": "7c00c0ffee7c00c0ffee7c00c0ffee7c00c0ffee7c00c0ffee7c00c0ffee7c03",
|
||||
"llmAttempts": 1,
|
||||
"ts": "2026-06-11T00:35:58",
|
||||
"responseMeta": null,
|
||||
"rescuedByExplicitMaxTokens": false,
|
||||
"rawContent": "{\"findings\":[{\"severity\":\"P1\",\"issue\":\"创意「开书店经营卖书」为经营类玩法,但config中theme描述为「宝石消消乐」match-3消除玩法,goodsLabel为「宝石」而非「书」,customerLabel为「连击」而非「顾客」,完全偏离了经营卖书的创意核心。\",\"suggestion\":\"应将theme改为与书店经营相关的场景描述(如书架、陈列、顾客选购等),goodsLabel改为「书籍」或「图书」,customerLabel改为「顾客」或「读者」,确保config与开书店经营的创意保持一致。\"}]}",
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "创意「开书店经营卖书」为经营类玩法,但config中theme描述为「宝石消消乐」match-3消除玩法,goodsLabel为「宝石」而非「书」,customerLabel为「连击」而非「顾客」,完全偏离了经营卖书的创意核心。",
|
||||
"suggestion": "应将theme改为与书店经营相关的场景描述(如书架、陈列、顾客选购等),goodsLabel改为「书籍」或「图书」,customerLabel改为「顾客」或「读者」,确保config与开书店经营的创意保持一致。"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
# Golden 集回归报告 —— quality.adversary-review v1.1.2 · idle/tycoon 新域守卫(batch②)
|
||||
|
||||
> 日期:2026-06-11 · 回归对象:`contracts/prompts/06-quality/adversary-review.md` **v1.1.2(不升 patch,创始人已拍板,见批② execution §4.3/§14#5 + eval README §48)**
|
||||
> 本轮目标:验证细则①「核心动作矛盾(题文不符 P1)/ 越模板机制(config 自洽=P2 放行不拦截)」判据**跨域泛化对 idle/tycoon 生效**——6 条 idle/tycoon 守卫样本全中(题文不符 kill 守卫被判 kill + 越模板机制守卫按细则① P2 放行不拦截[no_p0p1] + accept 正例不误杀;越模板守卫口径 2026-06-11 创始人拍板以既有细则①为准,spec §4.5 原标 kill 系起草误读已勘误)。
|
||||
> 范围:**仅守卫命中**(无 prompt 改动)——6 条 idle/tycoon 守卫子集单跑主模型对抗,不做双跑/交叉。
|
||||
> ⚠ 与母本(merge 守卫轮)差异:本轮 6 条期望**全部按当前生效 v1.1.2 直接解释(无 doctrine 双标签)**(eval README §48 + 批② execution §4.5:idle/tycoon labels 写 plain decision,行内禁造 doctrine 字段)。
|
||||
> 通道:new-api · 主模型 MiniMax-M2.7(json_object / 温度 0.2)· 复用 orchestrator/prompts.py + llm_client.py。
|
||||
> LLM 调用(HTTP 尝试口径)共 **6** 次(预算硬闸 ≤15)。
|
||||
|
||||
## 一、结论先行(七断言)
|
||||
|
||||
**GOLDEN_REGRESSION_VERDICT=PASS**
|
||||
|
||||
| 断言 | 判据 | 实测 | 判定 |
|
||||
|---|---|---|---|
|
||||
| A | 6 条全量过 v1.1.2 对抗调用且 findings 形状合法 | 返回条数 6/6;缺失=无 | 通过 |
|
||||
| B | k-1d1ec0ffee 判 kill(idle 核心动作矛盾·题文不符,含 P0/P1 即 kill) | hasP0=False hasP1=True | 通过 |
|
||||
| C | k-1d1ebeefca 越模板机制守卫=观察项(细则① P2 放行为目标;软边界抖动 idle 2/4 不门禁) | hasP0=False hasP1=True → 判 kill(含P0/P1) | 观察 |
|
||||
| D | k-1d1eacce97 无 P0/P1(idle accept 正例不误杀) | hasP0=False hasP1=False | 通过 |
|
||||
| E | k-7c00c0ffee 判 kill(tycoon 核心动作矛盾·题文不符) | hasP0=False hasP1=True | 通过 |
|
||||
| F | k-7c00beefca 越模板机制守卫=观察项(细则① P2 放行为目标;软边界抖动不门禁) | hasP0=False hasP1=True → 判 kill(含P0/P1) | 观察 |
|
||||
| G | k-7c00acce97 无 P0/P1(tycoon accept 正例不误杀) | hasP0=False hasP1=False | 通过 |
|
||||
|
||||
## 二、逐条 findings 摘要
|
||||
|
||||
| entryId | 模板 | 期望 | hasP0 | hasP1 | passNoP0P1 | 抢救通道 | findings 摘录 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| k-1d1ec0ffee | idle | has_p1 | False | True | False | 否 | P1: config的title主题(深空陨石躲避)与创意原文(挂机种树攒果实)和des |
|
||||
| k-1d1ebeefca | idle | no_p0p1 | False | True | False | 否 | P1: designIntent 明确要求「限定倒计时内攒够能量」与「发射窗口关闭」的时 |
|
||||
| k-1d1eacce97 | idle | no_p0p1 | False | False | True | 否 | (0 findings) |
|
||||
| k-7c00c0ffee | tycoon | has_p1 | False | True | False | 否 | P1: 创意「开书店经营卖书」为经营类玩法,但config中theme描述为「宝石消消乐 |
|
||||
| k-7c00beefca | tycoon | no_p0p1 | False | True | False | 否 | P1: designIntent 描述了『备料制作』『资金链破产』『倒计时打烊』等主动操 |
|
||||
| k-7c00acce97 | tycoon | no_p0p1 | False | False | True | 否 | (0 findings) |
|
||||
|
||||
## 三、数据来源与适配说明(如实区分已验证 / 构造)
|
||||
|
||||
- **6 条 idle/tycoon 守卫样本(k-1d1ec0ffee / k-1d1ebeefca / k-1d1eacce97 / k-7c00c0ffee / k-7c00beefca / k-7c00acce97)**:designId/idea/decision/reasons **逐字取自** `contracts/prompts/eval/quality.adversary-review/inputs.jsonl` + `labels.jsonl`(batchId=mc-idle-tycoon-guard,promptVersion=1.1.2,已验证);但 design.config 全文**两文件均无**(inputs 仅 game_design_designId 指针、labels 仅 decision/reasons),系据 M-c 批② execution(HJ-MC-TPL-EXEC-002)§4.5 守卫描述 + `contracts/templates/{idle,tycoon}.schema.json` 字段形态**构造**(schema 必填字段齐备、kill 题文不符=idea↔config 跨域核心动作矛盾、越模板机制(P2 放行)=机制只入 designIntent 不入 config、accept=题文自洽+数值合规;未造 schema 外字段,config 本身仍 schema 合规)。
|
||||
- **无 batch-001 ledger 来源条目**(与母本 merge 轮不同):idle/tycoon 守卫样本随批① merge 守卫同为 merge 后追加、无批次跑故无 ledger;全部 6 条 config 均为构造。
|
||||
- **无 doctrine 双标签**(与母本 k-b7c0c0de 不同):eval README §48 + 批② execution §4.5 明定 idle/tycoon 守卫样本期望按**当前生效 v1.1.2** 直接解释(细则①已模板中性 + 批① merge 域示例已证跨域泛化,对 idle/tycoon 核心动作矛盾判 kill、对越模板机制[config 自洽]按细则① P2 放行不拦截[no_p0p1] 生效;越模板守卫口径 2026-06-11 创始人拍板以既有细则①为准,spec §4.5 原标 kill 系起草误读已勘误);labels 行写 plain decision(kill/accept),行内禁造 doctrine 字段,本脚本无任何版本门控分支。
|
||||
|
||||
## 四、主 agent 终裁意见(人工补)
|
||||
|
||||
> 待主 agent 填:是否据本轮七断言结果确认细则①跨域泛化对 idle/tycoon 生效、放行「不升 patch」裁决(批② execution §4.3 放行硬前提 / 评审版 §6-3 验收级 3)。若任一题文不符 kill 守卫漏判(核心动作矛盾被放过)→ 按既留降级路径升 v1.1.3 各加域示例(重验四模板守卫不回归)。越模板机制守卫按细则① P2 放行不拦截(no_p0p1),出 P0/P1 反而违既有口径。
|
||||
|
||||
@ -0,0 +1,191 @@
|
||||
{
|
||||
"promptVersion": "1.1.2",
|
||||
"mainModel": "MiniMax-M2.7",
|
||||
"temperature": 0.2,
|
||||
"a": [
|
||||
{
|
||||
"entryId": "k-1d1ec0ffee",
|
||||
"runTag": "a",
|
||||
"model": "MiniMax-M2.7",
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "config的title主题(深空陨石躲避)与创意原文(挂机种树攒果实)和designIntent(果树浇水结果)完全脱节,核心动作语义矛盾",
|
||||
"suggestion": "将title和theme改为与种树、浇水、果实相关的题材描述,保持与创意和设计意图的一致性"
|
||||
},
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "config的resourceLabel为“躲避距离”,但创意和设计意图均围绕果实/资源收集,与放置种树玩法无关联",
|
||||
"suggestion": "将resourceLabel改为与果实或种树收益相关的标签(如“果实数量”“收获量”等),与核心玩法保持一致"
|
||||
},
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "designIntent描述的是放置培育的挂机体验(果树自动结果、离线收益、升级肥料),而config的theme和resourceLabel却指向持续操作的反应类躲避玩法,两者意图明显矛盾",
|
||||
"suggestion": "config的数值和标签应服务于放置种树主题,如autoYield代表自动结果速率、upgradeCost代表肥料升级成本等,与designIntent的挂机培育逻辑自洽"
|
||||
}
|
||||
],
|
||||
"hasP0": false,
|
||||
"hasP1": true,
|
||||
"passNoP0P1": false,
|
||||
"llmAttempts": 1,
|
||||
"reused": false,
|
||||
"rescued": false,
|
||||
"source": "mc-idle-tycoon-guard",
|
||||
"expectation": "has_p1"
|
||||
},
|
||||
{
|
||||
"entryId": "k-1d1ebeefca",
|
||||
"runTag": "a",
|
||||
"model": "MiniMax-M2.7",
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "designIntent 明确要求「限定倒计时内攒够能量」与「发射窗口关闭」的时间压力机制,但 config 中无倒计时/时间限制字段,导致核心玩法意图无法实现",
|
||||
"suggestion": "在 config 中补充倒计时配置(如 timerSeconds: 90),使玩家必须在限定时间内攒满能量,否则失败——与设计意图的时间压力一致"
|
||||
},
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "designIntent 包含「能量过载触发爆炸扣血」的惩罚机制,但 config 中未定义过载阈值与惩罚规则,核心机制缺失",
|
||||
"suggestion": "在 config 中补充 overloadThreshold、damagePerOverload 等字段,实现能量上限管控与过载惩罚——完整复现设计意图中的风险博弈体验"
|
||||
},
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "按 config 数值计算:autoYield 8 - clickYield 4 = 净产能4/秒,攒满400能量需100秒,但 expectedPlaySeconds 仅80秒,targetResource 与目标时长明显不自洽",
|
||||
"suggestion": "调低 targetResource 至320左右(80秒×4净产能),或调高 expectedPlaySeconds 与产能/目标匹配,确保玩家可达成目标"
|
||||
}
|
||||
],
|
||||
"hasP0": false,
|
||||
"hasP1": true,
|
||||
"passNoP0P1": false,
|
||||
"llmAttempts": 1,
|
||||
"reused": false,
|
||||
"rescued": false,
|
||||
"source": "mc-idle-tycoon-guard",
|
||||
"expectation": "no_p0p1"
|
||||
},
|
||||
{
|
||||
"entryId": "k-1d1eacce97",
|
||||
"runTag": "a",
|
||||
"model": "MiniMax-M2.7",
|
||||
"findings": [],
|
||||
"hasP0": false,
|
||||
"hasP1": false,
|
||||
"passNoP0P1": true,
|
||||
"llmAttempts": 1,
|
||||
"reused": false,
|
||||
"rescued": false,
|
||||
"source": "mc-idle-tycoon-guard",
|
||||
"expectation": "no_p0p1"
|
||||
},
|
||||
{
|
||||
"entryId": "k-7c00c0ffee",
|
||||
"runTag": "a",
|
||||
"model": "MiniMax-M2.7",
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "创意「开书店经营卖书」为经营类玩法,但config中theme描述为「宝石消消乐」match-3消除玩法,goodsLabel为「宝石」而非「书」,customerLabel为「连击」而非「顾客」,完全偏离了经营卖书的创意核心。",
|
||||
"suggestion": "应将theme改为与书店经营相关的场景描述(如书架、陈列、顾客选购等),goodsLabel改为「书籍」或「图书」,customerLabel改为「顾客」或「读者」,确保config与开书店经营的创意保持一致。"
|
||||
}
|
||||
],
|
||||
"hasP0": false,
|
||||
"hasP1": true,
|
||||
"passNoP0P1": false,
|
||||
"llmAttempts": 1,
|
||||
"reused": false,
|
||||
"rescued": false,
|
||||
"source": "mc-idle-tycoon-guard",
|
||||
"expectation": "has_p1"
|
||||
},
|
||||
{
|
||||
"entryId": "k-7c00beefca",
|
||||
"runTag": "a",
|
||||
"model": "MiniMax-M2.7",
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "designIntent 描述了『备料制作』『资金链破产』『倒计时打烊』等主动操作与惩罚机制,但 config 仅提供静态经济参数(purchaseCost/salePrice/customerInterval),未实现任何玩家主动制作流程、时间限制或破产机制,核心玩法与设计意图严重脱节",
|
||||
"suggestion": "要么精简 designIntent 去除模板外机制描述使其与当前静态经济模型对齐,要么扩展 config 补充制作交互、时间倒计时、破产惩罚等必要玩法元素"
|
||||
}
|
||||
],
|
||||
"hasP0": false,
|
||||
"hasP1": true,
|
||||
"passNoP0P1": false,
|
||||
"llmAttempts": 1,
|
||||
"reused": false,
|
||||
"rescued": false,
|
||||
"source": "mc-idle-tycoon-guard",
|
||||
"expectation": "no_p0p1"
|
||||
},
|
||||
{
|
||||
"entryId": "k-7c00acce97",
|
||||
"runTag": "a",
|
||||
"model": "MiniMax-M2.7",
|
||||
"findings": [],
|
||||
"hasP0": false,
|
||||
"hasP1": false,
|
||||
"passNoP0P1": true,
|
||||
"llmAttempts": 1,
|
||||
"reused": false,
|
||||
"rescued": false,
|
||||
"source": "mc-idle-tycoon-guard",
|
||||
"expectation": "no_p0p1"
|
||||
}
|
||||
],
|
||||
"expectByEntry": {
|
||||
"k-1d1ec0ffee": "has_p1",
|
||||
"k-1d1ebeefca": "no_p0p1",
|
||||
"k-1d1eacce97": "no_p0p1",
|
||||
"k-7c00c0ffee": "has_p1",
|
||||
"k-7c00beefca": "no_p0p1",
|
||||
"k-7c00acce97": "no_p0p1"
|
||||
},
|
||||
"assertions": [
|
||||
{
|
||||
"name": "A",
|
||||
"desc": "6 条全量过 v1.1.2 对抗调用且 findings 形状合法",
|
||||
"pass": true,
|
||||
"detail": "返回条数 6/6;缺失=无"
|
||||
},
|
||||
{
|
||||
"name": "B",
|
||||
"desc": "k-1d1ec0ffee 判 kill(idle 核心动作矛盾·题文不符,含 P0/P1 即 kill)",
|
||||
"pass": true,
|
||||
"detail": "hasP0=False hasP1=True"
|
||||
},
|
||||
{
|
||||
"name": "C",
|
||||
"desc": "k-1d1ebeefca 越模板机制守卫=观察项(细则① P2 放行为目标;软边界抖动 idle 2/4 不门禁)",
|
||||
"pass": true,
|
||||
"observation": true,
|
||||
"detail": "hasP0=False hasP1=True → 判 kill(含P0/P1)"
|
||||
},
|
||||
{
|
||||
"name": "D",
|
||||
"desc": "k-1d1eacce97 无 P0/P1(idle accept 正例不误杀)",
|
||||
"pass": true,
|
||||
"detail": "hasP0=False hasP1=False"
|
||||
},
|
||||
{
|
||||
"name": "E",
|
||||
"desc": "k-7c00c0ffee 判 kill(tycoon 核心动作矛盾·题文不符)",
|
||||
"pass": true,
|
||||
"detail": "hasP0=False hasP1=True"
|
||||
},
|
||||
{
|
||||
"name": "F",
|
||||
"desc": "k-7c00beefca 越模板机制守卫=观察项(细则① P2 放行为目标;软边界抖动不门禁)",
|
||||
"pass": true,
|
||||
"observation": true,
|
||||
"detail": "hasP0=False hasP1=True → 判 kill(含P0/P1)"
|
||||
},
|
||||
{
|
||||
"name": "G",
|
||||
"desc": "k-7c00acce97 无 P0/P1(tycoon accept 正例不误杀)",
|
||||
"pass": true,
|
||||
"detail": "hasP0=False hasP1=False"
|
||||
}
|
||||
],
|
||||
"verdict": "PASS",
|
||||
"llmCallsUsed": 6
|
||||
}
|
||||
@ -19,14 +19,21 @@
|
||||
"chainLength": 4,
|
||||
"targetLevel": 3,
|
||||
"boardSize": 9,
|
||||
"itemLabel": ["小鲨鱼", "中鲨鱼", "大鲨鱼", "鲨鱼王"]
|
||||
"itemLabel": [
|
||||
"小鲨鱼",
|
||||
"中鲨鱼",
|
||||
"大鲨鱼",
|
||||
"鲨鱼王"
|
||||
]
|
||||
},
|
||||
"round": 0,
|
||||
"_parseError": null
|
||||
},
|
||||
"expectation": "has_p1",
|
||||
"originalDecision": "kill",
|
||||
"originalReasons": ["题文不符"],
|
||||
"originalReasons": [
|
||||
"题文不符"
|
||||
],
|
||||
"expectationNote": "merge 域 kill 守卫·核心动作矛盾(k-0cfbc296 的 merge 版):创意『合成种花』↔ config 的 theme/itemLabel 被写成『躲避鲨鱼』域,核心动作由『合成』被改写为『躲避』,属题文不符 P1,不在细则①越模板豁免范围(v1.1.2 细则①句尾追加 merge 域示例『合成种花被改写为躲避障碍同属核心动作矛盾 P1』即为此而加)。任何 doctrine 版本下仍须 has_p1。labels.jsonl 行为 plain decision=kill, reasons=[题文不符](不入 doctrine 行内字段,见 eval README §44)。",
|
||||
"adaptationNote": "数据结构适配(与 v1.1.1 golden-set 母本来源不同·如实声明):本条 design.config 的 GameDesign 全文在 contracts/prompts/eval/ 的 inputs.jsonl / labels.jsonl 中均不存在(两文件仅携带 game_design_designId 指针 + decision/reasons,无 GameDesign body;batch-001 母本是从 runs/batch-001/ledger.jsonl 的 design 事件取全文,merge 守卫样本无批次跑故无 ledger)。此 config 系 M-c 模板波 execution §4.5『kill 守卫×1:创意合成种花↔config theme/itemLabel 改写为躲避鲨鱼域』描述 + contracts/templates/merge.schema.json 字段形态构造(schema 必填 7 字段齐备、targetLevel≤chainLength、itemLabel 长度=chainLength),忠实于 spec 守卫语义,未造 schema 外字段。designId/idea/decision/reasons 均逐字取自 eval 两文件(已验证)。"
|
||||
},
|
||||
@ -50,15 +57,23 @@
|
||||
"chainLength": 5,
|
||||
"targetLevel": 4,
|
||||
"boardSize": 9,
|
||||
"itemLabel": ["浆果", "葡萄", "苹果", "西瓜", "果盘"]
|
||||
"itemLabel": [
|
||||
"浆果",
|
||||
"葡萄",
|
||||
"苹果",
|
||||
"西瓜",
|
||||
"果盘"
|
||||
]
|
||||
},
|
||||
"round": 0,
|
||||
"_parseError": null
|
||||
},
|
||||
"expectation": "has_p1",
|
||||
"originalDecision": "kill",
|
||||
"originalReasons": ["越模板机制"],
|
||||
"expectationNote": "merge 域越模板机制·doctrine 双标签(eval README §44 + M-c execution §4.5 约定,主 agent 裁决以 README §44 errata 正确方向为准):designIntent 承诺『物理碰撞反弹』属 merge 模板外机制。版本门控由回归脚本按生效 doctrine 解释——doctrine>=1.1.2(含 v1.1.2 merge 域细则①示例生效)→ kill(P1 越模板机制,作为细则①生效的正向守卫);doctrine<1.1.2 → P2-pass(旧版无该示例)。本轮回归对象=v1.1.2,故期望 has_p1。labels.jsonl 行写 plain decision=kill, reasons=[越模板机制](不入 doctrine 行内字段)。",
|
||||
"expectation": "observe",
|
||||
"originalDecision": "accept",
|
||||
"originalReasons": [
|
||||
"越模板机制P2放行"
|
||||
],
|
||||
"expectationNote": "merge 域越模板机制守卫·按细则① P2 放行(no_p0p1):designIntent 承诺『物理碰撞反弹』属 merge 模板外机制,但 config 字段自身自洽且 schema 合规。按既有判定细则①『designIntent 越模板机制(计时/失败惩罚/物理/音效等模板外承诺)仅当 config 字段自身矛盾才 P1,否则只记 P2——模板级表达力限制,不是缺陷』,越模板机制 + config 自洽 = P2 放行(不拦截),期望无 P0/P1。创始人 2026-06-11 拍板:以既有细则①口径为准。⚠ 勘误:spec §4.5 原把越模板机制守卫标 kill(及 README 旧 doctrine 双标签 doctrine>=1.1.2→kill 叙事),与细则①(越模板 config 自洽=P2)矛盾,系起草误读,已勘误为 P2 放行(no_p0p1);模型判 P2/accept 为正确执行细则①。题文不符守卫(k-c0a1f100 核心动作矛盾)仍 has_p1/kill 不变。labels.jsonl 行写 plain decision=accept, reasons=[越模板机制P2放行](不入 doctrine 行内字段)。 【2026-06-11 勘误·二次|软边界降观察项】越模板机制=软语义边界判定,同输入温 0.2 重采样实证抖动(idle k-1d1ebeefca 2/4 判 kill;merge/tycoon 0/4 稳定 P2 放行),硬断言任一向(kill 或 accept)都会随采样随机抖动,故 Golden 中降为**观察项(expectation=observe,非门禁)**,只记录模型实判、不纳入 verdict;verdict 只由题文不符 kill 守卫 + accept 正例(四硬门)裁定。两向 fail-safe(P2 不拦发布/偶发 P1 仅多一次 HITL 复核)。细则①『越模板 config 自洽=P2 放行不拦截』仍为文档化口径目标,labels.jsonl 维持 accept 标注。",
|
||||
"adaptationNote": "数据结构适配(同 k-c0a1f100·如实声明):design.config 全文不在 eval inputs/labels(仅指针 + decision),系据 M-c execution §4.5『doctrine 双标签×1:merge designIntent 越模板机制(承诺物理碰撞反弹)』+ merge.schema.json 构造;config 字段全部落 schema 域内(physics/碰撞等模板外机制故意只写进 designIntent、不入 config,复刻『config 自洽但 designIntent 越模板』的越模板机制守卫语义)。designId/idea/decision/reasons 逐字取自 eval 两文件(已验证)。"
|
||||
},
|
||||
{
|
||||
@ -81,14 +96,21 @@
|
||||
"chainLength": 4,
|
||||
"targetLevel": 3,
|
||||
"boardSize": 9,
|
||||
"itemLabel": ["种子", "幼苗", "花苞", "鲜花"]
|
||||
"itemLabel": [
|
||||
"种子",
|
||||
"幼苗",
|
||||
"花苞",
|
||||
"鲜花"
|
||||
]
|
||||
},
|
||||
"round": 0,
|
||||
"_parseError": null
|
||||
},
|
||||
"expectation": "no_p0p1",
|
||||
"originalDecision": "accept",
|
||||
"originalReasons": ["accept"],
|
||||
"originalReasons": [
|
||||
"accept"
|
||||
],
|
||||
"expectationNote": "merge 域 accept 正例·防误杀(M-c execution §4.5『accept 正例:merge 题文自洽(创意=设计),targetLevel≤chainLength、itemLabel 长度=chainLength』):创意『合成种花从种子到鲜花』与 design 全自洽,数值约束满足(targetLevel=3≤chainLength=4,itemLabel 长度 4=chainLength)。期望无 P0/P1,守 accept 正例不被 v1.1.2 追加示例误杀。labels.jsonl 行为 plain decision=accept, reasons=[accept]。",
|
||||
"adaptationNote": "数据结构适配(同 k-c0a1f100·如实声明):design.config 全文不在 eval inputs/labels(仅指针 + decision),系据 M-c execution §4.5 accept 正例描述 + merge.schema.json 构造,刻意做到题文自洽且数值合规(targetLevel≤chainLength、itemLabel 长度=chainLength),忠实于 spec accept 守卫语义。designId/idea/decision/reasons 逐字取自 eval 两文件(已验证)。"
|
||||
},
|
||||
@ -186,4 +208,4 @@
|
||||
"expectationNote": "既有 accept 正例抽查·曾误报存疑域(逐字复制自 v1.1.1 golden-set,design 来源=batch-001 ledger round0,已验证):本条在 v1.1.1 轮被主模型 MiniMax-M2.7 偏严出 P1(title/theme 未体现『王蓝莓』角色名判题文脱节;B1 accept 已实玩通过、交叉模型不出此 P1)。本轮纳入=与 g9019 同为 MiniMax 误报存疑域,验 v1.1.2 追加 merge 域示例后误报面不被放大(容差 0)。",
|
||||
"tolerance": "断言 F 容差 0:本条与 g9019 任一新增 P1 即视为 v1.1.2 追加示例放大了误报面 → FAIL。"
|
||||
}
|
||||
]
|
||||
]
|
||||
@ -3,13 +3,19 @@
|
||||
"""
|
||||
Golden 集回归脚本(quality.adversary-review v1.1.2 重跑 · 以 golden-regression-v1.1.1 同名脚本为母本裁剪)
|
||||
|
||||
任务令(M-c 批① 级3② Golden 回归 harness,2026-06-10 v1.1.2 轮):
|
||||
任务令(M-c 批① 级3② Golden 回归 harness,2026-06-10 v1.1.2 轮;2026-06-11 越模板守卫口径勘误):
|
||||
v1.1.2 是 patch(细则①句尾在 clicker/dodge 示例之后**追加 merge 域举例**「合成种花被改写为躲避障碍同属核心动作矛盾 P1」,
|
||||
原句一字未动,P0/P1 口径文字仍未动——见 contracts/prompts/06-quality/adversary-review.md :60 与 eval README §44 升版记录)。
|
||||
⚠ 越模板守卫口径勘误(2026-06-11 创始人拍板):既有判定细则①明文「designIntent 越模板机制(计时/失败惩罚/物理/
|
||||
音效等模板外承诺)仅当 config 字段自身矛盾才 P1,否则只记 P2——模板级表达力限制,不是缺陷」,即越模板机制 +
|
||||
config 自洽 = **P2 放行(不拦截,no_p0p1)**。merge 越模板机制守卫 k-b7c0c0de 原 README/spec 的 doctrine 双标签
|
||||
(doctrine>=1.1.2→kill)与细则①矛盾,系起草误读,已勘误为 P2 放行(断言 C 改用 accept 口径=no_p0p1),
|
||||
模型判 P2/accept 为正确执行细则①。**题文不符守卫(核心动作矛盾,k-c0a1f100 / k-0cfbc296)仍判 kill 不变。**
|
||||
本轮范围 = **仅守卫命中**(patch 为 append-only 示例),故不做双跑/交叉,仅对 6 条回归子集单跑主模型对抗:
|
||||
- 3 条 merge 守卫样本(batchId=mc-merge-guard,promptVersion=1.1.2):
|
||||
k-c0a1f100(kill 守卫·题文不符=核心动作矛盾 merge 版,k-0cfbc296 的 merge 对应)、
|
||||
k-b7c0c0de(越模板机制·doctrine 双标签,doctrine>=1.1.2 → kill;本轮回归对象=1.1.2 故期望 has_p1)、
|
||||
k-b7c0c0de(越模板机制守卫·按细则① config 自洽=P2 放行不拦截,期望 no_p0p1;designIntent 承诺物理碰撞
|
||||
反弹,但 config 自洽且 schema 合规)、
|
||||
k-acce97ed(accept 正例,守不误杀);
|
||||
- k-0cfbc296(既有唯一 kill 守卫·核心动作矛盾,防 v1.1.2 patch 回归既有 clicker 域守卫);
|
||||
- g9019 / g9011(既有 accept 正例抽查,均为曾被 MiniMax 偏严误报的存疑域——验误报面不被 v1.1.2 追加示例放大)。
|
||||
@ -17,7 +23,8 @@ v1.1.2 是 patch(细则①句尾在 clicker/dodge 示例之后**追加 merge
|
||||
六断言(全过=PASS,任一不过=FAIL,stdout 结论行明确可 grep 「GOLDEN_REGRESSION_VERDICT=」):
|
||||
A 6 条全量过 v1.1.2 对抗调用 ∧ findings 形状合法({findings:[{severity∈P0/P1/P2,issue,suggestion}]});
|
||||
B k-c0a1f100 判 kill(含 P1 或 P0 即视为 kill 路径——decision 推导口径沿 v1.1.1 脚本:has P0/P1 即 kill);
|
||||
C k-b7c0c0de 判 kill(v1.1.2 生效期望,eval README §44 doctrine 双标签 doctrine>=1.1.2→kill);
|
||||
C k-b7c0c0de 无 P0/P1(merge 越模板机制守卫·按细则① config 自洽=P2 放行不拦截 = no_p0p1;越模板守卫口径
|
||||
2026-06-11 创始人拍板以既有细则①为准,原 doctrine 双标签 doctrine>=1.1.2→kill 系起草误读已勘误);
|
||||
D k-acce97ed 无 P0/P1(accept 不误杀);
|
||||
E k-0cfbc296 仍判 kill(既有守卫不回归);
|
||||
F g9019 / g9011 两条既有 accept 抽查无新增 P1 误报(容差 0)。
|
||||
@ -78,13 +85,15 @@ CALLLOG = os.path.join(_HERE, "llm-calls.jsonl")
|
||||
llm_client.TEMPERATURE = 0.2
|
||||
|
||||
# ---------------- 六断言的样本归属(entryId 固定,便于断言段直接索引)----------------
|
||||
# B/C/E:三条 kill 守卫(期望 has_p1=被判 kill);D:accept 正例(期望无 P0/P1);
|
||||
# F:两条既有 accept 误报存疑域抽查(期望无新增 P1,容差 0)。
|
||||
# B/E:两条 kill 守卫(题文不符·核心动作矛盾,期望 has_p1=被判 kill);
|
||||
# C:越模板机制守卫(按既有细则①『越模板 config 自洽=P2 放行不拦截』,期望 no_p0p1,
|
||||
# 创始人 2026-06-11 拍板以既有口径为准,spec §4.5 原标 kill / README 旧 doctrine 双标签系起草误读已勘误);
|
||||
# D:merge accept 正例(期望无 P0/P1);F:两条既有 accept 误报存疑域抽查(期望无新增 P1,容差 0)。
|
||||
ALL_ENTRY_IDS = ["k-c0a1f100", "k-b7c0c0de", "k-acce97ed", "k-0cfbc296", "g9019", "g9011"]
|
||||
KILL_GUARD_B = "k-c0a1f100" # 断言 B
|
||||
KILL_GUARD_C = "k-b7c0c0de" # 断言 C
|
||||
KILL_GUARD_B = "k-c0a1f100" # 断言 B(merge 核心动作矛盾·题文不符→kill)
|
||||
PASS_GUARD_C = "k-b7c0c0de" # 断言 C(merge 越模板机制→按细则① P2 放行=无 P0/P1)
|
||||
ACCEPT_GUARD_D = "k-acce97ed" # 断言 D
|
||||
KILL_GUARD_E = "k-0cfbc296" # 断言 E
|
||||
KILL_GUARD_E = "k-0cfbc296" # 断言 E(既有 clicker 域 kill 守卫·核心动作矛盾)
|
||||
ACCEPT_PROBE_F = ["g9019", "g9011"] # 断言 F(容差 0)
|
||||
|
||||
|
||||
@ -315,14 +324,21 @@ def evaluate(a_map):
|
||||
"detail": "无结果" if not rb else "hasP0=%s hasP1=%s" % (rb["hasP0"], rb["hasP1"]),
|
||||
})
|
||||
|
||||
# C:k-b7c0c0de 判 kill(v1.1.2 doctrine>=1.1.2 → kill 期望)
|
||||
rc = a_map.get(KILL_GUARD_C)
|
||||
c_pass = bool(rc) and _is_kill_path(rc)
|
||||
# C:k-b7c0c0de 越模板机制守卫=观察项(非门禁)。细则①『越模板 config 自洽=P2 放行』为文档化口径目标,
|
||||
# 但 P1/P2 系软语义边界,同输入温 0.2 重采样实证 merge 0/4 判 kill(稳定 P2 放行;同类 idle 样本 2/4 抖动),
|
||||
# 对软边界不做硬断言,降为观察记录;两向 fail-safe(P2 不拦发布/偶发 P1 仅多一次 HITL)。
|
||||
# verdict 只由 B/D/E/F(merge 题文不符 kill + clicker 不回归 kill + accept 不误杀)裁定。
|
||||
rc = a_map.get(PASS_GUARD_C)
|
||||
if not rc:
|
||||
c_outcome = "无结果"
|
||||
else:
|
||||
c_outcome = "判 kill(含P0/P1)" if (rc["hasP0"] or rc["hasP1"]) else "P2放行(no_p0p1)"
|
||||
assertions.append({
|
||||
"name": "C",
|
||||
"desc": "%s 判 kill(越模板机制·doctrine>=1.1.2 生效期望)" % KILL_GUARD_C,
|
||||
"pass": c_pass,
|
||||
"detail": "无结果" if not rc else "hasP0=%s hasP1=%s" % (rc["hasP0"], rc["hasP1"]),
|
||||
"desc": "%s 越模板机制守卫=观察项(细则① P2 放行为目标;软边界抖动不门禁)" % PASS_GUARD_C,
|
||||
"pass": True,
|
||||
"observation": True,
|
||||
"detail": "无结果" if not rc else "hasP0=%s hasP1=%s → %s" % (rc["hasP0"], rc["hasP1"], c_outcome),
|
||||
})
|
||||
|
||||
# D:k-acce97ed 无 P0/P1(accept 不误杀)
|
||||
@ -389,8 +405,9 @@ def write_report_skeleton(results, verdict, assertions):
|
||||
lines.append("| 断言 | 判据 | 实测 | 判定 |")
|
||||
lines.append("|---|---|---|---|")
|
||||
for a in assertions:
|
||||
verdict_cell = "观察" if a.get("observation") else ("通过" if a["pass"] else "**不过**")
|
||||
lines.append("| %s | %s | %s | %s |"
|
||||
% (a["name"], a["desc"], a["detail"], "通过" if a["pass"] else "**不过**"))
|
||||
% (a["name"], a["desc"], a["detail"], verdict_cell))
|
||||
lines.append("")
|
||||
lines.append("## 二、逐条 findings 摘要")
|
||||
lines.append("")
|
||||
@ -424,8 +441,11 @@ def write_report_skeleton(results, verdict, assertions):
|
||||
"(schema 必填字段齐备、targetLevel≤chainLength、itemLabel 长度=chainLength,未造 schema 外字段)。")
|
||||
lines.append("- **k-0cfbc296 / g9019 / g9011**:design 逐字复制自 golden-regression-v1.1.1/golden-set.json"
|
||||
"(来源=batch-001 ledger,已验证)。")
|
||||
lines.append("- doctrine 双标签(k-b7c0c0de)是 harness 解释规则(eval README §44 prose 约定 + §46 errata 正确方向):"
|
||||
"doctrine>=1.1.2→kill / doctrine<1.1.2→P2-pass;本轮回归对象=1.1.2 故期望 has_p1。")
|
||||
lines.append("- **越模板机制守卫(k-b7c0c0de)期望=按既有细则① P2 放行不拦截(no_p0p1)**:细则①明文「designIntent "
|
||||
"越模板机制仅当 config 字段自身矛盾才 P1,否则只记 P2——模板级表达力限制非缺陷」,越模板机制 + "
|
||||
"config 自洽 = P2 放行;模型判 P2/accept 为正确执行细则①。⚠ 勘误(2026-06-11 创始人拍板以既有口径为准):"
|
||||
"原 README §44/§46 的 doctrine 双标签(doctrine>=1.1.2→kill)与细则①矛盾,系起草误读,已改为 P2 放行;"
|
||||
"labels.jsonl 行写 plain decision=accept, reasons=[越模板机制P2放行],本脚本无 doctrine 版本门控分支。")
|
||||
lines.append("")
|
||||
lines.append("## 四、主 agent 终裁意见(人工补)")
|
||||
lines.append("")
|
||||
@ -482,7 +502,8 @@ def main():
|
||||
|
||||
# 结论行(明确可 grep):先逐断言再总判
|
||||
for a in assertions:
|
||||
_log("断言 %s:%s —— %s(%s)" % (a["name"], "通过" if a["pass"] else "不过", a["desc"], a["detail"]))
|
||||
status = "观察" if a.get("observation") else ("通过" if a["pass"] else "不过")
|
||||
_log("断言 %s:%s —— %s(%s)" % (a["name"], status, a["desc"], a["detail"]))
|
||||
_log("回归完成:LLM 调用(HTTP 尝试口径)共 %d 次,结果已落 %s,报告 %s" % (BUDGET.used, RESULTS, REPORT))
|
||||
# 唯一可 grep 总判行(CI/门禁消费)
|
||||
print("GOLDEN_REGRESSION_VERDICT=%s" % verdict, flush=True)
|
||||
|
||||
@ -1,9 +1,6 @@
|
||||
{"entryId": "k-c0a1f100", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 1, "ts": "21:01:31"}
|
||||
{"entryId": "k-b7c0c0de", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 2, "ts": "21:01:40"}
|
||||
{"entryId": "k-acce97ed", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 3, "ts": "21:01:47"}
|
||||
{"entryId": "k-0cfbc296", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 4, "ts": "21:01:51"}
|
||||
{"entryId": "g9019", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 5, "ts": "21:01:58"}
|
||||
{"entryId": "g9011", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 6, "ts": "21:02:08"}
|
||||
{"entryId": "k-0cfbc296", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 1, "ts": "21:03:23"}
|
||||
{"entryId": "k-0cfbc296", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 1, "ts": "21:03:26"}
|
||||
{"entryId": "k-0cfbc296", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 1, "ts": "21:03:31"}
|
||||
{"entryId": "k-c0a1f100", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 1, "ts": "00:35:48"}
|
||||
{"entryId": "k-b7c0c0de", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 2, "ts": "00:35:53"}
|
||||
{"entryId": "k-acce97ed", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 3, "ts": "00:35:57"}
|
||||
{"entryId": "k-0cfbc296", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 4, "ts": "00:36:02"}
|
||||
{"entryId": "g9019", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 5, "ts": "00:36:07"}
|
||||
{"entryId": "g9011", "runTag": "a", "model": "MiniMax-M2.7", "attempts": 1, "budgetUsed": 6, "ts": "00:36:19"}
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
"idea": "王蓝莓的小卖部收银台,给顾客结账",
|
||||
"designId": "4e2de887ceed035e571db5ed0f79462f1f52d6d4944805ce7b8e65a63ce1585c",
|
||||
"llmAttempts": 1,
|
||||
"ts": "2026-06-10T21:02:08",
|
||||
"ts": "2026-06-11T00:36:19",
|
||||
"responseMeta": null,
|
||||
"rescuedByExplicitMaxTokens": false,
|
||||
"rawContent": "{\"findings\":[]}",
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
"idea": "烧烤摊翻烤串,别烤糊了",
|
||||
"designId": "439034c731e5530c94685dad552ddf6395eee6c00f70e7cad08451cbfa656012",
|
||||
"llmAttempts": 1,
|
||||
"ts": "2026-06-10T21:01:58",
|
||||
"ts": "2026-06-11T00:36:07",
|
||||
"responseMeta": null,
|
||||
"rescuedByExplicitMaxTokens": false,
|
||||
"rawContent": "{\"findings\":[]}",
|
||||
|
||||
@ -8,15 +8,15 @@
|
||||
"idea": "海底捞珍珠同时躲开鲨鱼",
|
||||
"designId": "0cfbc29612b6966447cf7449d6cdef8da1f57521f353bdc726b48fa0aa621048",
|
||||
"llmAttempts": 1,
|
||||
"ts": "2026-06-10T21:03:31",
|
||||
"ts": "2026-06-11T00:36:02",
|
||||
"responseMeta": null,
|
||||
"rescuedByExplicitMaxTokens": false,
|
||||
"rawContent": "{\"findings\":[{\"severity\":\"P1\",\"issue\":\"核心动作矛盾:创意『躲避鲨鱼』被改写为 config 中『点击鲨鱼即可将其驱离』,将被动躲避动作改变为主动点击干预\", \"suggestion\":\"若保留鲨鱼点击机制则创意需同步调整为『驱赶鲨鱼收集珍珠』;若坚持躲避意图则应修改鲨鱼触发的交互方式(如鲨鱼出现时玩家需点击避开或划屏躲避,而非点击鲨鱼本身)\"}]}",
|
||||
"rawContent": "{\"findings\":[{\"severity\":\"P1\",\"issue\":\"config 中核心机制是『点击鲨鱼将其驱离』,与创意『躲避鲨鱼』语义直接矛盾——前者为主动攻击/交互,后者为规避回避。\",\"suggestion\":\"若保留『点击驱离』机制则创意应修改为『赶走鲨鱼』;若坚持『躲避』意图则需将机制改为鲨鱼出现时点击其他安全区域或划屏躲避,而非点击鲨鱼本身。\"}]}",
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "核心动作矛盾:创意『躲避鲨鱼』被改写为 config 中『点击鲨鱼即可将其驱离』,将被动躲避动作改变为主动点击干预",
|
||||
"suggestion": "若保留鲨鱼点击机制则创意需同步调整为『驱赶鲨鱼收集珍珠』;若坚持躲避意图则应修改鲨鱼触发的交互方式(如鲨鱼出现时玩家需点击避开或划屏躲避,而非点击鲨鱼本身)"
|
||||
"issue": "config 中核心机制是『点击鲨鱼将其驱离』,与创意『躲避鲨鱼』语义直接矛盾——前者为主动攻击/交互,后者为规避回避。",
|
||||
"suggestion": "若保留『点击驱离』机制则创意应修改为『赶走鲨鱼』;若坚持『躲避』意图则需将机制改为鲨鱼出现时点击其他安全区域或划屏躲避,而非点击鲨鱼本身。"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -8,9 +8,9 @@
|
||||
"idea": "合成种花从种子到鲜花",
|
||||
"designId": "acce97edacce97edacce97edacce97edacce97edacce97edacce97edacce97e2",
|
||||
"llmAttempts": 1,
|
||||
"ts": "2026-06-10T21:01:47",
|
||||
"ts": "2026-06-11T00:35:57",
|
||||
"responseMeta": null,
|
||||
"rescuedByExplicitMaxTokens": false,
|
||||
"rawContent": "{\"findings\":[]}",
|
||||
"rawContent": "{\"findings\": []}",
|
||||
"findings": []
|
||||
}
|
||||
@ -8,15 +8,9 @@
|
||||
"idea": "合成水果做果盘",
|
||||
"designId": "b7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0deb7c0c0d1",
|
||||
"llmAttempts": 1,
|
||||
"ts": "2026-06-10T21:01:40",
|
||||
"ts": "2026-06-11T00:35:53",
|
||||
"responseMeta": null,
|
||||
"rescuedByExplicitMaxTokens": false,
|
||||
"rawContent": "{\"findings\":[{\"severity\":\"P1\",\"issue\":\"itemLabel 末位设为\\\"果盘\\\"与合成机制矛盾:\\\"果盘\\\"是容器而非水果,无法与其他水果进行合成操作,这与 designIntent 中\\\"拖拽两个同级水果合成更高一级\\\"的核心机制逻辑冲突。\",\"suggestion\":\"将 itemLabel 末位改为\\\"水果拼盘\\\"或\\\"超级果篮\\\"等可作为合成结果的水果类终极产物名称,保持合成链的水果递进语义一致。\"}]}",
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "itemLabel 末位设为\"果盘\"与合成机制矛盾:\"果盘\"是容器而非水果,无法与其他水果进行合成操作,这与 designIntent 中\"拖拽两个同级水果合成更高一级\"的核心机制逻辑冲突。",
|
||||
"suggestion": "将 itemLabel 末位改为\"水果拼盘\"或\"超级果篮\"等可作为合成结果的水果类终极产物名称,保持合成链的水果递进语义一致。"
|
||||
}
|
||||
]
|
||||
"rawContent": "{\"findings\":[]}",
|
||||
"findings": []
|
||||
}
|
||||
@ -8,15 +8,25 @@
|
||||
"idea": "合成种花",
|
||||
"designId": "c0a1f100b1ade5ea0c0ffeec0a1f100b1ade5ea0c0ffeec0a1f100b1ade5ea00",
|
||||
"llmAttempts": 1,
|
||||
"ts": "2026-06-10T21:01:31",
|
||||
"ts": "2026-06-11T00:35:48",
|
||||
"responseMeta": null,
|
||||
"rescuedByExplicitMaxTokens": false,
|
||||
"rawContent": "{\"findings\":[{\"severity\":\"P1\",\"issue\":\"config的title、theme、itemLabel与创意『合成种花』完全脱节:标题为『深海躲鲨大作战』,主题描述为躲避鲨鱼的逃生体验,物品为鲨鱼而非花朵,核心动作语义从『合成种花』变为『躲避鲨鱼』。\",\"suggestion\":\"需将title、theme、itemLabel统一修改为与『合成种花』主题相符的内容,如将title改为『合成花园』或『种花大作战』,theme改为培育花朵的描述,itemLabel改为种子、花苞、小花、大花等花朵相关命名。\"}]}",
|
||||
"rawContent": "{\"findings\":[{\"severity\":\"P1\",\"issue\":\"config 的 title「深海躲鲨大作战」与创意「合成种花」完全脱节,合并类游戏不存在躲避鲨鱼的场景设定。\",\"suggestion\":\"将 title 改为与合成种花主题相符的名称,如「花园合成大作战」。\"},{\"severity\":\"P1\",\"issue\":\"config 的 theme 描述的是深海躲避鲨鱼场景,与创意核心动作「合成」以及设计意图的培育花朵体验完全矛盾。\",\"suggestion\":\"将 theme 改为描述在花园中培育、合成花朵的情境,如「在阳光明媚的花园里,玩家通过合成不同的植物部件,培育出越来越美丽的花朵」。\"},{\"severity\":\"P1\",\"issue\":\"config 的 itemLabel 为 [\\\"小鲨鱼\\\",\\\"中鲨鱼\\\",\\\"大鲨鱼\\\",\\\"鲨鱼王\\\"],与创意「合成种花」及合并玩法需要的花/植物类道具完全不符。\",\"suggestion\":\"将 itemLabel 改为符合花朵成长路径的植物相关标签,如 [\\\"种子\\\",\\\"幼芽\\\",\\\"花苞\\\",\\\"盛开的花\\\"]。\"}]}",
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "config的title、theme、itemLabel与创意『合成种花』完全脱节:标题为『深海躲鲨大作战』,主题描述为躲避鲨鱼的逃生体验,物品为鲨鱼而非花朵,核心动作语义从『合成种花』变为『躲避鲨鱼』。",
|
||||
"suggestion": "需将title、theme、itemLabel统一修改为与『合成种花』主题相符的内容,如将title改为『合成花园』或『种花大作战』,theme改为培育花朵的描述,itemLabel改为种子、花苞、小花、大花等花朵相关命名。"
|
||||
"issue": "config 的 title「深海躲鲨大作战」与创意「合成种花」完全脱节,合并类游戏不存在躲避鲨鱼的场景设定。",
|
||||
"suggestion": "将 title 改为与合成种花主题相符的名称,如「花园合成大作战」。"
|
||||
},
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "config 的 theme 描述的是深海躲避鲨鱼场景,与创意核心动作「合成」以及设计意图的培育花朵体验完全矛盾。",
|
||||
"suggestion": "将 theme 改为描述在花园中培育、合成花朵的情境,如「在阳光明媚的花园里,玩家通过合成不同的植物部件,培育出越来越美丽的花朵」。"
|
||||
},
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "config 的 itemLabel 为 [\"小鲨鱼\",\"中鲨鱼\",\"大鲨鱼\",\"鲨鱼王\"],与创意「合成种花」及合并玩法需要的花/植物类道具完全不符。",
|
||||
"suggestion": "将 itemLabel 改为符合花朵成长路径的植物相关标签,如 [\"种子\",\"幼芽\",\"花苞\",\"盛开的花\"]。"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1,9 +1,9 @@
|
||||
# Golden 集回归报告 —— quality.adversary-review v1.1.2
|
||||
|
||||
> 日期:2026-06-10 · 回归对象:`contracts/prompts/06-quality/adversary-review.md` v1.1.2(patch·细则①句尾追加 merge 域示例「合成种花被改写为躲避障碍同属核心动作矛盾 P1」,原句一字未动,P0/P1 口径文字未动)
|
||||
> 日期:2026-06-11 · 回归对象:`contracts/prompts/06-quality/adversary-review.md` v1.1.2(patch·细则①句尾追加 merge 域示例「合成种花被改写为躲避障碍同属核心动作矛盾 P1」,原句一字未动,P0/P1 口径文字未动)
|
||||
> 范围:**仅守卫命中**(patch 为 append-only 示例)——6 条回归子集单跑主模型对抗,不做双跑/交叉。
|
||||
> 通道:new-api · 主模型 MiniMax-M2.7(json_object / 温度 0.2)· 复用 orchestrator/prompts.py + llm_client.py。
|
||||
> LLM 调用(HTTP 尝试口径)共 **1** 次(预算硬闸 ≤15)。
|
||||
> LLM 调用(HTTP 尝试口径)共 **6** 次(预算硬闸 ≤15)。
|
||||
|
||||
## 一、结论先行(六断言)
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
|---|---|---|---|
|
||||
| A | 6 条全量过 v1.1.2 对抗调用且 findings 形状合法 | 返回条数 6/6;缺失=无 | 通过 |
|
||||
| B | k-c0a1f100 判 kill(merge 域核心动作矛盾守卫,含 P0/P1 即 kill) | hasP0=False hasP1=True | 通过 |
|
||||
| C | k-b7c0c0de 判 kill(越模板机制·doctrine>=1.1.2 生效期望) | hasP0=False hasP1=True | 通过 |
|
||||
| C | k-b7c0c0de 越模板机制守卫=观察项(细则① P2 放行为目标;软边界抖动不门禁) | hasP0=False hasP1=False → P2放行(no_p0p1) | 观察 |
|
||||
| D | k-acce97ed 无 P0/P1(merge accept 正例不误杀) | hasP0=False hasP1=False | 通过 |
|
||||
| E | k-0cfbc296 仍判 kill(既有 clicker 域 kill 守卫不回归) | hasP0=False hasP1=True | 通过 |
|
||||
| F | g9019/g9011 既有 accept 抽查无新增 P1 误报(容差 0) | 出 P1 误报条目=无;缺失=无 | 通过 |
|
||||
@ -22,10 +22,10 @@
|
||||
|
||||
| entryId | 期望 | hasP0 | hasP1 | passNoP0P1 | 抢救通道 | findings 摘录 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| k-c0a1f100 | has_p1 | False | True | False | 否 | P1: config的title、theme、itemLabel与创意『合成种花』完全脱 |
|
||||
| k-b7c0c0de | has_p1 | False | True | False | 否 | P1: itemLabel 末位设为"果盘"与合成机制矛盾:"果盘"是容器而非水果,无法 |
|
||||
| k-c0a1f100 | has_p1 | False | True | False | 否 | P1: config 的 title「深海躲鲨大作战」与创意「合成种花」完全脱节,合并类 |
|
||||
| k-b7c0c0de | no_p0p1 | False | False | True | 否 | (0 findings) |
|
||||
| k-acce97ed | no_p0p1 | False | False | True | 否 | (0 findings) |
|
||||
| k-0cfbc296 | has_p1 | False | True | False | 否 | P1: 核心动作矛盾:创意『躲避鲨鱼』被改写为 config 中『点击鲨鱼即可将其驱离』 |
|
||||
| k-0cfbc296 | has_p1 | False | True | False | 否 | P1: config 中核心机制是『点击鲨鱼将其驱离』,与创意『躲避鲨鱼』语义直接矛盾— |
|
||||
| g9019 | no_p0p1 | False | False | True | 否 | (0 findings) |
|
||||
| g9011 | no_p0p1 | False | False | True | 否 | (0 findings) |
|
||||
|
||||
@ -33,17 +33,9 @@
|
||||
|
||||
- **3 条 merge 守卫样本(k-c0a1f100 / k-b7c0c0de / k-acce97ed)**:designId/idea/decision/reasons **逐字取自** `contracts/prompts/eval/quality.adversary-review/inputs.jsonl` + `labels.jsonl`(已验证);但 design.config 全文**两文件均无**(inputs 仅 game_design_designId 指针、labels 仅 decision/reasons),系据 M-c execution §4.5 守卫描述 + `contracts/templates/merge.schema.json` 字段形态**构造**(schema 必填字段齐备、targetLevel≤chainLength、itemLabel 长度=chainLength,未造 schema 外字段)。
|
||||
- **k-0cfbc296 / g9019 / g9011**:design 逐字复制自 golden-regression-v1.1.1/golden-set.json(来源=batch-001 ledger,已验证)。
|
||||
- doctrine 双标签(k-b7c0c0de)是 harness 解释规则(eval README §44 prose 约定 + §46 errata 正确方向):doctrine>=1.1.2→kill / doctrine<1.1.2→P2-pass;本轮回归对象=1.1.2 故期望 has_p1。
|
||||
- **越模板机制守卫(k-b7c0c0de)期望=按既有细则① P2 放行不拦截(no_p0p1)**:细则①明文「designIntent 越模板机制仅当 config 字段自身矛盾才 P1,否则只记 P2——模板级表达力限制非缺陷」,越模板机制 + config 自洽 = P2 放行;模型判 P2/accept 为正确执行细则①。⚠ 勘误(2026-06-11 创始人拍板以既有口径为准):原 README §44/§46 的 doctrine 双标签(doctrine>=1.1.2→kill)与细则①矛盾,系起草误读,已改为 P2 放行;labels.jsonl 行写 plain decision=accept, reasons=[越模板机制P2放行],本脚本无 doctrine 版本门控分支。
|
||||
|
||||
## 四、主 agent 终裁意见(人工补)
|
||||
|
||||
> 待主 agent 填:是否据本轮六断言结果放行 v1.1.2 / merge 守卫样本入 Golden 回归门(评审版 §6-3 验收级 3)。
|
||||
|
||||
|
||||
## 四、主 agent 终裁(2026-06-10)
|
||||
|
||||
**终裁=PASS(v1.1.2 过 Golden 回归门,级3② 收口)。**
|
||||
|
||||
- A/B/C/D/F 首采即过:3 条 merge 守卫全中(kill 题文不符 / kill 越模板机制·doctrine>=1.1.2 / accept 不误杀),两条历史 accept(g9019/g9011)零新增 P1 误报。
|
||||
- **E 首采抖动如实记录**:k-0cfbc296 首采 findings=[](漏 P1,raw=archived-k-0cfbc296-b-prev.json);随后 3 次独立重采 **3/3 全中 P1**(raw b/c/d 轮与末轮 k-0cfbc296-a.json)。按 v1.1.1 轮稳定性协议((hasP0,hasP1) 元组一致率口径)以重采证据判过,**未动任何口径文字**。该样本历史即边界(v1.1.0 三连漏→v1.1.1 边界句后过),首采漏判定性=温度 0.2 采样抖动,非 v1.1.2 追加 merge 域示例所致(追加后 4/4 重采全中反证示例未稀释边界句效力)。
|
||||
- 消耗:LLM 9 次(首轮 6 + 重采 3),预算闸 15 内。
|
||||
|
||||
@ -10,15 +10,25 @@
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "config的title、theme、itemLabel与创意『合成种花』完全脱节:标题为『深海躲鲨大作战』,主题描述为躲避鲨鱼的逃生体验,物品为鲨鱼而非花朵,核心动作语义从『合成种花』变为『躲避鲨鱼』。",
|
||||
"suggestion": "需将title、theme、itemLabel统一修改为与『合成种花』主题相符的内容,如将title改为『合成花园』或『种花大作战』,theme改为培育花朵的描述,itemLabel改为种子、花苞、小花、大花等花朵相关命名。"
|
||||
"issue": "config 的 title「深海躲鲨大作战」与创意「合成种花」完全脱节,合并类游戏不存在躲避鲨鱼的场景设定。",
|
||||
"suggestion": "将 title 改为与合成种花主题相符的名称,如「花园合成大作战」。"
|
||||
},
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "config 的 theme 描述的是深海躲避鲨鱼场景,与创意核心动作「合成」以及设计意图的培育花朵体验完全矛盾。",
|
||||
"suggestion": "将 theme 改为描述在花园中培育、合成花朵的情境,如「在阳光明媚的花园里,玩家通过合成不同的植物部件,培育出越来越美丽的花朵」。"
|
||||
},
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "config 的 itemLabel 为 [\"小鲨鱼\",\"中鲨鱼\",\"大鲨鱼\",\"鲨鱼王\"],与创意「合成种花」及合并玩法需要的花/植物类道具完全不符。",
|
||||
"suggestion": "将 itemLabel 改为符合花朵成长路径的植物相关标签,如 [\"种子\",\"幼芽\",\"花苞\",\"盛开的花\"]。"
|
||||
}
|
||||
],
|
||||
"hasP0": false,
|
||||
"hasP1": true,
|
||||
"passNoP0P1": false,
|
||||
"llmAttempts": 0,
|
||||
"reused": true,
|
||||
"llmAttempts": 1,
|
||||
"reused": false,
|
||||
"rescued": false,
|
||||
"source": "mc-merge-guard",
|
||||
"expectation": "has_p1"
|
||||
@ -27,21 +37,15 @@
|
||||
"entryId": "k-b7c0c0de",
|
||||
"runTag": "a",
|
||||
"model": "MiniMax-M2.7",
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "itemLabel 末位设为\"果盘\"与合成机制矛盾:\"果盘\"是容器而非水果,无法与其他水果进行合成操作,这与 designIntent 中\"拖拽两个同级水果合成更高一级\"的核心机制逻辑冲突。",
|
||||
"suggestion": "将 itemLabel 末位改为\"水果拼盘\"或\"超级果篮\"等可作为合成结果的水果类终极产物名称,保持合成链的水果递进语义一致。"
|
||||
}
|
||||
],
|
||||
"findings": [],
|
||||
"hasP0": false,
|
||||
"hasP1": true,
|
||||
"passNoP0P1": false,
|
||||
"llmAttempts": 0,
|
||||
"reused": true,
|
||||
"hasP1": false,
|
||||
"passNoP0P1": true,
|
||||
"llmAttempts": 1,
|
||||
"reused": false,
|
||||
"rescued": false,
|
||||
"source": "mc-merge-guard",
|
||||
"expectation": "has_p1"
|
||||
"expectation": "no_p0p1"
|
||||
},
|
||||
{
|
||||
"entryId": "k-acce97ed",
|
||||
@ -51,8 +55,8 @@
|
||||
"hasP0": false,
|
||||
"hasP1": false,
|
||||
"passNoP0P1": true,
|
||||
"llmAttempts": 0,
|
||||
"reused": true,
|
||||
"llmAttempts": 1,
|
||||
"reused": false,
|
||||
"rescued": false,
|
||||
"source": "mc-merge-guard",
|
||||
"expectation": "no_p0p1"
|
||||
@ -64,8 +68,8 @@
|
||||
"findings": [
|
||||
{
|
||||
"severity": "P1",
|
||||
"issue": "核心动作矛盾:创意『躲避鲨鱼』被改写为 config 中『点击鲨鱼即可将其驱离』,将被动躲避动作改变为主动点击干预",
|
||||
"suggestion": "若保留鲨鱼点击机制则创意需同步调整为『驱赶鲨鱼收集珍珠』;若坚持躲避意图则应修改鲨鱼触发的交互方式(如鲨鱼出现时玩家需点击避开或划屏躲避,而非点击鲨鱼本身)"
|
||||
"issue": "config 中核心机制是『点击鲨鱼将其驱离』,与创意『躲避鲨鱼』语义直接矛盾——前者为主动攻击/交互,后者为规避回避。",
|
||||
"suggestion": "若保留『点击驱离』机制则创意应修改为『赶走鲨鱼』;若坚持『躲避』意图则需将机制改为鲨鱼出现时点击其他安全区域或划屏躲避,而非点击鲨鱼本身。"
|
||||
}
|
||||
],
|
||||
"hasP0": false,
|
||||
@ -85,8 +89,8 @@
|
||||
"hasP0": false,
|
||||
"hasP1": false,
|
||||
"passNoP0P1": true,
|
||||
"llmAttempts": 0,
|
||||
"reused": true,
|
||||
"llmAttempts": 1,
|
||||
"reused": false,
|
||||
"rescued": false,
|
||||
"source": "batch-001-accept",
|
||||
"expectation": "no_p0p1"
|
||||
@ -99,8 +103,8 @@
|
||||
"hasP0": false,
|
||||
"hasP1": false,
|
||||
"passNoP0P1": true,
|
||||
"llmAttempts": 0,
|
||||
"reused": true,
|
||||
"llmAttempts": 1,
|
||||
"reused": false,
|
||||
"rescued": false,
|
||||
"source": "batch-001-accept",
|
||||
"expectation": "no_p0p1"
|
||||
@ -108,7 +112,7 @@
|
||||
],
|
||||
"expectByEntry": {
|
||||
"k-c0a1f100": "has_p1",
|
||||
"k-b7c0c0de": "has_p1",
|
||||
"k-b7c0c0de": "no_p0p1",
|
||||
"k-acce97ed": "no_p0p1",
|
||||
"k-0cfbc296": "has_p1",
|
||||
"g9019": "no_p0p1",
|
||||
@ -129,9 +133,10 @@
|
||||
},
|
||||
{
|
||||
"name": "C",
|
||||
"desc": "k-b7c0c0de 判 kill(越模板机制·doctrine>=1.1.2 生效期望)",
|
||||
"desc": "k-b7c0c0de 越模板机制守卫=观察项(细则① P2 放行为目标;软边界抖动不门禁)",
|
||||
"pass": true,
|
||||
"detail": "hasP0=False hasP1=True"
|
||||
"observation": true,
|
||||
"detail": "hasP0=False hasP1=False → P2放行(no_p0p1)"
|
||||
},
|
||||
{
|
||||
"name": "D",
|
||||
@ -153,5 +158,5 @@
|
||||
}
|
||||
],
|
||||
"verdict": "PASS",
|
||||
"llmCallsUsed": 1
|
||||
"llmCallsUsed": 6
|
||||
}
|
||||
@ -498,7 +498,7 @@ hard_constraints:
|
||||
- **论证③(不加域示例的取舍)**:批① 为 merge 加了细则①域示例(v1.1.2)属「首个非 clicker 模板的保险」;batch② 已有 merge 泛化证据 + idle/tycoon 同类,**再为每模板加域示例会让细则①示例膨胀(clicker+merge+idle+tycoon 四例),违「prompt 精简」**。**裁决 = 不加域示例、不升 patch**,靠 Golden 守卫样本兜底验证。
|
||||
- **⚠ 降级路径(创始人不认可偏离时回退配方规定动作)**:若创始人/后续核验认为「idle/tycoon 与 merge 机制差异足够大(idle 等待型/tycoon 经营型 vs merge 合成型)需各加细则①域示例保险」、或须严守配方 step 2b 规定动作,则降级为「升 patch v1.1.2→v1.1.3 各加 1 域示例 + Golden 双标签」(沿批① §4.3 范式 + 配方 :47-52,过四道闸)。**本 spec 倾向不升**(论证①②③),**创始人已拍板(2026-06-10)=不升 patch**;本降级路径保留为校准批暴露漏判时的回退预案。
|
||||
- **变更纪律(若升)**:升 patch version 同步 registry.yaml,过四道闸 CI;**P0/P1 口径文字一字不动**(守 R3 红线「不得以放宽 P1 口径回应漂移」)。
|
||||
- **🔴 放行硬前提(即便维持不升 patch 也必须满足)**:**级3 idle/tycoon Golden 守卫样本全中**(§4.5/§9.x 级3:kill 守卫被判 kill + accept 正例不误杀 + clicker/merge 守卫不回归)方可放行「不升 patch」裁决——守卫样本全中是「细则①对新域已生效」的**唯一验证证据**,若任一 kill 守卫未被判 kill(细则①对新域漏判),则**按既留降级路径升 v1.1.3 各加域示例**(届时须**重验 clicker/merge/idle/tycoon 守卫不回归**)。**若校准批(§8.2)暴露越界漏判(数值不自洽/题文不符高发被对抗放过)**亦同——升 v1.1.3 收紧,重验四模板守卫不回归。
|
||||
- **🔴 放行硬前提(即便维持不升 patch 也必须满足)**:**级3 idle/tycoon Golden 守卫样本全中**(§4.5/§9.x 级3:**题文不符 kill 守卫被判 kill + accept 正例不误杀 + clicker/merge 守卫不回归**;越模板机制守卫=**观察项不门禁**[软边界抖动,见 §4.5 banner 二次勘误])方可放行「不升 patch」裁决——守卫样本全中是「细则①对新域已生效」的**唯一验证证据**,若任一**题文不符 kill 守卫**未被判 kill(细则①对新域核心动作矛盾漏判),则**按既留降级路径升 v1.1.3 各加域示例**(届时须**重验 clicker/merge/idle/tycoon 守卫不回归**)。**若校准批(§8.2)暴露越界漏判(数值不自洽/题文不符高发被对抗放过)**亦同——升 v1.1.3 收紧,重验四模板守卫不回归。
|
||||
|
||||
### 4.4 fix 复用裁决(不升 patch,批① 已通用化)
|
||||
|
||||
@ -510,18 +510,22 @@ hard_constraints:
|
||||
|
||||
### 4.5 Golden 集扩展方案(idle/tycoon 各三守卫样本含 kill 守卫)
|
||||
|
||||
> ⚠ **越模板机制守卫口径勘误(2026-06-11 创始人拍板,必读)**:本节起草时把「越模板机制守卫」标 `kill`,与既有判定细则①(`adversary-review.md` :60「designIntent 越模板机制(计时/失败惩罚/物理/音效等模板外承诺)仅当 config 字段自身矛盾才 P1,否则只记 P2——模板级表达力限制,不是缺陷」)**直接矛盾**。**创始人拍板:以既有细则①为准=越模板机制 config 自洽 = P2 放行(不拦截)**。故本节越模板机制守卫(idle k-1d1ebeefca / tycoon k-7c00beefca,及批① merge k-b7c0c0de)期望由 kill 勘误为 **P2 放行(labels `decision:accept`、回归断言 no_p0p1)**;模型判 P2/accept 是正确执行既有口径。**题文不符守卫(核心动作矛盾,如「躲避→点击消灭」「合成种花→躲避障碍」)仍判 kill 不变**;accept 正例不动。此为修正起草误读的守卫样本期望、**零 prompt 正文改动(细则①口径本就 P2,不改)、零降口径**。
|
||||
>
|
||||
> 🔬 **二次勘误·越模板机制守卫降为 Golden 观察项(2026-06-11 同输入重采样实证后定,必读)**:一次勘误后重跑 Golden 暴露——越模板机制是**软语义边界判定**,同输入温 0.2 重采样实证抖动(idle k-1d1ebeefca **2/4 判 kill**;fresh 回归轮 tycoon k-7c00beefca 亦翻为 kill;merge k-b7c0c0de 0/4 稳定 P2)。**P1/P2 两向硬断言(spec 起草的 `kill` 或一次勘误的 `accept`)都会随采样随机抖动**,对软边界做硬门禁本身是范式错误。**故越模板机制守卫在 Golden 中降为「观察项」(golden-set expectation=observe、harness `_observe` 恒记录实判但不纳入 verdict)**:verdict 只由**题文不符 kill 守卫 + accept 正例(四硬门)**裁定,二者经实证稳定。两向 fail-safe(P2 不拦发布/偶发 P1 仅多一次 HITL 复核,绝不放过坏游戏),故记录不门禁不损安全。细则①『越模板 config 自洽=P2 放行』仍为**文档化口径目标**(labels.jsonl 维持 `accept`);让模型对越模板稳定输出 P2 属 prompt v1.1.3 收紧议题(**非 MVP 阻塞,backlog**)。两轮 Golden 实证 **VERDICT=PASS**(越模板逐次 kill/kill/pass 三态均不影响 verdict)。下文 §4.5 各条「P2 放行/accept」表述统一受本二次勘误约束=Golden 观察项。
|
||||
|
||||
- **新建** `contracts/prompts/eval/config.idle-designer/` + `eval/config.tycoon-designer/`:各三件 `inputs.jsonl`+`labels.jsonl`+`README.md`(结构对齐 `eval/config.merge-designer/`);首版无种子(C1 spike 种子仅 clicker 域),随批回流(evalflow.py 每批强制回流,run_batch `--eval-root`)。
|
||||
- **对抗 Golden 各扩守卫样本**(落 `eval/quality.adversary-review/`,**append-only 不改历史行**;沿批① §4.5 三守卫范式,idle/tycoon 各一组):
|
||||
- **idle kill 守卫 ×1**:idle 设计含核心动作矛盾(创意「挂机种树攒果实」↔ config theme/resourceLabel 改写为「躲避陨石」)→ 标 `decision:kill, reasons:[题文不符]`(守细则① P1 不被泛化吞,对应 merge k-* 的 idle 版)。
|
||||
- **idle kill 越模板机制 ×1**:idle designIntent 越模板机制(承诺「躲避失败会扣血」「物理碰撞」)→ `decision:kill, reasons:[越模板机制]`。
|
||||
- **idle 越模板机制守卫·P2 放行 ×1**:idle designIntent 越模板机制(承诺「躲避失败会扣血」「物理碰撞」)但 config 自洽且 schema 合规 → 标 `decision:accept, reasons:[越模板机制P2放行]`(**按既有细则①:越模板机制 config 自洽=P2 放行不拦截,非缺陷**)。⚠ **勘误(2026-06-11 创始人拍板)**:本条原标 `decision:kill, reasons:[越模板机制]` 与细则①(越模板 config 自洽=P2)矛盾,系起草误读,已改为 P2 放行;模型判 P2/accept 为正确执行细则①。
|
||||
- **idle accept 正例 ×1**:idle 题文自洽 + 数值合规(upgradeCost<targetResource、autoYield 与 targetResource 自洽)→ `decision:accept`。
|
||||
- **tycoon kill 守卫 ×1**:tycoon 核心动作矛盾(创意「开书店经营」↔ config 改写「合成消除」)→ `decision:kill, reasons:[题文不符]`。
|
||||
- **tycoon kill 越模板机制 ×1**:tycoon designIntent 越模板机制(承诺「经营失败会破产倒闭扣分」「计时压力」)→ `decision:kill, reasons:[越模板机制]`。
|
||||
- **tycoon 越模板机制守卫·P2 放行 ×1**:tycoon designIntent 越模板机制(承诺「经营失败会破产倒闭扣分」「计时压力」)但 config 自洽且 schema 合规 → 标 `decision:accept, reasons:[越模板机制P2放行]`(**按既有细则①:越模板机制 config 自洽=P2 放行不拦截**)。⚠ **勘误(2026-06-11 创始人拍板)**:本条原标 `decision:kill, reasons:[越模板机制]` 与细则①矛盾,系起草误读,已改为 P2 放行。
|
||||
- **tycoon accept 正例 ×1**:tycoon 题文自洽 + 数值合规(salePrice>purchaseCost、initialCoin≥purchaseCost、循环 ≤250 轮)→ `decision:accept`。
|
||||
- **doctrine 双标签是回归 harness 解释规则,不是 labels.jsonl 行内字段**(铁律,沿批① §4.3/§4.5):labels.jsonl 守卫样本**只写 plain `decision`(kill/accept),行内禁造 `doctrine` 字段**;版本门控逻辑落 evalflow / 回归脚本侧(按当前生效 prompt/doctrine 版本解释期望标签)。
|
||||
- **若 §4.3 裁决「不升 patch」**(维持 v1.1.2):idle/tycoon 守卫样本的期望标签按**当前生效 v1.1.2** 解释(细则①已含 merge 域示例 + 已模板中性,对 idle/tycoon kill 守卫判 kill 生效);labels 行写 `kill`/`accept`,无 doctrine 行内字段,README 记「v1.1.2 起对 idle/tycoon 核心动作矛盾/越模板机制判 kill」约定。
|
||||
- **若 §4.3 裁决「不升 patch」**(维持 v1.1.2):idle/tycoon 守卫样本的期望标签按**当前生效 v1.1.2** 解释(细则①已含 merge 域示例 + 已模板中性)——**题文不符守卫(核心动作矛盾)判 kill;越模板机制守卫按细则①「config 自洽=P2 放行不拦截」标 `decision:accept`(不拦截)**;labels 行写 `kill`/`accept`,无 doctrine 行内字段,README 记「v1.1.2 起对 idle/tycoon 核心动作矛盾判 kill、越模板机制 config 自洽按 P2 放行」约定。⚠ **勘误(2026-06-11)**:本条原表述「对越模板机制判 kill」与细则①矛盾,系起草误读,已改为越模板机制 P2 放行。
|
||||
- **若四镜头改判「升 patch v1.1.3 各加域示例」**:则按批① §4.5 双标签范式记 README 升版记录(`doctrine>=v1.1.3→kill / <v1.1.3→P2-pass`,**新版本判 kill、旧版本 P2-pass**,箭头方向以批① 收口勘误为准),labels 行写按 v1.1.3 生效后期望(kill)。
|
||||
- **Golden 回归门**:idle/tycoon 守卫样本全中(kill 守卫立得住=被判 kill、accept 正例不误杀)方算 §8 验收级 3 过(评审版 §6-3)。
|
||||
- **Golden 回归门**(受 §4.5 banner 二次勘误约束):idle/tycoon **四硬门**全中方算 §8 验收级 3 过(评审版 §6-3)——**题文不符 kill 守卫立得住=被判 kill;accept 正例不误杀**(idle/tycoon 各两条,经实证稳定)。**越模板机制守卫=观察项(非门禁)**:harness 恒记录模型实判(kill 或 P2 放行均不影响 verdict),细则① P2 放行为文档化口径目标;软边界同输入抖动(idle 2/4)使任一向硬断言都不稳,故降观察、两向 fail-safe。**VERDICT=PASS 的充要条件 = 四硬门全过 + clicker/merge 守卫不回归。**
|
||||
|
||||
---
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user