Specification-first convergence with an AI coding agent: a case study of dismantling a core architectural invariant across 189 files in a 717k-line codebase with no test oracle and no human code review 요약 설명
12 Aug 2026 | Paper Review AI Coding Agents Specification-Driven Development Software MaintenanceContents
이번 글에서는 Specification-first convergence with an AI coding agent: a case study of dismantling a core architectural invariant across 189 files in a 717k-line codebase with no test oracle and no human code review 논문의 핵심 포인트만 간단히 정리한다.
- 2026년 8월 12일(Arxiv)
- Abenhaim, Joel.
- AI Sovereign Labs, Paris, France
- 논문 링크
- Project Page
요약
- 이 단일 사례 연구는 717,725줄 규모의 독점 TypeScript VS Code 확장을 명세 우선 방식으로 리팩터링한 사례를 보고한다. 생성된 패치는 사람이 검토하지 않았으며, 새 동작을 검증할 기존 테스트 오라클도 없었다. 이 작업은 AI 요청 패널이 요청 내내 열려 있어야 한다는 불변식을 제거했다. 패널을 닫았다가 다시 열면 콘텐츠를 잃거나 중복하지 않고 동일한 실행 중 스트림에 다시 연결되어야 한다. 이 논문은 홀드아웃 테스트에 기반한 코딩 에이전트 벤치마크 및 독립적으로 검증할 수 있는 작업 단위로 구성된 루프 엔지니어링 워크플로와 달리, 이전에는 없던 동작의 기준으로 서면 명세를 작성하고 정교화한다.
4. Task definition
초기 자연어 요청은 일반 AI-code 세션에 적용하기 전에 스트리밍 로직을 추출하고 일반화하도록 요구했다. 패널을 닫아도 생성은 계속 실행되고 활동 사이드바에 표시되어야 한다. 패널이 분리된 채 실행 중이면, 클릭한 뒤 비활성화되는 중지 제어를 제공한다. 다시 열 때는 새로 스트리밍되는 토큰과 재생을 조정하면서 응답 텍스트, 추론 흔적, 도구 호출, 코드 블록을 복원해야 한다.
스크린샷은 리팩터링의 영향을 받는 2개 인터페이스 영역을 보여준다. 활동 사이드바는 세션 항목을 유지하고, 중앙 세션 패널은 닫았다가 나중에 복원할 수 있다.
5. Method
AICode는 최대 추론 모드의 OpenAI ChatGPT 5.6 Sol을 사용해 별도 세션으로 진행한 ideate, specify, refine, code, verify의 5단계를 따랐다. refinement 단계에서는 명세를 소스 코드와 대조해 감사했다. 구현은 동결된 명세를 대상으로 했고, verification은 그 고정된 기준에 따라 코드를 감사했다. 경험적 종료 규칙은 연속된 2회의 verification cycle에서 발견 사항이 0건인 것이었다.
도식은 ideate부터 verify까지의 워크플로와 2개의 감사 루프를 제시한다. refinement는 명세를 소스 코드와 비교하고, verification은 생성된 코드를 동결된 명세와 비교한다.
표는 각 단계의 산출물, 비교 기준, 운영자 결정을 명시한다. 코드 패치는 검사 없이 적용했으며, verification은 연속된 2회의 발견 사항 0건 pass 뒤 중단됨을 기록한다.
5.2. Refinement cycles
14회의 refinement cycle을 거치면서 계획 범위는 110개 파일에서 160개 파일로 확대되었고, 약 85건의 명세 수정이 이루어졌다. 플랫폼 측 마이그레이션 문제로 해당 목록을 복구하지 못해 여러 수정 건수는 5건으로 추정된다. Cycle 14는 발견 사항 0건을 보고했으므로 cycle 13의 명세를 동결했다.
표는 14회의 refinement session을 기록한다. 범위는 cycle 1회에서 120개 파일이었고 cycle 13회에서 160개 파일이 되었으며, cycle 14회에서는 발견 사항이 없었다. 여러 수정 건수는 원래 수정 목록을 이용할 수 없었기 때문에 명시적으로 근사치로 제시된다.
5.3. Implementation
에이전트는 처음에 부분 구현을 수행하기를 거부했다. 새 파일 31개를 포함해 160개 파일에 걸친 마이그레이션을 안전하게 미완성 상태로 남겨둘 수 없다고 밝혔기 때문이다. 에이전트는 10단계 분해를 제안했지만, 구현은 사람이 확인한 3개 구간으로 진행했다. 보고된 에이전트 작업 시간은 2시간 21분 44초였다.
5.4. Feedback loop
컴파일, 타입 검사, 단위 테스트 실패는 구현 중 자동으로 수정하지 않고 별도의 피드백 루프 세션에서 의도적으로 처리했다. 논문은 남은 구문, 타입 검사, 단위 테스트 오류를 1시간 이내에 수정했다고 보고한다. 이 루프는 빌드 유효성 신호를 이후 아키텍처 적합성 감사와 분리하기 위한 것이었다.
5.5. Verification cycles
17회의 verification cycle은 저장소를 동결된 명세와 비교해 보고된 코드 수정 116건을 만들었다. 피드백 루프와 달리 이 과정은 아키텍처 편차와 미세한 명세 불일치를 대상으로 했다. Cycle 16과 17은 각각 발견 사항 0건을 반환했고, 그 뒤 프로그램을 처음으로 수동 실행했다.
verification 기록은 수정이 cycle 15회까지 이어졌음을 보여준다. cycle 4회와 cycle 15회의 수정 이후, cycle 16과 17은 각각 발견 사항 0건을 산출했다. 보고된 합계는 116건의 코드 수정이다.
6. Results
31회의 refinement 및 verification pass 전체에서 이 연구는 수동 실행 전에 201건의 수정을 보고했다. 이는 약 85건의 명세 수정과 116건의 코드 수정으로 구성된다. Slice 2는 3일 동안 189개 파일을 변경했다. 추출 slice까지 합치면 2개의 commit이 288개 파일을 변경했고, 34,770개의 삽입과 16,422개의 삭제가 발생했다. 보고된 모델 추론 비용은 USD 2,430이었으며, 출시 후 인터페이스 조정에는 소스 파일 1개와 그 테스트의 변경이 필요했다고 보고했다.
6.3. Functional validation
첫 수동 실행에서 저자는 스트리밍 중 패널 닫기 및 다시 열기 동작, 표시 복원, 분리 상태의 중지 제어, 기존 하위 시스템에서 관찰된 회귀가 없었음을 보고한다. 기존 단위 테스트 모음에서도 회귀가 없었다고 보고했으며, 여러 사용 사례에 걸친 약 30회의 후속 세션에서 관찰된 버그가 없었다. Version 2.3.0은 공개 출시되어 사용자가 주장된 동작을 확인할 수 있지만, 비공개 소스 구현과 과정은 확인할 수 없다.
활동 사이드바 스크린샷은 의도된 분리 상태를 보여준다. 패널을 닫은 뒤에도 세션은 실행 중으로 표시되고, 경과 시간을 보여주며, 중지 제어를 제공한다.
막대 그래프는 작업 기간의 추론 비용을 보고하며, USD 2,430이라는 반올림된 비용을 뒷받침한다. 인터페이스 표시는 총 $2,430.83을 보여준다.
7. Discussion
논문은 생성 전에 의도를 반복적으로 감사하고 이후 구현을 감사하면, 줄 단위의 인간 검토 대신 동결된 서면 명세를 주요 품질 관리 기준으로 삼을 수 있다고 주장한다. 이 주장은 범위가 좁다. 이는 새 동작을 위한 기존 오라클이 없는 원래의 유지보수 작업에 관한 것이며, 그린필드 프로젝트, 트랜스파일, 문서화된 마이그레이션, 오픈소스 재구현에 관한 주장이 아니다. 보고된 발견 사항 0건 조건은 이 프로토콜 아래의 수렴을 나타낼 뿐, 기능적 정확성이나 일반적 신뢰성의 독립적 증명은 아니다.
9. Limitations
증거는 에이전트를 설계하고 배포하는 회사의 저자가 자기 보고한 1건의 작업에 한정되며, 다른 에이전트를 사용한 대조 조건도 없다. 비공개 소스 코드베이스 때문에 제3자가 재현할 수 없다. “관찰된 버그 없음”은 잠재 결함이 없다는 증명이 아님을 명시하며, 더 약한 모델에서의 성능은 규명되지 않았다. 원시 프랑스어 로그와 55페이지 분량의 동결된 명세는 공개되어 있지만, 코드 자체는 공개되지 않았다.
부록
- 논문에는 부록 섹션이 없다. 데이터 이용 가능성 섹션은 ideation, refinement, implementation, 피드백 루프, verification의 동결된 명세와 로그를 연결하며, 그 분량은 총 1,500페이지를 넘는다.
짧은 생각
이 보고서는 대규모 에이전트 매개 리팩터링에 관한 상세한 과정 산출물을 이례적으로 제공하며, 명세 적합성을 컴파일 및 테스트 유효성과 분리한다. 그러나 동일한 에이전트 계열이 기준 산출물을 생성하고 정교화하고 검증했으며, 저장소는 재현을 위해 공개되지 않았다. 이 사례를 넘어 신뢰성을 평가하려면 공개 코드베이스에서 독립 운영자가 재현하고 대체 에이전트 및 검토 프로토콜과 비교해야 한다.