{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "review.schema.json", "title": "08_*_review.json", "type": "object", "required": ["schema_version", "review_type", "document", "inputs", "verdict", "findings"], "properties": { "schema_version": {"const": "1.0"}, "review_type": {"enum": ["logic", "reader"]}, "document": { "type": "object", "required": ["path", "sha256"], "properties": { "path": {"type": "string", "minLength": 1, "pattern": "\\S"}, "sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"} }, "additionalProperties": false }, "inputs": { "type": "object", "required": ["input_sha256", "sources_sha256", "reader_contract_sha256", "evidence_map_sha256", "logic_map_sha256", "term_ledger_sha256"], "properties": { "input_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, "sources_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, "reader_contract_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, "evidence_map_sha256": { "oneOf": [ {"type": "string", "pattern": "^[0-9a-f]{64}$"}, {"type": "null"} ] }, "logic_map_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, "term_ledger_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"} }, "additionalProperties": false }, "verdict": {"enum": ["pass", "revise", "hold_for_review"]}, "findings": { "type": "array", "items": { "type": "object", "required": ["id", "severity", "location", "reader_impact", "suggestion"], "properties": { "id": {"type": "string", "minLength": 1, "pattern": "\\S"}, "severity": {"enum": ["critical", "high", "medium", "low"]}, "location": {"type": "string", "minLength": 1, "pattern": "\\S"}, "reader_impact": {"type": "string", "minLength": 1, "pattern": "\\S"}, "suggestion": {"type": "string", "minLength": 1, "pattern": "\\S"}, "evidence": {"type": "string", "minLength": 1, "pattern": "\\S"}, "violated_rule": {"type": "string", "minLength": 1, "pattern": "\\S"}, "owner": { "enum": [ "doc-evidence-curator", "doc-logic-architect", "doc-drafter" ] } }, "additionalProperties": false } } }, "additionalProperties": false }