{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://wanxiang.ai/contracts/play-loop/match3-swap-set.schema.json", "title": "Match3SwapSetV1", "description": "Match3SwapSet/1。封存确定性规则层声称从匿名棋盘投影枚举出的正交交换集合;单文件 schema/hash 只校验结构自洽,生产入口必须与 BoardProjection 联合复算。", "type": "object", "required": [ "schemaVersion", "sourceFrameRef", "sourceFrameHash", "targetSetRef", "targetSetHash", "latticeId", "interactionProfileId", "interactionRegistryVersion", "interactionBindingHash", "projectionRef", "projectionHash", "solver", "beforeRuns", "candidates", "status", "candidateSetHash" ], "properties": { "schemaVersion": { "const": "Match3SwapSet/1" }, "sourceFrameRef": { "type": "string", "minLength": 1 }, "sourceFrameHash": { "$ref": "#/$defs/sha256" }, "targetSetRef": { "type": "string", "minLength": 1 }, "targetSetHash": { "$ref": "#/$defs/sha256" }, "latticeId": { "type": "string", "pattern": "^l[0-9]{2}$" }, "interactionProfileId": { "const": "match3.orthogonal-swap-v1" }, "interactionRegistryVersion": { "enum": ["2026-07-15.v1", "2026-07-15.v2"] }, "interactionBindingHash": { "$ref": "#/$defs/sha256" }, "projectionRef": { "type": "string", "minLength": 1 }, "projectionHash": { "$ref": "#/$defs/sha256" }, "solver": { "$ref": "#/$defs/versionedComponent" }, "beforeRuns": { "type": "array", "maxItems": 288, "items": { "$ref": "#/$defs/run" } }, "candidates": { "type": "array", "maxItems": 264, "items": { "$ref": "#/$defs/candidate" } }, "status": { "enum": ["resolved", "no_candidate", "indeterminate"] }, "candidateSetHash": { "$ref": "#/$defs/sha256" } }, "additionalProperties": false, "$defs": { "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" }, "classId": { "type": "string", "pattern": "^vc[0-9]{2,3}$" }, "cell": { "type": "object", "required": ["row", "column"], "properties": { "row": { "type": "integer", "minimum": 1, "maximum": 12 }, "column": { "type": "integer", "minimum": 1, "maximum": 12 } }, "additionalProperties": false }, "versionedComponent": { "type": "object", "required": ["id", "version", "configHash"], "properties": { "id": { "const": "match3-orthogonal-swap" }, "version": { "const": "1.0.0" }, "configHash": { "$ref": "#/$defs/sha256" } }, "additionalProperties": false }, "run": { "type": "object", "required": ["axis", "classId", "cells"], "properties": { "axis": { "enum": ["horizontal", "vertical"] }, "classId": { "$ref": "#/$defs/classId" }, "cells": { "type": "array", "minItems": 3, "maxItems": 12, "items": { "$ref": "#/$defs/cell" } } }, "additionalProperties": false }, "candidate": { "type": "object", "required": [ "candidateId", "pair", "pairKey", "beforeClassIds", "newRuns", "candidateHash" ], "properties": { "candidateId": { "type": "string", "pattern": "^ms[0-9]{2,3}$" }, "pair": { "type": "array", "minItems": 2, "maxItems": 2, "items": { "$ref": "#/$defs/cell" } }, "pairKey": { "type": "string", "pattern": "^r[1-9][0-9]?c[1-9][0-9]?-r[1-9][0-9]?c[1-9][0-9]?$" }, "beforeClassIds": { "type": "array", "minItems": 2, "maxItems": 2, "items": { "$ref": "#/$defs/classId" } }, "newRuns": { "type": "array", "minItems": 1, "maxItems": 4, "items": { "$ref": "#/$defs/run" } }, "candidateHash": { "$ref": "#/$defs/sha256" } }, "additionalProperties": false } } }