2026-04-14 Hermes migration batch G (real)
결론
Batch G에서 OpenClaw cron 5개를 Hermes shell-job으로 실제 이전했다. 5개 모두 hermes_migration_verify.py strict dual-run 3회 통과 후 OpenClaw 쪽은 enabled=false, Hermes 쪽은 enabled=true / scheduled로 전환했다.
LaunchAgents, gateway, shared/llm.py, shared/cycle_base.py는 건드리지 않았다.
백업
- Hermes 최초 백업:
/Users/ron/.hermes/cron/jobs.json.bak-batchG-20260414144415 - Hermes 충돌 보정 전 백업:
/Users/ron/.hermes/cron/jobs.json.bak-batchG-correction-20260414145308 - OpenClaw 비활성화 전 백업:
/Users/ron/.openclaw/cron/jobs.json.bak-batchG-20260414145458
최종 이전 5개
| OpenClaw ID | Hermes ID | 형식 | 최종 상태 |
|---|---|---|---|
bio-pharma-collector |
ocG-007 |
shell | OpenClaw disabled / Hermes scheduled |
defense-collector |
ocG-008 |
shell | OpenClaw disabled / Hermes scheduled |
signal-synthesizer |
ocG-009 |
shell | OpenClaw disabled / Hermes scheduled |
vault-context-builder |
ocG-010 |
shell | OpenClaw disabled / Hermes scheduled |
nuclear-collector |
ocG-011 |
shell | OpenClaw disabled / Hermes scheduled |
검증 결과
bio-pharma-collector → ocG-007
- Command:
cd /Users/ron/.openclaw/workspace && PYTHONPATH=scripts python3 scripts/pipeline/bio_pharma_tracker.py - Watch:
/Users/ron/.openclaw/workspace/memory/bio-pharma-indicators - PASS 3/3:
/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145333_bio-pharma-collector_ocG-007.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145420_bio-pharma-collector_ocG-007.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145427_bio-pharma-collector_ocG-007.json
defense-collector → ocG-008
- Command:
cd /Users/ron/.openclaw/workspace && PYTHONPATH=scripts python3 scripts/pipeline/defense_tracker.py - Watch:
/Users/ron/.openclaw/workspace/memory/defense-indicators - PASS 3/3:
/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145334_defense-collector_ocG-008.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145421_defense-collector_ocG-008.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145428_defense-collector_ocG-008.json
signal-synthesizer → ocG-009
- Command:
cd /Users/ron/.openclaw/workspace && python3 scripts/pipeline/signal_synthesizer.py - Watch:
/Users/ron/.openclaw/workspace/memory/sector-signals - PASS 3/3:
/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145335_signal-synthesizer_ocG-009.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145422_signal-synthesizer_ocG-009.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145429_signal-synthesizer_ocG-009.json
vault-context-builder → ocG-010
- Command:
cd /Users/ron/.openclaw/workspace && python3 scripts/pipeline/vault_context_builder.py - Watch:
/Users/ron/.claude/vault-context.md - PASS 3/3:
/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145336_vault-context-builder_ocG-010.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145424_vault-context-builder_ocG-010.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145431_vault-context-builder_ocG-010.json
nuclear-collector → ocG-011
- Command:
cd /Users/ron/.openclaw/workspace && PYTHONPATH=scripts python3 scripts/pipeline/nuclear_tracker.py - Watch:
/Users/ron/.openclaw/workspace/memory/nuclear-indicators - PASS 3/3:
/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145434_nuclear-collector_ocG-011.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145435_nuclear-collector_ocG-011.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_145437_nuclear-collector_ocG-011.json
최종 상태 확인
| 항목 | 상태 |
|---|---|
| JSON 파싱 | ~/.hermes/cron/jobs.json, ~/.openclaw/cron/jobs.json 모두 OK |
| OpenClaw 5개 | 모두 enabled=false, state.hermesId=ocG-* 기록됨 |
| Hermes 5개 | 모두 enabled=true, state=scheduled, last_status=ok |
| 다음 실행 | 2026-04-15 02:20~07:35 KST 사이 스케줄됨 |
Hermes next run:
- ocG-010: 2026-04-15T02:20:00+09:00
- ocG-007: 2026-04-15T06:30:00+09:00
- ocG-008: 2026-04-15T06:32:00+09:00
- ocG-011: 2026-04-15T06:34:00+09:00
- ocG-009: 2026-04-15T07:35:00+09:00
Rollback 처리한 batch G 후보
| Hermes ID | OpenClaw ID | 이유 | 상태 |
|---|---|---|---|
ocG-000 |
fed-liquidity-aggregator |
현재 날짜 FRED 입력 누락으로 원본 명령 실패 + 다른 batch와 중복 | Hermes disabled |
ocG-001 |
industry-news-extractor |
batch E와 중복 | Hermes disabled |
ocG-002 |
job-fe743793 |
source_quality_tracker 고정 tmp 파일 충돌로 strict dual-run 실패 + 중복 |
Hermes disabled |
ocG-003 |
alt-data-collector |
batch E/H와 중복 | Hermes disabled |
ocG-004 |
strategy-flow-collector |
batch H/E와 중복 | Hermes disabled |
ocG-005 |
source-weight-tuner |
batch D에서 이미 이전 완료 | Hermes disabled |
ocG-006 |
price-history-collector |
원본/Hermes 모두 성공 0/57, 실패 57; 원본 스크립트 현재 실행 실패 |
Hermes disabled |
Remaining Risks
price-history-collector는 migration 문제가 아니라 원본 스크립트가 현재 전 티커 실패 상태다. 별도 수리 필요.source_quality_tracker.py는 fixed tmp 파일(latest.json.tmp)을 써서 동시 dual-run에서 충돌했다. 운영 단독 실행은 성공할 수 있으나, 마이그레이션 검증에는 비결정적이다.- OpenClaw jobs에는 동일/유사 목적 중복 cron이 많다. 다음 batch도 Hermes migration metadata + 기존 batch 보고서를 먼저 교차 확인해야 한다.
자체 평가
- 정확성: 5/5 — 5개만 3회 검증 후 이전했고 실패/중복 후보는 rollback.
- 완성도: 5/5 — 백업, 검증 로그, 최종 상태, rollback 사유 기록.
- 검증: 5/5 — strict dual-run 15 PASS + JSON 파싱 + 최종 enabled 상태 확인.
- 최소 변경: 4.8/5 — cron JSON 두 개만 변경. 기존 중복 후보 정리를 위해 batch G Hermes 후보 일부를 disabled 처리.
종합: 4.95/5