Ouroboros
09

9. 반복 수정

8장 평가에서 통과하지 못한 기준이 남았다고 가정합니다. Evolve는 그 평가 결과를 Seed에 반영해 다시 실행하는 기능입니다.

Ouroboros 0.50.4upstream 456a1342026-07-16 문서·코드 확인

9.1 무엇을 하는가

평가가 끝나도 작업이 항상 끝나는 것은 아닙니다. Evolve는 평가에서 확인한 문제를 근거로 Seed의 목표, 제약, 완료 기준 변경안을 만들고, 바뀐 Seed로 실행을 반복합니다. 예제에서는 "완료한 일이 새로고침 뒤 초기화된다"는 실패를 다음 Seed에 반영합니다.

9.2 실행

Claude Code 대화창에서 작업 설명과 함께 실행합니다.

ooo evolve "할 일 앱: 완료 상태가 새로고침 뒤에도 유지되게"

정상 결과: 평가 결과를 반영한 Seed 변경안과 실행 결과, 그리고 lineage_id가 표시됩니다. 한 세대는 아직 모르는 것을 찾는 Wonder, 변경안을 만드는 Reflect, 실행, 평가 순서로 진행됩니다.

코드를 다시 만들지 않고 Seed 변경안만 보려면 --no-execute를 붙입니다. 이어진 실행 목록은 ooo evolve --status <lineage_id>로 확인합니다.

9.3 lineage — 수정 이력

Seed v1이 실행과 평가를 거쳐 Seed v2, v3로 이어지고 Convergence에서 멈추는 도해
같은 작업에서 이어진 Seed 수정 이력을 lineage라고 부릅니다.

한 번의 evolve가 만든 새 Seed와 실행을 세대라고 부르고, 같은 시작 Seed에서 이어진 세대들의 묶음을 lineage라고 부릅니다. lineage 상태는 출력된 lineage_id로 조회합니다.

9.4 자동 종료 조건

공식 문서 기준으로 반복은 아래 조건 중 하나에서 멈춥니다.

조건기준
Convergence연속된 두 세대의 Ontology 유사도가 0.95 이상이면 데이터 구조가 안정된 것으로 보고 멈춥니다.
Stagnation유사도가 Convergence 기준(0.95) 이상인 상태가 3세대 연속 이어지면 더 바뀔 것이 없다고 보고 멈춥니다.
Oscillation두 세대 전과 같은 구조로 되돌아오는 반복이 감지되면 멈춥니다.
세대 상한최대 30세대에 도달하면 멈춥니다.

Convergence 검사는 최소 2세대가 지난 뒤부터 적용됩니다.

9.5 Ralph — 자동 반복

세대마다 직접 evolve를 부르는 대신, 종료 조건까지 반복을 맡기려면 Ralph를 사용합니다. 9.2에서 받은 lineage_id를 넣어 실행합니다.

ooo ralph --lineage-id <lineage_id>

정상 결과: 배경 작업이 시작되고 작업 ID가 표시됩니다. QA 통과, 9.4의 자동 종료 조건(Convergence·Stagnation·Oscillation·세대 상한), 취소, 복구 불가능한 실패, 등급 후퇴, 시간 제한 초과 중 하나에 도달할 때까지 세대를 반복합니다.

9.6 사람이 멈출 때

자동 반복 횟수가 품질을 보장하지 않습니다. 아래 경우에는 반복을 멈추고 사람이 방향을 다시 정합니다.

진행 중인 실행을 멈추는 방법은 7장의 실행 취소와 같습니다.