왜 outer-loop 설정이 분리되어 있나
`core/config/outer_loop.py` 는 inner-loop (AgenticLoop, model selection) 와 분리된 outer-loop 의 설정 root 입니다. autoresearch (자가 ML 실험 루프) + seed-pipeline (재귀적 seed 생성) + petri (alignment audit) 세 시스템이 공유하는 임계값을 한 곳에 둠으로써 8 군데에 흩어져 있던 설정(모듈 상수 2 + TOML 2 + env vars + manifest + auth.toml + codex auth.json) 을 단일 SOT 로 통합합니다.
스키마
[outer_loop] fallback_to_payg = false # subscription 소진 시 PAYG api_key 폴백 차단 (strict) warn_threshold = 0.5 # 사용량 50% 시 노란 경고 abort_threshold = 0.9 # 사용량 90% 시 abort [outer_loop.autoresearch] # autoresearch/train.py 의 9-col tsv outer-loop 임계값 [outer_loop.petri] credential_source = "oauth" # OAuth subscription 만 사용 [outer_loop.seed_pipeline] # Session 63 cycle 의 generation 임계값 [outer_loop.bindings] # slack/discord/telegram poller binding
로드 경로
`load_outer_loop_config(path?)` 가 우선순위: (1) 명시적 path 인자, (2) `GEODE_CONFIG_TOML` env, (3) `~/.geode/config.toml`. 파일/섹션 누락 시 기본값 모델 반환. `extra='forbid'` 로 오타는 즉시 에러.
Phase α-ζ 작업
본 페이지가 다루는 PR-α1 (#1308) 은 schema + loader 만. 후속 Phase β/γ/δ/ε/ζ 는 subscription guard + FE warning UX (prompt_toolkit bottom_toolbar 3-tier) + SessionCheckpoint resume + idempotency-key cache. 자세한 로드맵은 `docs/plans/2026-05-19-outer-loop-config-consolidation.md`.
관련 코드 + 참조
core/config/outer_loop.py(PR-α1 #1308, 16 unit tests)docs/architecture/outer-loop-resume-decision.md(Phase ζ ADR)docs/plans/2026-05-19-outer-loop-config-consolidation.md