virtual-insanity
← 리포트 목록

최종 Critic — Hermes 이전 + 해리 시야 전수 검증 통합 판정

2026-04-15 critic

최종 Critic — Hermes 이전 + 해리 시야 전수 검증 통합 판정

작성: 2026-04-15 15:48 KST
원칙: 메인/각 Codex 보고서 무비판 수용 금지. 실제 파일·로그·launchctl·cron jobs·Hermes memory·sector config 직접 확인. 원본 코드/Gateway 수정 없음.

최종 판정

부분 PASS. Phase 18 안정화로 넘겨야 함.

해리 시야 기준으로 “대부분 화면/데이터/리포트 경로가 어디로 가는지”는 파악됐고, Hermes 코드·데이터·잡 정의는 상당 부분 전환됐다. 그러나 운영 웹앱 PID가 아직 OpenClaw 실행체이고, 8개 active cron 중 여러 리포트성 job이 외부 DNS/LLM/Gmail 실패를 exit 0으로 삼키는 false success 위험이 남아 있다.

즉, “해리가 오늘 보는 화면이 대체로 살아 있다”는 의미에서는 부분 성공이지만, “OpenClaw를 완전히 폐기해도 된다”는 의미의 PASS는 아니다.


5개 sub-task 판정표

sub-task 판정 근거
s:2 웹앱 전수 페이지/API REVISE Hermes 코드 test_client 기준 500 없음, 주요 alias/route 보강은 확인. 그러나 현재 8080 PID 19581은 cwd=/Users/ron/.openclaw/workspace/scripts/pipeline, stdout/stderr도 .openclaw/logs 사용. plist 파일은 Hermes로 고쳐졌지만 launchd 메모리 정의와 실제 프로세스는 아직 OpenClaw.
s:4 cron 8개 리포트 발송 REVISE active jobs 8개와 현 command 대부분 Hermes 경로 확인. 그러나 s:4 재검증에서 bond/blog/newsletter/Gmail/macro 등 다수가 DNS·LLM·Gmail 실패. 특히 bond_daily_report.py, newsletter, Gmail collector가 실패를 exit 0으로 남길 수 있음. vault-analyst-feedback도 현재 last_status=error.
s:6 newsletter 5단계 체인 APPROVE Damnang 등 뉴스레터 노트가 Hermes/agent vault에 있고, 2026-04-15 13:24~13:25 gmail_newsletter_collector.py report sector trace 다수 확인. sector-group.json report topic id=8, Bot API chat 확인 보고도 있음. 이후 sandbox DNS 재실행 실패는 환경 제약으로 분리.
s:8 sector 5 topic 라우팅 APPROVE ~/.hermes/sector-group.json 5개 topic 매핑 확인: market=5, ideas=6, industry=7, report=8, ops=9. Hermes shared/telegram.pymessage_thread_id를 넣는 코드 경로 확인. 외부 Telegram live send는 sandbox DNS로 실패했지만 dry-run 범위의 목적지/경로 검증은 충족.
s:9 데이터 ↔ UI 매트릭스 REVISE Hermes memory 데이터와 Hermes source UI 연결은 PASS. Fed/SPY/bond/newsletter 데이터 존재 확인. 하지만 s:9 자체 결론대로 현재 운영 PID 19581은 OpenClaw cwd/source/log를 잡고 있어 “실제 해리 화면이 Hermes source를 읽는다”는 조건 미충족.

결과: APPROVE 2 / REVISE 3 / REJECT 0


전체 이전 완성도 점수

기준 점수 판정 근거
해리 원래 의도 일치도 3.6/5 웹앱/텔레그램 리포트 경로는 대부분 파악. 하지만 실제 운영 웹앱이 Hermes 경로가 아니고, 리포트 cron 일부는 현재 네트워크/LLM 실패 시 조용히 성공 처리.
웹앱 Hermes 전환 3.0/5 Hermes webapp code/test_client는 양호. LaunchAgent plist 파일도 Hermes 경로. 그러나 launchd 로드 상태와 PID 19581은 OpenClaw 실행체라 freeze 불가.
텔레그램/sector 라우팅 4.0/5 sector config와 message_thread_id 코드 경로 확인. report sector trace는 실제 다수 존재. 다만 5 topic 모두 live ok/message_id 확보는 sandbox 차단으로 미확인.
cron/jobs Hermes 전환 3.5/5 active jobs 8개, active command 기준 .openclaw 경로는 openclaw_command metadata 1건 외 없음. 그러나 일부 job last_status/error, external 실패, false-success 위험이 큼.
데이터 저장소 전환 4.0/5 ~/.hermes/workspace/memory에 Fed liquidity, SPY 51 rows, bond briefing, newsletter data 존재. sector-news 반도체 파일은 빈 배열. 일부 루트 데이터/ops/telemetry는 선별 이전만 됨.
경로 치환 완성도 4.1/5 strict 활성 scripts grep에서 .openclaw path hit 0. 백업/컨테이너/식별자 제외 기준 통과. 단 ~/.hermes/openclaw.json 내부 학습 토픽 prompt에는 /Users/ron/.openclaw/... 문자열 37개 잔존.
실질 작동 증거 3.8/5 Fed aggregator Hermes output 15:03 성공, SPY Hermes data 51 rows, Gateway running/Telegram getUpdates OK, newsletter sector_trace 확인. 반면 macro collector latest output은 DNS 실패, webapp live PID mismatch.

종합 점수: 3.7/5 — 부분 PASS


직접 확인한 핵심 사실

1) Hermes active jobs 8개

~/.hermes/cron/jobs.json 직접 확인:

jobs_total=8, active=8
41c2736f0527 vault-analyst-feedback                 last=error
ocPH-SPY-price-history-refresh                      last=ok   command=~/.hermes/workspace/scripts/pipeline/price_history_collector.py
ocAK-AK000-bond-daily-dry-run                       last=ok   command=~/.hermes/workspace/scripts/pipeline/bond_daily_report.py --notify
ocAO-AO003-bond-morning-command                     last=ok   command=~/.hermes/workspace-root-scripts/gmail_credit_monitor.py
macro-series-collector                              last=ok   command=~/.hermes/workspace/scripts/pipeline/macro_series_collector.py
fed-liquidity-aggregator                            last=ok   command=~/.hermes/workspace/scripts/pipeline/fed_liquidity_aggregator.py
ocM-M019-blog-monitor                               last=None command=~/.hermes/workspace/scripts/pipeline/blog_monitor.py --notify
ocAQ-AQ004-gmail-newsletter-command                 last=None command=~/.hermes/workspace/scripts/pipeline/gmail_newsletter_collector_dual.sh

jobs.json.openclaw hit는 openclaw_command metadata 1건뿐이고 active command에는 없음.

2) Hermes scripts 경로 치환

백업·컨테이너·docker/podman·test 파일 제외 후 직접 검사:

~/.hermes/workspace/scripts strict grep .openclaw path hit_files = 0

다만 ~/.hermes/openclaw.json에는 /Users/ron/.openclaw 문자열 37개가 남아 있음. 대부분 텔레그램 학습 토픽 prompt의 ingest/react 명령 예시다. 이는 sector 리포트 발송과 별개지만, Telegram learning-topic 자동 ingest까지 Hermes화하려면 후속 치환 필요.

3) webapp 운영 PID는 아직 OpenClaw

launchctl print gui/501/com.openclaw.sihwang-webapp
arguments = /usr/bin/python3 /Users/ron/.openclaw/workspace/scripts/pipeline/run_webapp.py
working directory = /Users/ron/.openclaw/workspace/scripts/pipeline
stdout/stderr = /Users/ron/.openclaw/logs/...
pid = 19581

lsof -p 19581
cwd = /Users/ron/.openclaw/workspace/scripts/pipeline

반면 plist 파일 자체는 Hermes로 수정되어 있음:

/Users/ron/Library/LaunchAgents/com.openclaw.sihwang-webapp.plist
ProgramArguments = /usr/bin/python3 /Users/ron/.hermes/workspace/scripts/pipeline/run_webapp.py
WorkingDirectory = /Users/ron/.hermes/workspace/scripts/pipeline
logs = /Users/ron/.hermes/logs/...

판정: 파일 패치는 됐지만 launchd가 새 정의를 다시 로드하지 않았다. 단순 curl이 200이어도 “Hermes 이전 완료” 증거로는 부족하다.

4) Hermes 데이터는 존재

직접 확인:

~/.hermes/workspace/memory/fed-liquidity/latest.json
  date=2026-04-15, phase=유동성 축소 — 흡수 국면, history_last=2026-04-15

~/.hermes/workspace/memory/price-history/SPY.json
  last_updated=2026-04-15, source=yfinance, rows=51, last=2026-04-14

~/.hermes/workspace/memory/bond-briefing/latest.json
  date=2026-04-12, report_len=8294

~/.hermes/workspace/memory/sector-news/20260414_S10_반도체기술.json
  []  # 빈 배열

5) sector config와 Gateway

~/.hermes/sector-group.json
chat_id=-1003522748967
topics={market:5, ideas:6, industry:7, report:8, ops:9}

Gateway는 건드리지 않고 상태만 확인:

launchctl ai.hermes.gateway state=running, pid=50183
API_SERVER_ENABLED=true, API_SERVER_PORT=18789
최근 gateway.log: Telegram getUpdates HTTP 200 반복

해리 시야 커버리지

해리가 보는 것 커버 상태 판단
웹앱 메인/브리핑/API Hermes code 기준 검증됨, live PID는 OpenClaw 부분 커버
/api/chart/SPY live log와 Hermes data 기준 정상, SPY 51 rows 커버
Fed liquidity Hermes latest.json과 aggregator output 확인 커버
bond study 04-12 리포트/PDF 있음, 04-14는 데이터 없음 부분 커버
sector-news 반도체 endpoint는 200 가능하지만 데이터 파일 빈 배열 부분 커버
뉴스레터/Damnang vault notes와 report sector trace 확인 커버
Telegram sector topics config/code path 확인, live send ok/message_id는 sandbox 차단 부분 커버
cron 리포트 전체 8개 정의/경로 확인, 다수 dry-run 실패/false-success 부분 커버

커버 안 된 핵심: 실제 웹앱 프로세스의 Hermes 실행 전환, 외부 네트워크 의존 cron의 정상 수집/발송, false-success 제거.


잔존 이슈 우선순위

P0 — OpenClaw freeze 전 필수

  1. webapp LaunchAgent 재로드/재시작
  2. 현재 plist 파일은 Hermes지만 로드된 launchd job과 PID는 OpenClaw.
  3. 필요 조건: 재로드 후 lsof -p <pid>에서 cwd/log/arguments가 .hermes로 바뀌어야 함.

  4. cron false-success 수정

  5. bond_daily_report.py --dry-run LLM 실패 후 exit 0.
  6. Gmail/newsletter/Gmail credit monitor도 외부 조회 실패를 wrapper success처럼 남김.
  7. 실패를 degraded 또는 non-zero로 올리지 않으면 해리가 “정상”으로 오판함.

  8. 외부 DNS/API reachability 검증

  9. s:4에서 Gmail/FRED/RSS/Telegram/yfinance fallback이 sandbox에서 광범위 실패.
  10. Gateway는 Telegram polling 200이므로 전부 코드 결함은 아니지만, cron runtime별 네트워크가 분리되어 있음.

P1 — Hermes 단독 운용 품질

  1. vault-analyst-feedback job 정리
  2. prompt job이고 현재 last_status=error / Codex token 401 계열.
  3. shell script로 묶을지, provider/auth를 고칠지 결정 필요.

  4. macro-series-collector silent fail / FRED 실패 처리

  5. 메인 직접 backfill 데이터는 있음.
  6. 그러나 최신 Hermes cron output에는 FRED API DNS 실패와 49개 실패 로그가 남아 있음.
  7. 실패 개수 > 0이면 명확히 경고/상태 기록해야 함.

  8. blog-monitor notify 폭주 위험

  9. backlog가 많고 active command는 --notify.
  10. 첫 운영 실행 전 processed seed/limit/dry-run 전환 필요.

P2 — 청소/명칭 정리

  1. ~/.hermes/openclaw.json 내부 old path 37개
  2. 학습 토픽 ingest/react prompt가 OpenClaw script를 가리킴.
  3. Harry visible report와 직접 충돌은 아니지만 Telegram 자동 ingest에 영향 가능.

  4. OpenClaw LaunchAgents 파일 잔존

  5. loaded 기준 OpenClaw 없음 보고가 있었으나 plist 파일들은 남아 있음.
  6. 서비스 label com.openclaw.*를 유지할지 ai.hermes.*로 바꿀지 정책 필요.

해리 후속 행동 필요 사항

해리가 직접 할 일은 코드 작업이 아니라 방향 결정 1개임.

권고: Phase 18 안정화로 넘김.
목표는 “OpenClaw 완전 폐기”가 아니라 먼저 아래 3개를 끝내는 것.

  1. 웹앱을 실제 Hermes 프로세스로 재기동하고 확인.
  2. 8개 cron 중 false-success/외부 실패를 고쳐 상태가 거짓 OK가 되지 않게 함.
  3. Telegram/Gmail/FRED/RSS 네트워크가 Hermes runtime에서 되는지 한 번에 검증.

이 3개 전에는 ~/.openclaw freeze/삭제/쓰기금지 선언 금지.


최종 결론

최종 판정: 부분 PASS

  • Hermes 이전은 “코드/데이터/잡 정의” 관점에서 상당히 진행됨.
  • 해리 시야의 핵심 항목도 대부분 어디서 읽고 어디로 보내는지 파악됨.
  • 그러나 실제 운영 웹앱이 아직 OpenClaw 경로에서 떠 있고, cron 리포트 다수가 실패를 조용히 삼키는 상태라 완전 PASS 또는 OpenClaw 폐기 선언은 불가.

다음 라운드는 Critic Round가 아니라 Phase 18 안정화 작업이어야 함.

자체평가

  • 정확성: 4.7/5 — 보고서 주장과 실제 파일·launchctl·jobs·memory·logs를 직접 대조함.
  • 완성도: 4.6/5 — 5개 sub-task 판정, 전체 점수, 잔존 이슈, 후속 행동까지 정리함.
  • 검증: 4.5/5 — sandbox localhost/DNS 제한 때문에 일부 live curl/send는 로그와 파일 증거로 대체했지만, 제한과 코드 결함을 분리해 기록함.
  • 최소 변경: 5.0/5 — 원본 코드/Gateway 수정 없음. critic 보고서만 생성.

종합: 4.7/5