텔레그램 한 줄에서 시작해 사실 수집 (웹 + 실시간 시세 + og:image) → 단일 호출 집필 → mono 테마 HTML 발행 → Cloudflare Pages 까지. v5.0.0 의 17-Phase 검수 framework 는 opt-in 으로 대기, 디폴트 호출 경로는 v4.5.7 baseline 위에 외부 데이터 채널 2개 + 차트 20종 추가.
현재 디폴트는 v4.5.7 의 2-call Tier 4 그대로. ContextAnalyst 는 웹 검색 후 두 hook (market_fetcher + image_fetcher) 으로 외부 데이터를 보강하고, NarrativeComposer 가 단일 호출로 본문·20종 차트·지도·사진 선택을 모두 emit. ReportSynthesizer 가 사진을 로컬로 내려받아 HTML 로 묶고 Cloudflare Pages 에 배포.
사용자가 한 줄 ("호르무즈 봉쇄 가능성 분석해줘" 또는 "삼성전자 1Q 실적 짧게"). 키워드로 자동 라우팅 — 짧게/요약 = fast, 심층/면밀 = deep, 그 외 standard.
타임라인·핵심 수치·출처 URL·언급 종목 (instruments_mentioned) 을 구조화. mode 별 max_tokens (fast/standard 4K · deep 10K, v4.5.7).
ContextAnalyst 가 emit 한 instrument 목록을 4-source 가 분담 수집 → ContextAnalysis.time_series 채움 → composer 가 candle/line/area 차트로 emit.
sources URL 들의 첫 64KB 만 fetch → og:image / og:title / og:description / publisher 파싱 → ContextAnalysis.available_images 채움. 5장 cap, per-URL 5s + total 12s timeout, 외부 lib 의존성 0 (aiohttp + regex).
행위자·구조·시나리오·모순 분석 + 본문 essay + 20종 차트 data + 지도 + 사진 선택 까지 단일 호출 안에서 emit. mode 별 max_tokens — fast 12K / standard 20K / deep 32K (WRITE-AP-8 차단). 7테마 풀에서 random.choice 로 보고서 테마 결정.
composer 의 ComposedReport → freeform_essay.html 단일 템플릿 으로 렌더. 발행 직전 _localize_report_images hook 이 og:image URL 을 봇이 직접 다운로드해 reports/img/<hash>.<ext> 로 저장 (CDN hotlink 차단 회피). d3.v7 + charts.js + maps.js 를 reports/ 로 동기화.
HTML + img/ + static/ 묶음 wrangler 로 업로드. Telegram 채팅엔 URL + 감시 신호가 있다면 WatchlistRegistry (SQLite) 에 등록 — 후속 보고서 자동 트리거 hook (v5.1.1).
composer 가 외부 빌더 없이 ComposedSection.charts 에 직접 emit. v5.3.0 부터 FT/Economist 스타일 신규 7종 추가 (총 20). 신규는 guarded tier — chart_critic + Visual Sanity Gate C 통과 필수. 카테고리 구분은 색이 아닌 45° 패턴 (mono guide §3.3).
v5.4.3 의 결정 트리 step 0 — 재무·수익성·기업 분석 카테고리는 sankey 또는 waterfall 중 최소 1개 emit 강제 (CHART-AP-19 fix). 시계열 분기로 먼저 collapse 되어 분해 차트 branch 까지 못 도달하던 회귀 차단.
"신규 차트 추가했는데 한 번도 안 박힌다" 의 캔들 회귀 (v5.2.0) 교훈. production wiring 만으로는 부족 — 5 층으로 emit 보장.
src/visual/usage_log.py · starvation alarm (5 보고서 연속 type-X 0 회 emit 시 경고)research_director.py:_DEFAULT_REQUIRED_EXHIBITS · fault_tree → waterfall · pre_mortem → scatter · 9종 method 별 매핑chart_type_monotony · standard ≥3 차트인데 distinct <2 면 holdtests/regression/fixtures/chart_type_scenarios.yaml · KNOWN_CHART_TYPES 와 1:1 매핑 검증
v5.0.0 의 4-Tier 17-Phase 신문사형 검수 framework 는 코드는 머지됐지만 디폴트 OFF. .env 의 V5_* flag 를 켤 때만 진입 — v4.5.7 호출 경로는 byte-equal 보존.
활성화 SSOT — docs/V5_ACTIVATION.md · 측정 결과 — docs/V5_TEST_RESULTS.md. 운영 의존성 누락 시 graceful degrade (Vega 미설치 → d3 fallback, Playwright 미설치 → vision SKIP 후 logical 7-rubric 만 작동).
lens_policy.select_theme() 가 7개 풀에서 random.choice. event_type 무관 — 시각 다양성 목적. 모든 테마는 동일 레이아웃, bg/card/text/accent 만 다름. legacy light_mono 는 CSS 보존되지만 풀 제외 (직접 지정 시만).
v5.0.0 (2026-05-05, 17-Phase 마스터 플랜 완료) 부터 v5.4.3 (2026-05-20) 까지의 사용자 가시 변경. 자세히는 CHANGELOG.md.
reports/img/<hash> 로 same-origin serve.