구성
evals/seed_generation/이 자기개선 루프의 세대마다 새 Petri seed 묶음을 만듭니다. 입력은 직전 세대의 baseline과 audit 결과, 출력은 다음 세대의 seed 파일과 git-tracked 번들 스냅샷입니다. CLI 진입점은 geode-eval audit-seeds입니다.
| 모듈 | 역할 |
|---|---|
picker.py | 다음 런이 겨눌 target dimension 선택 |
orchestrator.py | 9-역할 phase 그래프 실행 (Seed Scenario Generation) |
manifest.py | seed 파일 × dimension × 예산 manifest |
cost_preview.py | 실행 전 비용 추정. confirm 프롬프트의 근거 |
pre_flight.py | 자격, 쿼터, 의존성 사전 점검 |
tournament.py | Elo 토너먼트 + 생존자 선택 |
checkpointer.py / resume.py | phase별 체크포인트와 재개 |
bundle_sync.py | 완료 런을 docs/self-improving/petri-bundle/seeds/<run_id>/로 동기화 |
geode-eval audit-seeds generate는 picker → cost preview → pre-flight → confirm → pipeline 순서로 진행하고, geode-eval audit-seeds resume이 체크포인트에서 이어 갑니다.
생존자 선택: frontier-band가 기본
기본 선택은 pilot 실측 난이도가 약 50% 판별 대역에 가까운 후보를 고르는 frontier입니다. 너무 쉬운 seed와 항상 실패하는 불공정 seed를 함께 피하고, pilot 근거가 없으면 Elo로 결정적으로 폴백합니다 (evals/seed_generation/tournament.py의 DEFAULT_SURVIVOR_SELECTION).
norm = (pilot dim_means[target_dim] - 1) / 9 frontier_reward = 1 - 2 * abs(norm - 0.5)
- reward는 중간 판별 대역에서 1, Petri 척도의 양 끝에서 0입니다.
- pilot 신호가 없으면 기존 Elo 순위로 폴백합니다.
- 조정값:
GEODE_SEED_SURVIVOR_SELECTION(frontier/blend/elo/difficulty). 이전 scalarized 정책은blend로 복원하며, 그 가중치는GEODE_SEED_BLEND_ELO_WEIGHT/GEODE_SEED_BLEND_DIFFICULTY_WEIGHT(기본 각 1.0).
seed pool로의 연결
생존자는 런 번들에 남는 것으로 끝나지 않습니다. Closed-Loop가 실제로 읽는 곳은 두 풀입니다.
state/seed-pools/cycle-input. 사이클 입력 풀.geode seeds assemble이 최신 seed-generation 런들의 검증된 생존자에서 결정적으로 조립합니다 (기본--out이 이 풀입니다).state/seed-pools/held-out. 버전 고정 held-out 벤치마크. arm 간 비교의 기준자로 쓰며 사이클 입력과 섞지 않습니다.
다음
- Seed 생성 런. 공개된 런별 대시보드.
- Closed-Loop. 이 seed들이 측정에 쓰이는 곳.