{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://wanxiang.ai/contracts/play-loop/match3-visual-transaction.schema.json", "title": "Match3VisualTransactionV1", "description": "视觉事务 sidecar 的最小可信投影;保留 move、轮次命中和 runtime transactionHash。", "type": "object", "required": [ "schemaVersion", "transactionId", "transactionHash", "moveId", "valid", "visualComplete", "degradedReason", "rounds" ], "properties": { "schemaVersion": { "const": "Match3VisualTransaction/1" }, "transactionId": { "$ref": "#/$defs/id" }, "transactionHash": { "$ref": "#/$defs/sha256" }, "moveId": { "$ref": "#/$defs/id" }, "valid": { "type": "boolean" }, "visualComplete": { "type": "boolean" }, "degradedReason": { "anyOf": [{ "enum": ["round_limit", "duration_limit"] }, { "type": "null" }] }, "rounds": { "type": "array", "maxItems": 7, "items": { "$ref": "#/$defs/round" } } }, "additionalProperties": false, "$defs": { "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" }, "id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$" }, "cell": { "type": "object", "required": ["row", "column"], "properties": { "row": { "type": "integer", "minimum": 1, "maximum": 8 }, "column": { "type": "integer", "minimum": 1, "maximum": 8 } }, "additionalProperties": false }, "round": { "type": "object", "required": ["cascadeIndex", "matchedCells"], "properties": { "cascadeIndex": { "type": "integer", "minimum": 0, "maximum": 6 }, "matchedCells": { "type": "array", "minItems": 3, "items": { "$ref": "#/$defs/cell" } } }, "additionalProperties": false } } }