{"definition_raw":"---\nid: memory-audit-monthly\ntitle: Monthly memory hygiene audit\nschedule: \"0 7 1 * *\"\ntimeout: 60\nretry: false\nenabled: true\nnotify_on: failure\nrun_as: shell\ncommand: \"python3 /home/lucienne/workspace/scripts/memory_audit.py > /tmp/memaudit.txt 2>&1 || python3 /home/lucienne/workspace/scripts/notify.py \\\"Memory hygiene audit found issues \u2014 triage needed:\\\" \\\"$(cat /tmp/memaudit.txt)\\\"\"\ntags: [memory, maintenance]\nruntime_profile: direct_python\n---\n**OVERRIDES runtime profile:** uses `direct_python` (plain Python, no model) because the command chain never invokes the `claude` CLI or any LLM API \u2014 pure-infra task; scheduler provider env injection is a no-op (MC-4942 U12 sweep).\n\nFirst of each month, 07:00 SAST. Read-only structural audit of Luci's\nauto-memory store (`~/.claude/projects/-home-lucienne-workspace/memory/`).\n\nDetects: orphan files (not in MEMORY.md index), dead index links, dead\nwikilinks, invalid frontmatter types, stale snapshot memories (>90d).\n\n`memory_audit.py` exits 0 when clean and non-zero (issue-category count)\nwhen it finds problems \u2014 the `||` branch fires a Telegram report only on\nfindings. Clean runs are silent. The audit does NOT auto-fix; Luci triages\nthe report (conservative-retirement rule \u2014 present, don't cut).\n\n`runtime_profile: claude_glm` is nominal \u2014 the command is pure Python with\nno `claude`/API invocation, matching the sibling memory-backup task.\n","id":"memory-audit-monthly","last_run":{"duration_s":0.390523,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-audit-monthly/396459.log","output":"Telegram send failed: HTTP Error 400: Bad Request\nSent\n","started_at":"2026-06-09T04:04:25.719836+02:00","status":"completed"},"next_run":"2026-07-01 07:00","next_run_iso":"2026-07-01T07:00:00+02:00","runs":[{"duration_s":0.390523,"finished_at":"2026-06-09T04:04:26.113225+02:00","id":396459,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-audit-monthly/396459.log","output":"Telegram send failed: HTTP Error 400: Bad Request\nSent\n","started_at":"2026-06-09T04:04:25.719836+02:00","status":"completed","task_id":"memory-audit-monthly","task_name":"Monthly memory hygiene audit"}],"runs_limit":20,"schedule":"0 7 1 * *","schedule_label":{"description":"1st of month at 07:00","is_custom":false,"label":"Monthly","sort":8,"sort_time":"07:00"},"stats":{"avg_duration":0.390523,"completed":1,"failed":0,"timeout":0,"total":1},"task":{"_description":"**OVERRIDES runtime profile:** uses `direct_python` (plain Python, no model) because the command chain never invokes the `claude` CLI or any LLM API \u2014 pure-infra task; scheduler provider env injection is a no-op (MC-4942 U12 sweep).\n\nFirst of each month, 07:00 SAST. Read-only structural audit of Luci's\nauto-memory store (`~/.claude/projects/-home-lucienne-workspace/memory/`).\n\nDetects: orphan files (not in MEMORY.md index), dead index links, dead\nwikilinks, invalid frontmatter types, stale snapshot memories (>90d).\n\n`memory_audit.py` exits 0 when clean and non-zero (issue-category count)\nwhen it finds problems \u2014 the `||` branch fires a Telegram report only on\nfindings. Clean runs are silent. The audit does NOT auto-fix; Luci triages\nthe report (conservative-retirement rule \u2014 present, don't cut).\n\n`runtime_profile: claude_glm` is nominal \u2014 the command is pure Python with\nno `claude`/API invocation, matching the sibling memory-backup task.","_file":"memory-audit-monthly.md","_path":"/home/lucienne/workspace/tasks/memory-audit-monthly.md","command":"python3 /home/lucienne/workspace/scripts/memory_audit.py > /tmp/memaudit.txt 2>&1 || python3 /home/lucienne/workspace/scripts/notify.py \"Memory hygiene audit found issues \u2014 triage needed:\" \"$(cat /tmp/memaudit.txt)\"","enabled":true,"id":"memory-audit-monthly","notify_on":"failure","retry":false,"run_as":"shell","runtime_profile":"direct_python","schedule":"0 7 1 * *","tags":["memory","maintenance"],"timeout":60,"title":"Monthly memory hygiene audit"}}
