{"definition_raw":"---\nid: orchestration-guard\nname: Orchestration guard \u2014 false-done + Needs-you purity monitor\nschedule: \"30 */6 * * *\"\nenabled: true\ncriticality: medium\nrun_as: script\ncommand: python3 ~/workspace/scripts/orchestration_guard.py --hours 12\ndescription: Standing monitor from the 2026-06-10 orchestration reliability audit (items B+F). Two deterministic checks against mc.db, no LLM. (F) False-done lifecycle \u2014 tickets closed 'done' in the last 12h that had a real worker (task_run/worker_pid/session) on a code project but show NO landed-commit evidence (done_sha unreachable from master AND no master commit mentioning the ticket id \u2014 cherry-pick safe). (B) Needs-you purity \u2014 dev/MC tickets parked on Elmar containing coding questions that the orchestrator should have decided. Writes ~/workspace/reports/orchestration-guard/YYYY-MM-DD.md; Telegram-alerts ONLY on violations (clean runs silent). Complements the preventative MC-4913 close gate as the detective control.\nruntime_profile: direct_python\nnotify_to: elmar\n---\n\n**OVERRIDES runtime profile:** uses `direct_python` (plain Python, no model) because the script only reads mc.db read-only, runs git evidence checks, and sends a Telegram alert via notify.py \u2014 it never invokes the `claude` CLI or any LLM API.\n\nManual run / dry-run:\n\n```bash\npython3 ~/workspace/scripts/orchestration_guard.py --hours 24 --dry-run\n```\n","id":"orchestration-guard","last_run":{"duration_s":0.650372,"log_path":"/home/lucienne/workspace/logs/task-runs/orchestration-guard/412875.log","output":"report: /home/lucienne/workspace/reports/orchestration-guard/2026-06-13.md (1 violation(s))\n","started_at":"2026-06-13T00:30:25.070385+02:00","status":"completed"},"next_run":"2026-06-13 06:30","next_run_iso":"2026-06-13T06:30:00+02:00","runs":[{"duration_s":0.650372,"finished_at":"2026-06-13T00:30:25.723557+02:00","id":412875,"log_path":"/home/lucienne/workspace/logs/task-runs/orchestration-guard/412875.log","output":"report: /home/lucienne/workspace/reports/orchestration-guard/2026-06-13.md (1 violation(s))\n","started_at":"2026-06-13T00:30:25.070385+02:00","status":"completed","task_id":"orchestration-guard","task_name":"orchestration-guard"},{"duration_s":0.652389,"finished_at":"2026-06-12T18:30:41.904740+02:00","id":411832,"log_path":"/home/lucienne/workspace/logs/task-runs/orchestration-guard/411832.log","output":"report: /home/lucienne/workspace/reports/orchestration-guard/2026-06-12.md (4 violation(s))\n","started_at":"2026-06-12T18:30:41.250791+02:00","status":"completed","task_id":"orchestration-guard","task_name":"orchestration-guard"},{"duration_s":0.678529,"finished_at":"2026-06-12T12:30:23.903837+02:00","id":410790,"log_path":"/home/lucienne/workspace/logs/task-runs/orchestration-guard/410790.log","output":"report: /home/lucienne/workspace/reports/orchestration-guard/2026-06-12.md (3 violation(s))\n","started_at":"2026-06-12T12:30:23.222526+02:00","status":"completed","task_id":"orchestration-guard","task_name":"orchestration-guard"},{"duration_s":0.231537,"finished_at":"2026-06-12T06:30:19.843840+02:00","id":409763,"log_path":"/home/lucienne/workspace/logs/task-runs/orchestration-guard/409763.log","output":"report: /home/lucienne/workspace/reports/orchestration-guard/2026-06-12.md (2 violation(s))\n","started_at":"2026-06-12T06:30:19.609521+02:00","status":"completed","task_id":"orchestration-guard","task_name":"orchestration-guard"},{"duration_s":0.55782,"finished_at":"2026-06-12T00:30:19.589443+02:00","id":408711,"log_path":"/home/lucienne/workspace/logs/task-runs/orchestration-guard/408711.log","output":"report: /home/lucienne/workspace/reports/orchestration-guard/2026-06-12.md (2 violation(s))\n","started_at":"2026-06-12T00:30:19.024269+02:00","status":"completed","task_id":"orchestration-guard","task_name":"orchestration-guard"},{"duration_s":0.476044,"finished_at":"2026-06-11T18:30:19.173320+02:00","id":407605,"log_path":"/home/lucienne/workspace/logs/task-runs/orchestration-guard/407605.log","output":"report: /home/lucienne/workspace/reports/orchestration-guard/2026-06-11.md (0 violation(s))\n","started_at":"2026-06-11T18:30:18.694632+02:00","status":"completed","task_id":"orchestration-guard","task_name":"orchestration-guard"},{"duration_s":0.43286,"finished_at":"2026-06-11T12:30:24.126644+02:00","id":406488,"log_path":"/home/lucienne/workspace/logs/task-runs/orchestration-guard/406488.log","output":"report: /home/lucienne/workspace/reports/orchestration-guard/2026-06-11.md (0 violation(s))\n","started_at":"2026-06-11T12:30:23.690688+02:00","status":"completed","task_id":"orchestration-guard","task_name":"orchestration-guard"},{"duration_s":0.092053,"finished_at":"2026-06-11T06:30:20.169883+02:00","id":405394,"log_path":"/home/lucienne/workspace/logs/task-runs/orchestration-guard/405394.log","output":"report: /home/lucienne/workspace/reports/orchestration-guard/2026-06-11.md (0 violation(s))\n","started_at":"2026-06-11T06:30:20.075579+02:00","status":"completed","task_id":"orchestration-guard","task_name":"orchestration-guard"},{"duration_s":0.38571,"finished_at":"2026-06-11T00:33:09.357349+02:00","id":404338,"log_path":"/home/lucienne/workspace/logs/task-runs/orchestration-guard/404338.log","output":"report: /home/lucienne/workspace/reports/orchestration-guard/2026-06-11.md (1 violation(s))\n","started_at":"2026-06-11T00:33:08.968684+02:00","status":"completed","task_id":"orchestration-guard","task_name":"orchestration-guard"},{"duration_s":0.302566,"finished_at":"2026-06-10T18:30:19.280747+02:00","id":403252,"log_path":"/home/lucienne/workspace/logs/task-runs/orchestration-guard/403252.log","output":"report: /home/lucienne/workspace/reports/orchestration-guard/2026-06-10.md (5 violation(s))\n","started_at":"2026-06-10T18:30:18.975340+02:00","status":"completed","task_id":"orchestration-guard","task_name":"orchestration-guard"},{"duration_s":0.368215,"finished_at":"2026-06-10T12:35:00.131431+02:00","id":402198,"log_path":"/home/lucienne/workspace/logs/task-runs/orchestration-guard/402198.log","output":"report: /home/lucienne/workspace/reports/orchestration-guard/2026-06-10.md (8 violation(s))\n","started_at":"2026-06-10T12:34:59.760846+02:00","status":"completed","task_id":"orchestration-guard","task_name":"orchestration-guard"},{"duration_s":0.08005,"finished_at":"2026-06-10T11:36:04.108567+02:00","id":402051,"log_path":"/home/lucienne/workspace/logs/task-runs/orchestration-guard/402051.log","output":"report: /home/lucienne/workspace/reports/orchestration-guard/2026-06-10.md (0 violation(s))\n","started_at":"2026-06-10T11:36:04.025909+02:00","status":"completed","task_id":"orchestration-guard","task_name":"orchestration-guard"}],"runs_limit":20,"schedule":"30 */6 * * *","schedule_label":{"description":"Every 6 hours at :30","is_custom":false,"label":"Every 6h","sort":3,"sort_time":""},"stats":{"avg_duration":0.40901208333333333,"completed":12,"failed":0,"timeout":0,"total":12},"task":{"_description":"**OVERRIDES runtime profile:** uses `direct_python` (plain Python, no model) because the script only reads mc.db read-only, runs git evidence checks, and sends a Telegram alert via notify.py \u2014 it never invokes the `claude` CLI or any LLM API.\n\nManual run / dry-run:\n\n```bash\npython3 ~/workspace/scripts/orchestration_guard.py --hours 24 --dry-run\n```","_file":"orchestration-guard.md","_path":"/home/lucienne/workspace/tasks/orchestration-guard.md","command":"python3 ~/workspace/scripts/orchestration_guard.py --hours 12","criticality":"medium","description":"Standing monitor from the 2026-06-10 orchestration reliability audit (items B+F). Two deterministic checks against mc.db, no LLM. (F) False-done lifecycle \u2014 tickets closed 'done' in the last 12h that had a real worker (task_run/worker_pid/session) on a code project but show NO landed-commit evidence (done_sha unreachable from master AND no master commit mentioning the ticket id \u2014 cherry-pick safe). (B) Needs-you purity \u2014 dev/MC tickets parked on Elmar containing coding questions that the orchestrator should have decided. Writes ~/workspace/reports/orchestration-guard/YYYY-MM-DD.md; Telegram-alerts ONLY on violations (clean runs silent). Complements the preventative MC-4913 close gate as the detective control.","enabled":true,"id":"orchestration-guard","name":"Orchestration guard \u2014 false-done + Needs-you purity monitor","notify_to":"elmar","run_as":"script","runtime_profile":"direct_python","schedule":"30 */6 * * *"}}
