virtual-insanity
← 리포트 목록

stale 146개 활성 복구 시도

2026-04-14 stale [openclaw, cron, stale, recovery]

stale 146개 활성 복구 시도

결론: 2개만 안전하게 활성 복구했고, 나머지는 보고/대기 대상으로 분리했다.

  • 실행 전 백업 완료:
  • ~/.openclaw/cron/jobs.json.bak-stale-recovery-260414_133015
  • 고정 alias: ~/.openclaw/cron/jobs.json.bak-stale-recovery
  • 한 번에 10개 초과 활성화 금지 준수: 실제 활성 복구 2개.
  • 크론 삭제 없음.
  • shared/llm.py, shared/cycle_base.py 수정 없음.
  • 대량 LLM 호출 위험 때문에 136개 ok-but-stale는 직접 실행하지 않았다.

1. 복구 전/후 상태

항목 복구 전 복구 후
활성 24h+ stale 146 144
never-run 7 5
ok-but-stale 136 136
schema-skipped 2 2
error 1 1

복구 후 전체 목록:

  • ~/knowledge-agent/400-reports/260414_stale_recovery_after_action_stale_144.csv

2. never-run 7개 분석과 조치

index id/name 상태 원인 실행 가능성 조치 결과
88 방법론 피드백 수신methodology-feedback-inbox enabled=true, isolated agentTurn이지만 id 없음 + payload.text만 있고 message 없음 methodology_inbox.py --dry-run rc=0, 실제 처리 0건이라 안전 수동 실행 후 id 부여, payload.message 변환, state/nextRun 갱신 복구 성공. 다음 실행 2026-04-15 06:00 KST
89 id 없음 / GitNexus 재인덱싱 enabled=true, isolated agentTurn, id 없음 + payload.text npx gitnexus analyze는 무거운 분석/쓰기 가능. dry-run 없음 실행 안 함 보고 대상. id/message schema 정리 필요
263 urea-price-tracker enabled=true, isolated agentTurn, payload.command만 있고 message 없음 --dry-run rc=0이나 CF/NG/TradingEconomics 모두 실패, meaningful data 없음 실제 실행 안 함 데이터 소스/DNS 복구 후 재시도
276 blueprint-updater enabled=true, main systemEvent, lastRun 없음 blueprint_updater.py --dry-run rc=0. 실제 실행은 knowledge-agent 청사진/시그널 갱신 수동 실행 후 state/nextRun 갱신 복구 성공. 다음 실행 2026-04-14 18:00 KST
292 morning-briefing enabled=true, main systemEvent, lastRun 없음 shell script가 아니라 main session 알림 text. 수동 shell 실행 대상 아님 실행 안 함 다음 정규 systemEvent 경로 확인 필요
293 memory-weekly-report enabled=true, isolated인데 payload.kind=command; nextRun 없음 memory_guardian.py --weekly-report는 Telegram 발송. dry-run 없음 실행 안 함 schema mismatch. 실행 전 정책 결정 필요
294 chroma-mcp-recycle enabled=true, isolated agentTurn이지만 payload.command만 있고 message 없음; nextRun 없음 restart_chroma_mcp.py --dry-run rc=0. 실제 실행은 프로세스 kill 가능 실제 실행 안 함 위험 작업. 승인 후 별도 실행

실제 실행 로그

  • ~/.openclaw/workspace/memory/cron-runs/stale-recovery-260414/methodology-inbox.log
  • rc=0
  • 볼트 신규 항목 0건
  • 처리 0건
  • ~/.openclaw/workspace/memory/cron-runs/stale-recovery-260414/blueprint-updater.log
  • rc=0
  • 청사진 갱신 완료
  • 변경 시그널 생성: knowledge-agent/_staging/260414_blueprint_change_signal.md
  • Telegram 전송은 sandbox DNS로 실패했지만 핵심 산출물은 생성됨

변경된 파일

  • ~/.openclaw/cron/jobs.json
  • index 88: id/message/state/nextRun 갱신
  • index 276: state/nextRun 갱신
  • ~/knowledge-agent/400-reports/260410_codex_system-blueprint-monitoring-update.md
  • ~/knowledge-agent/_staging/260414_blueprint_change_signal.md

3. 1주일 이상 stale 11개 분석

공통 관찰: 11개 모두 last_status=ok이고 last_error는 없다. 대부분 월요일 주간 크론이며, nextRunAtMs2026-04-13 과거에 멈춰 있다. jobs 상태만 보면 memory_guardian이 직접 죽였다는 증거는 없다. 개별 스크립트 실패보다 Hermes cron due-run 경로가 월요일 스케줄을 처리하지 못한 문제 가능성이 높다.

id 카테고리 마지막/다음 원인 추정 우선순위 액션
source-weight-tuner LLM/지식 last 04-06 04:41 / next 04-13 04:40 주간 월요일 due-run 누락 P2 LLM/지식 변경 가능. quota 고려해 대기
semi-market-data 데이터 수집 last 04-06 06:23 / next 04-13 06:15 주간 수집 누락 P1 데이터 가치 높음. 별도 수동 실행 후보
shipbuilding-excel-builder 데이터 수집 last 04-06 06:30 / next 04-13 06:30 주간 빌드 누락 P1 산출물 쓰기/전송 확인 후 실행 후보
eia-energy-3indicators 데이터 수집 last 04-06 06:31 / next 04-13 06:30 주간 수집 누락 P1 외부 데이터 수집. 별도 실행 후보
vault-gdrive-backup 시스템/백업 last 04-06 08:05 / next 04-13 06:00 주간 백업 누락 P1 외부 Drive/백업 영향. 승인 후 실행
job-fe743793 출처 품질 트래커 LLM/지식 last 04-06 09:15 / next 04-13 09:15 주간 리포트 누락 P2 LLM/평가 가능성. 대기
choi-report-collect 데이터 수집 last 04-06 10:00 / next 04-13 10:00 주간 Telegram 수집 누락 P2 외부/전송 영향. 대기
etf-weekly-report 데이터/리포트 last 04-06 11:43 / next 04-13 07:03 주간 리포트 누락 P2 보고서 생성 가능. quota/쓰기 고려
skill-health 시스템 운영 last 04-06 11:43 / next 04-13 08:10 주간 점검 누락 P1 비교적 안전한 실행 후보
analyst-calibration LLM/지식 last 04-06 11:44 / next 04-13 08:25 주간 평가 누락 P2 LLM quota 고려해 대기
moat-scorer LLM/지식 last 04-06 11:45 / next 04-13 07:00 주간 스코어 누락 P2 평가/산출물 쓰기 가능. 대기

4. schema-skipped 2개 + error 1개

id 현재 상태 원인 조치 판단
cron-alert isolated + payload.kind=script Cron runtime은 isolated에 agentTurn만 허용. 그런데 이 잡은 10분 주기라 agentTurn으로 바꾸면 LLM 호출이 하루 144회가 될 수 있음 즉시 변환 금지. 직접 runner 또는 main systemEvent 정책 필요
domain-wiki-compiler main + payload.kind=shell main job은 systemEvent만 허용. shell command는 scheduler에서 skip isolated agentTurn 변환 또는 별도 deterministic runner 필요. 지금 실행 안 함
price-history-collector last_status=error Delivering to Telegram requires target <chatId>가 마지막 에러. 현재 delivery에는 self-healer가 chatId를 넣어둔 상태지만 last state는 error/overdue 수동 실행 가능하지만 LLM agentTurn + 전송 영향 있음. 별도 승인 후 실행 권장

5. ok-but-stale 136개 샘플 점검

요약:

  • ok-but-stale 136개는 마지막 실행은 ok다.
  • 그러나 현재 144개 stale 중 nextRunAtMs가 이미 과거인 것은 138개다.
  • nextRunAtMs가 미래인 4개는 24h 기준에서는 stale지만 weekly/monthly 성격상 false positive에 가깝다.

카테고리 분포

카테고리 개수
LLM/지식·에이전트 56
데이터 수집/시장 49
시스템 운영/리포트 19
기타 20

샘플 10개

id next_run 마지막 상태 판단
vault-note-atomizer 04-13 03:30 ok daily인데 next가 과거. 실제 overdue
deep-enricher 04-13 04:10 ok daily인데 next가 과거. 실제 overdue
intelligence-github-release-monitor 04-12 16:33 ok 6시간 주기인데 밀림. 실제 overdue
intelligence-blog-monitor 04-12 16:34 ok 6시간 주기인데 밀림. 실제 overdue
intelligence-market-indicator-tracker 04-13 07:05 ok 평일 다회성인데 밀림. 실제 overdue
etf-data-collect-global-alloc 04-14 07:15 ok 오늘 아침 due-run 누락. 실제 overdue
etf-data-collect-global-theme 04-14 07:35 ok 오늘 아침 due-run 누락. 실제 overdue
choi-report-collect 04-13 10:00 ok weekly지만 이미 월요일 due 지나감. 실제 overdue
daily-report 04-13 08:00 ok 평일 daily인데 밀림. 실제 overdue
vault-flow-health 04-13 07:00 ok daily인데 밀림. 실제 overdue

false positive에 가까운 4개

id next_run 이유
note_atomizer_relink 04-19 04:00 weekly. 마지막 실행은 24h 초과지만 다음 실행은 아직 미래
copper-market-collector 04-17 07:30 weekly Friday. 다음 실행 미래
industry-news-extractor 04-15 08:03 weekly Wednesday. 다음 실행 미래
vault-lint-advanced-weekly 04-19 05:00 weekly. 다음 실행 미래

6. 카테고리 / 개수 / 복구 액션 / 결과 / 잔존 리스크

카테고리 개수 복구 액션 결과 잔존 리스크
never-run 7 → 5 안전한 2개만 수동 실행 + state/nextRun 갱신 methodology-feedback-inbox, blueprint-updater 복구 나머지 5개는 npx/외부데이터/Telegram/프로세스 kill/systemEvent라 미실행
1주일 이상 stale 11 분석만 수행 모두 last_status=ok, 월요일 due-run 누락으로 판단 scheduler/ticker due-run 경로 문제 가능성 큼
schema-skipped 2 원인 분석 수정 안 함 cron-alert는 10분 주기라 agentTurn 변환 시 LLM quota 폭발 위험
error 1 last_error 분석 수정 안 함 chatId는 현재 보정됐지만 수동 실행은 LLM/전송 영향 있음
ok-but-stale 136 샘플 10개 + false-positive 4개 확인 대량 수동 실행 안 함 138개는 nextRun 과거. gateway/ticker 검증 필요

7. 다음 권장 조치

  1. Hermes cron ticker/due-run 경로부터 검증해야 한다. 136개를 수동으로 돌리는 것은 LLM quota와 데이터 쓰기 리스크가 크다.
  2. daily-context-snapshot은 24h 기준뿐 아니라 nextRunAtMs < now 기준을 함께 보고해야 한다.
  3. cron-alert는 10분 주기라 agentTurn 전환 금지. deterministic runner 또는 main systemEvent 설계를 따로 해야 한다.
  4. price-history-collector는 이미 chatId가 보정돼 있으므로, 다음에는 이 1개만 별도 승인 후 수동 실행 후보로 삼을 수 있다.
  5. weekly false positive 4개는 stale 경보에서 낮은 우선순위로 내려야 한다.

8. 검증

  • jobs.json 백업 후 작업함.
  • python3 -m json.tool ~/.openclaw/cron/jobs.json 통과.
  • 회귀 체크 재실행 결과:
  • active stale count: 144
  • cause counts: ok-but-stale=136, never-run=5, schema-skipped=2, error=1
  • 수동 실행 2개 모두 rc=0.
  • 실행 수: 2개로 10개 제한 준수.

9. 자체 평가

  • 정확성: 4.6/5 — 실제 jobs 상태, 코드, dry-run/실행 로그를 대조했다.
  • 완성도: 4.5/5 — 가능한 안전 복구는 수행했고 위험 작업은 분리했다.
  • 검증: 4.6/5 — 백업, JSON 검증, stale count 전후 검증 완료.
  • 최소 변경: 4.7/5 — jobs 2개만 건드렸고 삭제/대량 실행 없음.

종합: 4.6/5