virtual-insanity
← 리포트 목록

batch_AM_real

2026-04-14 hermes

Hermes batch AM 실제 이전 리포트

  • 시작: 2026-04-14T16:39:52+09:00
  • Hermes backup: /Users/ron/.hermes/cron/jobs.json.bak-batchAM-20260414_163952
  • OpenClaw backup: /Users/ron/.openclaw/cron/jobs.json.bak-batchAM-20260414_163952
  • 기준: strict 미선점은 고갈. OpenClaw enabled + Hermes enabled owner 없음 + disabled placeholder만 있는 후보를 재검증.

  • candidate etf-insight-extractor: prior disabled claims=['ocAI-AI001']

  • candidate commodity-spike-watch: prior disabled claims=['ocQ-Q002']
  • candidate etf-data-collect-domestic-index: prior disabled claims=['ocC-etf-dom-idx']
  • candidate cu-queue-processor: prior disabled claims=['ocQ-Q006']
  • candidate jisik-promote-dkzkyq: prior disabled claims=['ocQ-Q011']
  • candidate etf-data-collect-domestic-value: prior disabled claims=['ocQ-Q014']
  • candidate gmail-credit-monitor: prior disabled claims=['ocQ-Q007']

검증: etf-insight-extractorocAM-AM000-etf-insight-extractor

  • rationale: Y에서 1회 strict diff 후 2026-04-14 state가 생겼으므로 안정화 재검증
  • command: python3 /Users/ron/.openclaw/workspace/scripts/pipeline/etf_insight_extractor.py
  • schedule: 25 16 * * 1-5
  • cycle 1: rc=0, verdict=ok, diff_ok=None, elapsed=1.86s, report=/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM000-etf-insight-extractor/cycle-1
  • cycle 2: rc=0, verdict=ok, diff_ok=None, elapsed=1.87s, report=/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM000-etf-insight-extractor/cycle-2
  • cycle 3: rc=0, verdict=ok, diff_ok=None, elapsed=1.86s, report=/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM000-etf-insight-extractor/cycle-3
  • 최종 상태: MIGRATED

검증: commodity-spike-watchocAM-AM001-commodity-spike-watch

  • rationale: Q에서 1회 pass 이력, OpenClaw는 아직 enabled
  • command: cd /Users/ron/.openclaw/workspace && PYTHONPATH=/Users/ron/.openclaw/workspace/scripts/shared:/Users/ron/.openclaw/workspace/scripts/pipeline:/Users/ron/.openclaw/workspace/scripts python3 scripts/pipeline/commodity_spike_analyzer.py --mode watch
  • schedule: */30 10-23 * * 1-5
  • cycle 1: rc=2, verdict=fail, diff_ok=None, elapsed=1.74s, report=/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM001-commodity-spike-watch/cycle-1
th 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n warnings.warn(\n 6 Failed downloads:\n-['GC=F', 'CL=F', 'NG=F', 'SI=F', 'HG=F', '^VIX']: TypeError(\"'NoneType' object is not subscriptable\")\n+['^VIX', 'HG=F', 'GC=F', 'CL=F', 'NG=F', 'SI=F']: TypeError(\"'NoneType' object is not subscriptable\")",
  "strict_diff": true,
  "text_match": false,
  "watched_before": [
    {
      "path": "/Users/ron/.openclaw/workspace/memory/commodity-alerts",
      "exists": true,
      "kind": "dir",
      "size": null,
      "mtime_ns": 1776152195132770515,
      "sha256": null,
      "file_count": 2,
      "total_size": 2504,
      "digest": "9602ed49c910d95c02480815130281f338d041e782f296213d6cd01e8c9066c9",
      "sample_files": [
        "2026-04-14.json",
        "latest.json"
      ]
    }
  ],
  "watched_after": [
    {
      "path": "/Users/ron/.openclaw/workspace/memory/commodity-alerts",
      "exists": true,
      "kind": "dir",
      "size": null,
      "mtime_ns": 1776152195132770515,
      "sha256": null,
      "file_count": 2,
      "total_size": 2504,
      "digest": "9602ed49c910d95c02480815130281f338d041e782f296213d6cd01e8c9066c9",
      "sample_files": [
        "2026-04-14.json",
        "latest.json"
      ]
    }
  ],
  "watched_changed": [],
  "verdict": {
    "ok": false,
    "openclaw_ok": true,
    "hermes_trigger_ok": true,
    "hermes_exec_ok": true,
    "watch_ok": true,
    "text_match": false,
    "strict_diff": true,
    "trigger_delta_ms": 0,
    "changed_watch_paths": [],
    "reasons": [
      "strict_diff_mismatch"
    ]
  },
  "report_path": "/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM001-commodity-spike-watch/cycle-1/20260414_163958_commodity-spike-watch_ocAM-AM001-commodity-spike-watch.json"
}

  • 최종 상태: ROLLBACK

검증: etf-data-collect-domestic-indexocAM-AM002-etf-domestic-index

  • rationale: 국내지수 ETF, 최근 144초 성공, enabled owner 없음
  • command: python3 /Users/ron/.openclaw/skills/etf-tracker/scripts/run_etf_tracker.py domestic_index
  • schedule: 0 16 * * 1-5
  • cycle 1: rc=2, verdict=fail, diff_ok=None, elapsed=261.19s, report=/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM002-etf-domestic-index/cycle-1
:00",
    "duration_ms": 260004,
    "stdout": "",
    "stderr": "",
    "timed_out": true,
    "error": "timeout after 260s"
  },
  "hermes_output_file": null,
  "hermes_response": "",
  "text_diff": "",
  "strict_diff": true,
  "text_match": true,
  "watched_before": [
    {
      "path": "/Users/ron/.openclaw/skills/etf-tracker/knowledge/logs",
      "exists": true,
      "kind": "dir",
      "size": null,
      "mtime_ns": 1774995471550605789,
      "sha256": null,
      "file_count": 3,
      "total_size": 15419,
      "digest": "4f964d34bcbcc9e443f4e82c6862e4b65cbe3068e94c885a1808dcee4b9aa938",
      "sample_files": [
        "2026-02_execution.md",
        "2026-03_execution.md",
        "2026-04_execution.md"
      ]
    }
  ],
  "watched_after": [
    {
      "path": "/Users/ron/.openclaw/skills/etf-tracker/knowledge/logs",
      "exists": true,
      "kind": "dir",
      "size": null,
      "mtime_ns": 1774995471550605789,
      "sha256": null,
      "file_count": 3,
      "total_size": 15419,
      "digest": "4f964d34bcbcc9e443f4e82c6862e4b65cbe3068e94c885a1808dcee4b9aa938",
      "sample_files": [
        "2026-02_execution.md",
        "2026-03_execution.md",
        "2026-04_execution.md"
      ]
    }
  ],
  "watched_changed": [],
  "verdict": {
    "ok": false,
    "openclaw_ok": false,
    "hermes_trigger_ok": true,
    "hermes_exec_ok": false,
    "watch_ok": true,
    "text_match": true,
    "strict_diff": true,
    "trigger_delta_ms": 0,
    "changed_watch_paths": [],
    "reasons": [
      "openclaw_failed",
      "hermes_exec_failed"
    ]
  },
  "report_path": "/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM002-etf-domestic-index/cycle-1/20260414_163959_etf-data-collect-domestic-index_ocAM-AM002-etf-domestic-index.json"
}

  • 최종 상태: ROLLBACK

검증: cu-queue-processorocAM-AM003-cu-queue-processor

  • rationale: CU queue processor, 최근 11초 성공, enabled owner 없음
  • command: 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/cu_queue_processor.py --batch-size 20
  • schedule: 20 2 * * *
  • cycle 1: rc=2, verdict=fail, diff_ok=None, elapsed=1.55s, report=/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM003-cu-queue-processor/cycle-1
_port_rendezvous_mac.cc:155] Check failed: kr == KERN_SUCCESS. bootstrap_check_in org.chromium.Chromium.MachPortRendezvousServer.30499: Permission denied (1100)\n - [pid=<pid>] <gracefully close start>\n - [pid=<pid>] <kill>\n - [pid=<pid>] <will force kill>",
  "strict_diff": true,
  "text_match": false,
  "watched_before": [
    {
      "path": "/Users/ron/.openclaw/workspace/memory/cu-fetch-queue",
      "exists": true,
      "kind": "dir",
      "size": null,
      "mtime_ns": 1776152562523154338,
      "sha256": null,
      "file_count": 1,
      "total_size": 27226,
      "digest": "628f0d7ff0ff1b6f35dee04c88ea7e7f57c80bd2519b4fe295eab35b58bb266d",
      "sample_files": [
        "pending.json"
      ]
    }
  ],
  "watched_after": [
    {
      "path": "/Users/ron/.openclaw/workspace/memory/cu-fetch-queue",
      "exists": true,
      "kind": "dir",
      "size": null,
      "mtime_ns": 1776152662547022959,
      "sha256": null,
      "file_count": 1,
      "total_size": 27226,
      "digest": "c990d81001bcd927c454aa1384db43e9a2a771dd1867167be9ddfe5fe7182dd0",
      "sample_files": [
        "pending.json"
      ]
    }
  ],
  "watched_changed": [
    "/Users/ron/.openclaw/workspace/memory/cu-fetch-queue"
  ],
  "verdict": {
    "ok": false,
    "openclaw_ok": true,
    "hermes_trigger_ok": true,
    "hermes_exec_ok": true,
    "watch_ok": true,
    "text_match": false,
    "strict_diff": true,
    "trigger_delta_ms": 1,
    "changed_watch_paths": [
      "/Users/ron/.openclaw/workspace/memory/cu-fetch-queue"
    ],
    "reasons": [
      "strict_diff_mismatch"
    ]
  },
  "report_path": "/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM003-cu-queue-processor/cycle-1/20260414_164421_cu-queue-processor_ocAM-AM003-cu-queue-processor.json"
}

  • 최종 상태: ROLLBACK

검증: jisik-promote-dkzkyqocAM-AM004-jisik-promote

  • rationale: 지식사랑방 승격, 최근 13초 성공, enabled owner 없음
  • command: PYTHONPATH=scripts python3 scripts/pipeline/note_atomizer.py --promote --inbox-dir '120 지식사랑방' --batch-size 100
  • schedule: 15 3 * * *
  • cycle 1: rc=2, verdict=fail, diff_ok=None, elapsed=18.52s, report=/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM004-jisik-promote/cycle-1
tive=40\n+[<timestamp>] [99/100] 참조 260324_articles... score=40 weight=1.0 effective=40\n+[<timestamp>] [100/100] 미국 텍사스주 포트아서의 정유 공장에서 폭발로 추정되는 사고 발생 이후 ... score=50 weight=1.5 effective=75\n+[<timestamp>] 승격: 260324_articles_미국_텍사스주_포트아서의_정유_공장에서_.md → 210 원자노트/260324_articles_미국_텍사스주_포트아서의_정유_공장에서_.md (resources)\n+[<timestamp>] Phase 3 완료: resources 11건, areas후보 3건, LLM판단 0건, 유지 86건\n+[<timestamp>] 상태 저장 완료\n+[<timestamp>] 리포트 생성: <path> 운영/840 리포트/atomizer-<timestamp>.md\n+[<timestamp>] 리포트: <path> 운영/840 리포트/atomizer-<timestamp>.md\n+[SECTOR_TRACE] send_sector(ops) caller=note_atomizer.py:2329 text='[원자화] 100건 처리, 14건 승격\\n• https://n.news.naver.com/mnews/article/6\\n• https://www.g'\n+[<timestamp>] note_atomizer 완료\n no oauth token found for github.com\n-Traceback (most recent call last):\n-File \"<path>\", line 2337, in <module>\n-main()\n-File \"<path>\", line 2308, in main\n-save_state(state)\n-File \"<path>\", line 177, in save_state\n-tmp.rename(STATE_FILE)\n-File \"/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/pathlib.py\", line 1372, in rename\n... diff truncated at 220 lines ...",
  "strict_diff": true,
  "text_match": false,
  "watched_before": [],
  "watched_after": [],
  "watched_changed": [],
  "verdict": {
    "ok": false,
    "openclaw_ok": false,
    "hermes_trigger_ok": true,
    "hermes_exec_ok": true,
    "watch_ok": true,
    "text_match": false,
    "strict_diff": true,
    "trigger_delta_ms": 0,
    "changed_watch_paths": [],
    "reasons": [
      "openclaw_failed",
      "strict_diff_mismatch"
    ]
  },
  "report_path": "/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM004-jisik-promote/cycle-1/20260414_164422_jisik-promote-dkzkyq_ocAM-AM004-jisik-promote.json"
}

  • 최종 상태: ROLLBACK

검증: etf-data-collect-domestic-valueocAM-AM005-etf-domestic-value

  • rationale: 국내배당밸류 ETF, 최근 151초 성공, enabled owner 없음
  • command: python3 /Users/ron/.openclaw/skills/etf-tracker/scripts/run_etf_tracker.py domestic_value
  • schedule: 8 16 * * 1-5
  • cycle 1: rc=2, verdict=fail, diff_ok=None, elapsed=301.19s, report=/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM005-etf-domestic-value/cycle-1
:00",
    "duration_ms": 300004,
    "stdout": "",
    "stderr": "",
    "timed_out": true,
    "error": "timeout after 300s"
  },
  "hermes_output_file": null,
  "hermes_response": "",
  "text_diff": "",
  "strict_diff": true,
  "text_match": true,
  "watched_before": [
    {
      "path": "/Users/ron/.openclaw/skills/etf-tracker/knowledge/logs",
      "exists": true,
      "kind": "dir",
      "size": null,
      "mtime_ns": 1774995471550605789,
      "sha256": null,
      "file_count": 3,
      "total_size": 15419,
      "digest": "4f964d34bcbcc9e443f4e82c6862e4b65cbe3068e94c885a1808dcee4b9aa938",
      "sample_files": [
        "2026-02_execution.md",
        "2026-03_execution.md",
        "2026-04_execution.md"
      ]
    }
  ],
  "watched_after": [
    {
      "path": "/Users/ron/.openclaw/skills/etf-tracker/knowledge/logs",
      "exists": true,
      "kind": "dir",
      "size": null,
      "mtime_ns": 1774995471550605789,
      "sha256": null,
      "file_count": 3,
      "total_size": 15419,
      "digest": "4f964d34bcbcc9e443f4e82c6862e4b65cbe3068e94c885a1808dcee4b9aa938",
      "sample_files": [
        "2026-02_execution.md",
        "2026-03_execution.md",
        "2026-04_execution.md"
      ]
    }
  ],
  "watched_changed": [],
  "verdict": {
    "ok": false,
    "openclaw_ok": false,
    "hermes_trigger_ok": true,
    "hermes_exec_ok": false,
    "watch_ok": true,
    "text_match": true,
    "strict_diff": true,
    "trigger_delta_ms": 0,
    "changed_watch_paths": [],
    "reasons": [
      "openclaw_failed",
      "hermes_exec_failed"
    ]
  },
  "report_path": "/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM005-etf-domestic-value/cycle-1/20260414_164441_etf-data-collect-domestic-value_ocAM-AM005-etf-domestic-value.json"
}

  • 최종 상태: ROLLBACK

검증: gmail-credit-monitorocAM-AM006-gmail-credit-monitor

  • rationale: Gmail monitor, 최근 14초 성공, enabled owner 없음; DNS 실패 시 rollback
  • command: python3 /Users/ron/.openclaw/scripts/gmail_credit_monitor.py && echo '완료'
  • schedule: every 21600000ms
  • cycle 1: rc=2, verdict=fail, diff_ok=None, elapsed=1.46s, report=/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM006-gmail-credit-monitor/cycle-1
le.api_core.\n warnings.warn(message, FutureWarning)\n Gmail 인증 실패: HTTPSConnectionPool(host='oauth2.googleapis.com', port=443): Max retries exceeded with url: /token (Caused by NameResolutionError(\"HTTPSConnection(host='oauth2.googleapis.com', port=443): Failed to resolve 'oauth2.googleapis.com' ([Errno 8] nodename nor servname provided, or not known)\"))\n+```",
  "strict_diff": true,
  "text_match": false,
  "watched_before": [
    {
      "path": "/Users/ron/.openclaw/cron/runs/gmail-credit-monitor.jsonl",
      "exists": true,
      "kind": "file",
      "size": 113287,
      "mtime_ns": 1775957710942322865,
      "sha256": "9e1d46b42a295226cf1915031f7c7c2cffcf7eb2140d1b25093936ce29c176db",
      "file_count": null,
      "total_size": null,
      "digest": null,
      "sample_files": []
    }
  ],
  "watched_after": [
    {
      "path": "/Users/ron/.openclaw/cron/runs/gmail-credit-monitor.jsonl",
      "exists": true,
      "kind": "file",
      "size": 113287,
      "mtime_ns": 1775957710942322865,
      "sha256": "9e1d46b42a295226cf1915031f7c7c2cffcf7eb2140d1b25093936ce29c176db",
      "file_count": null,
      "total_size": null,
      "digest": null,
      "sample_files": []
    }
  ],
  "watched_changed": [],
  "verdict": {
    "ok": false,
    "openclaw_ok": false,
    "hermes_trigger_ok": true,
    "hermes_exec_ok": false,
    "watch_ok": true,
    "text_match": false,
    "strict_diff": true,
    "trigger_delta_ms": 1,
    "changed_watch_paths": [],
    "reasons": [
      "openclaw_failed",
      "hermes_exec_failed",
      "strict_diff_mismatch"
    ]
  },
  "report_path": "/Users/ron/.openclaw/workspace/verification/hermes-batch-AM-real/ocAM-AM006-gmail-credit-monitor/cycle-1/20260414_164942_gmail-credit-monitor_ocAM-AM006-gmail-credit-monitor.json"
}

  • 최종 상태: ROLLBACK

종료

  • batch AM enabled migrations: 1개
  • 종료: 2026-04-14T16:49:43+09:00

Rollback placeholder 정리 (2026-04-14T16:50:14+09:00)

  • Hermes cleanup backup: /Users/ron/.hermes/cron/jobs.json.bak-batchAM-rollback-cleanup-20260414_165014
  • 제거한 disabled rollback Hermes 항목: [('ocAM-AM001-commodity-spike-watch', 'commodity-spike-watch'), ('ocAM-AM002-etf-domestic-index', 'etf-data-collect-domestic-index'), ('ocAM-AM003-cu-queue-processor', 'cu-queue-processor'), ('ocAM-AM004-jisik-promote', 'jisik-promote-dkzkyq'), ('ocAM-AM005-etf-domestic-value', 'etf-data-collect-domestic-value'), ('ocAM-AM006-gmail-credit-monitor', 'gmail-credit-monitor')]
  • 이유: AM 실패 후보가 다음 batch source 탐지를 막지 않도록 정리. OpenClaw job 삭제 없음.

최종 검증 요약 (2026-04-14T16:51:03+09:00)

Batch AM 최종 이전 결과

OpenClaw cron Hermes job OpenClaw enabled Hermes enabled/state schedule verifier
etf-insight-extractor ocAM-AM000-etf-insight-extractor False True/scheduled 25 16 * * 1-5 3/3 strict-diff OK

5개 미달 사유

  • batch AM이 실제 이전 완료한 것은 1개다.
  • strict 미선점 후보는 시작 시점부터 고갈되어 있었고, AM은 OpenClaw enabled + Hermes enabled owner 없음 후보를 재검증했다.
  • 6개 보충 후보는 timeout, network/DNS, strict-diff mismatch, Playwright sandbox 오류, state race로 rollback했다.
  • 실행 중 다른 batch(AO/AP/AQ)가 일부 후보를 enabled Hermes owner로 선점/이전했다. AM은 해당 source를 건드리지 않도록 AM rollback placeholder를 cleanup했다.
  • 현재 OpenClaw enabled로 남은 9개는 모두 Hermes enabled owner가 이미 존재한다. 즉 AM이 새로 잡을 미선점 후보는 0개다.

현재 OpenClaw enabled + Hermes owner 상태

OpenClaw id name enabled Hermes owner disabled claims
etf-data-collect-global-theme ETF 데이터 수집 (글로벌 테마) ['ocX-X004-etf-global-theme'] []
gmail-credit-monitor Gmail 크레딧 아그리콜 리포트 모니터 ['ocAP-AP003-gmail-credit-command'] ['ocQ-Q007', 'ocAN-AN004-gmail-credit']
etf-data-collect-domestic-theme ETF 데이터 수집 (국내테마) ['ocAI-AI000'] []
dm-analyst-prompt-refresh DM 애널리스트 시스템 프롬프트 일일 갱신 ['ocAQ-AQ000-dm-prompt-refresh-text'] ['ocQ-Q015', 'ocAN-AN002-dm-prompt-refresh']
etf-data-collect-domestic-value ETF 데이터 수집 (국내배당밸류) ['ocAO-AO001-etf-domestic-value-prompt'] ['ocQ-Q014']
oil-supply-monitor 글로벌 석유 공급망 모니터 ['ocAQ-AQ001-oil-supply-morning-prompt'] ['ocAI-AI003']
methodology-weekly-reflector 방법론 주간 고찰 ['ocAQ-AQ002-methodology-reflector-text'] []
gitnexus-reindex-legacy GitNexus 재인덱싱 ['ocAQ-AQ003-gitnexus-reindex-text'] []
gmail-newsletter-collector Gmail 뉴스레터 수집기 ['ocAQ-AQ004-gmail-newsletter-command'] ['ocU-U007-gmail-newsletter-collector', 'ocAN-AN003-gmail-newsletter']

안전 가드 확인

  • JSON parse: OK (/Users/ron/.hermes/cron/jobs.json, /Users/ron/.openclaw/cron/jobs.json)
  • OpenClaw 전체 enabled: 9
  • Hermes 전체 enabled: 162
  • AM 성공 항목은 OpenClaw disabled / Hermes scheduled / enabled overlap 없음
  • Gateway 18789 PID 63520 LISTEN 확인
  • 금지 파일 미수정 확인: shared/llm.py, shared/cycle_base.py mtime 유지
  • LaunchAgents/daemon 변경 없음

자체평가

  • 정확성 4.6/5, 완성도 2.8/5, 검증 4.7/5, 최소변경 4.5/5
  • 미달 항목: 요청 수량 5개 중 1개만 AM 단독으로 strict dual-run 통과. 남은 미선점 후보가 없고, 다른 batch owner와 충돌하지 않기 위해 중단.
  • Remaining Risks: OpenClaw enabled 9개가 Hermes enabled owner와 동시 존재한다. 이는 AM이 만든 overlap은 아니지만, 해당 owner batch(AO/AP/AQ/X/AI)의 OpenClaw disabled 후처리 누락 여부를 별도 점검해야 한다.