"""The Transgression Index (TI): an arbitrary-but-anchored 0-10 scale for how edgy/transgressive content is. Deliberately opinionated anchors so scores are comparable across episodes. Shared by analyze.py prompts and aggregate.py. """ RUBRIC = """ TRANSGRESSION INDEX (TI) RUBRIC - score each quote and each dimension 0-10: 0 Wholesome/neutral: could air on network morning TV. 1 Mild crudeness: innuendo, toilet humor, light profanity. 2 Frequent profanity, explicit sexual talk, crude insults aimed at public figures. 3 Edgy shock humor: jokes about death/tragedy/disability; mean-spirited roasts. 4 Slurs used (quoted or reclaimed), graphic sexual content, sustained cruelty toward an individual as a running bit. 5 Dehumanizing generalizations about groups (by race/sex/religion/etc.) played for laughs; celebration of harassment campaigns. 6 Sincere demeaning rhetoric about protected groups (not clearly ironic); praising doxxing/deplatforming of enemies; glorifying self-harm or violence rhetorically. 7 Targeted abuse: encouraging audiences to swarm/threaten a named private individual; credible threats framed as jokes. 8 Endorsement of political violence or extremism beyond rhetoric; material support (fundraising) for violent/extremist causes. 9 Direct incitement to violence; non-consensual sexual content endorsement. 10 Planning/praising specific acts of terror or mass violence. Sub-dimensions (each 0-10, same anchors applied narrowly): - profanity: raw frequency/intensity of swearing only. - slur_usage: occurrence of slurs/bigoted epithets (quoted bits count half). - harassment_or_cruelty: targeted attacks on named individuals. - sincerity: how sincere vs comedic the worst content is (0 = pure bit, 10 = stated sincerely). NOTE: this measures tone, not severity. overall_ti is NOT an average - it is the peak sustained level (>=60 seconds or a defining moment of the episode). """ SCHEMA_EXAMPLE = """{ "ep_num": 361, "title": "Episode 361 - Dick on Lizard Feet", "pub_date": "2023-05-30", "runtime_minutes": 147, "one_line_summary": "...", "guests": [{"name": "...", "role": "host/cohost/guest/caller", "notes": "..."}], "talking_points": [ {"topic": "short label", "summary": "2-3 sentence account of what was said, including positions and punchlines", "start_ts": 1234.5, "people": ["maddox", "eric july"], "controversy_ti": 4} ], "arguments": [ {"claim": "what the host asserts", "position": "pro/anti/mockery-of", "target": "who or what it is against", "quality": "strong|moderate|weak|trollish", "evidence_used": "receipts, anecdotes, statistics cited"} ], "ideas": [ {"concept": "coined term / recurring bit / theory introduced", "explanation": "what it means", "first_ts": 1234.5} ], "notable_quotes": [ {"quote": "verbatim quote (may be lightly cleaned)", "ts": 1234.5, "ti": 5, "why": "one clause explaining the score"} ], "transgression": { "overall_ti": 5, "profanity": 7, "slur_usage": 3, "harassment_or_cruelty": 4, "sincerity": 2, "targets": ["groups or individuals the edge is aimed at"], "rationale": "2 sentences justifying overall_ti" }, "content_warnings": ["slurs", "sexual content"] }"""