virtual-insanity
← 리포트 목록

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_days
  • stale_death_candidate
  • stale_death_candidate_count
  • death_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.*라 소유권이 꼬인 상태다.

우선순위:

  1. analyst 4종 — com.openclaw.analyst-*: Hermes analyst 본체와 중복/소유권 정리 필요
  2. 생활 센서 4종 — cold/door/rain/late-lights: 집 알림이라 끊기면 체감됨
  3. webapp/orchestrator/otel/autopilot: 운영 backbone 성격이라 단순 kill 금지
  4. KPI/morning/weekly/TTS: 알림 품질 검증 후 Hermes label로 전환

6. 보류 8개

last_run이 비어 있는 상시 daemon/RunAtLoad 후보라서 inventory만으로 kill 금지.

  • com.openclaw.auto-dispatcher
  • com.openclaw.cf-tunnel
  • com.openclaw.claude-listener
  • com.openclaw.collab-review-loop
  • com.openclaw.dispatch-watcher
  • com.openclaw.hermes-tailer
  • com.openclaw.task-notifier
  • com.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