{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://wanxiang.ai/contracts/play-loop/reference-asset-verification-receipt.schema.json", "title": "ReferenceAssetVerificationReceiptV1", "description": "ReferenceAssetVerificationReceipt/1。冻结可信 registry、policy、verifier、root、record 和双身份制品/清单的完整验证闭包;expected 与 observed 的 registry/artifact/manifest hash 必须由语义层逐项相等。", "type": "object", "required": [ "schemaVersion", "receiptId", "releaseRef", "registryVersion", "expectedRegistryHash", "observedRegistryHash", "policyHash", "verifierVersion", "trustedRootId", "recordId", "role", "consumerRef", "artifactRef", "consumptionManifestRef", "expected", "observed", "finalSnapshotHash" ], "properties": { "schemaVersion": { "const": "ReferenceAssetVerificationReceipt/1" }, "receiptId": { "type": "string", "pattern": "^[A-Za-z0-9_][A-Za-z0-9._-]*$" }, "releaseRef": { "$ref": "#/$defs/relativePath" }, "registryVersion": { "type": "string", "minLength": 1 }, "expectedRegistryHash": { "$ref": "#/$defs/sha256" }, "observedRegistryHash": { "$ref": "#/$defs/sha256" }, "policyHash": { "$ref": "#/$defs/sha256" }, "verifierVersion": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]*/[0-9]+\\.[0-9]+\\.[0-9]+$" }, "trustedRootId": { "type": "string", "pattern": "^[A-Za-z0-9_][A-Za-z0-9._:-]*$" }, "recordId": { "type": "string", "pattern": "^[A-Za-z0-9_][A-Za-z0-9._-]*$" }, "role": { "enum": ["harness_fixture", "prompt_eval_gold", "generation_exemplar", "game_content_gold"] }, "consumerRef": { "type": "string", "minLength": 1 }, "artifactRef": { "$ref": "#/$defs/relativePath" }, "consumptionManifestRef": { "$ref": "#/$defs/relativePath" }, "expected": { "$ref": "#/$defs/hashColumns" }, "observed": { "$ref": "#/$defs/hashColumns" }, "finalSnapshotHash": { "$ref": "#/$defs/sha256" } }, "additionalProperties": false, "$defs": { "hashColumns": { "type": "object", "required": ["artifactHash", "consumptionManifestHash"], "properties": { "artifactHash": { "$ref": "#/$defs/sha256" }, "consumptionManifestHash": { "$ref": "#/$defs/sha256" } }, "additionalProperties": false }, "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" }, "relativePath": { "type": "string", "minLength": 1, "maxLength": 1024, "pattern": "^(?!/)(?!.*//)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*\\\\).+$" } } }