{"definition_raw":"---\nid: persistent-luci-branch-guard\ntitle: Keep luci-persistent on master and clean-fast-forward origin updates\nschedule: \"*/15 * * * *\"\ntimeout: 60\nretry: false\nenabled: true\nnotify_on: failure\nrun_as: shell\ncommand: \"python3 /home/lucienne/workspace/scripts/persistent_luci_branch_guard.py\"\ntags: [mission-control, luci, persistent, worktree-pool, git]\nruntime_profile: direct_no_llm\n---\n\n**OVERRIDES runtime profile:** uses direct_no_llm because the script only calls\ngit + notify.py; no LLM call.\n\nMC-3840 \u00a715: persistent-luci session must stay anchored on `master` so CCGram\nworktree-picker, mc_hook auto-commit, and pool dispatch all see the expected\ndefault branch. This task runs every 15 min and enforces that discipline in\nmonitoring.\n\nMC-4718: the same guard now fetches `origin/master` and performs a live checkout\nupdate only when the repo is on the default branch, completely clean, behind\norigin, and fast-forwardable. Dirty, ahead, diverged, detached, or branch-drifted\nstates are alert-only and never mutated. Alerts are transition-keyed so the task\ndoes not page every tick.\n\nSource of truth for the branch discipline: `docs/plans/2026-05-20-worktree-pool.md`\n\u00a72 goal 6 + \u00a715.5. Source of truth for the sync gap: `docs/solutions/mc-4709-recover-merge-sweep.md` / MC-4718.\n","id":"persistent-luci-branch-guard","last_run":{"duration_s":1.668868,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413883.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T06:15:02.887929+02:00","status":"completed"},"next_run":"2026-06-13 06:30","next_run_iso":"2026-06-13T06:30:00+02:00","runs":[{"duration_s":1.668868,"finished_at":"2026-06-13T06:15:04.558978+02:00","id":413883,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413883.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T06:15:02.887929+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.660985,"finished_at":"2026-06-13T06:00:50.029860+02:00","id":413840,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413840.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T06:00:48.365571+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.636044,"finished_at":"2026-06-13T05:45:04.573557+02:00","id":413791,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413791.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T05:45:02.935135+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.699442,"finished_at":"2026-06-13T05:30:26.110417+02:00","id":413750,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413750.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T05:30:24.408410+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.701305,"finished_at":"2026-06-13T05:15:04.638106+02:00","id":413707,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413707.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T05:15:02.935007+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.736599,"finished_at":"2026-06-13T05:00:57.917059+02:00","id":413670,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413670.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T05:00:56.178242+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.652785,"finished_at":"2026-06-13T04:45:04.774523+02:00","id":413621,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413621.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T04:45:03.120202+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.706411,"finished_at":"2026-06-13T04:30:26.745622+02:00","id":413579,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413579.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T04:30:25.036656+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.689843,"finished_at":"2026-06-13T04:15:06.068950+02:00","id":413533,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413533.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T04:15:04.376780+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.789155,"finished_at":"2026-06-13T04:04:38.551218+02:00","id":413495,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413495.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T04:04:36.759615+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.749407,"finished_at":"2026-06-13T03:45:04.743270+02:00","id":413444,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413444.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T03:45:02.991262+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.634976,"finished_at":"2026-06-13T03:31:24.471033+02:00","id":413404,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413404.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T03:31:22.832825+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.816417,"finished_at":"2026-06-13T03:15:04.852691+02:00","id":413357,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413357.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T03:15:03.032885+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.710636,"finished_at":"2026-06-13T03:00:36.765245+02:00","id":413312,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413312.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T03:00:35.051644+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.690823,"finished_at":"2026-06-13T02:45:04.712999+02:00","id":413265,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413265.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T02:45:03.019784+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.706504,"finished_at":"2026-06-13T02:30:27.603672+02:00","id":413225,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413225.log","output":"branch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T02:30:25.894251+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":5.341393,"finished_at":"2026-06-13T02:15:08.296852+02:00","id":413180,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413180.log","output":"Sent to Elmar DM\nbranch-guard: ok (master, origin aligned)\n","started_at":"2026-06-13T02:15:02.952588+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.695861,"finished_at":"2026-06-13T02:02:23.359115+02:00","id":413139,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413139.log","output":"branch-guard: ahead=1 behind=9; manual reconcile required\n","started_at":"2026-06-13T02:02:21.657643+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.738881,"finished_at":"2026-06-13T01:45:04.639553+02:00","id":413090,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413090.log","output":"branch-guard: ahead=1 behind=9; manual reconcile required\n","started_at":"2026-06-13T01:45:02.898160+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"},{"duration_s":1.735698,"finished_at":"2026-06-13T01:30:57.602577+02:00","id":413050,"log_path":"/home/lucienne/workspace/logs/task-runs/persistent-luci-branch-guard/413050.log","output":"branch-guard: ahead=1 behind=9; manual reconcile required\n","started_at":"2026-06-13T01:30:55.864143+02:00","status":"completed","task_id":"persistent-luci-branch-guard","task_name":"Keep luci-persistent on master and clean-fast-forward origin updates"}],"runs_limit":20,"schedule":"*/15 * * * *","schedule_label":{"description":"Every 15 minutes","is_custom":false,"label":"Every 15 min","sort":1,"sort_time":""},"stats":{"avg_duration":1.3665129137931034,"completed":696,"failed":0,"timeout":0,"total":696},"task":{"_description":"**OVERRIDES runtime profile:** uses direct_no_llm because the script only calls\ngit + notify.py; no LLM call.\n\nMC-3840 \u00a715: persistent-luci session must stay anchored on `master` so CCGram\nworktree-picker, mc_hook auto-commit, and pool dispatch all see the expected\ndefault branch. This task runs every 15 min and enforces that discipline in\nmonitoring.\n\nMC-4718: the same guard now fetches `origin/master` and performs a live checkout\nupdate only when the repo is on the default branch, completely clean, behind\norigin, and fast-forwardable. Dirty, ahead, diverged, detached, or branch-drifted\nstates are alert-only and never mutated. Alerts are transition-keyed so the task\ndoes not page every tick.\n\nSource of truth for the branch discipline: `docs/plans/2026-05-20-worktree-pool.md`\n\u00a72 goal 6 + \u00a715.5. Source of truth for the sync gap: `docs/solutions/mc-4709-recover-merge-sweep.md` / MC-4718.","_file":"persistent-luci-branch-guard.md","_path":"/home/lucienne/workspace/tasks/persistent-luci-branch-guard.md","command":"python3 /home/lucienne/workspace/scripts/persistent_luci_branch_guard.py","enabled":true,"id":"persistent-luci-branch-guard","notify_on":"failure","retry":false,"run_as":"shell","runtime_profile":"direct_no_llm","schedule":"*/15 * * * *","tags":["mission-control","luci","persistent","worktree-pool","git"],"timeout":60,"title":"Keep luci-persistent on master and clean-fast-forward origin updates"}}
