Jarred Sumner는 Claude 기반의 적대적 검토(adversarial-review) 워크플로우를 활용하여 Bun 런타임을 Zig에서 Rust로 재작성했습니다. 그는 6,778개의 커밋을 통해 100만 줄 이상의 코드를 밀어 넣었고, 16,000개의 컴파일러 오류를 해결했습니다. 이 작업에는 50개의 Claude Code 워크플로우가 실행되었으며, 최대 64개의 Claude 에이전트가 동시에 작동했으며, 대규모 언어 마이그레이션을 위한 재현 가능한 플레이북을 남겼습니다.
왜 재작성이 중요한가
레거시 코드나 전략적 언어 전환으로 고군분투하는 모든 프로젝트에 있어, "Sumner Method"는 막연한 약속 대신 구체적인 템플릿을 제공합니다.
AI를 대체재가 아닌 파트너로 만든 워크플로우
Sumner의 프로세스는 다음과 같이 긴밀하게 순환합니다:
- 작업 할당 – 에이전트가 구체적인 마이그레이션 작업을 받습니다.
- 구현 – 두 번째 에이전트가 Rust 코드를 작성합니다.
- 적대적 검토 – 세 번째 에이전트는 코드가 틀렸다고 가정하고, diff를 샅샅이 뒤지며 소스 파일과 테스트를 사용하여 모든 주장이 틀렸음을 증명하려 시도합니다.
- 수정 – 구현 에이전트가 검토자의 발견 사항을 반영합니다.
- 자동화된 게이트 – 컴파일러, 테스트 스위트, 정적 분석 체크를 통해 변경 사항을 검증합니다.
핵심 규칙은 **분리(separation)**입니다. 작성자는 검토자의 논거를 절대 볼 수 없으며, 검토자 또한 작성자의 의도를 볼 수 없습니다. 편향을 제거함으로써, 시스템은 검토자가 형식적인 "문제 없음(looks good)" 승인을 내리는 대신 숨겨진 버그를 찾아내도록 강제합니다.
Rust의 기계 검증 가능한 피드백은 수천 개의 잠재적인 인간 가독성 오류를 관리 가능한 대기열로 전환합니다. 각 컴파일러 오류, borrow-checker 실패, 또는 Clippy 경고는 적대적 검토자가 직접 목표로 삼을 수 있는 작업 항목이 됩니다.
8단계 플레이북
Sumner는 워크플로우를 8개의 순차적인 단계로 정제했으며, 각 단계는 고유한 작업 대기열, 완료 정의(definition of done), 검토 프롬프트 및 자동화된 게이트를 가집니다:
- Phase A – 사실 추출 및 가이드 작성 – 아키텍처 사실을 수집하고 마이그레이션 가이드를 생성합니다.
- Phase B – 기계적 파일 번역 – Zig 파일을 Rust 스켈레톤(skeleton)으로 변환합니다.
- Phase C – 컴파일 오류 해결 – 번역 중에 기록된 16,000개의 컴파일러 오류를 해결합니다.
- Phase D – 런타임 동작 일치 – Rust 출력이 Zig의 동작을 그대로 반영하는지 확인합니다.
- Phase E – 테스트 스위트 완성 – 모든 기존 테스트를 통과합니다.
- Phase F – 성능 회복 – 재작성으로 인해 발생한 성능 저하를 제거합니다.
- Phase G – 코드 품질 연마 – 관용적인(idiomatic) Rust 패턴을 적용하고 가독성을 위해 리팩터링합니다.
- Phase H – 보안 강화 – unsafe 감사를 실행하고 발견된 취약점을 해결합니다.
각 단계는 다음 단계로 이어지며, 단계가 누락되지 않도록 하고 회귀(regression)를 조기에 발견할 수 있도록 보장합니다.
플레이북을 찾는 방법
Sumner는 전체 템플릿, 프롬프트 및 단계 정의를 https://github.com/Lumafy/sumner-method 에 오픈 소스로 공개했습니다. Bun 마이그레이션을 자세히 설명하는 동반 기사는 다음에서 확인할 수 있습니다: https://dev.to/lumafy/the-sumner-method-what-buns-ai-assisted-zig-rust-rewrite-teaches-about-large-migrations-2gpo. 지속적인 논의를 위한 Telegram 커뮤니티는 https://t.me/GyaanSetuAi 에서 운영됩니다.
