virtual-insanity
← 리포트 목록

최종 Grand Critic — 2026-04-15 Hermes Migration Phase Close

2026-04-15 final [grand-critic, hermes-migration, phase-close]

최종 Grand Critic — 오늘 하루 작업 전체 판정

판정 시각: 2026-04-15 20:40~20:55 KST
검증자: Codex Critic
범위: Phase 17 종료, OpenClaw→Hermes 이전, launchd/bootstrap, 해리 시야 webapp/Telegram 리포트, wrapper 5종, sandbox 해제 후 live 검증

최종 판정

부분 PASS.

해리가 실제로 보는 핵심 표면 — 웹앱 + Telegram 리포트 도달 — 은 오늘 최종 라운드에서 실증 수준까지 올라왔다. 그러나 “OpenClaw 완전 이전”은 아직 아니다. 이유는 세 가지다.

  1. ~/.openclaw/cron/jobs.json은 활성 0개라 cron 측 동결은 가능하지만, launchctl print 기준 아직 OpenClaw 경로를 물고 실행 중인 서비스가 남아 있다.
  2. Hermes cron 8개 중 일부는 silent-fail 패치 이후 실패를 exit 1로 드러내기 시작했고, 실제 최신 상태에 price-history, blog-monitor, vault-analyst-feedback 오류가 남아 있다.
  3. ~/.hermes/openclaw.json의 learning-topic/collab prompt 안에 /Users/ron/.openclaw/... exec 경로가 여전히 남아 있어, Telegram ingest/반응 계열은 hard freeze 시 깨질 수 있다.

따라서 결론은 다음과 같다.

  • 해리 시야 기능: PASS
  • Hermes 핵심 전환: 부분 PASS
  • OpenClaw hard freeze/delete: 아직 금지
  • OpenClaw cron soft freeze: 가능

1. 카테고리별 판정표

카테고리 판정 직접 확인 근거 남은 리스크
webapp APPROVE launchctl print gui/501/com.openclaw.sihwang-webapppid=17287, program/cwd/log 모두 /Users/ron/.hermes/.... Live curl: days=abc/0/-5 → 400, days=30 → 200. /market/bond-study/2026-04-12/pdf → 200, /ops/pipelines, /pm, /briefing → 200. /api/news/S10_반도체기술은 200이나 count 0. 04-14 bond PDF는 404로 정상/자료부재 상태.
cron REVISE ~/.hermes/cron/jobs.json active 8개, 명령은 Hermes 경로. 260415_cron_silent_fail_audit.md에서 7개 silent-fail 경로 패치와 강제 실패 exit 1 확인. 최신 output 기준 price-historyyfinance not installed로 exit 1, blog-monitor exit 1, vault-analyst-feedback job state error 잔존. cron은 “조용히 성공”은 줄었지만 운영 성공은 아직 전부 아님.
Telegram 리포트 APPROVE message_id 실증 다수 확보: DM 11602, ops 2350/2355, report 2351/2352/2353, market 2356/2357/2358/2359/2360, bond group 51803/51804. api.telegram.org DNS/HTTP 200도 현재 Codex shell에서 확인. sector_trace만 남는 경로와 message_id 저장 경로가 혼재. 모든 발송 wrapper의 message_id 표준화 필요.
launchd 19개 부분 APPROVE 19개 핵심 대상은 현재 대부분 loaded/not running/last exit 0이며 Hermes 경로. 직접 launchctl print에서 대상 19개 모두 oc_refs=0, hm_refs>0 확인. ai.hermes.gateway running pid 20146. 전체 LaunchAgent 전수로 보면 별도 16개 loaded service가 OpenClaw 경로를 여전히 참조한다. 19개만 기준이면 통과, 전체 OpenClaw 폐기 기준이면 미완.
sandbox/network APPROVE 현재 network enabled 상태에서 DNS 확인: api.telegram.org, Yahoo, Naver RSS, FRED 모두 resolve. https://api.telegram.org root HTTP 200. Localhost webapp curl 성공. launchctl 제어는 여전히 일부 환경에서 제한될 수 있음. 단 이번 검증은 read/print/curl 중심이라 충분.
analyst 4종 APPROVE market topic 도달: fundamental 2356 및 최종 2360, macro 2357, technical 2358, pm 2359. TSV와 sector_trace.log 모두 ok=True/topic_id=5. fundamental prompt 안의 DM 지시 충돌은 보고서에서 known issue로 남음. 정기 실행 전 prompt 정리가 필요.

2. 5 sub-task 최종 판정

이전 최종 Critic에서 REVISE였던 webapp/cron/data→UI 항목을 오늘 후속 증거까지 반영해 다시 판정했다.

sub-task 최종 판정 근거
s:2 webapp 전수 검증 APPROVE live webapp이 Hermes PID/cwd로 올라왔고, /api/chart/SPY guard curl이 실제 400/200으로 통과. 주요 페이지도 200.
s:4 cron reports REVISE silent fail 패치는 유효하지만 최신 Hermes cron output에서 실제 실패가 남아 있다. “작동 확인”이 아니라 “실패를 드러내는 상태”까지 온 것.
s:6 newsletter/briefing chain APPROVE weekly/morning Telegram wrapper가 report topic message_id 2351, 2352, 2353을 남김. newsletter sector routing도 기존 trace와 설정 일치.
s:8 sector topics APPROVE sector-group.json topic map 유지, market/ops/report 실도달 message_id 확보. sandbox network 차단 이슈는 현재 해소.
s:9 data→UI APPROVE with caveat fed-liquidity chart API 200, SPY chart API 200, bond 04-12 PDF 200. 단 sector-news count 0과 04-14 bond PDF 404는 데이터 공백으로 남음.

집계: APPROVE 3 / APPROVE with caveat 1 / REVISE 1 / REJECT 0.


3. wrapper 5종 판정

wrapper/작업 판정 실증 증거
KPI daily/weekly APPROVE ~/.hermes/logs/kpi_daily.log: telegram_ok=True message_id=2355. 이전 동일 경로 2350. weekly KPI도 message_id=2354 추가 확인.
morning briefing Telegram APPROVE ~/.hermes/logs/morning-briefing-telegram.log: message_ids=[2352], 이후 2353도 확인.
weekly briefing Telegram APPROVE ~/.hermes/logs/weekly-briefing-telegram.log: message_ids=[2351].
analyst resend APPROVE analyst_*_last_telegram.tsv: macro 2357, fundamental 2360, technical 2358, pm 2359. fundamental_resend_fix에는 2356/2360 두 차례 성공.
bond message_id logging APPROVE ~/.hermes/logs/bond_daily_last_telegram.tsv: group topic 51803, 51804 success. bond_daily_report.py의 bool-only blind spot은 보강됨.

4. 오늘 확보된 message_id 전수 집계

영역 목적지 message_id 직접 확인 위치
inbox-triage / cowork DM Harry DM 492860021 11602 ~/.hermes/logs/cowork_daily_review.log
KPI daily ops topic topic_id=9 2350, 2355 ~/.hermes/logs/kpi_daily.log, 보고서 grep
KPI weekly ops topic topic_id=9 2354 ~/.hermes/logs/kpi_weekly.log
weekly briefing report topic topic_id=8 2351 ~/.hermes/logs/weekly-briefing-telegram.log
morning briefing report topic topic_id=8 2352, 2353 ~/.hermes/logs/morning-briefing-telegram.log
analyst fundamental market topic topic_id=5 2356, 2360 ~/.hermes/logs/sector_trace.log, analyst_fundamental_last_telegram.tsv
analyst macro market topic topic_id=5 2357 ~/.hermes/logs/analyst_macro_last_telegram.tsv
analyst technical market topic topic_id=5 2358 ~/.hermes/logs/analyst_technical_last_telegram.tsv
analyst PM market topic topic_id=5 2359 ~/.hermes/logs/analyst_pm_last_telegram.tsv
bond daily group topic -1003076685086 / topic_id=39439 51803, 51804 ~/.hermes/logs/bond_daily_last_telegram.tsv

사용자 제공 목록과 대조:

  • DM 11602: 확인.
  • ops 2350/2355: 확인. 추가로 weekly KPI 2354 확인.
  • report 2351/2352: 확인. 추가로 morning 재발송 2353 확인.
  • market 2356/2357/2358/2359: 확인. 추가로 fundamental 최종 2360 확인.
  • 그룹 51803/51804: 확인.

5. Phase 17 Critic Round 3 권고 4개 대응 상태

Round 3 권고 대응 상태 판정
49 silent fail / cron false-success 260415_cron_silent_fail_audit.md 기준 7개 스크립트와 vault prompt job을 패치. 강제 실패 케이스가 exit 1로 떨어지는 것 확인. 부분 해소 — silent fail은 줄었지만 최신 cron 자체 성공은 아직 전부 아님.
Copilot 403 영향 cron 분리 price_history_collector.py 자체는 LLM 호출 없음. 다만 Hermes LLM log에는 Codex token 401과 OpenRouter key 없음이 반복됨. 부분 해소 — price-history와 LLM 문제는 분리됐지만 LLM provider fallback 품질/토큰 문제는 잔존.
Hermes launchd 안정화 ai.hermes.gateway running pid 20146, HERMES_HOME=/Users/ron/.hermes. 핵심 19개 LaunchAgent는 Hermes 경로로 loaded. 부분 해소 — 전체 LaunchAgent 전수 기준 OpenClaw 경로 running 서비스가 별도로 남음.
localhost/sandbox 검증 한계 network_access=true 이후 local curl과 DNS가 통과. webapp guard 직접 확인. 해소.

6. 전체 이전 완성도 점수

기준 점수 이유
해리 원래 의도 일치도 4.4/5 해리가 보는 웹앱/Telegram 리포트는 실증 도달까지 확인. 완전 이전은 일부 미달.
webapp Hermes 전환 4.6/5 PID/cwd/log Hermes, curl 400/200, 주요 페이지/API 200. 일부 데이터 공백은 남음.
Telegram 도달성 4.7/5 실제 message_id가 10건 이상 확보됨. bond도 그룹 topic message_id 확보.
cron 안정성 3.4/5 active 8개와 silent-fail patch는 좋지만 최신 job error가 남음.
launchd 전환 3.6/5 핵심 19개는 Hermes 기준. 그러나 전체 LaunchAgent 중 OpenClaw path running 16개 발견.
데이터/UI 연동 4.1/5 SPY/fed/bond 04-12는 UI에서 확인. sector-news 일부 빈 상태.
OpenClaw 제거 준비도 2.8/5 OpenClaw cron active 0은 좋지만 launchd/config 잔존 때문에 hard freeze 불가.

종합: 3.9/5 — 부분 PASS.


7. 직접 실행한 핵심 검증 커맨드 결과 요약

webapp

launchctl print gui/501/com.openclaw.sihwang-webapp
state = running
program = /usr/bin/python3 /Users/ron/.hermes/workspace/scripts/pipeline/run_webapp.py
working directory = /Users/ron/.hermes/workspace/scripts/pipeline
stdout/stderr = /Users/ron/.hermes/logs/...
pid = 17287
/api/chart/SPY?days=abc  -> HTTP 400
/api/chart/SPY?days=0    -> HTTP 400
/api/chart/SPY?days=-5   -> HTTP 400
/api/chart/SPY?days=30   -> HTTP 200
/market/bond-study/2026-04-12/pdf -> HTTP 200, PDF bytes 167496
/market/bond-study/2026-04-14/pdf -> HTTP 404, "PDF 없음"
/api/fed-liquidity/chart -> HTTP 200
/api/news/S10_반도체기술 -> HTTP 200, count 0

launchd

핵심 19개 + webapp/gateway 확인 결과:

com.openclaw.cowork-daily-review       loaded, not running, last=0, Hermes refs, OpenClaw refs 0
com.openclaw.autopilot-sweeper         loaded, not running, last=0, Hermes refs, OpenClaw refs 0
com.openclaw.inbox-triage              loaded, not running, last=0, Hermes refs, OpenClaw refs 0
ai.openclaw.memory-guardian            loaded, not running, last=0, Hermes refs, OpenClaw refs 0
com.openclaw.ron-orchestrator          loaded, not running, last=0, Hermes refs, OpenClaw refs 0
analyst 4종                             loaded, not running, last=0, Hermes refs, OpenClaw refs 0
morning/weekly/kpi/sensors/briefing     loaded, mostly last=0, Hermes refs, OpenClaw refs 0
com.openclaw.sihwang-webapp             running pid=17287, Hermes refs, OpenClaw refs 0
ai.hermes.gateway                       running pid=20146, HERMES_HOME=/Users/ron/.hermes

하지만 전체 LaunchAgent 전수에서는 다음 문제가 남았다.

loaded_related 42
loaded_with_openclaw_refs 16

대표 잔존 running 서비스:

com.openclaw.auto-dispatcher
com.openclaw.claude-listener
com.openclaw.collab-review-loop
com.openclaw.dispatch-watcher
com.openclaw.ops-dashboard
com.openclaw.otel-collector
com.openclaw.telegram-bridge
com.openclaw.task-notifier
com.openclaw.tts-webhook
com.ron.pipeline-orchestrator
com.ron.vault-watcher

즉, “19개 목표 LaunchAgent”는 상당히 닫혔지만 “OpenClaw 전체 폐기” 기준은 아직 아니다.

cron

~/.openclaw/cron/jobs.json: total 295 / active 0
~/.hermes/cron/jobs.json: total 8 / active 8
~/.hermes/workspace/scripts active strict grep for .openclaw path: hit_count 0

최신 Hermes cron output에서 확인된 잔존 실패:

ocPH-SPY-price-history-refresh: Exit Code 1, ERROR: yfinance not installed
ocM-M019-blog-monitor: Exit Code 1
41c2736f0527 vault-analyst-feedback: jobs.json last error / output stale failed prompt 기록

network/sandbox

api.telegram.org DNS -> 149.154.166.110
query1.finance.yahoo.com DNS -> resolved
rss.blog.naver.com DNS -> resolved
fred.stlouisfed.org DNS -> resolved
https://api.telegram.org -> HTTP 200

8. 잔존 known issues 우선순위

P0 — hard freeze 차단

  1. OpenClaw 경로를 물고 실행 중인 LaunchAgent 16개
  2. 핵심 19개 외 서비스가 아직 OpenClaw cwd/program/log를 참조한다.
  3. hard freeze/delete 시 대시보드, bridge, listener, watcher 계열이 깨질 수 있다.

  4. ~/.hermes/openclaw.json 내부 learning-topic exec 경로

  5. 다수 topic prompt가 ingest_topic_media.py, telegram_react.py, collab_trigger.py, ingest_discord_announcement.py, forward_to_telegram.py/Users/ron/.openclaw/...로 호출한다.
  6. Telegram 수집/반응 계열이 hard freeze에 취약하다.

P1 — 운영 품질 차단

  1. Hermes cron 최신 실패
  2. price-history: yfinance not installed.
  3. blog-monitor: exit 1.
  4. vault-analyst-feedback: last error/stale failed output.
  5. silent-fail은 잡았지만, 실제 성공률은 아직 끌어올려야 한다.

  6. LLM provider/token 품질 문제

  7. ~/.hermes/logs/llm/20260415.jsonl에 Codex token refresh 401, OpenRouter key 없음 반복.
  8. Ollama fallback으로 성공한 경우는 있으나 품질/지연 리스크가 있다.

  9. message_id 로깅 표준화 미완

  10. KPI/briefing/analyst/bond는 점점 보강됐지만 모든 send_sector() 호출이 동일 포맷으로 저장되는 것은 아니다.
  11. sector_trace와 TSV/DB가 혼재한다.

P2 — 데이터 공백/정리

  1. sector-news 일부 빈 상태
  2. S10_반도체기술 API는 200이지만 count 0.

  3. 04-14 bond PDF 없음

  4. /market/bond-study/2026-04-14/pdf는 404. 04-12 PDF는 200.

  5. LaunchAgent label 이름은 여전히 com.openclaw.*

  6. 기능 문제는 아니지만 “완전 Hermes” 관점에서는 이름/namespace 정리가 남아 있다.

9. OpenClaw freeze 권고 여부

지금 가능한 것

OpenClaw cron soft freeze는 가능.

근거:

~/.openclaw/cron/jobs.json total 295 / active 0

즉, OpenClaw cron scheduler 관점에서는 더 이상 active job이 없다.

아직 하면 안 되는 것

~/.openclaw hard freeze/delete/write-protect는 아직 금지.

근거:

  • 현재 loaded LaunchAgent 중 OpenClaw 경로 참조 16개.
  • ~/Library/LaunchAgents/*.plist 중 OpenClaw 경로 포함 18개.
  • ~/.hermes/openclaw.json 안의 learning-topic/collab prompt가 OpenClaw script path를 직접 호출.
  • 일부 외부 bridge/agent queue/pipeline watcher가 아직 OpenClaw workspace 또는 scripts에 의존.

권고:

  1. 오늘은 ~/.openclaw/cron만 동결 대상으로 표시.
  2. .openclaw/workspace/scripts.openclaw/skills는 내일 전수 migration 전까지 보존.
  3. hard freeze 전 필수 gate:
  4. launchctl print 전수에서 /Users/ron/.openclaw 0건.
  5. ~/Library/LaunchAgents/*.plist에서 /Users/ron/.openclaw 0건 또는 명시 예외 목록 확정.
  6. ~/.hermes/openclaw.json의 exec path 전부 Hermes로 치환.
  7. Hermes cron 8개 최신 run이 성공 또는 의도된 실패로 분류.

10. 내일 이후 후속 과제

  1. LaunchAgent 전수 2차 이전
  2. 19개 목표 외 남은 16개 loaded OpenClaw-ref 서비스를 분류: 유지/폐기/이전.
  3. 특히 telegram-bridge, claude-listener, auto-dispatcher, ops-dashboard, vault-watcher, pipeline-orchestrator는 해리 시야/운영과 직접 연결될 가능성이 높다.

  4. ~/.hermes/openclaw.json prompt path 치환

  5. ingest_topic_media.py, telegram_react.py, collab_trigger.py, Discord forward 계열의 Hermes 대응 파일 존재 확인 후 치환.

  6. Hermes cron 8개 최신 성공률 회복

  7. price-history: Hermes runtime에 yfinance 설치/venv 경로 고정 또는 fallback만으로 성공하도록 수정.
  8. blog-monitor: 최신 exit 1 원인 로그 확정.
  9. vault-analyst-feedback: shell job 전환 후 실제 output 재생성.

  10. message_id 표준 로그 통일

  11. 모든 Telegram 발송 함수가 chat_id/topic_id/message_id/ok/error/source를 TSV 또는 DB에 남기게 통일.

  12. OpenClaw hard freeze 전 최종 게이트 리포트 작성

  13. 이름 예: 260416_openclaw_freeze_gate.md.
  14. 조건: launchd refs 0, Hermes cron latest OK, Telegram ingest OK, webapp OK.

11. 자체평가

  • 정확성: 4.7/5 — 보고서 주장만 수용하지 않고 launchctl print, live curl, cron output, grep, 로그 TSV를 직접 확인했다.
  • 완성도: 4.6/5 — 요청한 판정표, message_id 집계, Round 3 권고 대응, freeze 여부, 후속 과제를 포함했다.
  • 검증: 4.6/5 — network enabled 이후 DNS/local curl까지 직접 확인했다. 단 Telegram에 새 메시지를 보내는 destructive-ish 검증은 하지 않고 기존 message_id/로그를 기준으로 검증했다.
  • 최소 변경: 5.0/5 — 원본 코드/서비스/Gateway는 건드리지 않았고, 이 Critic 보고서만 작성했다.

종합: 4.7/5.