games-development-ai/contracts/play-loop/interaction-profiles.v2.json
lili cbfd4d871b
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
feat(acceptance): 闭合 playtest v3 与 A+ 可信消费链
固化 Match-3 生产者、视觉、音频与双 Judge 证据闭包。

将《山海行纪》r1.1 绑定新的不可变 release,并以生产预检现场核验 bundle、Registry/2 和 25 项 Writer 快照。

同步地图1平衡锁值、跨游戏回归修复、验收契约与 SoT 证据。
2026-07-28 20:16:13 -07:00

123 lines
3.9 KiB
JSON

{
"schemaVersion": "InteractionProfileRegistry/2",
"registryVersion": "2026-07-15.v2",
"profiles": {
"match3.orthogonal-swap-v1": {
"id": "match3.orthogonal-swap-v1",
"genre": "puzzle",
"proofProfileId": "puzzle.match-board",
"templateRoute": "_template-puzzle",
"solver": {
"id": "match3-orthogonal-swap",
"version": "1.0.0",
"config": {
"adjacency": "orthogonal",
"requireNewRun": true,
"minRunLength": 3,
"pairOrder": "row-major"
},
"configHash": "e1a3473ff17deb1de8fdcf1d9e8a922e625fbba82c20aefd6e67d35767b1c7fd"
},
"producerCapability": {
"id": "match3-producer-profile",
"version": "1.0.0",
"config": {
"viewport": {
"width": 390,
"height": 844
},
"grid": {
"rows": 8,
"columns": 8,
"pitchPx": 40,
"originX": 35,
"originY": 120
},
"cellShell": {
"shape": "circle",
"radiusPx": 20,
"fillStyle": "#1a1a2e"
},
"selectionOverlay": {
"shape": "pixel-mask-ring",
"maskSizePx": 40,
"strokeStyle": "#ffffff",
"expectedChangedPixelCount": 472,
"supportMaskHash": "ea15306223beee4a5d9a1a7b857011d076714c0339451f793e49655a4ec7c18f"
},
"themeSafeBounds": {
"insetPx": 12
}
},
"configHash": "835be6588b4a2b00f697ed2c4fccca6bcd620d780dfaa6972c455dd3efca6ea5"
},
"actorProtocol": {
"viewVersion": "ActorView/4",
"selectionVersion": "ActorSelection/2",
"prompt": {
"id": "playtest.actor.contract-match3-v4",
"version": "3.0.1",
"artifactRef": "artifacts/playtest-actor-v4.contract.md",
"runtimeEligible": false,
"hash": "dd8a6358637847717bdda886ce32015fc2e0ff639f8b2aa7f6f9b97a3cf26a62"
},
"parser": {
"id": "actor-selection-v2",
"version": "1.0.0",
"config": {
"allowedTypes": ["tap", "drag", "key", "wait", "swap_pair"],
"unknownFields": "reject",
"waitMinMs": 100,
"waitMaxMs": 600
},
"configHash": "11eb324e40a1726aa87951dfe50e930df04ae1fe7c745739432a6f4f2387f22e"
},
"resolver": {
"id": "match3-pair-resolver",
"version": "1.0.0",
"config": {
"dispatch": "native-tap-pair",
"actionCount": 2,
"secondEndpoint": "other-canonical-pair-endpoint",
"repeatActorRequest": false
},
"configHash": "8d01b87f586e50f08625a8c16cb6b99f769d383cd392af5777e13e7ed7086213"
}
},
"overlayNormalizer": {
"id": "match3-selection-overlay-normalizer",
"version": "1.0.0",
"config": {
"removeSelectionOverlay": true,
"recomputeTargetSetAfterFirstTap": true
},
"configHash": "c3ea532173f72d6f5d6d9cb747aa2e66f0e5efc98e793db371b26cb873f68cd2"
},
"equivalenceAlgorithm": {
"id": "anonymous-cell-equivalence",
"version": "1.0.0",
"config": {
"representation": "pairwise-equality-matrix",
"classIdInvariant": true,
"requireCompleteClassification": true
},
"configHash": "5a30822c78b9ee7084c4c0f9c448ae9669cc4b967c3fafb537a7a43be5ba34a5"
},
"geometryPolicy": {
"maxCenterDeltaPx": 0,
"requireSameDimensions": true
},
"recoveryPolicy": {
"maxActionGroupsPerRoll": 2,
"maxResetPerRoll": 1,
"selectionReset": {
"type": "tap",
"strategy": "repeat-first-endpoint",
"budgetMs": 600
}
}
}
},
"registryHash": "d7a5bb706680937cf3ba7101e622d45bef6a027970b1097bfceb69fd4f71a1d0"
}