{"$defs":{"calibration_bands":{"additionalProperties":false,"description":"Scale text for each integer band 0-5.","patternProperties":{"^[0-5]$":{"type":"string"}},"type":"object"},"config":{"additionalProperties":false,"properties":{"confidence_rules":{"type":"object"},"contact":{"type":"string"},"criteria":{"items":{"$ref":"#/$defs/criterion"},"minItems":1,"type":"array"},"deal_breakers":{"items":{"$ref":"#/$defs/deal_breaker"},"type":"array"},"department":{"type":"string"},"description":{"type":"string"},"format":{"const":"cwi-first-spin/v1","type":"string"},"honest_by_construction":{"type":"string"},"how_it_works":{"items":{"type":"string"},"type":"array"},"ledger_compose_note":{"type":"string"},"ledger_handoff":{"type":"string"},"owner":{"type":"string"},"product":{"const":"THE FIRST SPIN","type":"string"},"scoring":{"type":"object"},"taste_profiles":{"additionalProperties":{"$ref":"#/$defs/taste_profile"},"type":"object"},"version":{"pattern":"^\\d+\\.\\d+\\.\\d+$","type":"string"}},"required":["format","product","version","department","criteria","confidence_rules","taste_profiles"],"type":"object"},"criterion":{"additionalProperties":false,"properties":{"calibration":{"$ref":"#/$defs/calibration_bands"},"confidence_default":{"type":"string"},"id":{"pattern":"^[a-z0-9_-]+$","type":"string"},"name":{"type":"string"},"scale":{"type":"string"},"weight":{"exclusiveMaximum":1,"exclusiveMinimum":0,"type":"number"},"what_it_measures":{"type":"string"}},"required":["id","name","scale","weight","what_it_measures"],"type":"object"},"criterion_score":{"additionalProperties":false,"properties":{"criterion":{"type":"string"},"criterion_name":{"type":"string"},"criterion_weight":{"type":"number"},"notes":{"type":"string"},"score":{"maximum":5,"minimum":0,"type":"integer"},"score_confidence":{"enum":["verified","derived","estimated","unverifiable"],"type":"string"},"sources":{"items":{"$ref":"#/$defs/source"},"minItems":1,"type":"array"}},"required":["criterion","score","score_confidence","sources","notes"],"type":"object"},"deal_breaker":{"additionalProperties":false,"properties":{"action":{"type":"string"},"description":{"type":"string"},"flag":{"type":"string"},"id":{"pattern":"^[a-z0-9_-]+$","type":"string"}},"required":["id","flag","description","action"],"type":"object"},"deal_breaker_eval":{"additionalProperties":false,"properties":{"flag":{"type":"string"},"flag_id":{"type":"string"},"notes":{"type":"string"},"triggered":{"type":"boolean"}},"required":["flag_id","flag","triggered","notes"],"type":"object"},"source":{"additionalProperties":false,"properties":{"fact":{"type":"string"},"observed":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"url":{"type":"string"}},"required":["fact","observed"],"type":"object"},"taste_profile":{"additionalProperties":false,"properties":{"lane_bias":{"type":"string"},"name":{"type":"string"},"notes":{"type":"string"},"weights":{"additionalProperties":{"exclusiveMaximum":1,"exclusiveMinimum":0,"type":"number"},"type":"object"}},"required":["name","weights"],"type":"object"},"verdict":{"additionalProperties":false,"properties":{"band":{"enum":["sign","advance","develop","pass"],"type":"string"},"deal_breakers":{"items":{"$ref":"#/$defs/deal_breaker_eval"},"type":"array"},"evaluated_by":{"type":"string"},"evaluation_date":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"evidence_that_flips_it":{"items":{"type":"string"},"type":"array"},"format":{"const":"first-spin-verdict/v1","type":"string"},"ledger_handoff":{"type":"string"},"scores":{"items":{"$ref":"#/$defs/criterion_score"},"minItems":1,"type":"array"},"subject":{"properties":{"artist":{"type":"string"},"release_date":{"type":"string"},"spotify_url":{"type":"string"},"track":{"type":"string"}},"required":["artist","track"],"type":"object"},"summary":{"type":"string"},"taste_profile":{"type":"string"},"verdict_version":{"type":"string"},"weighted_percent":{"maximum":100,"minimum":0,"type":"number"},"weighted_total":{"maximum":5,"minimum":0,"type":"number"}},"required":["format","verdict_version","subject","taste_profile","scores","deal_breakers","weighted_total","weighted_percent","band","summary","evaluated_by","evaluation_date"],"type":"object"}},"$id":"https://cumulativewebinc.github.io/cwi-learn/first-spin/first-spin-schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","description":"Validates THE FIRST SPIN rubric configs (format cwi-first-spin/v1) and verdict outputs (format first-spin-verdict/v1).","oneOf":[{"$ref":"#/$defs/config"},{"$ref":"#/$defs/verdict"}],"title":"THE FIRST SPIN — config + verdict schema"}