固化 Match-3 生产者、视觉、音频与双 Judge 证据闭包。 将《山海行纪》r1.1 绑定新的不可变 release,并以生产预检现场核验 bundle、Registry/2 和 25 项 Writer 快照。 同步地图1平衡锁值、跨游戏回归修复、验收契约与 SoT 证据。
58 lines
2.4 KiB
JSON
58 lines
2.4 KiB
JSON
{
|
||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||
"$id": "https://wanxiang.ai/contracts/play-loop/acceptance-provenance-v2.schema.json",
|
||
"title": "AcceptanceProvenanceV2",
|
||
"description": "acceptance-provenance/2。逐字段镜像 acceptance-request/2,并绑定完整 canonical request hash 与被测 artifact。",
|
||
"type": "object",
|
||
"required": [
|
||
"schemaVersion", "gameId", "briefHash", "genre", "templateRoute", "proofProfileId",
|
||
"proofRegistryVersion", "taskBindingHash", "interactionBinding", "sourceArtifactHash",
|
||
"parentAcceptanceRequestHash", "repairOrdinal", "acceptanceRequestHash", "artifactHash"
|
||
],
|
||
"properties": {
|
||
"schemaVersion": { "const": "acceptance-provenance/2" },
|
||
"gameId": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$" },
|
||
"briefHash": { "$ref": "#/$defs/sha256" },
|
||
"genre": { "enum": ["narrative", "trpg", "heritage", "puzzle", "sim-business"] },
|
||
"templateRoute": { "type": "string", "pattern": "^_template-[a-z0-9-]+$" },
|
||
"proofProfileId": { "type": "string", "pattern": "^[a-z][a-z0-9-]*\\.[a-z][a-z0-9-]*$" },
|
||
"proofRegistryVersion": { "type": "string", "minLength": 1 },
|
||
"taskBindingHash": { "$ref": "#/$defs/sha256" },
|
||
"interactionBinding": {
|
||
"anyOf": [
|
||
{ "$ref": "interaction-binding.schema.json" },
|
||
{ "type": "null" }
|
||
]
|
||
},
|
||
"sourceArtifactHash": { "anyOf": [{ "$ref": "#/$defs/sha256" }, { "type": "null" }] },
|
||
"parentAcceptanceRequestHash": { "anyOf": [{ "$ref": "#/$defs/sha256" }, { "type": "null" }] },
|
||
"repairOrdinal": { "enum": [0, 1] },
|
||
"acceptanceRequestHash": { "$ref": "#/$defs/sha256" },
|
||
"artifactHash": { "$ref": "#/$defs/sha256" }
|
||
},
|
||
"additionalProperties": false,
|
||
"allOf": [
|
||
{
|
||
"if": { "properties": { "repairOrdinal": { "const": 0 } }, "required": ["repairOrdinal"] },
|
||
"then": {
|
||
"properties": {
|
||
"sourceArtifactHash": { "type": "null" },
|
||
"parentAcceptanceRequestHash": { "type": "null" }
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"if": { "properties": { "repairOrdinal": { "const": 1 } }, "required": ["repairOrdinal"] },
|
||
"then": {
|
||
"properties": {
|
||
"sourceArtifactHash": { "$ref": "#/$defs/sha256" },
|
||
"parentAcceptanceRequestHash": { "$ref": "#/$defs/sha256" }
|
||
}
|
||
}
|
||
}
|
||
],
|
||
"$defs": {
|
||
"sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
|
||
}
|
||
}
|