virtual-insanity
← 리포트 목록

Hermes migration batch E real

2026-04-14 hermes

Hermes migration batch E real

요약

  • 최종 이전 성공: 5개
  • 검증 기준: hermes_migration_verify.py, --hermes-exec direct, --once-policy never, --strict-diff, 각 3회 PASS
  • Cutover: Hermes enabled=true, OpenClaw enabled=false
  • Rollback: ocE-source-quality는 strict diff mismatch로 Hermes disabled, OpenClaw job-fe743793 enabled 유지
  • 백업: ~/.hermes/cron/jobs.json.bak-batchE-20260414144758, ~/.openclaw/cron/jobs.json.bak-batchE-20260414144758
  • 금지 준수: LaunchAgents 변경 없음, gateway stop 없음, shared/llm.py/shared/cycle_base.py 수정 없음

최종 이전 5개

industry-news-extractor → ocE-industry-news

  • OpenClaw name: 산업 뉴스 NLP 지표 추출
  • OpenClaw schedule: {'kind': 'cron', 'expr': '3 8 * * 3', 'tz': 'Asia/Seoul'}
  • Command: python3 /Users/ron/.openclaw/workspace/scripts/pipeline/industry_news_extractor.py
  • Timeout: 600 sec
  • Output/artifact: /Users/ron/.openclaw/workspace/memory/market-indicators/industry_news_latest.json
  • Hermes schedule: 3 8 * * 3 / next 2026-04-15T08:03:00+09:00
  • Final state: OpenClaw enabled=False, Hermes enabled=True, Hermes state=scheduled
  • Dual-run PASS reports:
  • 20260414_145013_industry-news-extractor_ocE-industry-news.json — text_match=True, trigger_delta_ms=1, output=/Users/ron/.hermes/cron/output/ocE-industry-news/2026-04-14_14-50-46.md
  • 20260414_145110_industry-news-extractor_ocE-industry-news.json — text_match=True, trigger_delta_ms=1, output=/Users/ron/.hermes/cron/output/ocE-industry-news/2026-04-14_14-51-43.md
  • 20260414_145207_industry-news-extractor_ocE-industry-news.json — text_match=True, trigger_delta_ms=0, output=/Users/ron/.hermes/cron/output/ocE-industry-news/2026-04-14_14-52-41.md

trendforce-collector → ocE-trendforce

  • OpenClaw name: TrendForce 지표 수집 (DDR5+LCD)
  • OpenClaw schedule: {'kind': 'cron', 'expr': '0 8 * * 1-5', 'tz': 'Asia/Seoul'}
  • Command: PYTHONPATH=/Users/ron/.openclaw/workspace/scripts/shared:/Users/ron/.openclaw/workspace/scripts/pipeline python3 /Users/ron/.openclaw/workspace/scripts/pipeline/trendforce_collector.py
  • Timeout: 300 sec
  • Output/artifact: /Users/ron/.openclaw/workspace/memory/trendforce-indicators
  • Hermes schedule: 0 8 * * 1-5 / next 2026-04-15T08:00:00+09:00
  • Final state: OpenClaw enabled=False, Hermes enabled=True, Hermes state=scheduled
  • Dual-run PASS reports:
  • 20260414_145329_trendforce-collector_ocE-trendforce.json — text_match=True, trigger_delta_ms=0, output=/Users/ron/.hermes/cron/output/ocE-trendforce/2026-04-14_14-53-30.md
  • 20260414_145331_trendforce-collector_ocE-trendforce.json — text_match=True, trigger_delta_ms=3, output=/Users/ron/.hermes/cron/output/ocE-trendforce/2026-04-14_14-53-33.md
  • 20260414_145334_trendforce-collector_ocE-trendforce.json — text_match=True, trigger_delta_ms=1, output=/Users/ron/.hermes/cron/output/ocE-trendforce/2026-04-14_14-53-35.md

alt-data-collector → ocE-alt-data

  • OpenClaw name: 대안 데이터 수집
  • OpenClaw schedule: {'kind': 'cron', 'expr': '55 6 * * 1-5', 'tz': 'Asia/Seoul'}
  • Command: python3 /Users/ron/.openclaw/workspace/scripts/pipeline/alt_data_collector.py
  • Timeout: 300 sec
  • Output/artifact: /Users/ron/.openclaw/workspace/memory/alt-data/fear-greed.json
  • Hermes schedule: 55 6 * * 1-5 / next 2026-04-15T06:55:00+09:00
  • Final state: OpenClaw enabled=False, Hermes enabled=True, Hermes state=scheduled
  • Dual-run PASS reports:
  • 20260414_145048_alt-data-collector_ocE-alt-data.json — text_match=True, trigger_delta_ms=0, output=/Users/ron/.hermes/cron/output/ocE-alt-data/2026-04-14_14-50-49.md
  • 20260414_145145_alt-data-collector_ocE-alt-data.json — text_match=True, trigger_delta_ms=0, output=/Users/ron/.hermes/cron/output/ocE-alt-data/2026-04-14_14-51-46.md
  • 20260414_145242_alt-data-collector_ocE-alt-data.json — text_match=True, trigger_delta_ms=0, output=/Users/ron/.hermes/cron/output/ocE-alt-data/2026-04-14_14-52-43.md

analyst-evolution-tracker → ocE-analyst-evolution

  • OpenClaw name: 애널리스트 발전 추적기
  • OpenClaw schedule: {'kind': 'cron', 'expr': '10 8 * * 1-5', 'tz': 'Asia/Seoul'}
  • Command: PYTHONPATH=/Users/ron/.openclaw/workspace/scripts python3 /Users/ron/.openclaw/workspace/scripts/pipeline/analyst_evolution_tracker.py
  • Timeout: 300 sec
  • Output/artifact: Hermes output md (현재 처리 데이터 0건으로 OpenClaw artifact 없음)
  • Hermes schedule: 10 8 * * 1-5 / next 2026-04-15T08:10:00+09:00
  • Final state: OpenClaw enabled=False, Hermes enabled=True, Hermes state=scheduled
  • Dual-run PASS reports:
  • 20260414_145330_analyst-evolution-tracker_ocE-analyst-evolution.json — text_match=True, trigger_delta_ms=1, output=/Users/ron/.hermes/cron/output/ocE-analyst-evolution/2026-04-14_14-53-31.md
  • 20260414_145333_analyst-evolution-tracker_ocE-analyst-evolution.json — text_match=True, trigger_delta_ms=0, output=/Users/ron/.hermes/cron/output/ocE-analyst-evolution/2026-04-14_14-53-34.md
  • 20260414_145335_analyst-evolution-tracker_ocE-analyst-evolution.json — text_match=True, trigger_delta_ms=0, output=/Users/ron/.hermes/cron/output/ocE-analyst-evolution/2026-04-14_14-53-36.md

vault-technical-bridge → ocE-technical

  • OpenClaw name: 테크니컬 Collector (데이터 수집 + 차트)
  • OpenClaw schedule: {'kind': 'cron', 'expr': '10 7 * * *', 'tz': 'Asia/Seoul'}
  • Command: PYTHONPATH=/Users/ron/.openclaw/workspace/scripts/shared:/Users/ron/.openclaw/workspace/scripts/pipeline python3 /Users/ron/.openclaw/workspace/scripts/pipeline/technical_collector.py
  • Timeout: 3600 sec
  • Output/artifact: /Users/ron/.openclaw/workspace/memory/analyst-context/context-technical.json
  • Hermes schedule: 10 7 * * * / next 2026-04-15T07:10:00+09:00
  • Final state: OpenClaw enabled=False, Hermes enabled=True, Hermes state=scheduled
  • Dual-run PASS reports:
  • 20260414_145050_vault-technical-bridge_ocE-technical.json — text_match=True, trigger_delta_ms=1, output=/Users/ron/.hermes/cron/output/ocE-technical/2026-04-14_14-51-10.md
  • 20260414_145147_vault-technical-bridge_ocE-technical.json — text_match=True, trigger_delta_ms=1, output=/Users/ron/.hermes/cron/output/ocE-technical/2026-04-14_14-52-07.md
  • 20260414_145245_vault-technical-bridge_ocE-technical.json — text_match=True, trigger_delta_ms=0, output=/Users/ron/.hermes/cron/output/ocE-technical/2026-04-14_14-53-05.md

Rollback / 제외

  • job-fe743793ocE-source-quality: OpenClaw/Hermes 실행은 성공했지만 strict diff에서 섹터 표시 순서가 1줄 달라 strict_diff_mismatch. Hermes disabled, OpenClaw enabled 유지.
  • fed-liquidity-aggregator: 현재 날짜 기준 WALCL/RRP/TGA 필수 데이터 없음으로 OpenClaw 자체 실패.
  • research_intelligence_aggregator: save_json_atomic(result, OUTPUT) 인자 순서 버그로 OpenClaw 자체 실패.
  • price-history-collector: yfinance DNS/NoneType 실패로 OpenClaw 자체 실패.
  • source-weight-tuner: 사전 실행은 성공했지만 매 실행 source_weights.json version을 증가시켜 idempotent 아님. 최종 이전 제외.
  • 알림/재시작/브라우저/LLM 계열은 Batch E 안전 기준에서 제외.

중복 충돌 확인

  • Batch E는 ocE- prefix 사용.
  • 진행 중 다른 batch의 중복 후보가 jobs.json에 생긴 것을 후반에 확인했으나, 중복 항목들은 대부분 paused/rollback 상태였다. 최종 active cutover는 위 5개 ocE-*로 기록했다.
  • 이후 batch는 migration.openclaw_id 기준으로 active/paused 모두 확인해야 함.

검증 명령

python3 ~/.openclaw/workspace/scripts/hermes_migration_verify.py <openclaw_id> <hermes_id> --once-policy never --hermes-exec direct --strict-diff
python3 -m json.tool ~/.openclaw/cron/jobs.json
python3 -m json.tool ~/.hermes/cron/jobs.json
hermes cron status

현재 상태

  • Hermes gateway status: 정상 (Gateway is running, Scheduler: tick healthy)
  • Active Hermes jobs count: 24개 확인
  • OpenClaw final 5: disabled
  • Hermes final 5: active/scheduled

잔존 리스크

  • DNS 제한 때문에 industry-news, trendforce, alt-data, technical은 일부 외부 fetch가 실패하지만, OpenClaw/Hermes 출력은 동일하게 재현되어 scheduler 이전 기준은 통과.
  • analyst-evolution은 현재 처리 데이터 0건이라 OpenClaw artifact가 생성되지 않음. 실행 동등성은 Hermes output md와 strict text diff로 확인.
  • 사전 실행 과정에서 source-weight-tuner가 한 번 실행되어 source_weights version이 증가했다. 최종 이전에서는 제외했고, 반복 실행 위험으로 리스크에 남김.

자체 평가

  • 정확성: 4.7/5 — 5개 cutover와 1개 rollback 기준 충족. 중복 batch가 후발로 보여 충돌 리스크를 문서화함.
  • 완성도: 4.7/5 — 백업/변환/3회 strict 검증/OpenClaw disable/Hermes enable/보고 완료.
  • 검증: 4.8/5 — 각 최종 항목 3회 strict PASS, JSON 유효성, cron status 확인.
  • 최소 변경: 4.5/5 — jobs.json만 수정. 다만 사전 실행으로 source-weight side effect가 1회 발생.

종합: 4.7/5