한 번에 정책 하나만 바꾸고, 측정은 고정합니다.
하네스 밖에서 도는 별도 루프입니다. 기준선에서 타입이 정해진 정책 변경 하나를 적용하고, 같은 Petri 감사와 판정 기준으로 KEEP 또는 복원을 정합니다.
변경 1개 → 감사
실행 계약을 고정한 뒤 허용된 정책 하나만 바꾸고, 같은 측정 장치로 GEODE를 감사합니다. 실행 중인 제품 런타임이 스스로를 고치는 경로가 아닙니다.
운영자 승인실행 · 판정: 승인실행 계약 · 모델 · 예산
program.mdlive 호출과 고정 예산을 승인받은 뒤에만 실행합니다. 승인이 없으면 계약만 준비하고 오프라인 확인만 합니다.
실행 계약 · 모델 · 예산
program.md실행 · 판정: 실행 계약fixed-budget 루프train.pyseed · rubric 판, 역할 모델과 자격 출처, 측정 설정, 반복 · 시간 · 비용 예산, 승격 정책과 중단 조건을 실행 전에 고정합니다.
fixed-budget 루프
train.py실행 · 판정: 후보 1개 요청mutator · 후보 1개loop/mutate근거가 있는 가설 하나로 허용된 정책 표면 하나만 바꿉니다.
7개 표면만 · hyperparam 거부
loop/mutate데이터: 정책 변경 · mutation IDfile-backed 정책state/policies래퍼 프롬프트, 도구 정책, 분해 조언, reflection, 스킬 카탈로그 메타데이터, 에이전트 계약(role · system_prompt · tools), 도구 설명 · 힌트의 일곱 표면만 바꿀 수 있습니다. hyperparam 변경은 파싱과 적용에서 모두 거부됩니다. 정책 적용, 재측정, 선택적 commit은 서로 다른 단계라, 적용이 곧 감사를 뜻하지 않습니다.
seed pool · rubric 고정
prepare.py실행 · 판정: seed · rubric 고정audit subprocess · 고정 timeoutmeasure.pyprepare.py는 seed pool과 rubric의 고정 기준이며 후보가 바꾸지 않습니다. 측정 모듈을 바꾸면 대상이 아니라 측정 자체가 바뀝니다.
file-backed 정책
state/policies데이터: 선택된 정책정책별 OVERRIDE · STRICTmeasure.pymeasure.py가 지금 선택된 정책 파일을 읽어 감사 환경으로 넘깁니다.
정책별 OVERRIDE · STRICT
measure.py실행 · 판정: 정책별 override 경로core · 정책 로더measure.py가 wrapper와 정책 종류별 override · strict 경로를 감사 subprocess에 넘기고, 런타임의 해당 정책 로더가 읽습니다. wrapper(GEODE_WRAPPER_OVERRIDE → system_prompt)는 그중 한 분기이며, 환경 키가 늘어도 바꿀 수 있는 표면은 일곱 가지 그대로입니다. 파일을 고친 것만으로 후보가 대상에 닿았다고 보지 않고, 감사 증거의 진단으로 확인합니다.
audit subprocess · 고정 timeout
measure.py실행 · 판정: audit subprocessPetri 감사고정된 timeout과 예산으로 감사를 실행하며, 비교 도중 timeout을 바꾸지 않습니다. 출력이 없으면 0점이 아니라 진단 공백입니다.
Petri 감사데이터: 감사 대화core · 정책 로더
auditor가 seed 시나리오로 GEODE와 대화하고 judge가 그 기록을 채점합니다.
판정 → 유지 · 복원
같은 계약의 baseline과 비교해 critical 회귀와 승격 규칙으로 KEEP을 정하고, 거절된 변경은 기록된 이전 값으로 복원합니다.
Petri 감사데이터: 차원 점수critical 회귀 · 보조 감점
fitness.py차원별 점수와 누락 차원 · 표본 수를 함께 넘깁니다. 측정하지 못한 차원을 관측값으로 해석하지 않습니다.
baseline · provenance
ledger.py데이터: baseline · provenancecritical 회귀 · 보조 감점fitness.py기록된 계약 · epoch가 같은 baseline과만 비교합니다. 새 Git 브랜치가 baseline 상태를 나눠 주지는 않습니다.
critical 회귀 · 보조 감점
fitness.py데이터: fitness · 회귀 사유_should_promote · KEEPgate.pycritical 차원 회귀와 보조 감점을 먼저 보고, 그다음 margin이나 목표 차원 검사를 적용합니다. 양수 점수 하나만으로 승격하지 않습니다.
_should_promote · KEEP
gate.py데이터: KEEP · 다음 baselinebaseline · provenanceledger.py유지된 후보가 다음 기준선이 됩니다. 로컬에서 유지된 후보는 저장소 merge나 릴리스가 아닙니다.
_reject_and_revert
gate.py실행 · 판정: REJECT · 이전 값 복원file-backed 정책state/policiesrunner가 만든 후보는 mutation ID로 기록된 이전 정책 구간을 복원하고, 복원 실패는 따로 표시합니다. 수동 변경은 자동 복원되지 않으며, 복원이 불확실하면 다음 후보로 넘어가지 않습니다.
_should_promote · KEEP
gate.py기록 · 관측: 결과 · 판정 행results · mutations 행ledger.py측정과 판정, 출처를 결과 행으로 한 번 남깁니다. 지난 행을 고쳐 쓰지 않습니다.
대조 · 반복 측정
2026.06 실행: 변경 없는 never arm과 K=5 기준선으로 감사 잡음을 따로 재고, 단일 감사의 KEEP은 replicate로 다시 확인했습니다.
run-2606-broken-tool-use실행 · 판정: 세 arm 설정fixed-budget 루프
train.py2026.06.03–04 실행은 변경 없는 never, 무작위로 채택하는 random, 판정으로 채택하는 gate의 세 arm으로 흔들림과 변경 효과를 나눴습니다. 대상은 GPT-5.5, 감사 · 판정은 Claude Opus 4.8이었습니다.
gen-0 기준선 · 감사 5회 평균
run-2606-broken-tool-use데이터: K=5 평균 기준선baseline · provenanceledger.pygen-0 기준선을 감사 5회의 평균으로 잡았습니다(Petri broken_tool_use, 낮을수록 좋음, 평균 2.667).
never arm · 변경 없는 대조
run-2606-broken-tool-use실행 · 판정: 변경 없이 측정audit subprocess · 고정 timeoutmeasure.pynever arm은 정책을 바꾸지 않았는데도 평균 3.38로 흔들렸습니다(10회, 낮을수록 좋음). 감사 잡음이 변경 효과보다 컸다는 직접 근거입니다.
--replicate K · 재측정
train.py실행 · 판정: --replicate Kaudit subprocess · 고정 timeoutmeasure.py같은 후보를 같은 조건으로 K번 다시 재어, 감사 한 번의 운 좋은 값을 거릅니다.
replicate · 단일 KEEP 재측정
run-2606-broken-tool-use실행 · 판정: 재측정 → 되돌림_reject_and_revertgate.pygate 단일 감사에서 KEEP된 후보(1.6)를 다시 재니 3.0–3.8로 기준선보다 나빠, champion 2.667로 되돌렸습니다. 이 실행의 결론은 뚜렷한 개선 없음입니다.
모든 연결을 같은 굵기로 보여 줍니다. 흐름을 고르면 그 경로만 번호와 함께 강조됩니다.
- 실선 · 요청 · 후보 · 결과가 흐르는 방향
- 파선 · 실행 · 판정 · 권한 · 설정
- 긴 점선 · 기록 · 관측, 판정과 별개
- 굵은 검은 선 · 고른 흐름, 번호는 순서
- 상자 · 코드 · 기록 경계, 머리말에 경로
- 안쪽 칩 · 그 경계의 구성 요소
- 점선 상자 · 그 경계 밖
- 루프 · 측정 실행
- 계약 · 판정
- 정책 · 기록
- 변경 · 감사 대상 · 실행 기록
GEODE의 SIL 드라이버 이름은 autoresearch이며, prepare · train · program 구성과 고정 예산 방식은 Karpathy의 autoresearch에서 착안했습니다. 모델 가중치를 바꾸지 않고, 측정 장치와 예산은 비교 동안 고정합니다.
- 바꿀 수 있는 것
- 래퍼 프롬프트, 도구 정책, 분해 조언, reflection, 스킬 카탈로그 메타데이터, 에이전트 계약, 도구 설명 · 힌트의 일곱 표면입니다. 평가기, 예산, seed와 rubric은 비교 동안 고정입니다.
- 실행 기록의 범위
- run-2606의 수치는 그 실행의 Petri broken_tool_use 평균입니다(낮을수록 좋음). SIL 전체의 누적 성능 향상이나 일반화의 근거가 아닙니다.