{"definition_raw":"---\nid: memory-extractor\ntitle: Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy\nschedule: \"30 */4 * * *\"\ntimeout: 1800\nretry: false\nbackground: true # MC-4942 U8: backgrounded \u2014 long-running, was stalling the tick\nenabled: true\nnotify_on: failure\nrun_as: shell\ncommand: \"flock -n /tmp/luci-memory-extractor.lock bash -c 'cd /home/lucienne/workspace/PKA && git pull --ff-only --quiet 2>/dev/null || true; PKA_EXTRACTION_PROVIDER=agy PKA_PERSONA=luci PKA_EXTRACTOR_MAX_CALLS=40 python3 hooks/session-memory-extractor.py --max-per-run 10' || echo 'memory-extractor: locked, skipping'\"\ntags: [infrastructure, memory, extractor, luci]\nruntime_profile: direct_mixed\n---\n\n**Phase 1 (2026-06-07): Luci-persona session-memory extraction.** Runs the shared\nextractor (`hooks/session-memory-extractor.py`) on Luci every 4h (offset :30) for the\n**luci** persona, scanning **Claude + Codex + Kimi + agy** sessions and publishing\ndurable memories to `Vault/memory/auto/luci/`. Mirrors the Mac LaunchAgent\n`com.elmar.pka-memory-extractor`.\n\n**Hermes is INCLUDED for Luci** (default `~/.hermes/sessions` \u2014 the Luci/main profile,\n224 session files). Iris is a **separate Hermes profile** at `~/.hermes/profiles/iris/`,\nso there is NO mixing \u2014 no content-splitter needed. **Iris capture is pending separately:**\nthe iris profile is active (its own gateway) but persists **no `session_*.json`** (its\nconversations live in `life.db`/gateway state), so the current Hermes adapter can't read\nit. Capturing Iris \u2192 `auto/iris/` needs either reconfiguring her Hermes to save sessions,\nor a `life.db` adapter (Phase 2b) \u2014 pending a decision on whether Iris should feed memory.\n\n**Safety:** bounded (`--max-per-run 10`, `PKA_EXTRACTOR_MAX_CALLS=40`), singleton\n`flock` lock, `PKA_EXTRACTION_PROVIDER=agy` (Google Antigravity / Gemini quota, not\nClaude subscription quota), and `runtime_profile: direct_mixed` to keep scheduler\nprovider accounting truthful. Completely independent of Mission Control. Heartbeat:\n`logs/extractor-heartbeat-luci.json`. Persona resolves to `luci` on `openclaw`\n(allowed-set resolver; `PKA_PERSONA=luci` is belt-and-braces).\n","id":"memory-extractor","last_run":{"duration_s":38.446182,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/413575.log","output":"","started_at":"2026-06-13T04:30:21.968270+02:00","status":"completed"},"next_run":"2026-06-13 08:30","next_run_iso":"2026-06-13T08:30:00+02:00","runs":[{"duration_s":38.446182,"finished_at":"2026-06-13T04:31:00.414721+02:00","id":413575,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/413575.log","output":"","started_at":"2026-06-13T04:30:21.968270+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":38.550848,"finished_at":"2026-06-13T00:31:00.472532+02:00","id":412871,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/412871.log","output":"","started_at":"2026-06-13T00:30:21.921425+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":276.675462,"finished_at":"2026-06-12T20:35:00.395489+02:00","id":412173,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/412173.log","output":"","started_at":"2026-06-12T20:30:23.719655+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":379.418714,"finished_at":"2026-06-12T16:37:00.467681+02:00","id":411482,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/411482.log","output":"","started_at":"2026-06-12T16:30:41.048516+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":458.725748,"finished_at":"2026-06-12T12:38:00.470001+02:00","id":410787,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/410787.log","output":"","started_at":"2026-06-12T12:30:21.743299+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":222.102137,"finished_at":"2026-06-12T08:34:00.449639+02:00","id":410106,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/410106.log","output":"","started_at":"2026-06-12T08:30:18.347263+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":44.552231,"finished_at":"2026-06-12T04:31:00.476952+02:00","id":409408,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/409408.log","output":"","started_at":"2026-06-12T04:30:15.924180+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":224.242042,"finished_at":"2026-06-12T00:34:00.142035+02:00","id":408707,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/408707.log","output":"","started_at":"2026-06-12T00:30:15.899498+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":43.34146,"finished_at":"2026-06-11T20:31:00.454028+02:00","id":407975,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/407975.log","output":"","started_at":"2026-06-11T20:30:17.111219+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":277.260633,"finished_at":"2026-06-11T16:35:00.238177+02:00","id":407232,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/407232.log","output":"","started_at":"2026-06-11T16:30:22.976591+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":null,"finished_at":"2026-06-11T13:01:36.871311+02:00","id":406594,"log_path":null,"output":"Stale lock killed after 1874s","started_at":"2026-06-11 11:01:36","status":"timeout","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":217.803977,"finished_at":"2026-06-11T12:34:00.285008+02:00","id":406485,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/406485.log","output":"","started_at":"2026-06-11T12:30:22.479627+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":4.774833,"finished_at":"2026-06-11T08:30:23.029599+02:00","id":405742,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/405742.log","output":"","started_at":"2026-06-11T08:30:18.251535+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":3.268598,"finished_at":"2026-06-11T04:30:20.307299+02:00","id":405042,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/405042.log","output":"","started_at":"2026-06-11T04:30:17.035639+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":169.427076,"finished_at":"2026-06-11T00:33:05.911916+02:00","id":404334,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/404334.log","output":"","started_at":"2026-06-11T00:30:16.481255+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":199.933604,"finished_at":"2026-06-10T20:33:36.374248+02:00","id":403612,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/403612.log","output":"","started_at":"2026-06-10T20:30:16.437581+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":196.850881,"finished_at":"2026-06-10T16:33:32.784281+02:00","id":402895,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/402895.log","output":"","started_at":"2026-06-10T16:30:15.930080+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":270.232429,"finished_at":"2026-06-10T12:34:58.450238+02:00","id":402195,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/402195.log","output":"","started_at":"2026-06-10T12:30:28.214772+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":284.620351,"finished_at":"2026-06-10T08:34:55.309254+02:00","id":401485,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/401485.log","output":"","started_at":"2026-06-10T08:30:10.686021+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"},{"duration_s":298.213002,"finished_at":"2026-06-10T04:35:07.422700+02:00","id":400787,"log_path":"/home/lucienne/workspace/logs/task-runs/memory-extractor/400787.log","output":"","started_at":"2026-06-10T04:30:09.206418+02:00","status":"completed","task_id":"memory-extractor","task_name":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"}],"runs_limit":20,"schedule":"30 */4 * * *","schedule_label":{"description":"Every 4 hours at :30","is_custom":false,"label":"Every 4h","sort":3,"sort_time":""},"stats":{"avg_duration":362.2193032285714,"completed":35,"failed":0,"timeout":1,"total":36},"task":{"_description":"**Phase 1 (2026-06-07): Luci-persona session-memory extraction.** Runs the shared\nextractor (`hooks/session-memory-extractor.py`) on Luci every 4h (offset :30) for the\n**luci** persona, scanning **Claude + Codex + Kimi + agy** sessions and publishing\ndurable memories to `Vault/memory/auto/luci/`. Mirrors the Mac LaunchAgent\n`com.elmar.pka-memory-extractor`.\n\n**Hermes is INCLUDED for Luci** (default `~/.hermes/sessions` \u2014 the Luci/main profile,\n224 session files). Iris is a **separate Hermes profile** at `~/.hermes/profiles/iris/`,\nso there is NO mixing \u2014 no content-splitter needed. **Iris capture is pending separately:**\nthe iris profile is active (its own gateway) but persists **no `session_*.json`** (its\nconversations live in `life.db`/gateway state), so the current Hermes adapter can't read\nit. Capturing Iris \u2192 `auto/iris/` needs either reconfiguring her Hermes to save sessions,\nor a `life.db` adapter (Phase 2b) \u2014 pending a decision on whether Iris should feed memory.\n\n**Safety:** bounded (`--max-per-run 10`, `PKA_EXTRACTOR_MAX_CALLS=40`), singleton\n`flock` lock, `PKA_EXTRACTION_PROVIDER=agy` (Google Antigravity / Gemini quota, not\nClaude subscription quota), and `runtime_profile: direct_mixed` to keep scheduler\nprovider accounting truthful. Completely independent of Mission Control. Heartbeat:\n`logs/extractor-heartbeat-luci.json`. Persona resolves to `luci` on `openclaw`\n(allowed-set resolver; `PKA_PERSONA=luci` is belt-and-braces).","_file":"memory-extractor.md","_path":"/home/lucienne/workspace/tasks/memory-extractor.md","background":true,"command":"flock -n /tmp/luci-memory-extractor.lock bash -c 'cd /home/lucienne/workspace/PKA && git pull --ff-only --quiet 2>/dev/null || true; PKA_EXTRACTION_PROVIDER=agy PKA_PERSONA=luci PKA_EXTRACTOR_MAX_CALLS=40 python3 hooks/session-memory-extractor.py --max-per-run 10' || echo 'memory-extractor: locked, skipping'","enabled":true,"id":"memory-extractor","notify_on":"failure","retry":false,"run_as":"shell","runtime_profile":"direct_mixed","schedule":"30 */4 * * *","tags":["infrastructure","memory","extractor","luci"],"timeout":1800,"title":"Session memory extractor (Luci persona) \u2014 Claude/Codex/Kimi/agy"}}
