Going-forward Iris-persona session-memory extraction. Iris is a separate
Hermes profile (~/.hermes/profiles/iris/) whose conversations live in her own
state.db, NOT session_*.json (write_json_snapshots off). The shared extractor's
Hermes adapter only reads session_*.json, so scripts/iris_memory_capture.py is
the bridge: it exports Iris's RECENT non-cron sessions (telegram + cli) from
state.db to a temp dir of session_*.json, then runs
hooks/session-memory-extractor.py scoped to PKA_PERSONA=iris over that dir,
publishing durable memories to Vault/memory/auto/iris/.
Why the bridge, not write_json_snapshots: enabling snapshots on Iris's profile
would need a gateway restart (disrupts active Iris use) and create JSON files
needing pruning. The export bridge reads state.db read-only, writes temp JSON it
deletes, and re-uses the extractor's .processed-ledger.json (in auto/iris/) to
dedup already-seen sessions — so each run only triggers LLM calls for genuinely new
conversations.
Schedule offset: 0 */4 (Luci-persona extractor is 30 */4). They share ONE
global lock (PKA_ROOT/.session-extractor.lock), so the 30-min offset prevents
collision; each run is bounded (--max-per-run 10, PKA_EXTRACTOR_MAX_CALLS=40)
and finishes well inside the gap. Separate flock /tmp/iris-memory-extractor.lock
guards the task layer.
Window: IRIS_WINDOW_HOURS=8 (overlaps the 4h cadence so nothing is missed at
boundaries). The one-off full backlog is run with IRIS_BACKLOG_ALL=1 (recovered
2026-06-08). PKA_EXTRACTION_PROVIDER=agy routes extraction through Google
Antigravity / Gemini quota, not Claude subscription quota; runtime_profile:
direct_mixed keeps scheduler provider accounting truthful. Independent of Mission
Control.
flock -n /tmp/iris-memory-extractor.lock bash -c 'cd /home/lucienne/workspace/PKA && git pull --ff-only --quiet 2>/dev/null || true; PKA_EXTRACTION_PROVIDER=agy IRIS_WINDOW_HOURS=8 IRIS_MAX_PER_RUN=10 PKA_EXTRACTOR_MAX_CALLS=40 python3 scripts/iris_memory_capture.py' || echo 'memory-extractor-iris: locked, skipping'
Format: minute hour day month weekday
| Started | Status | Duration | Log |
|---|---|---|---|
| 2h ago | completed | 15s | View log |
| 6h ago | completed | 3.2m | View log |
| 10h ago | completed | 3.5m | View log |
| 14h ago | completed | 3.6m | View log |
| 18h ago | completed | 13s | View log |
| 22h ago | completed | 3.8m | View log |
| 1d ago | completed | 13s | View log |
| 1d ago | completed | 13s | View log |
| 1d ago | completed | 36s | View log |
| 2d ago | completed | 3.5m | View log |
| 2d ago | timeout Stale lock killed after 1889s |
- | View log |
| 2d ago | completed | 3.5m | View log |
| 2d ago | completed | 3.4m | View log |
| 2d ago | completed | 3.4m | View log |
| 2d ago | completed | 3.5m | View log |
| 2d ago | completed | 3.7m | View log |
| 3d ago | completed | 3.3m | View log |
| 3d ago | completed | 2.4m | View log |
| 3d ago | completed | 16s | View log |
| 3d ago | completed | 3s | View log |
| 3d ago | completed | 2.3m | View log |
| 3d ago | completed | 30s | View log |
| 4d ago | completed | 11s | View log |
| 4d ago | completed | 3s | View log |
| 4d ago | completed | 3s | View log |
| 4d ago | completed | 2s | View log |
| 4d ago | completed | 2s | View log |
| 4d ago | completed | 1.7m | View log |
| 5d ago | completed | 2s | View log |
| 5d ago | completed | 0s | View log |
Mission Control is the board for your delegated work: requests come in, Luci coordinates the next step, and evidence stays visible for review.
Luci is your always-on assistant for routing, status updates, and follow-through. Operators can still open deeper evidence when needed.