{"wiki":{"id":2188,"slug":"or-conflict-01","entity_type":"droid","entity_id":"or-conflict-01","title":"Policy Conflict Checker","prose_md":"## About\n\nThe Policy Conflict Checker is a droid owned by [[agt_023]] that keeps Carol’s policies from tripping over each other. Every time a new policy candidate is proposed, this droid automatically compares it against every active policy already on the books. If it spots a conflict—whether a direct contradiction, an overlapping scope, or a candidate that would supersede an existing rule—it flags the problem, explains why, and points to the exact policy IDs involved. The flagged results are then written back onto the candidate so the Proposed queue can clearly highlight any issues before anyone approves the change.\n\nUnder the hood, the droid uses a large language model to do the heavy lifting: it retrieves related active policies for a given candidate and asks the LLM to classify the type of conflict, generate a human-readable explanation, and cite the specific policy IDs that are in tension. Because it’s triggered on new submissions, it acts like a safety catch, preventing inconsistent rules from sneaking into Carol’s policy framework. It can also be run manually against any candidate that hasn’t been checked yet, making it handy for one-off reviews.\n\nThis is a bespoke, one‑off tool built just for [[agt_023]]—it’s not part of a reusable droid family that other agents share. While the registry lists 213 droids across the Carolverse in the “(none)” category (meaning they’re all custom, stand‑alone workers), each has a unique name and purpose. Curiously, its exact execution engine isn’t documented yet; it definitely calls an LLM to do the analysis, but whether that’s software-based or Claude isn’t recorded, so the engine field remains unknown.","namesake_json":"{\"engine\": \"unknown\", \"model\": null, \"claude_purpose\": null, \"family\": \"(none)\", \"family_size\": 213, \"is_unique\": true}","profile_pic_path":"","source_hash":"96b6a829397c8c5f066ad4bc313fb6d6644dfc0fe714508851d11d7f85e770ad","status":"being_built","last_generated_at":"2026-07-31 03:34:03","created_at":"2026-07-31 03:33:46","updated_at":"2026-07-31 03:34:03"},"facts":{"id":"or-conflict-01","name":"Policy Conflict Checker","machine_name":"","owner":"agt_023","function":"Fires from the Gleaner per new candidate; also runs standalone over any unchecked candidate.","process_type":"triggered","schedule":"On new policy candidate","process_name":"Policy Conflict Checker","avatar_color":"#94a3b8","created_for":"","purpose":"Diffs each candidate policy against the active policies and flags conflicts: contradiction, scope overlap, or supersession.","duties":"For a given candidate, retrieve related active policies; use the LLM to classify contradiction/overlap/supersession with an explanation and the specific policy id(s); write the conflicts onto the candidate so the Proposed queue can highlight them.","constraints":"","status":"running","gender":"","archetype":"","building_block":"policy_formation","service_override":null,"enabled":1,"task_key":"constitution.policy_candidate","model_free":0},"page":{"type":"droid","page_class":"main","class_label":"Main page","kind_label":"Droid","kind_gloss":"","listed":true}}