virtual-insanity
← 리포트 목록

batch_H_real

2026-04-14 hermes

Hermes migration batch H — real cutover

  • 기준 시각: 2026-04-14 15:03 KST
  • 결과: 5개 OpenClaw cron을 Hermes shell-job으로 이전 완료
  • 판정 기준: hermes_migration_verify.py dual-run 3회, --hermes-exec direct, --strict-diff, 각 회차 PASS
  • 최종 상태: 성공 5개는 OpenClaw enabled=false, Hermes enabled=true/state=scheduled/status=verified_cutover

백업

  • Hermes 최초 백업: /Users/ron/.hermes/cron/jobs.json.bak-batchH-20260414T144810
  • Hermes 교체 후보 추가 전 백업: /Users/ron/.hermes/cron/jobs.json.bak-batchH-replacements-20260414T145746
  • OpenClaw disable 전 백업: /Users/ron/.openclaw/cron/jobs.json.bak-batchH-disable-20260414T145142

이전 완료 5개

1) technical-data-collector → ocH-005-tech-data

  • 스케줄: 40 7,9,11,13,15,17 * * 1-5
  • 명령: PYTHONPATH=/Users/ron/.openclaw/workspace/scripts/shared:/Users/ron/.openclaw/workspace/scripts/pipeline cd /Users/ron/.openclaw/workspace && python3 scripts/pipeline/technical_data_collector.py
  • 산출물 힌트: /Users/ron/.openclaw/workspace/memory/technical-signals/latest.json
  • dual-run 3회: PASS
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_145107_technical-data-collector_ocH-005-tech-data.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_145109_technical-data-collector_ocH-005-tech-data.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_145110_technical-data-collector_ocH-005-tech-data.json
  • 최종: OpenClaw disabled / Hermes scheduled

2) quant-signal-generator → ocH-007-quant-signal

  • 스케줄: 45 7 * * 1-5
  • 명령: python3 /Users/ron/.openclaw/workspace/scripts/pipeline/quant_signal_generator.py
  • 산출물 힌트: /Users/ron/.openclaw/workspace/memory/quant-signals
  • dual-run 3회: PASS
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_145858_quant-signal-generator_ocH-007-quant-signal.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_145900_quant-signal-generator_ocH-007-quant-signal.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_145902_quant-signal-generator_ocH-007-quant-signal.json
  • 최종: OpenClaw disabled / Hermes scheduled

3) daily-context-snapshot → ocH-008-daily-context

  • 스케줄: 0 0 * * *
  • 명령: cd /Users/ron/.openclaw/workspace && python3 scripts/pipeline/daily_context_snapshot.py
  • 산출물 힌트: /Users/ron/.openclaw/workspace/memory/daily-context-snapshot/latest.json
  • dual-run 3회: PASS
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_145910_daily-context-snapshot_ocH-008-daily-context.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_145911_daily-context-snapshot_ocH-008-daily-context.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_145912_daily-context-snapshot_ocH-008-daily-context.json
  • 최종: OpenClaw disabled / Hermes scheduled

4) signal-synthesizer-4axis → ocH-009-signal-4axis

  • 스케줄: 10 7 * * 1-5
  • 명령: cd /Users/ron/.openclaw/workspace && python3 scripts/pipeline/signal_synthesizer.py
  • 산출물 힌트: /Users/ron/.openclaw/workspace/memory/sector-signals/latest.json
  • dual-run 3회: PASS
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_145918_signal-synthesizer-4axis_ocH-009-signal-4axis.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_145919_signal-synthesizer-4axis_ocH-009-signal-4axis.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_145920_signal-synthesizer-4axis_ocH-009-signal-4axis.json
  • 최종: OpenClaw disabled / Hermes scheduled

5) quant-signals → ocH-010-quant-signals

  • 스케줄: 55 8 * * *
  • 명령: python3 /Users/ron/.openclaw/workspace/scripts/pipeline/quant_signal_generator.py
  • 산출물 힌트: /Users/ron/.openclaw/workspace/memory/quant-signals
  • dual-run 3회: PASS
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_150200_quant-signals_ocH-010-quant-signals.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_150202_quant-signals_ocH-010-quant-signals.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchH/20260414_150204_quant-signals_ocH-010-quant-signals.json
  • 최종: OpenClaw disabled / Hermes scheduled

롤백/중복 처리

  • fed-liquidity-aggregator → ocH-000-fed-liq: OpenClaw/Hermes 양쪽 모두 실행 실패. 원인: 당일 필수 데이터 WALCL/RRP/TGA 누락. Hermes disabled, OpenClaw 유지.
  • alt-data-collector, trendforce-collector, strategy-flow-collector, job-fe743793: batch H에서 검증은 했지만, 다른 batch의 활성/선행 이전과 충돌 가능성이 확인되어 H 쪽 Hermes job은 disabled 처리. H 성공 5개에는 포함하지 않음.
  • energy-data-collector → ocH-006-energy: 양쪽 텍스트 출력은 같았지만 로컬 DNS/API 실패로 latest.json 산출물이 생성되지 않아 harness verdict FAIL. Hermes disabled, OpenClaw 유지.
  • bio-pharma-collector, defense-collector, nuclear-collector: 후보였으나 batch G 활성 이전이 확인되어 선택하지 않음.

최종 검증

  • ~/.hermes/cron/jobs.json: JSON 파싱 OK
  • ~/.openclaw/cron/jobs.json: JSON 파싱 OK
  • H active verified_cutover: 5개
  • ocH-005-tech-data
  • ocH-007-quant-signal
  • ocH-008-daily-context
  • ocH-009-signal-4axis
  • ocH-010-quant-signals
  • 각 성공 항목의 OpenClaw 원본: enabled=false
  • 각 성공 항목의 Hermes 대응 job: enabled=true, state=scheduled, migration.status=verified_cutover
  • 중복 active migration: 없음
  • hermes cron status: Gateway running, HTTP API healthy, Scheduler tick healthy, active jobs 28개, next run 2026-04-14T15:40:00+09:00
  • curl /v1/health: 현재 Codex sandbox에서 loopback 접속이 Operation not permitted로 차단됨. 대신 lsof로 18789 LISTEN 및 hermes cron status의 HTTP/Scheduler healthy를 확인.

변경 파일

  • /Users/ron/.hermes/cron/jobs.json
  • /Users/ron/.openclaw/cron/jobs.json
  • /Users/ron/.openclaw/workspace/scripts/hermes_migration_verify.py — strict diff 정규화 보강(초/분 duration 노이즈 처리)
  • /Users/ron/knowledge-agent/400-reports/260414_hermes_batch_H_real.md

금지 파일 shared/llm.py, shared/cycle_base.py는 수정하지 않음.