{"$defs":{"claim":{"additionalProperties":false,"description":"One atomic, verifiable assertion. Uncited claims are rejected.","properties":{"claim":{"minLength":1,"type":"string"},"observed_date":{"description":"Date the claim was observed/verified, YYYY-MM-DD.","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"source":{"description":"Where the claim was observed — a record, scan, or named confirmer.","minLength":1,"type":"string"}},"required":["claim","source","observed_date"],"type":"object"},"story_unit":{"additionalProperties":false,"description":"A press-pull story unit: headline, body, and its cited claims.","properties":{"body":{"description":"The quotable unit text. It must state nothing beyond its claims.","minLength":1,"type":"string"},"claims":{"$ref":"#/$defs/claim","minItems":1,"type":"array"},"contact":{"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","type":"string"},"desk":{"type":"string"},"embargo":{"description":"All seed units are public facts. Embargoes are 'none' unless a unit says otherwise.","enum":["none"],"type":"string"},"headline":{"minLength":1,"type":"string"},"id":{"pattern":"^[a-z0-9-]+$","type":"string"},"schema":{"type":"string"},"type":{"enum":["artist-bio","track-story","release-announcement","momentum-note","fact-sheet","announcement"],"type":"string"}},"required":["id","type","headline","body","claims","embargo","contact"],"type":"object"},"truth_gate":{"additionalProperties":true,"properties":{"deny_list":{"items":{"type":"string"},"minItems":1,"type":"array"},"rule":{"type":"string"},"verified_facts_registry":{"format":"uri","type":"string"}},"required":["rule","deny_list"],"type":"object"},"unit_index_entry":{"additionalProperties":false,"description":"Index entry for one story unit; full claims live in units/<id>.json and are mirrored here.","properties":{"body":{"type":"string"},"claims":{"items":{"$ref":"#/$defs/claim"},"type":"array"},"claims_count":{"minimum":1,"type":"integer"},"contact":{"type":"string"},"embargo":{"type":"string"},"headline":{"minLength":1,"type":"string"},"id":{"pattern":"^[a-z0-9-]+$","type":"string"},"type":{"enum":["artist-bio","track-story","release-announcement","momentum-note","fact-sheet","announcement"],"type":"string"},"updated":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"url":{"format":"uri","type":"string"}},"required":["id","type","headline","url","claims_count","updated"],"type":"object"}},"$id":"https://cumulativewebinc.github.io/cwi-learn/copy-desk/copy-desk-schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","description":"COPY DESK (Press & PR, Agent Deck gear line): truth-gated, machine-readable story units. Every claim MUST carry a source and an observed_date — uncited claims are rejected by the truth gate.","properties":{"desk":{"additionalProperties":true,"properties":{"contact":{"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","type":"string"},"default_embargo":{"type":"string"},"department":{"type":"string"},"name":{"type":"string"},"schema":{"type":"string"},"schema_url":{"format":"uri","type":"string"},"truth_gate":{"$ref":"#/$defs/truth_gate"}},"required":["name","department","schema","schema_url","contact","truth_gate"],"type":"object"},"units":{"items":{"$ref":"#/$defs/unit_index_entry"},"minItems":1,"type":"array"}},"required":["desk","units"],"title":"cwi-copydesk/v1 — COPY DESK story-unit authoring contract","type":"object"}