固化 Match-3 生产者、视觉、音频与双 Judge 证据闭包。 将《山海行纪》r1.1 绑定新的不可变 release,并以生产预检现场核验 bundle、Registry/2 和 25 项 Writer 快照。 同步地图1平衡锁值、跨游戏回归修复、验收契约与 SoT 证据。
66 lines
3.3 KiB
JSON
66 lines
3.3 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://wanxiang.ai/contracts/play-loop/actor-view-v3.schema.json",
|
|
"title": "ActorViewV3Frozen",
|
|
"description": "冻结当前生产 ActorView/3 可见投影,供版本兼容矩阵验证;不得加入 interactionCandidates。",
|
|
"type": "object",
|
|
"required": [
|
|
"schemaVersion", "projectionVersion", "brief", "currentFrameRef", "currentFrameHash",
|
|
"viewport", "legalSelections", "visualTargetCatalog", "history", "protocolErrors",
|
|
"remainingBudget", "virtualTimeMs", "objectiveProgress"
|
|
],
|
|
"properties": {
|
|
"schemaVersion": { "const": "playtest/3" },
|
|
"projectionVersion": { "const": "ActorView/3" },
|
|
"brief": { "type": "string", "minLength": 1 },
|
|
"currentFrameRef": {
|
|
"type": "string",
|
|
"pattern": "^frames/(frame-initial|action-[1-9][0-9]*-(pre|post))\\.png$"
|
|
},
|
|
"currentFrameHash": { "$ref": "actor-view-v4.schema.json#/$defs/sha256" },
|
|
"viewport": {
|
|
"type": "object", "required": ["width", "height", "dpr"],
|
|
"properties": { "width": { "const": 390 }, "height": { "const": 844 }, "dpr": { "const": 1 } },
|
|
"additionalProperties": false
|
|
},
|
|
"legalSelections": { "$ref": "actor-view-v4.schema.json#/$defs/legalSelections" },
|
|
"visualTargetCatalog": { "$ref": "actor-view-v4.schema.json#/$defs/visualTargetCatalog" },
|
|
"history": { "type": "array", "maxItems": 64, "items": { "$ref": "#/$defs/historyEntry" } },
|
|
"protocolErrors": { "type": "array", "maxItems": 16, "items": { "$ref": "actor-view-v4.schema.json#/$defs/protocolError" } },
|
|
"remainingBudget": { "type": "integer", "minimum": 0 },
|
|
"virtualTimeMs": { "type": "integer", "minimum": 0 },
|
|
"objectiveProgress": {
|
|
"anyOf": [{ "$ref": "actor-view-v4.schema.json#/$defs/objectiveProgress" }, { "type": "null" }]
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"$defs": {
|
|
"historyEntry": {
|
|
"type": "object",
|
|
"required": [
|
|
"actionId", "selection", "normalized", "valid", "retryCount", "preFrameRef",
|
|
"preFrameHash", "preEventSeq", "virtualTimeBudgetMs", "postFrameRef",
|
|
"postFrameHash", "postEventSeq", "causalGameResponse", "gameEvents", "protocolErrors"
|
|
],
|
|
"properties": {
|
|
"actionId": { "type": "string", "pattern": "^action-[1-9][0-9]*$" },
|
|
"selection": { "$ref": "actor-selection.schema.json" },
|
|
"normalized": { "$ref": "playtest-evidence.schema.json#/$defs/action" },
|
|
"valid": { "type": "boolean" },
|
|
"retryCount": { "type": "integer", "minimum": 0, "maximum": 2 },
|
|
"preFrameRef": { "$ref": "playtest-evidence.schema.json#/$defs/frameRef" },
|
|
"preFrameHash": { "$ref": "actor-view-v4.schema.json#/$defs/sha256" },
|
|
"preEventSeq": { "type": "integer", "minimum": 0 },
|
|
"virtualTimeBudgetMs": { "type": "integer", "minimum": 0 },
|
|
"postFrameRef": { "$ref": "playtest-evidence.schema.json#/$defs/frameRef" },
|
|
"postFrameHash": { "$ref": "actor-view-v4.schema.json#/$defs/sha256" },
|
|
"postEventSeq": { "type": "integer", "minimum": 0 },
|
|
"causalGameResponse": { "type": "boolean" },
|
|
"gameEvents": { "type": "array", "items": { "$ref": "game-event.schema.json" } },
|
|
"protocolErrors": { "type": "array", "items": { "type": "string" } }
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
}
|