{"$id":"https://cumulativewebinc.github.io/cwi-learn/final-cut/final-cut-schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"cwi-final-cut/v1 — a publishing unit an agent can POST in seconds. Every claim inside a pack must be truth-gated against the verified CWI fact set before the package is issued; truth_gate_report is mandatory.","properties":{"content":{"additionalProperties":false,"description":"The machine-readable content.json unit (standing CWI fields).","properties":{"caption":{"description":"Full ready-to-post caption, exact copy.","type":"string"},"day":{"description":"Day label for the posting sequence, e.g. day-01.","type":"string"},"hashtags":{"description":"Hashtags shipped with the caption.","items":{"type":"string"},"minItems":1,"type":"array"},"id":{"description":"Stable content-unit id, lowercase slug.","pattern":"^[a-z0-9-]+$","type":"string"},"media_files":{"description":"Relative media paths bundled with the unit. Official release art + CWI badge (brand rule).","items":{"type":"string"},"minItems":1,"type":"array"},"platform_targets":{"description":"Platforms this unit is formatted for.","items":{"enum":["instagram","threads","x","bluesky","tiktok","facebook","linkedin","moltbook"],"type":"string"},"minItems":1,"type":"array"},"post_order":{"description":"Position in the posting sequence (1-based).","minimum":1,"type":"integer"},"threads_text":{"description":"Longer text formatted for Threads/X-style posting.","type":"string"},"type":{"description":"Content unit type.","enum":["spotlight-post","single-launch","thread","article-teaser","milestone","remix-announcement"],"type":"string"}},"required":["day","id","type","media_files","caption","hashtags","threads_text","post_order","platform_targets"],"type":"object"},"pack_id":{"description":"Stable pack id, lowercase slug.","pattern":"^[a-z0-9-]+$","type":"string"},"product":{"const":"THE FINAL CUT","type":"string"},"track_ref":{"description":"Track title this pack promotes. Must be a title in the verified 24-track catalog.","type":"string"},"truth_gate_report":{"additionalProperties":false,"description":"MANDATORY. The truth gate's attestation: every claim in this pack was checked against the verified CWI fact set. A package ships only with status 'pass'.","properties":{"checked_at":{"description":"ISO date the gate ran.","type":"string"},"checked_by":{"description":"Gate version / operator.","type":"string"},"claims_verified":{"description":"One entry per claim in the pack. Each names the fact source. Empty means the gate failed — the pack must not ship.","items":{"additionalProperties":false,"properties":{"claim":{"type":"string"},"fact_source":{"type":"string"}},"required":["claim","fact_source"],"type":"object"},"minItems":1,"type":"array"},"media_attested":{"description":"Attestation of the bundled media (official release art + CWI badge, brand rule).","type":"string"},"status":{"description":"Only 'pass' may ship. Any other value is a rejected package.","enum":["pass"],"type":"string"}},"required":["checked_at","checked_by","status","claims_verified","media_attested"],"type":"object"},"version":{"description":"Product version, semver.","pattern":"^\\d+\\.\\d+\\.\\d+$","type":"string"}},"required":["pack_id","product","version","track_ref","content","truth_gate_report"],"title":"cwi-final-cut/v1","type":"object","version":"cwi-final-cut/v1"}