diff --git a/contracts/prompts/eval/quality.adversary-review/README.md b/contracts/prompts/eval/quality.adversary-review/README.md index 4dd19232..9d59cd94 100644 --- a/contracts/prompts/eval/quality.adversary-review/README.md +++ b/contracts/prompts/eval/quality.adversary-review/README.md @@ -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 红线)。 diff --git a/contracts/prompts/eval/quality.adversary-review/labels.jsonl b/contracts/prompts/eval/quality.adversary-review/labels.jsonl index 68680612..4eb24683 100644 --- a/contracts/prompts/eval/quality.adversary-review/labels.jsonl +++ b/contracts/prompts/eval/quality.adversary-review/labels.jsonl @@ -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"} diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/golden-set.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/golden-set.json index da107f39..90580778 100644 --- a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/golden-set.json +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/golden-set.json @@ -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=80purchaseCost=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 两文件(已验证)。" } -] +] \ No newline at end of file diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/golden_regression.py b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/golden_regression.py index 75385e72..ae93fd7a 100644 --- a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/golden_regression.py +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/golden_regression.py @@ -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) diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/llm-calls.jsonl b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/llm-calls.jsonl new file mode 100644 index 00000000..f58858a1 --- /dev/null +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/llm-calls.jsonl @@ -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"} diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-1d1eacce97-a.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-1d1eacce97-a.json new file mode 100644 index 00000000..41941168 --- /dev/null +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-1d1eacce97-a.json @@ -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": [] +} \ No newline at end of file diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-1d1ebeefca-a.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-1d1ebeefca-a.json new file mode 100644 index 00000000..0de1e6f0 --- /dev/null +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-1d1ebeefca-a.json @@ -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 与产能/目标匹配,确保玩家可达成目标" + } + ] +} \ No newline at end of file diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-1d1ec0ffee-a.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-1d1ec0ffee-a.json new file mode 100644 index 00000000..fd37de5e --- /dev/null +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-1d1ec0ffee-a.json @@ -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的挂机培育逻辑自洽" + } + ] +} \ No newline at end of file diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-7c00acce97-a.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-7c00acce97-a.json new file mode 100644 index 00000000..09287631 --- /dev/null +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-7c00acce97-a.json @@ -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": [] +} \ No newline at end of file diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-7c00beefca-a.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-7c00beefca-a.json new file mode 100644 index 00000000..397b0fa0 --- /dev/null +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-7c00beefca-a.json @@ -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 补充制作交互、时间倒计时、破产惩罚等必要玩法元素" + } + ] +} \ No newline at end of file diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-7c00c0ffee-a.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-7c00c0ffee-a.json new file mode 100644 index 00000000..06992457 --- /dev/null +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/raw/k-7c00c0ffee-a.json @@ -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与开书店经营的创意保持一致。" + } + ] +} \ No newline at end of file diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/report.md b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/report.md new file mode 100644 index 00000000..849e044b --- /dev/null +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/report.md @@ -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 反而违既有口径。 + diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/results.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/results.json new file mode 100644 index 00000000..3caf541a --- /dev/null +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2-b2/results.json @@ -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 +} \ No newline at end of file diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/golden-set.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/golden-set.json index 0cd04514..aeaf19a1 100644 --- a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/golden-set.json +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/golden-set.json @@ -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。" } -] +] \ No newline at end of file diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/golden_regression.py b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/golden_regression.py index 8957ae61..b0d04b98 100644 --- a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/golden_regression.py +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/golden_regression.py @@ -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) diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/llm-calls.jsonl b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/llm-calls.jsonl index 2b820bcb..17e50ea5 100644 --- a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/llm-calls.jsonl +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/llm-calls.jsonl @@ -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"} diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/g9011-a.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/g9011-a.json index e7f593eb..9479d299 100644 --- a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/g9011-a.json +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/g9011-a.json @@ -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\":[]}", diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/g9019-a.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/g9019-a.json index 838d8a00..092a0377 100644 --- a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/g9019-a.json +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/g9019-a.json @@ -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\":[]}", diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-0cfbc296-a.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-0cfbc296-a.json index 4c78e50d..8e07fe22 100644 --- a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-0cfbc296-a.json +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-0cfbc296-a.json @@ -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": "若保留『点击驱离』机制则创意应修改为『赶走鲨鱼』;若坚持『躲避』意图则需将机制改为鲨鱼出现时点击其他安全区域或划屏躲避,而非点击鲨鱼本身。" } ] } \ No newline at end of file diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-acce97ed-a.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-acce97ed-a.json index 1175b772..6ca32fc5 100644 --- a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-acce97ed-a.json +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-acce97ed-a.json @@ -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": [] } \ No newline at end of file diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-b7c0c0de-a.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-b7c0c0de-a.json index 93e8ac54..b50bb9fc 100644 --- a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-b7c0c0de-a.json +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-b7c0c0de-a.json @@ -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": [] } \ No newline at end of file diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-c0a1f100-a.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-c0a1f100-a.json index 7205c21e..bd685c0c 100644 --- a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-c0a1f100-a.json +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/raw/k-c0a1f100-a.json @@ -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 改为符合花朵成长路径的植物相关标签,如 [\"种子\",\"幼芽\",\"花苞\",\"盛开的花\"]。" } ] } \ No newline at end of file diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/report.md b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/report.md index 457bb341..8deb7133 100644 --- a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/report.md +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/report.md @@ -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 内。 diff --git a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/results.json b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/results.json index 172ecdc0..d02f3224 100644 --- a/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/results.json +++ b/docs/agent-specs/2026-06-09-agent-loop-v1/runs/golden-regression-v1.1.2/results.json @@ -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 } \ No newline at end of file diff --git a/docs/agent-specs/2026-06-10-Mc模板波-批②idle-tycoon-execution.md b/docs/agent-specs/2026-06-10-Mc模板波-批②idle-tycoon-execution.md index 0ec80832..46a6e3f0 100644 --- a/docs/agent-specs/2026-06-10-Mc模板波-批②idle-tycoon-execution.md +++ b/docs/agent-specs/2026-06-10-Mc模板波-批②idle-tycoon-execution.md @@ -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 题文自洽 + 数值合规(upgradeCostpurchaseCost、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 /