{"definition_raw":"---\nid: ccgram-update-check\ntitle: ccgram upstream watcher \u2014 clean cherry-pick fixes + #105 adoption status\nschedule: \"30 6 * * *\"\ntimeout: 120\nretry: false\nenabled: true\nnotify_on: failure\nnotify_to: mc\nrun_as: shell\ncommand: \"python3 /home/lucienne/workspace/scripts/check_ccgram_update.py\"\ntags: [infrastructure, ccgram, upgrade]\nruntime_profile: direct_mixed\n---\n\n**OVERRIDES runtime profile:** pure git + python (no claude CLI); declared direct_mixed.\n\nDaily 08:30 SAST (06:30 UTC). We run a FORK (branch `feat/mc-4139-addtask`) that\ndepends on foreign/external tmux-session adoption, which upstream removed in #105.\nA blind upgrade loses it (see MC-4586). So this watcher does not nag about\nreleases \u2014 it surfaces only what's safe to take:\n\n1. **#105 adoption status.** Checks whether the latest upstream `session_map.py`\n   still gates adoption to its own tmux session (sentinel: \"Only native entries\n   \u2026 are processed\"). If that gate disappears, foreign-session adoption may be\n   back \u2192 high-signal Telegram alert (revisit the MC-4586 re-merge).\n\n2. **Clean cherry-pick fixes.** For each new upstream commit not yet in our fork,\n   categorises removal/fix/feature and DRY-RUN cherry-picks every fix candidate\n   in a throwaway git worktree (never the live tree). Telegrams Luci the exact\n   `git cherry-pick <sha>` commands that apply cleanly \u2014 a human reviews and\n   applies. **Never auto-applies** (live bot; release-note wording has misled us\n   twice \u2014 #105 read as \"adoption\" was actually a removal).\n\nDe-dupes via `state/ccgram_upstream_seen.json` (alerts only when upstream HEAD\nmoves or adoption flips). `notify_on: failure` = scheduler pings only on script\nerror; the script itself sends the findings notification. Old keyword-matching\nshell version (`check_ccgram_update.sh`) is superseded but left in place.\n","id":"ccgram-update-check","last_run":{"duration_s":1.639437,"log_path":"/home/lucienne/workspace/logs/task-runs/ccgram-update-check/409754.log","output":"adoption=STILL REMOVED in v3.5.2 (own-session gate present); latest=v3.5.2; clean_fixes=0 conflict=3\n","started_at":"2026-06-12T06:30:00.598163+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.639437,"finished_at":"2026-06-12T06:30:02.319111+02:00","id":409754,"log_path":"/home/lucienne/workspace/logs/task-runs/ccgram-update-check/409754.log","output":"adoption=STILL REMOVED in v3.5.2 (own-session gate present); latest=v3.5.2; clean_fixes=0 conflict=3\n","started_at":"2026-06-12T06:30:00.598163+02:00","status":"completed","task_id":"ccgram-update-check","task_name":"ccgram upstream watcher \u2014 clean cherry-pick fixes +"},{"duration_s":1.716756,"finished_at":"2026-06-11T06:30:02.286699+02:00","id":405385,"log_path":"/home/lucienne/workspace/logs/task-runs/ccgram-update-check/405385.log","output":"adoption=STILL REMOVED in v3.5.2 (own-session gate present); latest=v3.5.2; clean_fixes=0 conflict=3\n","started_at":"2026-06-11T06:30:00.566104+02:00","status":"completed","task_id":"ccgram-update-check","task_name":"ccgram upstream watcher \u2014 clean cherry-pick fixes +"},{"duration_s":1.843113,"finished_at":"2026-06-10T06:30:02.284800+02:00","id":401115,"log_path":"/home/lucienne/workspace/logs/task-runs/ccgram-update-check/401115.log","output":"adoption=STILL REMOVED in v3.5.2 (own-session gate present); latest=v3.5.2; clean_fixes=0 conflict=3\n","started_at":"2026-06-10T06:30:00.425809+02:00","status":"completed","task_id":"ccgram-update-check","task_name":"ccgram upstream watcher \u2014 clean cherry-pick fixes +"},{"duration_s":1.621749,"finished_at":"2026-06-09T06:30:02.295282+02:00","id":396850,"log_path":"/home/lucienne/workspace/logs/task-runs/ccgram-update-check/396850.log","output":"adoption=STILL REMOVED in v3.5.2 (own-session gate present); latest=v3.5.2; clean_fixes=0 conflict=3\n","started_at":"2026-06-09T06:30:00.566679+02:00","status":"completed","task_id":"ccgram-update-check","task_name":"ccgram upstream watcher \u2014 clean cherry-pick fixes +"},{"duration_s":1.628901,"finished_at":"2026-06-08T06:30:02.210112+02:00","id":392740,"log_path":"/home/lucienne/workspace/logs/task-runs/ccgram-update-check/392740.log","output":"adoption=STILL REMOVED in v3.5.2 (own-session gate present); latest=v3.5.2; clean_fixes=0 conflict=3\n","started_at":"2026-06-08T06:30:00.566819+02:00","status":"completed","task_id":"ccgram-update-check","task_name":"ccgram upstream watcher \u2014 clean cherry-pick fixes +"},{"duration_s":1.702217,"finished_at":"2026-06-07T06:30:02.393386+02:00","id":388430,"log_path":"/home/lucienne/workspace/logs/task-runs/ccgram-update-check/388430.log","output":"adoption=STILL REMOVED in v3.5.2 (own-session gate present); latest=v3.5.2; clean_fixes=0 conflict=3\n","started_at":"2026-06-07T06:30:00.583778+02:00","status":"completed","task_id":"ccgram-update-check","task_name":"ccgram upstream watcher \u2014 clean cherry-pick fixes +"},{"duration_s":1.790375,"finished_at":"2026-06-06T06:30:02.180281+02:00","id":383714,"log_path":"/home/lucienne/workspace/logs/task-runs/ccgram-update-check/383714.log","output":"adoption=STILL REMOVED in v3.5.2 (own-session gate present); latest=v3.5.2; clean_fixes=0 conflict=3\n","started_at":"2026-06-06T06:30:00.385632+02:00","status":"completed","task_id":"ccgram-update-check","task_name":"ccgram upstream watcher \u2014 clean cherry-pick fixes +"}],"runs_limit":20,"schedule":"30 6 * * *","schedule_label":{"description":"Daily at 06:30","is_custom":false,"label":"Daily","sort":4,"sort_time":"06:30"},"stats":{"avg_duration":1.7060782857142858,"completed":7,"failed":0,"timeout":0,"total":7},"task":{"_description":"**OVERRIDES runtime profile:** pure git + python (no claude CLI); declared direct_mixed.\n\nDaily 08:30 SAST (06:30 UTC). We run a FORK (branch `feat/mc-4139-addtask`) that\ndepends on foreign/external tmux-session adoption, which upstream removed in #105.\nA blind upgrade loses it (see MC-4586). So this watcher does not nag about\nreleases \u2014 it surfaces only what's safe to take:\n\n1. **#105 adoption status.** Checks whether the latest upstream `session_map.py`\n   still gates adoption to its own tmux session (sentinel: \"Only native entries\n   \u2026 are processed\"). If that gate disappears, foreign-session adoption may be\n   back \u2192 high-signal Telegram alert (revisit the MC-4586 re-merge).\n\n2. **Clean cherry-pick fixes.** For each new upstream commit not yet in our fork,\n   categorises removal/fix/feature and DRY-RUN cherry-picks every fix candidate\n   in a throwaway git worktree (never the live tree). Telegrams Luci the exact\n   `git cherry-pick <sha>` commands that apply cleanly \u2014 a human reviews and\n   applies. **Never auto-applies** (live bot; release-note wording has misled us\n   twice \u2014 #105 read as \"adoption\" was actually a removal).\n\nDe-dupes via `state/ccgram_upstream_seen.json` (alerts only when upstream HEAD\nmoves or adoption flips). `notify_on: failure` = scheduler pings only on script\nerror; the script itself sends the findings notification. Old keyword-matching\nshell version (`check_ccgram_update.sh`) is superseded but left in place.","_file":"ccgram-update-check.md","_path":"/home/lucienne/workspace/tasks/ccgram-update-check.md","command":"python3 /home/lucienne/workspace/scripts/check_ccgram_update.py","enabled":true,"id":"ccgram-update-check","notify_on":"failure","notify_to":"mc","retry":false,"run_as":"shell","runtime_profile":"direct_mixed","schedule":"30 6 * * *","tags":["infrastructure","ccgram","upgrade"],"timeout":120,"title":"ccgram upstream watcher \u2014 clean cherry-pick fixes +"}}
