virtual-insanity
← 리포트 목록

batch_M_real

2026-04-14 hermes

Hermes migration batch M real — 2026-04-14

결론

  • batch M 최종 실제 이전: 5개 완료. 완료된 5개는 Hermes enabled/scheduled, OpenClaw enabled=false.
  • 삭제 없음. LaunchAgents 변경 없음. shared/llm.py, shared/cycle_base.py 변경 없음. Gateway PID 63520 유지 확인.
  • batch K와 겹친 2개(vault-flow-health, sector-research-daily)는 batch M 중복 잡을 pause/yield하고 K 소유 잡을 유지했다.
  • strict dual-run 실패 항목은 Hermes 비활성 + OpenClaw enabled 유지로 rollback했다.

최종 이전 5개

OpenClaw id Hermes id schedule 변환 dual-run 최종 상태 evidence
job-16806fbe ocM-M003-analyst-backtest 35 9 * * * shell analyst_prediction_backfill.py 1:PASS
2:PASS
3:PASS
Hermes scheduled enabled=True / OpenClaw enabled=False /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M003-analyst-backtest/cycle-1/20260414_150949_job-16806fbe_ocM-M003-analyst-backtest.json
/Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M003-analyst-backtest/cycle-2/20260414_150950_job-16806fbe_ocM-M003-analyst-backtest.json
/Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M003-analyst-backtest/cycle-3/20260414_150951_job-16806fbe_ocM-M003-analyst-backtest.json
skill-health ocM-M007-skill-health 10 8 * * 1 shell skill_health.py 1:PASS
2:PASS
3:PASS
Hermes scheduled enabled=True / OpenClaw enabled=False /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M007-skill-health/cycle-1/20260414_152328_skill-health_ocM-M007-skill-health.json
/Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M007-skill-health/cycle-2/20260414_152329_skill-health_ocM-M007-skill-health.json
/Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M007-skill-health/cycle-3/20260414_152330_skill-health_ocM-M007-skill-health.json
intelligence-market-indicator-tracker ocM-M014-market-indicator-tracker 5 7,9,11,13,15,17 * * 1-5 shell market_indicator_tracker.py --notify 1:PASS
2:PASS
3:PASS
Hermes scheduled enabled=True / OpenClaw enabled=False /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M014-market-indicator-tracker/cycle-1/20260414_152505_intelligence-market-indicator-tracker_ocM-M014-market-indicator-tracker.json
/Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M014-market-indicator-tracker/cycle-2/20260414_152507_intelligence-market-indicator-tracker_ocM-M014-market-indicator-tracker.json
/Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M014-market-indicator-tracker/cycle-3/20260414_152509_intelligence-market-indicator-tracker_ocM-M014-market-indicator-tracker.json
semiconductor-report ocM-M017-semiconductor-report 0 7 * * 1 shell semiconductor_cycle_tracker.py --report --notify 1:PASS
2:PASS
3:PASS
Hermes scheduled enabled=True / OpenClaw enabled=False /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M017-semiconductor-report/cycle-1/20260414_153116_semiconductor-report_ocM-M017-semiconductor-report.json
/Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M017-semiconductor-report/cycle-2/20260414_153118_semiconductor-report_ocM-M017-semiconductor-report.json
/Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M017-semiconductor-report/cycle-3/20260414_153119_semiconductor-report_ocM-M017-semiconductor-report.json
intelligence-blog-monitor ocM-M019-blog-monitor every 6h → interval 360m shell blog_monitor.py --notify 1:PASS
2:PASS
3:PASS
Hermes scheduled enabled=True / OpenClaw enabled=False /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M019-blog-monitor/cycle-1/20260414_153237_intelligence-blog-monitor_ocM-M019-blog-monitor.json
/Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M019-blog-monitor/cycle-2/20260414_153239_intelligence-blog-monitor_ocM-M019-blog-monitor.json
/Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M019-blog-monitor/cycle-3/20260414_153240_intelligence-blog-monitor_ocM-M019-blog-monitor.json

중복 감지 및 정리

항목 조치 현재 상태
vault-flow-health / ocM-M001-vault-flow-health M에서도 3회 PASS했지만 batch K ocK-K004-vault-flow와 중복 확인. M job pause/yield. OpenClaw는 K 소유로 disabled, K Hermes scheduled
sector-research-daily / ocM-M004-sector-research M에서도 3회 PASS했지만 batch K ocK-K000-sector-research와 중복 확인. M job pause/yield. OpenClaw는 K 소유로 disabled, K Hermes scheduled
job-16806fbe batch K가 중복을 감지하고 M으로 yield. M ocM-M003-analyst-backtest가 최종 소유

Rollback / 미이전 항목

OpenClaw id Hermes id 실패 이유 최종 조치 evidence
daily-system-validator ocM-M000-daily-system-validator strict_diff_mismatch Hermes enabled=False state=paused; OpenClaw enabled=True /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M000-daily-system-validator/cycle-1/20260414_150934_daily-system-validator_ocM-M000-daily-system-validator.json
morning-review ocM-M002-morning-review openclaw_failed, strict_diff_mismatch Hermes enabled=False state=paused; OpenClaw enabled=True /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M002-morning-review/cycle-1/20260414_150945_morning-review_ocM-M002-morning-review.json
nepcon-collector ocM-M005-nepcon-collector watch_path_missing Hermes enabled=False state=paused; OpenClaw enabled=False; note: other batch ocJ-J000-nepcon is active owner /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M005-nepcon-collector/cycle-1/20260414_151101_nepcon-collector_ocM-M005-nepcon-collector.json
e7de6599-f6f5-4ce7-b508-15634f225407 ocM-M006-domain-wiki-compiler openclaw_failed, hermes_exec_failed, watch_path_missing Hermes enabled=False state=paused; OpenClaw enabled=True /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M006-domain-wiki-compiler/cycle-1/20260414_151102_e7de6599-f6f5-4ce7-b508-15634f225407_ocM-M006-domain-wiki-compiler.json
vault-lint-daily ocM-M008-vault-lint-daily strict_diff_mismatch Hermes enabled=False state=paused; OpenClaw enabled=True /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M008-vault-lint-daily/cycle-1/20260414_152332_vault-lint-daily_ocM-M008-vault-lint-daily.json
daily-report ocM-M009-daily-report strict_diff_mismatch Hermes enabled=False state=paused; OpenClaw enabled=True /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M009-daily-report/cycle-1/20260414_152338_daily-report_ocM-M009-daily-report.json
task-briefing-morning ocM-M010-task-briefing-morning strict_diff_mismatch Hermes enabled=False state=paused; OpenClaw enabled=True /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M010-task-briefing-morning/cycle-1/20260414_152343_task-briefing-morning_ocM-M010-task-briefing-morning.json
daily-code-review ocM-M011-daily-code-review openclaw_failed, hermes_exec_failed, strict_diff_mismatch Hermes enabled=False state=paused; OpenClaw enabled=True /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M011-daily-code-review/cycle-1/20260414_152421_daily-code-review_ocM-M011-daily-code-review.json
critic-watcher-10m ocM-M012-critic-watcher watch_path_missing, strict_diff_mismatch Hermes enabled=False state=paused; OpenClaw enabled=True /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M012-critic-watcher/cycle-1/20260414_152454_critic-watcher-10m_ocM-M012-critic-watcher.json
bond-morning-poll ocM-M013-bond-morning-poll openclaw_failed, hermes_exec_failed, strict_diff_mismatch Hermes enabled=False state=paused; OpenClaw enabled=True /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M013-bond-morning-poll/cycle-1/20260414_152504_bond-morning-poll_ocM-M013-bond-morning-poll.json
vault_linker ocM-M016-vault-linker strict_diff_mismatch Hermes enabled=False state=paused; OpenClaw enabled=True /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M016-vault-linker/cycle-1/20260414_152627_vault_linker_ocM-M016-vault-linker.json
bond-daily-report ocM-M018-bond-daily-report watch_path_missing, strict_diff_mismatch Hermes enabled=False state=paused; OpenClaw enabled=True /Users/ron/.openclaw/workspace/verification/hermes-batch-M-real/ocM-M018-bond-daily-report/cycle-1/20260414_152825_bond-daily-report_ocM-M018-bond-daily-report.json

백업

  • /Users/ron/.hermes/cron/jobs.json.bak-batchM-additional-20260414152328
  • /Users/ron/.hermes/cron/jobs.json.bak-batchM-blog-nowatch-20260414153237
  • /Users/ron/.hermes/cron/jobs.json.bak-batchM-dedupe-20260414151902
  • /Users/ron/.hermes/cron/jobs.json.bak-batchM-finalfill-20260414152614
  • /Users/ron/.hermes/cron/jobs.json.bak-batchM-finalfill-20260414152627
  • /Users/ron/.hermes/cron/jobs.json.bak-batchM-more-20260414152421
  • /Users/ron/.hermes/cron/jobs.json.bak-batchM-paused-next-null-20260414153311
  • /Users/ron/.hermes/cron/jobs.json.bak-batchM-real-20260414150934
  • /Users/ron/.hermes/cron/jobs.json.bak-batchM-reenableK-20260414151929
  • /Users/ron/.hermes/cron/jobs.json.bak-batchM-repl-20260414151100
  • /Users/ron/.hermes/cron/jobs.json.bak-batchM-rescue-nowatch-20260414153012
  • /Users/ron/.hermes/cron/jobs.json.bak-batchM-rescue2-20260414153116
  • /Users/ron/.openclaw/cron/jobs.json.bak-batchM-additional-20260414152328
  • /Users/ron/.openclaw/cron/jobs.json.bak-batchM-blog-nowatch-20260414153237
  • /Users/ron/.openclaw/cron/jobs.json.bak-batchM-dedupe-20260414151902
  • /Users/ron/.openclaw/cron/jobs.json.bak-batchM-finalfill-20260414152614
  • /Users/ron/.openclaw/cron/jobs.json.bak-batchM-finalfill-20260414152627
  • /Users/ron/.openclaw/cron/jobs.json.bak-batchM-more-20260414152421
  • /Users/ron/.openclaw/cron/jobs.json.bak-batchM-real-20260414150934
  • /Users/ron/.openclaw/cron/jobs.json.bak-batchM-repl-20260414151100
  • /Users/ron/.openclaw/cron/jobs.json.bak-batchM-rescue-nowatch-20260414153012
  • /Users/ron/.openclaw/cron/jobs.json.bak-batchM-rescue2-20260414153116

최종 검증

  • python3 -m json.tool ~/.hermes/cron/jobs.json 통과
  • python3 -m json.tool ~/.openclaw/cron/jobs.json 통과
  • hermes cron status: gateway/API/scheduler healthy, active jobs 71, 다음 run 2026-04-14T15:40:00+09:00
  • lsof -nP -iTCP:18789 -sTCP:LISTEN: Python PID 63520 listen 확인

Remaining Risks

  • Telegram/network 출력이 OpenClaw와 Hermes에서 비결정적으로 달라 strict diff 실패가 반복됐다. 실패 항목은 모두 OpenClaw 유지.
  • no-op 상태에서 산출 파일이 없을 수 있는 job(semiconductor-report, intelligence-blog-monitor)은 watch 없이 strict output 3회로 판정했다. 현재 출력은 OpenClaw와 Hermes가 동일하지만, 실제 데이터가 생기는 날 산출물 생성 경로는 다음 batch에서 한 번 더 관찰하는 것이 좋다.
  • market_indicator_tracker는 현 네트워크 상태에서 “No indicators collected” 출력이 양쪽 동일해 이전했다. 네트워크 복구 후 정상 수집 경로에서 추가 관찰 권장.
  • batch M 수행 중 vault_linker dual-run 1회가 실제 vault-linker 처리를 수행했으나 strict diff mismatch로 rollback했다. OpenClaw는 유지되어 있으나, 해당 dual-run 자체가 일부 링크/메타데이터를 갱신했을 수 있다.
  • 시도 수가 5개를 초과했다. 원인: 동시 batch K 중복과 watch-path 오판. 최종 enabled 전환은 strict 3회 통과한 5개만 적용했다.

자체평가

  • 자체평가: 4.7/5
  • 정확성 4.8: 최종 5개는 strict dual-run 3회 통과 후 OpenClaw disabled 처리.
  • 완성도 4.6: 실패/중복 항목 rollback 및 보고까지 완료.
  • 검증 4.8: JSON/gateway/PID/final state 확인.
  • 최소변경 4.4: 중복/오판으로 시도 수가 늘어난 점 감점.