← 리포트 목록
dual_run_compare v2 + 31개 2주 relabel 후보 분류
2026-04-24
dual
[openclaw, hermes, dual-run, stale-verdict, relabel]
dual_run_compare v2 + 31개 2주 relabel 후보 분류
결론
dual_run_compare.py에 stale verdict를 추가했다. 이제 OpenClaw job last_run이 7일 이상 경과하면 artifact similarity가 낮아도 STALE_DEATH_CANDIDATE로 분류한다.
오늘 즉시 실행 결과:
verdict=OpenClaw 사망 OK 후보 comparable=5 pass95=0 stale=6 death_candidates=6
31개 2주 relabel 후보 분류:
- 즉시 사망 권고(stale 7일+): 4개
- 이관/라벨 전환 필요(active partial): 19개
- 보류(last_run 미확인 daemon): 8개
새 inventory 매트릭스:
- 즉시 사망 가능: oil-supply 3 + stale 4 = 7개
- 이관 필요: 기존 active Hermes 미존재 4 + active partial 19 = 23개
- 보류: 8개
1. dual_run_compare.py 강화 내용
대상:
/Users/ron/.hermes/workspace/scripts/admin/dual_run_compare.py
변경:
- OpenClaw job의
state.lastRunAtMs/last_run_at을 operational evidence로 사용 - job-backed candidate는 artifact mtime보다 job last_run을 우선
- OpenClaw age >= 7d이면
STALE_DEATH_CANDIDATE - structured log에도 아래 필드 추가
openclaw_age_daysstale_death_candidatestale_death_candidate_countdeath_candidate_count
검증:
python3 -m py_compile dual_run_compare.py: OK
수동 실행: OK
생성 보고서: /Users/ron/knowledge-agent/400-reports/20260424_dual_run_compare.md
structured summary: /Users/ron/.hermes/workspace/memory/dual_run_logs/latest_summary.json
2. dual_run_compare v2 현재 판정
| candidate | status | OpenClaw age | similarity |
| gmail-newsletter | STALE_DEATH_CANDIDATE | 12.3d | 3.1% |
| cmux-cowork | STALE_DEATH_CANDIDATE | 12.0d | 7.0% |
| analyst-macro | STALE_DEATH_CANDIDATE | 14.1d | 3.0% |
| analyst-fundamental | STALE_DEATH_CANDIDATE | 14.1d | 3.4% |
| analyst-technical | STALE_DEATH_CANDIDATE | 14.1d | 0.0% |
| analyst-pm | STALE_DEATH_CANDIDATE | 14.1d | 3.0% |
해석: 95% diff 통과는 0개지만, OpenClaw job 자체가 12~14일 stale라 비교 불일치가 “위험”이 아니라 “이미 죽은 상태”를 뜻한다.
3. 31개 2주 relabel 후보 분류
원천:
/Users/ron/knowledge-agent/400-reports/260424_openclaw_kill_inventory.md
기준:
last_run >= 7일 경과: 즉시 사망 권고last_run 최근 + partial: uses .hermes path: OpenClaw label만 남은 상태 → Hermes LaunchAgent/label 이관 또는 relabel 필요last_run 미확인: daemon/RunAtLoad/상시 프로세스 가능성 → 즉시 kill 보류
| 잡 | 주기 | last_run | age | 분류 | script |
|---|---|---|---|---|---|
| ai.openclaw.memory-guardian | interval 60s | 2026-04-15T16:19:18+09:00 | 8.9d | 즉시 사망 권고 | memory_guardian.py |
| ai.openclaw.staged-boot | - | 2026-04-15T16:27:40+09:00 | 8.9d | 즉시 사망 권고 | staged_boot.sh |
| com.openclaw.analyst-fundamental | calendar {'Hour': 7, 'Minute': 10} | 2026-04-24T07:10:14+09:00 | 0.3d | 이관/라벨 전환 필요 | analyst_common_wrapper.sh |
| com.openclaw.analyst-macro | calendar {'Hour': 7, 'Minute': 0} | 2026-04-24T07:00:27+09:00 | 0.3d | 이관/라벨 전환 필요 | analyst_common_wrapper.sh |
| com.openclaw.analyst-pm | calendar {'Hour': 7, 'Minute': 35} | 2026-04-24T07:35:06+09:00 | 0.3d | 이관/라벨 전환 필요 | analyst_common_wrapper.sh |
| com.openclaw.analyst-technical | calendar {'Hour': 7, 'Minute': 20} | 2026-04-24T07:20:02+09:00 | 0.3d | 이관/라벨 전환 필요 | analyst_common_wrapper.sh |
| com.openclaw.auto-dispatcher | - | - | - | 보류(last_run 미확인) | auto_dispatcher.sh |
| com.openclaw.autopilot-sweeper | interval 60s | 2026-04-24T14:04:19+09:00 | 0.0d | 이관/라벨 전환 필요 | autopilot_sweeper.py |
| com.openclaw.blueprint-updater | calendar [{'Hour': 6, 'Minute': 0}, {'Hour': 18, 'Minute': 0}] | 2026-04-24T06:00:01+09:00 | 0.3d | 이관/라벨 전환 필요 | blueprint_updater.py |
| com.openclaw.cf-tunnel | - | - | - | 보류(last_run 미확인) | cf_tunnel_wrapper.sh |
| com.openclaw.claude-listener | RunAtLoad | - | - | 보류(last_run 미확인) | claude_telegram_listener.py |
| com.openclaw.cold-alert | calendar {'Hour': 7, 'Minute': 10} | 2026-04-24T07:10:00+09:00 | 0.3d | 이관/라벨 전환 필요 | auto_cold_alert.sh |
| com.openclaw.collab-review-loop | - | - | - | 보류(last_run 미확인) | collab_review_loop.py |
| com.openclaw.dispatch-watcher | - | - | - | 보류(last_run 미확인) | dispatch_watcher.sh |
| com.openclaw.door-alert | interval 60s | 2026-04-24T14:04:36+09:00 | 0.0d | 이관/라벨 전환 필요 | auto_door_alert.sh |
| com.openclaw.hermes-tailer | - | - | - | 보류(last_run 미확인) | hermes_otel_tailer.py |
| com.openclaw.inbox-triage | calendar {'Hour': 3, 'Minute': 45} | 2026-04-15T16:25:28+09:00 | 8.9d | 즉시 사망 권고 | cowork_daily_review.sh |
| com.openclaw.kpi-daily | calendar {'Hour': 7, 'Minute': 45} | 2026-04-24T07:45:02+09:00 | 0.3d | 이관/라벨 전환 필요 | kpi_telegram_wrapper.py |
| com.openclaw.kpi-weekly | calendar {'Hour': 7, 'Minute': 50, 'Weekday': 1} | 2026-04-20T07:50:02+09:00 | 4.3d | 이관/라벨 전환 필요 | kpi_telegram_wrapper.py |
| com.openclaw.late-lights | calendar {'Hour': 23, 'Minute': 0} | 2026-04-23T23:00:01+09:00 | 0.6d | 이관/라벨 전환 필요 | auto_late_lights.sh |
| com.openclaw.morning-briefing-telegram | calendar {'Hour': 6, 'Minute': 45} | 2026-04-24T06:45:09+09:00 | 0.3d | 이관/라벨 전환 필요 | morning_briefing_wrapper.sh |
| com.openclaw.morning-routine | calendar {'Hour': 6, 'Minute': 30} | 2026-04-24T06:30:31+09:00 | 0.3d | 이관/라벨 전환 필요 | tts_morning.sh |
| com.openclaw.otel-collector | - | 2026-04-24T14:04:39+09:00 | 0.0d | 이관/라벨 전환 필요 | run_collector.py |
| com.openclaw.rain-alert | calendar {'Hour': 7, 'Minute': 15} | 2026-04-24T07:15:03+09:00 | 0.3d | 이관/라벨 전환 필요 | auto_rain_alert.sh |
| com.openclaw.ron-orchestrator | interval 300s | 2026-04-24T14:03:47+09:00 | 0.0d | 이관/라벨 전환 필요 | ron_orchestrator_controller.py |
| com.openclaw.sihwang-webapp | - | 2026-04-24T14:04:25+09:00 | 0.0d | 이관/라벨 전환 필요 | run_webapp.py |
| com.openclaw.task-notifier | - | - | - | 보류(last_run 미확인) | task_notifier.py |
| com.openclaw.telegram-bridge | - | - | - | 보류(last_run 미확인) | telegram_bridge.py |
| com.openclaw.tts-webhook | - | 2026-04-16T14:02:54+09:00 | 8.0d | 즉시 사망 권고 | tts_webhook.py |
| com.openclaw.weekly-briefing-telegram | calendar {'Weekday': 1, 'Hour': 7, 'Minute': 0} | 2026-04-20T07:00:05+09:00 | 4.3d | 이관/라벨 전환 필요 | weekly_briefing_wrapper.sh |
| com.openclaw.weekly-report | calendar {'Weekday': 0, 'Hour': 20, 'Minute': 0} | 2026-04-19T20:00:24+09:00 | 4.8d | 이관/라벨 전환 필요 | tts_weekly.sh |
4. 즉시 사망 권고 4개
| 잡 | 근거 | 권고 |
|---|---|---|
ai.openclaw.memory-guardian |
last_run 2026-04-15, 8.9d stale | OpenClaw label bootout/archive 후보 |
ai.openclaw.staged-boot |
last_run 2026-04-15, 8.9d stale | OpenClaw label bootout/archive 후보 |
com.openclaw.inbox-triage |
last_run 2026-04-15, 8.9d stale | OpenClaw label bootout/archive 후보 |
com.openclaw.tts-webhook |
last_run 2026-04-16, 8.0d stale | OpenClaw label bootout/archive 후보 |
5. 이관/라벨 전환 필요 19개
이 그룹은 실제로 최근 실행되고 있으므로 “죽어 있다”가 아니다. 다만 실행 경로는 .hermes인데 launchd label은 com.openclaw.*라 소유권이 꼬인 상태다.
우선순위:
- analyst 4종 —
com.openclaw.analyst-*: Hermes analyst 본체와 중복/소유권 정리 필요 - 생활 센서 4종 — cold/door/rain/late-lights: 집 알림이라 끊기면 체감됨
- webapp/orchestrator/otel/autopilot: 운영 backbone 성격이라 단순 kill 금지
- KPI/morning/weekly/TTS: 알림 품질 검증 후 Hermes label로 전환
6. 보류 8개
last_run이 비어 있는 상시 daemon/RunAtLoad 후보라서 inventory만으로 kill 금지.
com.openclaw.auto-dispatchercom.openclaw.cf-tunnelcom.openclaw.claude-listenercom.openclaw.collab-review-loopcom.openclaw.dispatch-watchercom.openclaw.hermes-tailercom.openclaw.task-notifiercom.openclaw.telegram-bridge
필요한 추가 확인: launchctl print gui/$(id -u)/<label>, 실제 PID, 포트/listen 여부, Hermes 동등 daemon 존재 여부.
7. 최종 매트릭스
| 분류 | 수 | 설명 |
|---|---|---|
| 즉시 사망 가능 | 7 | oil-supply 3 + 2주 relabel stale 4 |
| 이관 필요 | 23 | 기존 active Hermes 미존재 4 + active partial relabel 19 |
| 보류 | 8 | last_run 미확인 daemon |
자체평가
| 기준 | 점수 | 근거 |
|---|---|---|
| 정확성 | 4.3/5 | inventory의 31개 2주 후보를 직접 파싱하고 last_run 기준으로 분류 |
| 완성도 | 4.2/5 | script v2, structured summary, 31개 매트릭스, 새 총계 포함 |
| 검증 | 4.2/5 | py_compile 및 dual_run_compare 수동 실행 확인 |
| 최소 변경 | 4.5/5 | 비교 스크립트만 강화, kill/bootout은 실행하지 않음 |
종합: 4.3/5
DONE