macro-timeseries / context-macro 갱신 주체 실측 — guardian 보류 4건 종결 기록
결론 (한 줄)
09-28 파일 신선도는 실측으로 재확인됐다(51개 중 50개 3일 내 갱신). 다만 "다른 경로가 매일 대신 갱신 중"이라는 오케스트레이터 전제는 절반만 맞다 — 매일 자동으로 도는 건 fi-morning-brief(평일 07:10) 크론이 macro_series_collector.py --series로 부르는 11개 시리즈뿐이고, 나머지 39개와 context-macro.json의 09-28 갱신은 guardian 세션의 수동 1회 실행이다. 원인(08-17 13:31 일괄 정지)은 이미 확정됐으므로 guardian 4건은 재진단 불필요로 종결한다. 재가동은 해리 승인 대기(ops_todos #1976).
1. 신선도 재확인 (조회 2026-09-28 23:02 KST)
| 명령 | 결과 |
|---|---|
find memory/macro-timeseries -name '*.json' \| wc -l |
51 |
find memory/macro-timeseries -name '*.json' -mtime -3 \| wc -l |
50 |
| 3일 초과 파일 | ADPWNUSNERSA.json (05-11 06:58, 수집목록에 없는 과거 잔재) |
| BAMLC0A0CM.json | mtime 09-28 13:10:29, source=fred, last_updated=2026-09-28, 최신 관측 2026-09-24 0.79 (651~652행) |
| context-macro.json | mtime 09-28 17:54, collected_at 2026-09-28T17:54:32, ready=True |
| 50개 파일 mtime 분포 | 전부 09-28 13:10:28~13:11:26 한 구간에 몰림 → 한 번의 일괄 실행 흔적 |
2. 실제 갱신 주체 대조
grep -rl 'macro-timeseries' scripts/pipeline/*.py 후보 8개 중 쓰기(write) 하는 건 macro_series_collector.py(31행 MACRO_DIR = WORKSPACE / "memory" / "macro-timeseries", 283행 def save_series(...) → 289행 atomic_write(path, json.dumps(payload, ...))로 {SERIES_ID}.json 저장; 222행은 100-inbox 사본 저장) 하나. context-macro.json은 macro_collector.py 249행 path = ctx.save() → shared/analyst_context.py 640행 context-{agent}.json. fi_session_collector·fi_market_snapshot·signal_synthesizer·judgment_review_weekly·us_cycle_dashboard·data_quality_monitor는 읽기 전용, fed_liquidity_aggregator는 자기 출력 파일만 씀.
라이브 장부 /Users/ron/.hermes/cron/jobs.json 대조:
| 크론 | enabled | 호출 | 마지막 실행 |
|---|---|---|---|
| macro-series-collector (06:50 평일, 전 50개) | False | macro_series_collector.py | 08-14 06:50 ok |
| ocRESTORE-vault-macro-bridge (06:50 평일) | False | macro_collector.py → context-macro.json | 08-14 06:50 ok |
| ocRESTORE-market-indicator-tracker | False | market_indicator_tracker.py (market-indicators 폴더, macro-timeseries엔 안 씀) | 08-16 07:05 error |
| fi-morning-brief (07:10 평일) | True | migrated/fi-morning-brief.sh 10~11행: DGS2 DGS5 DGS10 DGS30 T10Y2Y DFII10 T10YIE T5YIFR BAMLC0A0CM BAMLH0A0HYM2 BAMLEMCBPIOAS 11개를 macro_series_collector.py --series | 09-28 07:11 ok |
09-28 실제 갱신 이력:
- 07:10 fi-morning-brief(자동) → 11개 (BAMLC0A0CM 포함)
- 13:10:28~13:11:27 guardian 세션 수동 실행 macro_series_collector.py → 50/50 성공 (프로세스 기록 proc_8ab00830f599 인접 호출, 보고서 260928_guardian_market-indicator-tracker-stall.md 2번 항목)
- 17:54:18~17:54:32 guardian 세션 수동 실행 macro_collector.py → context-macro.json 저장 (proc_bbfba13488e3, /Users/ron/.hermes/logs/macro_collector.log 직전 기록 2026-07-20 06:51 → 자동 실행 두 달 공백 확인)
- LaunchAgent(analyst-macro, agent-queue-macro)와 셸 스크립트 중 macro_collector.py 호출처 없음.
3. 판단
- BAMLC0A0CM 등 금리·크레딧 11개: 자동 갱신 정상 (fi-morning-brief 경유). 크레딧 업무 핵심 지표는 매일 채워진다.
- 나머지 39개 시리즈: 내일(09-29)부터 다시 멈춘다. context-macro.json도 다시 멈춘다(자동 호출 경로 없음).
- 원인은 이미 확정: 2026-08-17 13:31:43 사유 없는 30개 잡 일괄 정지(260928_guardian_market-indicator-tracker-stall.md). 추가 진단으로 얻을 게 없다.
- 크론 재가동은 이번 작업 범위 밖(해리 확인 필요) — ops_todos #1976(todo, 해리 배정)에 이미 올라가 있음.
4. bus_commands 종결 처리
| id | 제목(요약) | 이전 상태 | 처리 |
|---|---|---|---|
| 40260 | BAMLC0A0CM.json 갱신 주체 확인 | needs_evidence | cancelled + 종결사유 |
| 40275 | market-indicator-tracker 08-16 정지 원인 진단 | needs_evidence | cancelled + 종결사유 |
| 40282 | 시장지표 수집 크론 08-16 오류 후 비활성 원인 진단(재발행) | needs_evidence | cancelled + 종결사유 |
| 40301 | context-macro.json 07-20 정지 원인 진단 | needs_evidence | cancelled + 종결사유 |
종결사유: "전제 소멸 — 데이터 갱신 정상(금리·크레딧 11개 자동, 나머지는 09-28 수동 1회), 원인 확정(08-17 일괄 정지), 재진단 불필요. 재가동은 ops_todos #1976 해리 승인 대기."
5. 재발행 방지
- 같은 주제(macro-timeseries 정체 / BAMLC0A0CM 갱신 주체 / market-indicator-tracker 정지 / context-macro 정지)로 guardian 재진단을 다시 발행하지 않는다. 신선도 판단 기준은 이 문서 1절 명령.
- 예외: 해리가 #1976을 승인해 재가동한 뒤에도 50개가 당일로 안 바뀌면 그때만 새로 진단한다.
- 09-29 이후 39개가 다시 오래돼 보이는 것은 예상된 상태이며 새 이상이 아니다.