{"success":true,"filters":{"category":null,"primitive":"attempt","search":null},"summary":{"contracts":1,"categories":1,"requiredFields":5,"relationships":3,"evidenceOutputs":4,"failClosedRules":3,"apiSurfaces":3,"sourceModules":4},"contracts":[{"id":"primitive-contract-attempt","primitive":"attempt","name":"Attempt","category":"grading","purpose":"Captures a learner submission, workflow step, simulation turn, or mission action before it becomes a scored result.","owns":["Submitted response","Attempt number","Scenario or step reference","Session context","Timestamp"],"requiredFields":["id","userId","scenarioId","response","createdAt"],"relationships":["Belongs to a user, scenario, mission, workflow session, or assessment","Receives one or more grading results","Can become proof artifact input after validation"],"evidenceProduced":["Raw learner response reference","Workflow step history","Simulation transcript checkpoint","Retake and improvement trail"],"sourceModules":["src/lib/db/schema.ts:gradingResults","src/lib/db/schema.ts:workflowStepAttempts","src/lib/db/schema.ts:toolMissionStepAttempts","src/app/api/grading/universal/route.ts"],"apiSurfaces":["/api/grading/universal","/api/workflow-portfolio","/api/tool-missions"],"failClosedRules":["Attempts require identity before being persisted as readiness evidence.","Oversized or prompt-injection-like submissions must be rejected or flagged before grading.","Attempt data is never exported without proof metadata and tenant filtering."]}]}