virtual-insanity
← 리포트 목록

oil-supply-monitor-evening

2026-04-14 critical

260414 critical oil-supply-monitor-evening Hermes 등록 보고

작성 시각: 2026-04-14T18:48:09+09:00

분석

  • 대상 OpenClaw cron: oil-supply-monitor-evening / 석유 공급망 모니터 (저녁 21시)
  • 기존 OpenClaw schedule: 0 21 * * *, Asia/Seoul
  • 기존 실행 payload는 agentTurn이지만 실제 Bash 명령은 아래 코드블록 내부 명령 1개였다.
PYTHONPATH=/Users/ron/.openclaw/workspace/scripts/shared:/Users/ron/.openclaw/workspace/scripts/pipeline:/Users/ron/.openclaw/workspace/scripts python3 /Users/ron/.openclaw/workspace/scripts/pipeline/oil_supply_monitor.py
  • timeout: 900초
  • 출력/상태 파일:
  • /Users/ron/.openclaw/workspace/memory/oil-supply-monitor/state.json
  • /Users/ron/.openclaw/workspace/memory/oil-supply-monitor/history.json
  • /Users/ron/knowledge-agent/500-signals/에너지/260414_oil-supply-snapshot.md
  • Hermes output: /Users/ron/.hermes/cron/output/ocCRIT-oil-supply-monitor-evening/*.md
  • 외부 의존/권한:
  • web/RSS/EIA/뉴스 검색
  • LLM fallback (shared.llm.llm_chat_with_fallback)
  • Telegram send_sector("market"), chart photo optional
  • vault write via shared.frontmatter.write_note
  • 기존 Hermes에 ocAP-AP004-oil-evening-prompt가 있었지만, 실제 모니터 실행이 아니라 OpenClaw payload 텍스트를 읽는 artifact-read job이었다. 신규 실제 실행 job이 필요했다.
  • 기존 ocAI-AI004는 실제 shell-job 형태였지만 300초 검증 제한으로 rollback되어 disabled/paused 상태였다.

신규 정의

신규 Hermes job:

  • id: ocCRIT-oil-supply-monitor-evening
  • type/job_type/kind: shell
  • schedule: 0 21 * * *
  • timezone: Asia/Seoul
  • timeout: 900초
  • command: OpenClaw 원본 실행 명령과 동일
  • 상태: 최종 enabled=true, state=scheduled, next_run_at=2026-04-14T21:00:00+09:00

백업:

  • 등록 전 Hermes backup: /Users/ron/.hermes/cron/jobs.json.bak-critical-oil-evening-20260414T181711
  • 등록 전 OpenClaw backup: /Users/ron/.openclaw/cron/jobs.json.bak-critical-oil-evening-20260414T181711
  • cutover 전 Hermes backup: /Users/ron/.hermes/cron/jobs.json.bak-critical-oil-evening-cutover-20260414T184713
  • cutover 전 OpenClaw backup: /Users/ron/.openclaw/cron/jobs.json.bak-critical-oil-evening-cutover-20260414T184713

실행 결과

수동 Hermes live trigger 1차

  • Trigger: hermes cron run ocCRIT-oil-supply-monitor-evening
  • Hermes output: /Users/ron/.hermes/cron/output/ocCRIT-oil-supply-monitor-evening/2026-04-14_18-25-17.md
  • 결과: Exit Code 0
  • Duration: 410.77초
  • Telegram: ✅ 알림센터(market) 발송 완료
  • Vault: /Users/ron/knowledge-agent/500-signals/에너지/260414_oil-supply-snapshot.md 저장 완료
  • state/history: 2026-04-14 18:25:17 KST 갱신
  • 품질 평가: 4.2/5.0 통과

dual-run harness

  • Report: /Users/ron/.openclaw/workspace/verification/hermes-critical-oil-evening-260414/20260414_182619_oil-supply-monitor-evening_ocCRIT-oil-supply-monitor-evening.json
  • OpenClaw side: returncode 0
  • Hermes side: returncode 0
  • watch path: OK, /Users/ron/.openclaw/workspace/memory/oil-supply-monitor 변경 감지
  • strict diff: 실패
  • 실패 원인: 기능 차이가 아니라 harness가 Codex sandbox 안에서 실행되어 LLM/local Ollama 및 외부 DNS/Telegram 호출이 막힌 환경성 차이.
  • 예: ollama/qwen2.5:3b: [Errno 1] Operation not permitted
  • 예: EIA 연결 실패: nodename nor servname provided
  • 예: Hermes direct 쪽 Telegram fallback DNS 실패
  • 부작용: sandbox dual-run이 state를 저품질 데이터로 한 번 덮었으므로, 즉시 live Hermes 경로로 재실행해 복구했다.

수동 Hermes live trigger 2차 / state 복구

  • Trigger: hermes cron run ocCRIT-oil-supply-monitor-evening
  • Hermes output: /Users/ron/.hermes/cron/output/ocCRIT-oil-supply-monitor-evening/2026-04-14_18-46-24.md
  • 결과: Exit Code 0
  • Duration: 425.10초
  • Telegram: ✅ 알림센터(market) 발송 완료
  • Vault: 저장 완료
  • state/history: 2026-04-14 18:46:24 KST 갱신
  • 품질 평가: 4.2/5.0 통과
  • 복구 후 핵심 state:
  • WTI 99.6
  • Brent 112.6
  • EIA Cushing draw -0.02MB
  • 한국 원유 재고 80일
  • Fujairah 13.0MB
  • Hormuz status 봉쇄중

cutover 결과

  • OpenClaw oil-supply-monitor-evening: enabled=false
  • Hermes ocCRIT-oil-supply-monitor-evening: enabled=true, state=scheduled
  • 기존 잘못된 Hermes artifact-read job ocAP-AP004-oil-evening-prompt: enabled=false, state=paused, superseded_by=ocCRIT-oil-supply-monitor-evening
  • 기존 rollback job ocAI-AI004: 그대로 enabled=false, state=paused
  • OpenClaw enabled count: cutover 직전 2 → cutover 후 1
  • Hermes active count: 158
  • Hermes gateway 상태: healthy, scheduler tick healthy
  • 다음 정기 실행: 2026-04-14T21:00:00+09:00

판단

실제 운영 경로인 Hermes gateway/scheduler live 실행은 2회 모두 성공했다. strict-diff harness는 sandbox 네트워크/EPERM 때문에 실패했으나, 이는 production Hermes 실행 경로의 실패가 아니라 검증 harness 환경 문제로 분리한다. 21시 중복 실행을 막기 위해 OpenClaw를 비활성화하고 신규 Hermes 실제 실행 job으로 cutover했다.

남은 리스크

  • oil_supply_monitor.py는 단일 실행이 410~425초 걸린다. 900초 timeout은 유지해야 한다.
  • Codex sandbox 또는 일부 launchd/권한 context에서는 Errno 1 Operation not permitted, DNS 실패가 재현된다. 이 경로에서 verifier를 돌리면 저품질 state를 만들 수 있다.
  • dual-run 검증은 실제 운영 gateway context와 동일하지 않으면 Telegram/LLM/EIA 결과가 달라진다. 다음부터 이 job은 --dry-run 또는 별도 state path가 없으면 strict dual-run을 피해야 한다.
  • 오늘 수동 검증/복구 과정에서 Telegram market 발송이 여러 번 발생했다.

자체평가

  • 정확성: 4.7/5 — 실제 Hermes 실행 job 등록/cutover 완료. strict diff 실패는 환경성으로 분리 기록.
  • 완성도: 4.7/5 — 백업, 수동 실행, state 복구, cutover, 중복 artifact job pause까지 완료.
  • 검증: 4.5/5 — live Hermes 2회 성공, dual-run 양쪽 exit 0. 단 strict diff는 sandbox 때문에 실패.
  • 최소 변경: 4.8/5 — target cron 및 superseded artifact job만 변경. shared/llm.py, shared/cycle_base.py, LaunchAgents 미변경.