{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://wanxiang.ai/contracts/agent-loop/game-design.schema.json", "title": "GameDesign", "description": "agent 化生成 QA 闭环工件契约①:GameDesign(HJ-AGENT-LOOP-EXEC-001 §6.2,评审版 HJ-AGENT-LOOP-REVIEW-001 §3.2 原文照落,owner=WS2)。独立策划 LLM(prompt:config.clicker-designer,fix 轮:fix.design-revise)产出 designIntent/expectedPlaySeconds/config 三段,外层 designId/idea/templateId/round 由编排器 run_batch.py 补齐成完整工件。消费方:对抗评审 prompt 输入、裁决引擎 judge.py 的 schema 门(E1)、回调组包 meta 来源(§8.4)、JSONL 账本与 eval 回流(§7.7)快照对象。诚实边界(§6.3):runtime 今天只消费 config.target,title 经 meta 上 feed 卡片,theme/scoreLabel v1 仅文本评审面。", "type": "object", "required": ["designId", "idea", "templateId", "designIntent", "expectedPlaySeconds", "config", "round"], "additionalProperties": false, "properties": { "designId": { "description": "设计唯一 ID = sha256(idea+templateId+round) 的 64 位小写 hex(评审版 §3.2 原文)。编排器账本的幂等重放键(§7.2:resume 按 designId 断点续跑,已有 verdict 的整体跳过)。", "type": "string", "pattern": "^[a-f0-9]{64}$" }, "idea": { "description": "创意原文(ideas/batch-001.txt 中一行),非空字符串。", "type": "string", "minLength": 1 }, "templateId": { "description": "玩法模板 ID(四选一)。须与 config.templateId 自洽——顶层 allOf 按本字段条件绑定对应模板 schema。v1 仅 clicker 走全闭环;dodge/runner/match 仅契约落盘不跑批(§1.2)。", "type": "string", "enum": ["clicker", "dodge", "runner", "match"] }, "designIntent": { "description": "设计意图,≤100 字(评审版 §3.2 原文)。供对抗评审判题文一致性;回调组包时作 GamePackage.meta.summary 来源之一(§8.4-5:designIntent 或 theme 截 500)。", "type": "string", "minLength": 1, "maxLength": 100 }, "expectedPlaySeconds": { "description": "预期单局时长(秒),正整数(评审版 §3.2:integer>0)。策划自报,供对抗评审校核(如 target 与时长矛盾属 P1「target 与意图矛盾」);不直接参与 §10 决策表判定。", "type": "integer", "exclusiveMinimum": 0 }, "config": { "description": "模板玩法配置(GameConfig)。结构由对应模板 schema 约束(真源 gen_spike.py:44-81,C1 52/52 已验口径):顶层 allOf 按 templateId 条件 $ref 绑定 ../templates/{clicker,dodge,runner,match}.schema.json,含 additionalProperties:false 与全字段 required。", "type": "object" }, "round": { "description": "回炉计数:0=首轮,1=回炉轮(§10.1 总则:schema 重出与 P1-fix 共享全流程唯一 1 轮回炉额度;round=1 后任何不满足 accept 的分支不再回炉)。注意 designId 哈希因子含 round。", "type": "integer", "enum": [0, 1] } }, "allOf": [ { "if": { "properties": { "templateId": { "const": "clicker" } }, "required": ["templateId"] }, "then": { "properties": { "config": { "$ref": "../templates/clicker.schema.json" } } } }, { "if": { "properties": { "templateId": { "const": "dodge" } }, "required": ["templateId"] }, "then": { "properties": { "config": { "$ref": "../templates/dodge.schema.json" } } } }, { "if": { "properties": { "templateId": { "const": "runner" } }, "required": ["templateId"] }, "then": { "properties": { "config": { "$ref": "../templates/runner.schema.json" } } } }, { "if": { "properties": { "templateId": { "const": "match" } }, "required": ["templateId"] }, "then": { "properties": { "config": { "$ref": "../templates/match.schema.json" } } } } ] }