Q00/ouroboros 는 아직 1.0 이 없다 — 0.1 에서 0.54 까지, 134개 릴리스가 그린 궤적
“버전 대역별로 변천사를 정리해 달라”는 요청을 받고 Q00/ouroboros 의 태그를 전부 뽑았다. 첫 줄에서 전제가 하나 깨졌다.
이 저장소에는 1.x 가 없다. 134개 릴리스 전부가 0.x 다. v0.1.0-alpha.1(2026-01-28)에서 v0.54.3(2026-09-10)까지, 7개월 반 동안 메이저 버전은 한 번도 올라가지 않았다.
그래서 이 글은 1~4점대가 아니라 실제 존재하는 대역 — 0.1x / 0.2x / 0.3x / 0.4x / 0.5x — 를 따라간다. 근거는 전부 저장소의 태그 목록과 릴리스 노트, 즉 프로젝트 1차 자료다. 기능이 실제로 잘 도는지에 대한 제3자 측정은 아니다.
0. 먼저 숫자부터
저장소 생성 2026-01-14
첫 릴리스 2026-01-28 v0.1.0-alpha.1
마지막 릴리스 2026-09-10 v0.54.3
릴리스 수 134
메이저 버전 상승 0
대역별 분포는 이렇다. 릴리스 빈도 자체가 그 시기에 무슨 일이 있었는지를 말해 준다.
| 대역 | 기간 | 릴리스 수 | 한 줄 |
|---|---|---|---|
| 0.1 ~ 0.9 | 01-28 ~ 02-10 | 12 | 파이프라인의 뼈대를 세움 |
| 0.10 ~ 0.19 | 02-14 ~ 03-07 | 21 | 남의 기계에서 돌게 만듦 |
| 0.20 ~ 0.29 | 03-08 ~ 04-22 | 40 | 런타임 중립화 (최대 격동기) |
| 0.30 ~ 0.39 | 04-26 ~ 05-20 | 14 | 오케스트레이터와 도메인 프로파일 |
| 0.40 ~ 0.44 | 05-30 ~ 07-01 | 14 | 루프가 혼자 끝까지 감 |
| 0.50 ~ 0.54 | 07-08 ~ 09-10 | 33 | 말 대신 증거를 요구함 |
그리고 코드베이스 크기. src/ 아래 파이썬 파일 수를 태그별로 세면 곡선이 선명하다.
| 태그 | src/*.py | 전체 파일 |
|---|---|---|
| v0.1.0a1 | 74 | 197 |
| v0.13.0 | 160 | 383 |
| v0.26.0 | 207 | 542 |
| v0.38.0 | 337 | 971 |
| v0.44.0 | 388 | 1,221 |
| v0.54.3 | 631 | 1,808 |
7개월 반 동안 소스 파일이 8.5배 됐다. 그런데도 0.x 다. 이 두 사실을 나란히 놓는 게 이 글의 출발점이다.
1. 0.1점대 — 뼈대와, 지금은 잘 언급되지 않는 실험
v0.1.0-alpha.1 의 릴리스 노트는 네 줄이다. Interview → Seed → Workflow 파이프라인, Claude Code 지원, MCP 프로토콜 통합, 그리고 EventStore 기반 이벤트 소싱. 오늘의 우로보로스를 아는 사람이 보면 놀랄 만큼 골격이 이미 다 있다. 7개월 뒤에도 이 네 개는 그대로 남아 있다.
흥미로운 건 v0.4.0 이다. 제목이 아예 “Ontological Framework” 다. 해결책이 증상이 아니라 근본 원인을 다루게 하려고 AOP 기반 분석기(OntologicalAspect)를 넣고, ESSENCE / ROOT_CAUSE / PREREQUISITES / HIDDEN_ASSUMPTIONS 네 종류의 존재론적 질문을 정의했다. 같은 릴리스에 Deliberative Consensus 도 들어갔다 — 단순 다수결을 2라운드 숙의로 바꿔, 1라운드에서 Advocate 와 Devil’s Advocate 가 붙고 2라운드에서 Judge 가 APPROVED / REJECTED / CONDITIONAL 판결을 내린다.
이 대역의 성격이 여기 다 있다. “에이전트를 어떻게 더 잘 생각하게 만들 것인가” 를 철학적 장치로 풀려던 시기다. 뒤에서 보겠지만 이 프로젝트의 답은 결국 반대 방향으로 간다.
v0.9.0 에서 Claude Code 플러그인 마켓플레이스 배포와 9개 스킬, 그리고 점진적 온보딩이 붙는다. ooo 하나 치면 환영 문구와 단일 CTA가 뜨는 식으로 바꾸고, 별 요청(star solicitation)을 “가치 전달 이후”로 옮겼다고 릴리스 노트에 적어 뒀다. 제품으로서의 자의식이 이때 생긴다.
2. 0.1x대 — “내 기계에서는 됩니다” 를 걷어내는 구간
2월 중순부터 3월 초까지 21개. 화려한 기능보다 이식성 이 주제다. v0.20.0 릴리스 노트가 이 대역의 결산인데, 목록이 정직하다.
- 언어 불문 기계 검증 — Stage 1 이 프로젝트 언어(Python, Rust, Go, Zig, Node.js)를 자동 감지해 맞는 lint/build/test 를 돌린다.
.ouroboros/mechanical.toml로 덮어쓸 수 있다. - Windows 호환 — 유닉스 전용
fcntl.flock()을 크로스플랫폼filelock으로,Path.rename()을os.replace()로 교체. - 훅을 파이썬으로 이식 — 훅 스크립트 3개를 Node.js 에서 파이썬으로 옮겨
node런타임 의존을 제거. - 코드베이스를 먼저 읽고 질문하는 인터뷰.
앞 대역이 “무엇을 생각할까”였다면 이 대역은 “남의 컴퓨터에서 안 깨지게” 다. 스타가 붙기 시작한 오픈소스가 반드시 통과하는 구간이고, 릴리스 수가 갑자기 12 → 21 로 뛴 이유도 여기 있다.
3. 0.2x대 — 40개. 런타임을 갈아 끼울 수 있게 만든 격동기
전체에서 가장 릴리스가 많았던 대역이다. 6주에 40개. v0.26.0 에는 베타가 b1 부터 b7 까지 붙었다 — 이 저장소에서 베타 태그를 그렇게 길게 끈 건 여기가 유일하다. 그만큼 위험한 변경이었다는 뜻이다.
핵심은 하나다. Codex CLI 런타임 지원. 릴리스 노트의 표현이 정확하다 — “runtime-agnostic execution with Codex CLI adapter”. 그때까지 우로보로스는 Claude Code 위에서 도는 물건이었는데, 여기서 워크플로 엔진과 실행 커널을 분리했다. v0.28.0 에서 OpenCode 어댑터가 붙고, 같은 릴리스에 “reduce third-party runtime dependencies” 가 들어간다.
같이 들어온 것들도 방향이 같다. PM 인터뷰 엔진과 브라운필드 코드베이스 분석(기존 코드가 있는 저장소에 투입하는 경로), 브레드스/클로저 페르소나로 나눈 인터뷰 재설계, Stage 2 평가에 리워드 해킹 위험 탐지, llms.txt.
리워드 해킹 탐지가 이 시점에 들어왔다는 게 중요하다. 0.5x 대역 전체를 지배하게 될 문제의식 — “에이전트가 시험을 통과하는 것과 일을 끝내는 것은 다르다” — 의 첫 등장이다.
4. 0.3x대 — 통제면(control plane)이 생긴다
4월 말~5월, 14개. 여기서 구조가 한 단계 위로 올라간다.
v0.30.0 에는 ooo resume 이 들어간다. MCP 연결이 끊긴 뒤 진행 중이던 세션을 복구하는 명령이다. 동시에 Directive StrEnum 과 control.directive.emitted 이벤트가 생기고, 정체(stagnation)를 감지하면 측면적 사고 페르소나를 제안하는 “in-run lateral recovery” 가 붙는다. 장시간 도는 루프가 실제로 존재한다는 걸 전제한 설계다.
v0.38.0 은 이 대역의 정점이다. 릴리스 노트가 직접 “#830 Orchestrator 스택(9 PR)” 이라고 부른다.
- 프로파일 YAML 스키마와 로더, 타입이 있는 증거 스키마 검증기, 외부 검증 루프
- PRE/POST 단계 래퍼, 실패 분류 체계(failure taxonomy)와 복구 정책
- 적응형 모델·툴 라우팅, 디스패치당 컨텍스트 예산
- 내장 DomainProfile 두 개 —
coding과research— 를ooo auto에 연결
“프롬프트를 고친다”에서 “실행 계획과 예산과 실패 처리를 스키마로 선언한다” 로 넘어간 지점이다. 0.1점대의 존재론적 질문 4종이 하던 일을, 이제는 프로파일과 증거 스키마가 한다.
5. 0.4x대 — 루프가 혼자 끝까지 간다, 그리고 0.45~0.49 는 없다
v0.40.0 의 첫 문장이 이 대역을 요약한다.
This is the release where
ooo autostops being a demo and becomes a machine that finishes your work.
모호한 의도를 던지면 소크라테스식 인터뷰가 기계 검증 가능한 목표로 좁히고, 엔진이 그 목표가 실제로 빌드·검증·배포될 때까지 멈추기를 거부한다. “계획을 세우고 중간에 포기” 를 명시적으로 부정한다.
v0.42.0 은 세 갈래다. 첫째, 커널이 또 늘었다 — gajae-code(gjc)가 Pi, Claude, Codex, Gemini, OpenCode, Goose, Copilot 에 합류한다. 둘째, low/medium/high 추론 노력 다이얼을 넣어 비용 레버를 모델 선택이 아니라 단계별 노력 으로 옮겼다. 셋째, SDK 없이 Claude 를 구동한다.
그리고 v0.44.0(07-01) 다음이 v0.50.0(07-08) 이다. 0.45 ~ 0.49 는 존재하지 않는다. 7일 만에 다섯 칸을 건너뛰었다. 릴리스 노트를 보면 이유가 보인다 — 0.50 은 “2026-07 로드맵의 완전 착지”라고 스스로 부른다. 대역 번호를 로드맵 경계로 쓴 것이다. 버전 번호가 코드 변화량이 아니라 서사 단위로 매겨지고 있다는 신호이고, 1.0 이 없는 이유와도 맞닿아 있다.
6. 0.5x대 — 이 프로젝트가 진짜로 바뀐 지점
07-08 이후 33개. 앞선 다섯 대역이 “무엇을 만들까”와 “어디서 돌까”였다면, 여기는 전부 하나의 질문이다. “그래서, 정말 했나?”
v0.50.0 의 부제가 “The Verifiable Loop: contracts, not claims” 이고, 도입부가 그 전까지의 상태를 스스로 이렇게 고발한다.
Until now the loop trusted what an agent said it did. … the fat-harness reconstructed success from a transcript the agent itself wrote.
에이전트가 자기가 쓴 로그로 자기 성공을 증명하고 있었다는 자백이다. 해법은 계약이다. 수용 기준(AC)이 문자열이 아니라 AcceptanceCriterionSpec 이 되고 verify_command / expected_artifacts / output_assertion 을 선언한다. 실행기는 프롬프트에 SUCCESS CONTRACT 블록을 실어 나르고, 증거 게이트가 선언된 명령과 산출물을 요구한다. 기존의 문자열 AC 는 바이트 동일하게 그대로 로드된다고 명시했다 — 하위 호환을 포기하지 않은 것도 이 릴리스의 특징이다.
v0.51.0 은 프로젝트가 자기 이름을 다시 붙인 릴리스다. 제목이 “Ouroboros is Loop Engineering” 이고, 정의를 이렇게 세운다.
프롬프트 엔지니어링은 “모델에게 뭐라고 말할까” 를 묻는다. 컨텍스트 엔지니어링은 “모델이 무엇을 보는가” 를 묻는다. 루프 엔지니어링은 “어떤 구조가 루프의 완료 수렴을 보장하며, 도중에 속임수가 통하지 않게 하는가” 를 묻는다.
그리고 첫 번째 성립 조건이 결정적이다. “작업자는 채점자의 답안지를 볼 수 없다.” 숨겨진 체크리스트 수렴 루프(#1916)로 수용 기준 상세를 실행 에이전트에게서 무조건 차단한다. 에이전트는 목표를 향해 일하고, 평가자는 전체 체크리스트로 채점한다. 시험 대비 학습(teaching-to-the-test)이 권장되지 않는 게 아니라 구조적으로 불가능해진다.
v0.51.12 는 그 반대편 구멍을 막는다. 제목이 “Verification Must Never Rewrite Reality” 다.
기계 검증은 이제 단조(monotonic)다. 증거를 더할 수는 있다. 진짜로 실패한 검사를 기각할 수도 있다. 그러나 작업자의 실패를 지우거나, 성공을 날조하거나, 검증기 자신이 불가용하다는 이유로 완료된 작업을 재시도할 수는 없다.
VerifierStatus.UNAVAILABLE 이 생기되 재시도·재배정 권한은 주지 않는다. Bash 나 타임아웃 처리가 불가용하면 성공한 작업을 실패로 고쳐 쓰는 대신 “미검증”이라고 명시적으로 보고한다. 검증기의 권한에 상한을 두는 설계다.
v0.53.0 은 여기서 한 발 더 간다 — “Proof over trust”. files_touched 는 하니스 워크스페이스 관찰과 대조하고, 증명되지 않은 tests_passed 주장은 하니스 안에서 다시 돌리고, verify_command 는 낡은 digest 로 기각하는 대신 최종 정산 시점에 재생(replay) 한다. 요약 문장이 좋다 — “게이트는 증명할 수 없는 크레딧을 보류하고, 증명이 있는 곳에는 준다.” 같은 릴리스에 파이썬 없이 설치되는 Windows PowerShell 설치기도 들어갔다.
v0.54.0 에는 이 저장소에서 가장 교훈적인 회귀 기록이 있다. 0.53.0 의 좀비 방지 워치독이 stdin 이 UNIX socketpair 일 때 MCP 서버를 initialize 후 약 5ms 만에 종료시켰다. 원인은 fd 0 의 복제본 에 건 setblocking(False) 한 줄 — O_NONBLOCK 은 복제본이 공유하는 open file description 에 붙으므로, SDK 의 블로킹 readline 이 소켓이 유휴가 되는 순간 EOF 를 읽었다. Node/libuv 계열 클라이언트는 전부 자식 stdio 를 그렇게 엮기 때문에 Claude Code 는 툴을 하나도 못 받고, 평범한 파이프를 쓰는 파이썬 클라이언트는 멀쩡했다. 그래서 테스트를 빠져나갔다. 수정은 MSG_PEEK | MSG_DONTWAIT 로 엿보고 공유 디스크립터 상태를 건드리지 않는 것이다.
7. 여섯 대역을 관통하는 한 줄
정리하면 축은 하나다. 신뢰에서 증거로.
| 대역 | 중심 질문 | 답하는 방식 |
|---|---|---|
| 0.1x | 무엇을 만들까 | 인터뷰·시드, 존재론적 질문, 숙의 합의 |
| 0.1x 후반 | 남의 기계에서 도나 | 언어 자동 감지, Windows, 의존성 제거 |
| 0.2x | 어디서 도나 | 런타임 어댑터 분리 (Codex·OpenCode) |
| 0.3x | 어떻게 통제하나 | 오케스트레이터, 도메인 프로파일, 증거 스키마 |
| 0.4x | 끝까지 가나 | ooo auto, 커널 확장, 노력 다이얼 |
| 0.5x | 정말 했나 | 성공 계약, 숨긴 채점표, 단조 검증, 증거 재생 |
초기엔 에이전트를 더 잘 생각하게 만들려 했다(0.4.0 의 존재론적 프레임워크, 악마의 변호인). 후기엔 방향이 뒤집힌다 — 에이전트가 얼마나 잘 생각하는지는 놔두고, 결과를 기계가 확인할 수 있는 계약으로 묶고, 답안지를 감추고, 검증기가 현실을 고쳐 쓰지 못하게 막는다. 설득에서 구조로, 품질 관리에서 부정 방지로 옮겨 간 셈이다.
그리고 1.0 이 없는 이유도 여기서 짐작된다. 0.50 과 0.51 과 0.53 이 각각 “검증 가능한 루프”, “루프 엔지니어링”, “신뢰보다 증명”을 선언하며 핵심 계약을 계속 다시 쓰고 있다. 계약이 아직 굳지 않은 물건에 1.0 을 붙이지 않는 건 일관된 선택이다. 별 5,809개와 포크 592개가 붙은 지금도 그렇다.
8. 이 글의 한계
- 전부 프로젝트 1차 자료다. 태그 목록, 릴리스 노트, 트리 파일 수. 릴리스 노트가 주장하는 기능이 실제로 그렇게 동작하는지에 대한 독립적 검증은 이 글에 없다.
- 파일 수는 규모의 대리 지표일 뿐이다. 복잡도도 품질도 아니다.
- 대역 구분은 내가 나눈 것이다. 프로젝트가 “0.2x 는 런타임 시대” 라고 선언한 적은 없다. 다만 0.40·0.42·0.50·0.51·0.53 처럼 제목이 붙은 릴리스들은 프로젝트 스스로 그은 경계이고, 위 표는 그 경계를 최대한 따랐다.
- 숫자는 2026-09-10(
v0.54.3) 기준이다. 이 저장소의 속도를 보면 빠르게 낡는다.
References
- Q00/ouroboros — 저장소 및 릴리스 목록: https://github.com/Q00/ouroboros/releases (프로젝트 1차 자료)
- v0.1.0-alpha.1 릴리스 노트 (Interview → Seed → Workflow, MCP, EventStore)
- v0.4.0 — Ontological Framework / Deliberative Consensus
- v0.9.0 — Claude Code Plugin & Progressive Onboarding
- v0.20.0 — 언어 불문 기계 검증, Windows 호환, 훅 파이썬 이식
- v0.26.0 — PM 인터뷰·브라운필드, Codex CLI 런타임, 리워드 해킹 탐지
- v0.30.0 —
ooo resume, Directive 통제면 / v0.38.0 — Orchestrator 스택, DomainProfile - v0.40.0 —
ooo auto/ v0.42.0 — GJC 커널, 추론 노력 다이얼 - v0.50.0 — The Verifiable Loop / v0.51.0 — Loop Engineering / v0.51.12 — Monotonic Verification
- v0.53.0 — Proof over trust / v0.54.0 — MCP 접속 회귀 수정 및 원인 분석
- 태그·트리 통계는 저장소를 로컬에 받아
git ls-tree로 직접 집계했다.