{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://quantumsoftware.tech/schemas/nm-learning-package-0.1.schema.json","title":"N/M Learning Package","description":"Portable learning, diagnostics, resources, readiness, and source metadata for an N/M program.","type":"object","additionalProperties":false,"required":["format","$schema","version","source","success","diagnostics","goals","outcomes","rubrics","misconceptions","quizzes","labs","datasets","checkpoints","hints","concepts","prerequisites","explanations","readiness","integrity"],"properties":{"$schema":{"const":"https://quantumsoftware.tech/schemas/nm-learning-package-0.1.schema.json"},"format":{"const":"nm-learning-package"},"version":{"const":"0.1"},"moduleName":{"type":"string"},"source":{"type":"object","additionalProperties":false,"required":["language","code","lineCount"],"properties":{"language":{"const":"N/M"},"code":{"type":"string","minLength":1},"lineCount":{"type":"integer","minimum":1}}},"success":{"type":"boolean"},"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"},"line":{"type":"integer","minimum":1},"column":{"type":"integer","minimum":1},"hint":{"type":"string"},"translationKey":{"type":"string"},"translationValues":{"type":"object","additionalProperties":true},"hintTranslationKey":{"type":"string"},"hintTranslationValues":{"type":"object","additionalProperties":true}}}},"goals":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["text","line"],"properties":{"text":{"type":"string"},"line":{"type":"integer","minimum":1}}}},"outcomes":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["text","line"],"properties":{"text":{"type":"string"},"line":{"type":"integer","minimum":1}}}},"rubrics":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["text","line"],"properties":{"text":{"type":"string"},"weight":{"type":"number"},"line":{"type":"integer","minimum":1}}}},"misconceptions":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["text","line"],"properties":{"text":{"type":"string"},"line":{"type":"integer","minimum":1}}}},"quizzes":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["question","line"],"properties":{"question":{"type":"string"},"answer":{"type":"string"},"line":{"type":"integer","minimum":1}}}},"labs":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["id","line"],"properties":{"id":{"type":"string"},"minutes":{"type":"number","minimum":0},"line":{"type":"integer","minimum":1}}}},"datasets":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["id","line"],"properties":{"id":{"type":"string"},"split":{"enum":["train","validation","test","synthetic"]},"line":{"type":"integer","minimum":1}}}},"checkpoints":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["text","line"],"properties":{"text":{"type":"string"},"kind":{"enum":["predict","inspect","explain","debug"]},"line":{"type":"integer","minimum":1}}}},"hints":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["text","line"],"properties":{"text":{"type":"string"},"line":{"type":"integer","minimum":1}}}},"concepts":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["name","line"],"properties":{"name":{"type":"string"},"line":{"type":"integer","minimum":1}}}},"level":{"type":"object","additionalProperties":false,"required":["value","line"],"properties":{"value":{"enum":["beginner","intermediate","advanced"]},"line":{"type":"integer","minimum":1}}},"prerequisites":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["name","line"],"properties":{"name":{"type":"string"},"line":{"type":"integer","minimum":1}}}},"explanations":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["text","line"],"properties":{"text":{"type":"string"},"line":{"type":"integer","minimum":1}}}},"resources":{"type":"object","additionalProperties":false,"properties":{"qubits":{"type":"integer","minimum":0},"statements":{"type":"integer","minimum":0},"depth":{"type":"integer","minimum":0},"gates":{"type":"integer","minimum":0},"singleQubitGates":{"type":"integer","minimum":0},"twoQubitGates":{"type":"integer","minimum":0},"threeQubitGates":{"type":"integer","minimum":0},"measurements":{"type":"integer","minimum":0},"resets":{"type":"integer","minimum":0},"barriers":{"type":"integer","minimum":0},"assertions":{"type":"integer","minimum":0},"expectations":{"type":"integer","minimum":0},"metrics":{"type":"integer","minimum":0},"gradients":{"type":"integer","minimum":0},"encodings":{"type":"integer","minimum":0},"observations":{"type":"integer","minimum":0},"tests":{"type":"integer","minimum":0},"properties":{"type":"integer","minimum":0},"snapshots":{"type":"integer","minimum":0},"conditionals":{"type":"integer","minimum":0},"shows":{"type":"integer","minimum":0},"expectationTerms":{"type":"integer","minimum":0},"ftqcEnabled":{"type":"boolean"},"logicalGates":{"type":"integer","minimum":0},"logicalQubits":{"type":"integer","minimum":0},"cliffordCount":{"type":"integer","minimum":0},"tCount":{"type":"integer","minimum":0},"tDepth":{"type":"integer","minimum":0},"codeDistance":{"type":"integer","minimum":0},"surfaceCodeOverhead":{"type":"integer","minimum":0},"physicalQubits":{"type":"integer","minimum":0},"magicStates":{"type":"integer","minimum":0},"estimatedRuntimeMs":{"type":"number","minimum":0},"targetError":{"type":"number","exclusiveMinimum":0,"exclusiveMaximum":1}}},"readiness":{"type":"object","additionalProperties":false,"required":["tier","score","present","total","checks","missing","nextActions","suggestions"],"properties":{"tier":{"enum":["blocked","starter","draft","lab-ready","complete"]},"score":{"type":"integer","minimum":0,"maximum":100},"present":{"type":"integer","minimum":0},"total":{"type":"integer","minimum":0},"checks":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","present"],"properties":{"key":{"enum":["runnable","goal","outcome","rubric","misconception","quiz","lab","dataset","checkpoint","hint","concept","level","prerequisite","explanation"]},"present":{"type":"boolean"}}}},"missing":{"type":"array","items":{"type":"string"}},"nextActions":{"type":"array","items":{"type":"string"}},"suggestions":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","title","snippet"],"properties":{"key":{"type":"string"},"title":{"type":"string"},"snippet":{"type":"string"}}}}}},"integrity":{"type":"object","additionalProperties":false,"required":["algorithm","digest"],"properties":{"algorithm":{"const":"fnv1a-64"},"digest":{"type":"string","pattern":"^[0-9a-f]{16}$"}}}}}