LLM 시스템에서는 작은 프롬프트 변경 하나가 출력 품질을 조용히 침식할 수 있습니다. GEODE는 이를 ratchet으로 막습니다. 전부 단방향 잠금장치입니다.
Ratchet이란
기계의 ratchet은 한 방향으로만 돌고 반대 방향으로는 잠깁니다. 소프트웨어에서는 품질 지표를 한 방향으로만 움직이게 하는 게이트를 뜻합니다. 테스트 수가 줄면 빌드가 실패하고, 프롬프트 해시가 바뀌면 빌드가 실패하는 식입니다.
GEODE의 ratchet들
| Ratchet | 잠그는 것 | 코드 |
|---|---|---|
| 프롬프트 해시 핀 | 핵심 프롬프트의 SHA-256[:12]. 변경하려면 명시적 재핀 커밋이 필요하고, CI Type 잡이 verify_prompt_integrity로 단언 | core/llm/prompts/__init__.py (_PINNED_HASHES) |
| 최소 테스트 수 | 테스트 수가 바닥 아래로 내려가면 CI Test 잡 실패. 조용한 테스트 삭제 차단 | .github/workflows/ci.yml |
| Petri 번들 바닥 | 감사 증거 .eval 파일 수의 삭제 보호 바닥 | scripts/check_repo_hygiene.py (PETRI_EVAL_FLOOR) |
| legacy import ratchet | 해소된 레거시 import 패턴의 재유입 차단 | .github/workflows/ci.yml (Lint 잡) |
| CI 게이트 자체 | Lint, Type, Test, Security 중 하나라도 빨간불이면 머지 금지 | .github/workflows/ci.yml |
출처
ratchet discipline은 Andrej Karpathy의 autoresearch 프로젝트에서 정의된 패턴을 가져왔습니다. 자율 ML 실험 루프에서모델이 자기 코드를 망가뜨리지 않게 하는 핵심 메커니즘입니다.
왜 양쪽 모두 필요한가
출력 측 ratchet(프롬프트 해시)만 있으면 빌드 라인의 회귀를 막지 못합니다. 빌드 측 ratchet(CI)만 있으면 같은 코드에 다른 프롬프트가 실리는 조용한 회귀를 막지 못합니다. 둘이 동시에 있어야 자기일치가 보장됩니다. 같은 구조가 자기개선 루프에도 있습니다. margin 게이트를 통과한 변이만 승격되고, 실패한 변이는 되돌려집니다 (core/self_improving/gate.py). 게이트는 champion chain을 한 방향으로만 움직이게 하는 ratchet입니다.
비용
의도된 변경마다 한 단계를 더 지불합니다. 프롬프트를 고치면 재핀 커밋, 번들을 정리하면 바닥 조정 PR. 그 대가는 의도하지 않은 변경이 출시되지 않는다는 CI 강제 보장입니다.
다음
- 프롬프트 해싱. 핀의 동작 상세.
- Petri 번들 격리. 번들 바닥 ratchet의 운영.
- 왜 self-hosting 하네스인가. 두 스코프에 같은 규율이 있는 이유.