virtual-insanity
← 리포트 목록

batch_R_real

2026-04-14 hermes

Hermes migration batch R 실제 이전 보고

  • 작성: 2026-04-14T15:31:09+09:00
  • 결론: 5개 OpenClaw cron을 Hermes shell job으로 이전했고, harness dual-run 3회씩 모두 PASS했다. OpenClaw 원본은 삭제하지 않고 enabled=false로 전환했다.
  • 범위: batch=R prefix ocR-R000~ocR-R004; 다른 batch I~O/N/H 등 기존 선점 ID와 겹치지 않는 UUID 기반 active systemEvent만 처리했다.
  • 선정 특이사항: 남은 안전 후보 중 무알림/짧은/idempotent 작업을 우선했고, D-DAY OpenClaw 폐기 목적상 technical-data/technical-stat-models 중복 systemEvent 정리에 집중했다. 카테고리 다양성은 낮지만 충돌·부작용 리스크가 가장 낮은 조합이다.

변경 파일

  • /Users/ron/.hermes/cron/jobs.json: ocR 5개 shell job 추가 및 verified_cutover 기록
  • /Users/ron/.openclaw/cron/jobs.json: 대상 5개 enabled=false, migration 메타 기록
  • /Users/ron/knowledge-agent/400-reports/260414_hermes_batch_R_real.md: 이 보고서

백업

  • Hermes: /Users/ron/.hermes/cron/jobs.json.bak-batchR-20260414T152748
  • OpenClaw disable 전: /Users/ron/.openclaw/cron/jobs.json.bak-batchR-disable-20260414T152923

이전 결과

sub-id OpenClaw id OpenClaw name Hermes id command schedule dual-run 최종 상태
R000 1865183a-37b4-486b-bce2-46564b08ee09 technical-data-collector 기술적 지표 수집 (2시간 주기) ocR-R000-tech-data-uuid2 cd /Users/ron/.openclaw/workspace && PYTHONPATH=/Users/ron/.openclaw/workspace/scripts/shared:/Users/ron/.openclaw/workspace/scripts/pipeline python3 scripts/pipeline/technical_data_collector.py every 120m 3/3 PASS OpenClaw disabled, Hermes scheduled
R001 fa01c626-91e9-4153-82f6-8e5266c27a43 technical-stat-models 기술통계모델 (2시간 주기) ocR-R001-tech-stat-uuid1 python3 /Users/ron/.openclaw/workspace/scripts/pipeline/technical_stat_models.py every 120m 3/3 PASS OpenClaw disabled, Hermes scheduled
R002 bd5cfa0c-c6c3-4046-82a9-5a75cf7bc8cc technical-stat-models 기술통계모델 (2시간 주기) ocR-R002-tech-stat-uuid2 python3 /Users/ron/.openclaw/workspace/scripts/pipeline/technical_stat_models.py every 120m 3/3 PASS OpenClaw disabled, Hermes scheduled
R003 53baa2b2-8f7e-4378-87fe-46f90ee10f1f technical-stat-models ocR-R003-tech-stat-uuid3 python3 /Users/ron/.openclaw/workspace/scripts/pipeline/technical_stat_models.py every 120m 3/3 PASS OpenClaw disabled, Hermes scheduled
R004 56c91210-716e-4a28-a397-524e74cfb798 technical-stat-models 기술통계모델 ocR-R004-tech-stat-uuid4 python3 /Users/ron/.openclaw/workspace/scripts/pipeline/technical_stat_models.py every 120m 3/3 PASS OpenClaw disabled, Hermes scheduled

검증 증거

  • 실행 도구: /Users/ron/.openclaw/workspace/scripts/hermes_migration_verify.py
  • 공통 옵션: --once-policy auto --hermes-exec direct --strict-diff
  • watch artifact: /Users/ron/.openclaw/workspace/memory/technical-signals/latest.json
  • 전체 report JSON: 15개
  • 모든 run에서 openclaw=True, hermes_trigger=True, hermes_exec=True, watch=True, text_match=True
  • 기술통계모델 사전 --dry-run 및 report grep에서 [ALERT]/텔레그램 발송 문구 없음 확인

R000 1865183a-37b4-486b-bce2-46564b08ee09 → ocR-R000-tech-data-uuid2

  • PASS 20260414_152854_1865183a-37b4-486b-bce2-46564b08ee09_ocR-R000-tech-data-uuid2.json — delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
  • PASS 20260414_152856_1865183a-37b4-486b-bce2-46564b08ee09_ocR-R000-tech-data-uuid2.json — delta=1ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
  • PASS 20260414_152858_1865183a-37b4-486b-bce2-46564b08ee09_ocR-R000-tech-data-uuid2.json — delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']

R001 fa01c626-91e9-4153-82f6-8e5266c27a43 → ocR-R001-tech-stat-uuid1

  • PASS 20260414_152859_fa01c626-91e9-4153-82f6-8e5266c27a43_ocR-R001-tech-stat-uuid1.json — delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
  • PASS 20260414_152901_fa01c626-91e9-4153-82f6-8e5266c27a43_ocR-R001-tech-stat-uuid1.json — delta=1ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
  • PASS 20260414_152902_fa01c626-91e9-4153-82f6-8e5266c27a43_ocR-R001-tech-stat-uuid1.json — delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']

R002 bd5cfa0c-c6c3-4046-82a9-5a75cf7bc8cc → ocR-R002-tech-stat-uuid2

  • PASS 20260414_152903_bd5cfa0c-c6c3-4046-82a9-5a75cf7bc8cc_ocR-R002-tech-stat-uuid2.json — delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
  • PASS 20260414_152905_bd5cfa0c-c6c3-4046-82a9-5a75cf7bc8cc_ocR-R002-tech-stat-uuid2.json — delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
  • PASS 20260414_152906_bd5cfa0c-c6c3-4046-82a9-5a75cf7bc8cc_ocR-R002-tech-stat-uuid2.json — delta=1ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']

R003 53baa2b2-8f7e-4378-87fe-46f90ee10f1f → ocR-R003-tech-stat-uuid3

  • PASS 20260414_152907_53baa2b2-8f7e-4378-87fe-46f90ee10f1f_ocR-R003-tech-stat-uuid3.json — delta=1ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
  • PASS 20260414_152909_53baa2b2-8f7e-4378-87fe-46f90ee10f1f_ocR-R003-tech-stat-uuid3.json — delta=1ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
  • PASS 20260414_152910_53baa2b2-8f7e-4378-87fe-46f90ee10f1f_ocR-R003-tech-stat-uuid3.json — delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']

R004 56c91210-716e-4a28-a397-524e74cfb798 → ocR-R004-tech-stat-uuid4

  • PASS 20260414_152911_56c91210-716e-4a28-a397-524e74cfb798_ocR-R004-tech-stat-uuid4.json — delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
  • PASS 20260414_152913_56c91210-716e-4a28-a397-524e74cfb798_ocR-R004-tech-stat-uuid4.json — delta=1ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
  • PASS 20260414_152914_56c91210-716e-4a28-a397-524e74cfb798_ocR-R004-tech-stat-uuid4.json — delta=1ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']

사후 확인

  • JSON parse: Hermes/OpenClaw jobs.json 둘 다 통과
  • harness syntax: python3 -m py_compile .../hermes_migration_verify.py 통과
  • 상태 invariant: 5개 모두 OpenClaw enabled=false, Hermes enabled=true, state=scheduled, migration.status=verified_cutover, dual_run_count=3
  • hermes cron status: Gateway running, HTTP API healthy, Scheduler tick healthy, 69 active jobs, next run 2026-04-14T15:40:00+09:00
  • LaunchAgents 변경 없음. 금지 파일 shared/llm.py, shared/cycle_base.py 수정 없음.

Remaining Risks

  • batch R은 안전성과 미선점성을 우선해서 technical 계열 중복 systemEvent 정리에 치우쳤다. “카테고리 다양화” 기준은 완전 충족이 아니라 의도적 완화다.
  • technical_stat_models.py는 임계값 초과 시 send_dm(level="info") 경로가 있으나, 이번 15회 검증과 사전 dry-run에서는 alert가 없어서 외부 발송은 확인되지 않았다.

자체평가

  • 정확성 4.8/5, 완성도 4.7/5, 검증 4.8/5, 최소 변경 4.7/5 → 종합 4.75/5