2026-04-14 Hermes migration batch Q 실제 이전
결론
- 최종 이전 완료: 2개 / 목표 5개
- 완료:
cu-fnguide-snapshot,methodology-harvester - 미완료 사유: batch Q 진행 중 다른 배치(P/V/W/AB/AF)가 후보를 선점했고, 남은 후보 다수가 strict dual-run에서 실제 장애/비결정성/외부 네트워크 실패를 드러냄.
diff 0이면 전환, 아니면 rollback원칙을 지켜 실패 항목은 OpenClaw enabled 유지. - 코드/LaunchAgents 변경 없음:
shared/llm.py,shared/cycle_base.py, LaunchAgents 미수정.
백업
- Hermes jobs 백업:
/Users/ron/.hermes/cron/jobs.json.bak-batchQ-20260414152608 - OpenClaw jobs 백업:
/Users/ron/.openclaw/cron/jobs.json.bak-batchQ-20260414162655
최종 이전 완료
| OpenClaw ID | Hermes ID | 스케줄 | 검증 | 최종 상태 |
|---|---|---|---|---|
cu-fnguide-snapshot |
ocQ-Q003 |
0 17 * * 1-5 |
strict dual-run 3/3 PASS | OpenClaw off / Hermes scheduled |
methodology-harvester |
ocQ-Q010 |
0 9 * * 1,3,5 |
strict dual-run 3/3 PASS | OpenClaw off / Hermes scheduled |
검증 리포트
cu-fnguide-snapshot ↔ ocQ-Q003
/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_154048_cu-fnguide-snapshot_ocQ-Q003.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_162259_cu-fnguide-snapshot_ocQ-Q003.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_162447_cu-fnguide-snapshot_ocQ-Q003.json
methodology-harvester ↔ ocQ-Q010
/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_154613_methodology-harvester_ocQ-Q010.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_162422_methodology-harvester_ocQ-Q010.json/Users/ron/.openclaw/workspace/verification/hermes-migration/20260414_162630_methodology-harvester_ocQ-Q010.json
롤백/제외 항목
| OpenClaw ID | Hermes ID | 결과 | 원인 |
|---|---|---|---|
gitnexus-reindex |
ocQ-Q000 |
rollback | npx gitnexus analyze가 OpenClaw/Hermes 양쪽에서 600초 timeout |
commodity-spike-morning |
ocQ-Q001 |
rollback | Telegram send 실패 라인이 한쪽에만 생겨 strict diff mismatch |
commodity-spike-watch |
ocQ-Q002 |
rollback | yfinance failed-download ticker 순서가 비결정적이라 strict diff mismatch |
hypothesis_lifecycle |
ocQ-Q004 |
rollback | 3회차에서 Telegram send 실패 라인 때문에 strict diff mismatch |
newspaper-collector |
ocQ-Q005 |
rollback | Telegram user session 연결이 EPERM으로 실패 |
cu-queue-processor |
ocQ-Q006 |
rollback | Playwright/Chromium launch EPERM + 임시 profile/PID 차이로 strict diff mismatch |
gmail-credit-monitor |
ocQ-Q007 |
rollback | Gmail OAuth DNS 실패로 command 자체 실패 |
vault_cleanup |
ocQ-Q008 |
rollback | dual-run 중 실제 vault 상태가 바뀌어 결과가 달라짐; 비동시성/비멱등 |
jisik-promote-dkzkyq |
ocQ-Q011 |
rollback | note_atomizer promote가 실제 vault를 변경해 2번째 실행 결과가 달라짐 |
vault-architect-afternoon |
ocQ-Q012 |
rollback | 2회차에서 동시 실행 state tmp rename race 발생 |
oil-supply-monitor-afternoon |
ocQ-Q013 |
rollback | 5분 초과 + strict diff mismatch |
etf-data-collect-domestic-value |
ocQ-Q014 |
rollback | 5분 초과/timeout failure |
dm-analyst-prompt-refresh |
ocQ-Q015 |
rollback | source command 자체가 KeyError: 'direct'로 실패 |
최종 상태 확인
| ID | OpenClaw enabled | Hermes enabled | Hermes state | next_run |
|---|---|---|---|---|
cu-fnguide-snapshot |
false | true | scheduled | 2026-04-14T17:00:00+09:00 |
methodology-harvester |
false | true | scheduled | 2026-04-15T09:00:00+09:00 |
JSON 검증
/Users/ron/.hermes/cron/jobs.json→python3 -m json.tool통과/Users/ron/.openclaw/cron/jobs.json→python3 -m json.tool통과
발견한 운영 이슈
- 16시 기준 다른 배치가 빠르게 후보를 선점: P/V/W/AB/AF 등에서 OpenClaw를 이미 disabled 처리한 항목이 생김. batch 시작 전뿐 아니라 disable 직전 재확인이 필수.
- strict dual-run은 비멱등 작업에 불리함: cleanup/promote/architect류는 첫 실행이 상태를 바꿔 두 번째 실행 결과가 달라짐.
- 외부 네트워크 의존 작업은 현재 불안정: Gmail OAuth DNS 실패, Telegram send 실패, Telegram user session EPERM, yfinance 비결정적 stderr.
- Playwright/Chromium 계열은 launchd/sandbox 맥락에서 EPERM과 임시 profile/PID 차이 때문에 strict diff에 부적합.
권고
- 다음 배치는 “read-only 또는 deterministic stdout” 후보만 먼저 선별해야 함.
- Telegram/Gmail/yfinance/Playwright/LLM 포함 작업은 별도 migration lane으로 분리하고, strict diff 대신 artifact/hash 기준 또는
--dry-run/--no-telegram동등성 정책을 먼저 합의해야 함. - cleanup/promote/architect처럼 상태를 바꾸는 작업은 dual-run 동시 실행 금지. shadow mode용 복제 workspace 또는 dry-run 검증이 필요.
자체평가
- 정확성 4/5: 통과한 항목만 전환했고 실패 항목은 rollback했지만, 목표 5개 중 2개만 완료.
- 완성도 4/5: 백업/검증/롤백/최종 상태 기록 완료.
- 검증 5/5: 전환한 2개는 3회 strict dual-run PASS, JSON 검증 완료.
- 최소 변경 5/5: cron JSON만 변경, 코드/LaunchAgents 미수정.
- 종합 4.5/5.
최종 invariant 재확인
cu-fnguide-snapshot,methodology-harvester: OpenClaw disabled / Hermes enabled+scheduled 확인.- batch Q 실패/롤백 항목: OpenClaw enabled 유지, Hermes Q job paused 확인.
- 최종 확인 시각: 2026-04-14 16:27 KST.