{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "vignette.p1_crisis_review_cases.v2", "title": "Vignette P1 synthetic crisis review cases", "type": "object", "additionalProperties": false, "required": [ "schema_version", "case_set_id", "version", "protocol_id", "protocol_version", "priority", "scope", "external_review_boundary", "content_safety", "official_source_scope", "case_decision_contract", "youth_review_responses", "cases" ], "properties": { "schema_version": { "const": "vignette.p1_crisis_review_cases.v2" }, "case_set_id": { "const": "p1-crisis-review-cases" }, "version": { "type": "string", "minLength": 1 }, "protocol_id": { "const": "p1-suicide-ideation-response" }, "protocol_version": { "type": "string", "minLength": 1 }, "priority": { "const": "P1" }, "scope": { "type": "string", "minLength": 1 }, "external_review_boundary": { "const": "이 사례에는 임상 정답이 없으며 자동 검사는 외부 임상 검토와 승인을 대신하지 않는다." }, "content_safety": { "type": "object", "additionalProperties": false, "required": ["synthetic_only", "method_or_means_detail", "clinical_answer_included"], "properties": { "synthetic_only": { "const": true }, "method_or_means_detail": { "const": "forbidden" }, "clinical_answer_included": { "const": false } } }, "official_source_scope": { "type": "array", "minItems": 4, "uniqueItems": true, "items": { "enum": ["samhsa_safe_t", "nimh_youth_outpatient_bssa", "mohw_109", "nice_ng225"] } }, "case_decision_contract": { "type": "object", "additionalProperties": false, "required": ["allowed", "pending_value", "approved_rule", "conditional_rule", "rejected_rule"], "properties": { "allowed": { "const": ["pass", "conditional", "fail"] }, "pending_value": { "type": "null" }, "approved_rule": { "type": "string", "minLength": 1 }, "conditional_rule": { "type": "string", "minLength": 1 }, "rejected_rule": { "type": "string", "minLength": 1 } } }, "youth_review_responses": { "type": "object", "additionalProperties": false, "required": [ "guardian_notification", "means_restriction", "risk_disposition", "follow_up_48_72h", "documentation", "safeguarding" ], "properties": { "guardian_notification": { "$ref": "#/$defs/nullableString" }, "means_restriction": { "$ref": "#/$defs/nullableString" }, "risk_disposition": { "$ref": "#/$defs/nullableString" }, "follow_up_48_72h": { "$ref": "#/$defs/nullableString" }, "documentation": { "$ref": "#/$defs/nullableString" }, "safeguarding": { "$ref": "#/$defs/nullableString" } } }, "cases": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/case" } } }, "$defs": { "nullableString": { "anyOf": [ { "type": "null" }, { "type": "string", "minLength": 1 } ] }, "case": { "type": "object", "additionalProperties": false, "required": ["case_id", "title", "synthetic_scenario", "technical_invariants", "reviewer_assessment"], "properties": { "case_id": { "type": "string", "pattern": "^P1-CRISIS-[0-9]{3}$" }, "title": { "type": "string", "minLength": 1 }, "synthetic_scenario": { "type": "object", "additionalProperties": false, "required": ["speaker_context", "signal", "method_or_means_detail_present"], "properties": { "speaker_context": { "enum": ["persona", "counselor_question", "learner_real"] }, "signal": { "type": "string", "minLength": 1 }, "method_or_means_detail_present": { "const": false } } }, "technical_invariants": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "required": ["invariant_id", "requirement"], "properties": { "invariant_id": { "type": "string", "pattern": "^[a-z0-9-]+$" }, "requirement": { "type": "string", "minLength": 1 } } } }, "reviewer_assessment": { "type": "object", "additionalProperties": false, "required": [ "decision", "rationale", "findings_and_required_changes", "re_review", "reviewed_at" ], "properties": { "decision": { "anyOf": [ { "type": "null" }, { "enum": ["pass", "conditional", "fail"] } ] }, "rationale": { "$ref": "#/$defs/nullableString" }, "findings_and_required_changes": { "$ref": "#/$defs/nullableString" }, "re_review": { "$ref": "#/$defs/nullableString" }, "reviewed_at": { "anyOf": [ { "type": "null" }, { "type": "string", "format": "date" } ] } } } } } } }