Crucible bounded search
Crucible은 후보 생성, 신뢰된 paired 평가, 판정, private ref 갱신을 하나의 제한된 반복으로 묶습니다. 실행 전에 측정 정체성과 자원을 동결하고, 각 반복의 KEEP·REJECT·INVALID와 비용을 원장에 남깁니다.
CAS로 private search ref 전진
search head 유지
모든 판정과 비용을 append-only 기록
여유가 있으면 다음 candidate, 소진되면 summary.json
적응 루프 밖의 권한 경계
train KEEP은 loop-local head만 갱신합니다. disjoint one-shot sealed test가 ELIGIBLE 여부를 기록하고, production release는 별도 승인 경로에 남습니다. promotion_authority=none
실행 진입점은 geode-evolve crucible loop <config>입니다.geode-evolve crucible prepare가 선언형 명세를 검증해 campaign 설정을 준비합니다. 이 설정은 아래의 스캐폴드·Petri용 TOML과 별개이며, KEEP은 private search head만 갱신하고 배포를 승인하지 않습니다.
스캐폴드 탐색과 Petri의 공통 설정
스캐폴드 탐색과 Petri 감사는 역할이 많습니다. auditor, target, judge, mutator가 각각 모델과 자격 lane을 갖고, seed 풀과 promote 정책과 스케줄러 knob이 더해집니다. 이것이 env, 모듈 상수, 별도 TOML로 흩어지면 "지금 루프가 실제로 무엇으로 도는가"를 답할 수 없게 됩니다. 이 역할 설정과 기본값은 ~/.geode/config.toml의 [self_improving_loop] 섹션 한 곳에 모았고, 로더는 evals/config.py의 load_self_improving_loop_config입니다.
스키마 스케치
[self_improving_loop]
fallback_to_payg = false # subscription 소진 시 PAYG 폴백 차단
warn_threshold = 0.5 # 사용량 경고 임계값
abort_threshold = 0.9 # 사용량 중단 임계값
[self_improving_loop.autoresearch]
budget_minutes = 5 # 실험 1회 벽시계 예산
seed_limit = 10 # 감사 1회당 seed 수
seed_select = "bundled"
dim_set = "subset" # 22-dim 루브릭
max_turns = 10
promote_policy = "gate" # gate / random / never
replicate = 1 # 감사 반복 M
[self_improving_loop.autoresearch.target] # judge / auditor 동일 형태
model = "..."
source = "api_key" # 자격 lane
[self_improving_loop.autoresearch.mutator]
default_model = "..."
source = "auto"
[self_improving_loop.seed_generation]
candidates_default = 15
# roles.<role> = { model, source, ... } 바인딩
[self_improving_loop.scheduler]
enabled = false
cron = "0 */6 * * *"
min_interval_minutes = 60정확한 필드 정의와 docstring은 evals/config.py가 SoT입니다. 위 수치와 정책은 스키마 기본값이며, model = "..."은 실제 모델 ID로 교체해야 하는 자리 표시자입니다.
로드 경로와 strict 검증
해석 순서는 (1) 명시적 path 인자, (2) GEODE_CONFIG_TOML env, (3) ~/.geode/config.toml입니다. 파일이나 섹션이 없으면 기본값으로 채운 모델을 돌려주지만, 섹션이 존재하는데 모르는 필드가 있으면 모든 모델이 extra="forbid"라 즉시 ValueError로 실패합니다. 오타가 조용히 무시되는 것보다 시끄럽게 죽는 쪽이 측정 인프라에서는 옳습니다.
레거시 마이그레이션과 디버깅
geode-eval config migrate-petri-toml. 옛~/.geode/petri.toml역할 override를[self_improving_loop.autoresearch.<role>]로 옮깁니다. 기본은 dry-run입니다.geode config explain. 어떤 레이어(CLI, env, project toml, global toml)가 값을 이기고 있는지 보여줍니다. "설정을 바꿨는데 그대로"의 답입니다.