{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://quantumsoftware.tech/schemas/nm-tutor-result-0.2.schema.json","title":"N/M Context-Aware Tutor Result (Compile Only)","type":"object","additionalProperties":false,"required":["format","contractVersion","requestId","status","grounded","source","sourceVerification","answer","citations","tutorDiagnostics","suggestionRunnable","provider","usage","privacy","sourceContext","contextFingerprint","execution","suggestionApplicable"],"properties":{"format":{"const":"nm-tutor-result"},"contractVersion":{"const":"0.2"},"requestId":{"type":"string","minLength":1,"maxLength":128},"status":{"enum":["grounded","rejected"]},"grounded":{"type":"boolean"},"source":{"type":"string","minLength":1,"maxLength":256000},"sourceVerification":{"type":"object","additionalProperties":false,"required":["status","runnable","execution","sourceHash","contextFingerprint","diagnostics"],"properties":{"status":{"enum":["compiled","rejected"]},"runnable":{"const":false},"execution":{"const":"not-run"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{16}$"},"contextFingerprint":{"type":"string","pattern":"^[a-f0-9]{16}$"},"diagnostics":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","severity","message"],"properties":{"code":{"type":"string"},"severity":{"enum":["error","warning","info"]},"message":{"type":"string"},"hint":{"type":"string"},"translationKey":{"type":"string"},"translationValues":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}},"hintTranslationKey":{"type":"string"},"hintTranslationValues":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}},"line":{"type":"integer","minimum":1},"column":{"type":"integer","minimum":1}}}}}},"answer":{"type":"string","maxLength":12024},"citations":{"type":"array","maxItems":12,"items":{"type":"object","additionalProperties":false,"required":["text","lineStart","lineEnd","excerpt"],"properties":{"text":{"type":"string","minLength":3,"maxLength":1000},"lineStart":{"type":"integer","minimum":1},"lineEnd":{"type":"integer","minimum":1},"excerpt":{"type":"string","minLength":1,"maxLength":256000},"diagnosticCode":{"type":"string","minLength":1,"maxLength":128},"module":{"type":"string","pattern":"^[A-Za-z_]\\w{0,127}$"}}}},"tutorDiagnostics":{"type":"array","maxItems":12,"items":{"type":"object","additionalProperties":false,"required":["code","severity","message"],"properties":{"code":{"type":"string"},"severity":{"enum":["error","warning","info"]},"message":{"type":"string"},"hint":{"type":"string"},"translationKey":{"type":"string"},"translationValues":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}},"hintTranslationKey":{"type":"string"},"hintTranslationValues":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}},"line":{"type":"integer","minimum":1},"column":{"type":"integer","minimum":1}}}},"suggestedSource":{"type":"string","minLength":1,"maxLength":256000},"suggestionVerification":{"type":"object","additionalProperties":false,"required":["status","runnable","execution","sourceHash","contextFingerprint","diagnostics"],"properties":{"status":{"enum":["compiled","rejected"]},"runnable":{"const":false},"execution":{"const":"not-run"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{16}$"},"contextFingerprint":{"type":"string","pattern":"^[a-f0-9]{16}$"},"diagnostics":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["code","severity","message"],"properties":{"code":{"type":"string"},"severity":{"enum":["error","warning","info"]},"message":{"type":"string"},"hint":{"type":"string"},"translationKey":{"type":"string"},"translationValues":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}},"hintTranslationKey":{"type":"string"},"hintTranslationValues":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}},"line":{"type":"integer","minimum":1},"column":{"type":"integer","minimum":1}}}}}},"suggestionRunnable":{"const":false},"provider":{"type":"object","additionalProperties":false,"required":["id","model","external"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:>@/\\-]+$"},"model":{"type":"string","minLength":1,"maxLength":200},"external":{"type":"boolean"}}},"usage":{"type":"object","additionalProperties":false,"required":["inputUnits","outputUnits","requests","estimatedCostUsd","costBasis"],"properties":{"inputUnits":{"type":"number","minimum":0,"maximum":10000000},"outputUnits":{"type":"number","minimum":0,"maximum":10000000},"requests":{"const":1},"estimatedCostUsd":{"type":"number","minimum":0,"maximum":1},"costBasis":{"enum":["local","reported","estimated","reserved"]},"reportedCostUsd":{"type":"number","minimum":0,"maximum":1}}},"privacy":{"type":"object","additionalProperties":false,"required":["questionRetention","sourceRetention","externalProvider"],"properties":{"questionRetention":{"enum":["none","provider-policy"]},"sourceRetention":{"enum":["none","provider-policy"]},"externalProvider":{"type":"boolean"}}},"learningContext":{"type":"object","additionalProperties":false,"required":["topic","lessonId","lessonTitle","lessonPosition","lessonCount","quizState"],"properties":{"topic":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,79}$"},"lessonId":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,79}$"},"lessonTitle":{"type":"string","minLength":1,"maxLength":160},"lessonPosition":{"type":"integer","minimum":1,"maximum":500},"lessonCount":{"type":"integer","minimum":1,"maximum":500},"quizState":{"enum":["not-applicable","not-attempted","correct","incorrect"]}}},"sourceContext":{"type":"object","additionalProperties":false,"properties":{"experimental":{"type":"object","additionalProperties":false,"properties":{"moduleVisibility":{"const":true},"exactImports":{"const":true},"propertyAssertions":{"const":true},"qmlTrainingControls":{"const":true},"typedClassicalValues":{"const":true},"targetCapabilityConstraints":{"const":true},"classicalFunctions":{"const":true},"functionResults":{"const":true},"genericOracles":{"const":true},"genericCircuits":{"const":true},"qecExperiments":{"const":true},"composedNoise":{"const":true},"feedForward":{"const":true},"typedCollection":{"const":true},"comptimeConst":{"const":true}}},"workspaceModules":{"type":"object","maxProperties":64,"propertyNames":{"type":"string","pattern":"^[A-Za-z_]\\w{0,127}$"},"additionalProperties":{"type":"string","maxLength":32000}}}},"contextFingerprint":{"type":"string","pattern":"^[a-f0-9]{16}$"},"suggestionApplicable":{"type":"boolean"},"execution":{"type":"object","additionalProperties":false,"required":["mode"],"properties":{"mode":{"enum":["local","external","fallback"]},"fallbackReason":{"type":"string","minLength":1,"maxLength":500}}},"runEvidence":{"type":"object","additionalProperties":false,"required":["provenance","contextFingerprint","success"],"properties":{"provenance":{"const":"client-reported"},"contextFingerprint":{"type":"string","pattern":"^[a-f0-9]{16}$"},"success":{"type":"boolean"},"engine":{"enum":["statevector","stabilizer","mps"]},"summary":{"type":"string","minLength":1,"maxLength":2000},"diagnostics":{"type":"array","maxItems":12,"items":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","minLength":1,"maxLength":128},"message":{"type":"string","minLength":1,"maxLength":1000},"line":{"type":"integer","minimum":1},"module":{"type":"string","pattern":"^[A-Za-z_]\\w{0,127}$"}}}},"costHistory":{"type":"array","maxItems":101,"items":{"type":"number"}}}}},"allOf":[{"if":{"properties":{"status":{"const":"grounded"}},"required":["status"]},"then":{"properties":{"grounded":{"const":true},"citations":{"minItems":1}}}},{"if":{"properties":{"status":{"const":"rejected"}},"required":["status"]},"then":{"properties":{"grounded":{"const":false},"answer":{"const":""},"citations":{"maxItems":0}}}},{"if":{"required":["suggestedSource"]},"then":{"required":["suggestionVerification"]}},{"if":{"properties":{"suggestionApplicable":{"const":true}},"required":["suggestionApplicable"]},"then":{"required":["suggestedSource","suggestionVerification"]}}]}