arXiv 2608.11095v1 · cs.AI · 2026-08-11 · 한국어 완역
에이전틱 코딩의 파국적 기억(Catastrophic Remembering) — 프롬프트는 왜 자라기만 하고, 주석은 어떻게 그것을 멈추는가.
읽기 전에
CLAUDE.md 같은 에이전틱 프롬프트 파일은 왜 삭제 없이 무한히 자라기만 하는가 — 그리고 "왜 이 지시를 넣었는지"를 주석으로 남기는 것만으로 그 성장이 정말 멈추는가?
지시 추가는 O(1)로 싸지만, 근거(latent reasoning)가 사라진 지시를 안전하게 지우려면 O(2^|D|)의 반사실 실험이 필요하다 — 그래서 유지보수자는 지우지 못하고 쌓기만 하는 "래칫"에 갇힌다(파국적 기억). 논문은 이 기제를 (1) GitHub 1,867개 레포 관찰로 입증하고, (2) IFEval을 뒤집어 최적 프롬프트가 알려진 세계를 만들어 "근거를 담은 주석"이 래칫을 멈춤을 실험으로 보인다.
요약만: 5분 · 본문 완독: 30~40분 · 부록 포함: 70~90분
Executive Summary
CLAUDE.md가 끝없이 자라는 이유는 지시가 낡아서도, 지시가 약해서도 아니라 "왜 넣었는지"의 근거가 지시보다 먼저 소멸하기 때문이며 — 근거를 주석으로 기록하면 성장이 멈추고 지시 이행까지 회복된다.
CLAUDE.md, AGENTS.md, copilot-instructions.md 같은 에이전틱 README는 실제 레포에서 거의 예외 없이 커지기만 한다. 파일을 지우는 건 답이 아니다 — 이런 파일이 있는 레포는 에이전트 작업을 더 빨리, 더 적은 토큰으로 끝낸다. 그렇다고 다 유지하는 것도 공짜가 아니다 — 제약이 쌓일수록 지시 이행(instruction-following)이 저하되며, 중앙값 파일은 이미 39개(90퍼센타일 131개)의 지시를 담고 있다. 성장은 레포가 은퇴하거나 누군가 파일을 전면 재작성할 때만 멈춘다. 저자는 이 발산을 catastrophic remembering(파국적 기억)이라 명명한다.
지시 추가는 항상 싸지만, 지시의 근거(latent reasoning)가 사라진 뒤에는 회귀 위험 없이 삭제하려면 지시 |D|개의 프롬프트에서 O(2^|D|)의 부분집합 반사실 실험이 필요하다(중복 커버 때문에 하나씩 빼보는 검사는 무효 — 한 제약을 각각 커버하는 두 지시는 따로 보면 둘 다 불필요해 보이지만 둘 다 지우면 깨진다). 근거를 기록해 두면 이 비용이 O(1)로 붕괴한다. 이 개념은 continual learning의 catastrophic forgetting(파국적 망각)의 정확한 반전이다: 망각에서는 그래디언트 학습자가 지켜야 할 것을 덮어쓰고, 기억에서는 유지관리자가 덮어써야 할 것을 지킨다. 둘 다 같은 이유로 실패한다 — 업데이트를 정당화해 줄 근거가 사라졌다. 형식화하면: 근거 회복 확률 ρ̄(a)가 지시 나이 a에 따라 0으로 감쇠하면, 삭제 위험률 h(a)≈ρ̄(a)·s(a)의 합이 추가율 A를 못 따라가 균형 크기 |D_∞|=A/(ρ̄(a)·s)가 발산한다 — 과제가 전혀 바뀌지 않고 추가율이 일정해도 성장은 무한하다.
"영어가 새로운 코드라면 왜 주석이 없는가" — 논문의 관통 질문이다. 시사점 세 갈래: (1) 코딩 에이전트 개발자는 프롬프트에 주석 문법을 부여해 지시의 근거가 다음 유지관리자(사람이든 에이전트든)에게 도달하게 할 수 있다 — 논문의 구현은 프로토타입임을 자인. (2) 에이전틱 프롬프트 유지관리자는 베스트 프랙티스를 정립할 수 있다 — 소프트웨어 공학 관행과 크게 겹치겠지만 차이도 분명 있다. (3) 연구자에게: 프롬프트 유지보수는 텍스트 위의 continual learning인데 아직 rehearsal/regularization의 유사물이 없고, 기계 검증 불가능한 제약·현실적 제약 수에서의 측정법도 없다. 단, 저자 스스로 경고: 이 처방의 최대 리스크는 처방 자체다 — "근거를 회복할 수 있는 지시를 지워라"를 자동화한 오퍼레이터는 근거가 실재했던 지시까지 지우게 된다. 주석을 쓰는 것은 아무것도 제거하지 않으므로 안전하지만, 주석에 근거해 행동하는 것은 아니다. 삭제 경로에 사람을 두고, 안전 관련 지시는 검증 전까지 범위 밖에 둘 것. 참고로 코드-주석 불일치 연구가 경고하듯, 저정보·저구조·오도성 근거는 에이전틱 코딩에서도 동일한 해악을 옮긴다(절제 실험으로 확인).
인용 문헌 5건 전원 실재·서지 일치, 핵심 수치는 초록·본문·표 간 산술 정합, 한계 자기공개도 이례적으로 투명하다. 다만 전 실험이 단독 저자의 자체 수행이고 동료심사 이전 프리프린트라 외부 재현이 없으며, 헤드라인 수치(99.3%는 시드 1개, +23.1%는 LLM 저지 의존·제2 저지에선 7.8pp)는 확정치로 인용하기 이르다. 테스트베드 명칭 "Inverse-IFEval"은 기존 M-A-P 벤치마크와 충돌한다.
판정 범례: ✅ 사실 · 🟡 부분사실 · ⚠️ 불확실 · ❌ 거짓 — 각 항목의 레퍼런스는 검증 시 실제 접근한 URL만 표기.
논문 메타데이터: 제목 "Why Does CLAUDE.md Keep Growing? Catastrophic Remembering in Agentic Coding", 저자 Kushal Chakrabarti (South Park Commons), arXiv:2608.11095v1, 2026-08-11 제출
arXiv abs 페이지와 논문 HTML 본문 모두에서 제목·저자·소속(South Park Commons)·v1·2026-08-11 제출(cs.AI, 교차 cs.LG/cs.SE)이 일치. Journal reference 없음 — 동료심사(peer review)를 거치지 않은 arXiv 프리프린트이며 단독 저자 논문.
코퍼스 규모: 1,867개 레포지토리 / 247,694개 지시(instruction) 수명
내적 일관성 확인: 초록·§3·부록 A.1 모두 1,867 레포·247,694 lifetimes로 일치하고, A.1은 1,801개 다중버전 파일·299,440 버전 전이라는 중간 수치까지 정합적으로 제시. 다만 저자 자체 구축 코퍼스로 외부 미검증 — 매칭 검증이 저자 1인의 50개 수기 주석에만 의존한다고 Limitations에 자인.
에이전틱 README는 수명 동안 +226% 성장, 커밋당 순증 +4.9개 지시
내적 일관성 확인: 초록·§1·Figure 1(b)·§3.1이 모두 +226%로 일치하고, §3.1이 "19,267 커밋에 걸쳐 커밋당 순 +4.9개(대량 rewrite 제외)"로 구체화. 부록 A.5가 길이 성장(+10%)과 분리해 개수 성장임을 방어. 저자 자체 측정으로 외부 미검증.
첫 rewrite 전 커밋당 4.1% 성장; rewrite는 크기만 리셋하고 성장률은 유지
내적 일관성 확인: Figure 4·§3.3이 일치 — rewrite 전 4.1%/커밋, rewrite 시 59.5%로 절삭, 10커밋 내 91.5% 회복, 이후 4.9%/커밋으로 오히려 더 빠르게 재성장(유지가 아니라 가속). 76.8%(§1)/77.3%(§3.2)로 rewrite+migration 죽음 비중 표기가 문맥별로 미세하게 다르나 정의 차이(rewrite 단독 vs rewrite+migration)로 설명 가능. 외부 미검증.
삭제 위험률(hazard)은 지시 나이에 따라 하락 — 로그 위험률 기울기 -0.032/커밋
내적 일관성 확인: 초록·§3.4·Figure 5가 -0.032 (95% CI [-0.047, -0.019])로 일치하며 28,426건 삭제에 대한 Nelson–Aalen 추정 + 레포 층화 부트스트랩. frailty 모델(A.7)의 기울기 -0.05대는 다른 모델 사양이라 모순은 아님. 매처 오류가 기울기를 0 쪽으로 편향시켜 하한이라는 방어도 자체 제시. 외부 미검증.
정보성 주석(comment)이 초과 지시의 99.3%를 제거 (+211.3% → +1.4%)
내적 일관성은 성립: Table 2의 T=51 블록에서 control +211.3±105.3 → treatment +1.4±22.1이고 (211.3−1.4)/211.3 = 99.3%로 산술 일치. 그러나 이 조건은 시드 1개(T=15는 3시드)·184개 인공 세계·CI 폭이 매우 크며(±105.3), IFEval 역변환이라는 저자 고안 인공 환경의 결과. 외부 재현 없음 — 헤드라인 수치치고 근거가 얇다.
WildIFEval 복제에서 지시 이행 최대 +23.1% 개선
내적 일관성은 성립: §4.3에서 50.4%→62.0% (+11.6pp, CI [5.1, 18.3]pp)이고 11.6/50.4 = 23.0%로 "23.1% 상대 개선"과 산술 일치. 그러나 채점이 LLM 저지 기반(코드 검증기 없음)이며, 제2 저지 재채점에서는 효과가 7.8pp로 줄고 저자 스스로 "어느 저지도 ground truth가 아니다"라고 명시. 3라운드·64세계의 소규모 실험, 외부 미검증.
IFEval (Zhou et al. 2023)은 실재하며 "검증 가능한 지시(verifiable instructions)" 기반 평가 벤치마크다.
arXiv 2311.07911 (2023-11-14, Jeffrey Zhou, Tianjian Lu 외, Google) 확인. "write in more than 400 words" 같은 프로그램적으로 검증 가능한 지시 25종 × 약 500 프롬프트로 구성 — 논문의 인용·설명과 정확히 일치한다. 데이터셋은 HuggingFace google/IFEval로 공개.
arXiv 2311.07911 — Instruction-Following Evaluation for LLMs
WildIFEval은 실사용자 지시 기반 지시-이행 벤치마크로 실재한다 (2025).
arXiv 2503.06573 "WildIFEval: Instruction Following in the Wild" (Gili Lior, Asaf Yehudai 외, 2025-03 최초 제출, NeurIPS 2025 제출본) 확인. 실사용자 지시 수천 건(v2 기준 7K)에서 다중 제약을 추출·8개 클래스로 분류해 LLM-as-a-judge로 평가 — "실사용자 지시 기반, 2025년경"이라는 논문 설명과 부합.
이 논문의 테스트베드 명칭 "Inverse-IFEval"은 기존 타 연구진의 "Inverse IFEval"과 명칭이 충돌한다.
충돌 확인됨. arXiv 2509.04292 "Inverse IFEval: Can LLMs Unlearn Stubborn Training Conventions to Follow Real Instructions?" (Qinyan Zhang 외 21인, M-A-P, 2025-09-04)가 이미 존재 — 반직관적(counter-intuitive) 지시 이행을 재는 1,012문항(중·영, 23도메인) 벤치마크로, HuggingFace 데이터셋(m-a-p/Inverse_IFEval)까지 공개돼 있고 Seed1.8 모델 카드 등 산업 평가에도 채용됐다. 본 논문(2608.11095)이 하이픈 유무만 다른 사실상 동일 명칭을 별개 테스트베드에 재사용한 것은 독자 혼동 소지가 명백하다 — 선행 벤치마크 인용·구별 여부를 본문에서 확인할 필요.
CLAUDE.md / AGENTS.md는 실제 에이전틱 코딩 도구의 지시 파일 관행이다.
사실. CLAUDE.md는 Claude Code(Anthropic 공식 CLI)가 프로젝트/유저 단위로 자동 로드하는 메모리·지시 파일이고, AGENTS.md는 OpenAI Codex 등 여러 도구가 채택한 공개 규약(agents.md)이다. 도구 공식 문서·규약 사이트로 확립된 배경 사실이며 논문의 전제와 일치한다.
Haiku 4.5는 실재하는 Anthropic 모델이다 (실험 executor로 사용).
사실. Claude Haiku 4.5는 2025-10-15 Anthropic이 공식 출시한 소형 모델 — 200K 컨텍스트, extended thinking 지원, $1/$5 per MTok, SWE-bench Verified 73.3%. 저비용·고속 특성상 반복 실험의 executor로 쓰는 것은 자연스러운 선택이다.
원본 (완역)
CLAUDE.md는 왜 계속 자라는가?CLAUDE.md와 같은 에이전틱 코딩 README는 실제 저장소에서 한계 없이 자라며, 저장소가 은퇴하거나 누군가 파일을 전면 재작성(rewrite)할 때에만 멈춘다. 우리는 이 현상의 원인을 불완전 회상에서 찾는다: 지시를 덧붙이는 일은 언제나 값싸지만, 어떤 지시의 근거가 사라지고 나면, 정확성 회귀를 감수하지 않고 그 지시를 삭제하는 비용은 에 이른다 — 지시 개짜리 프롬프트 기준이다. 우리는 그 결과로 나타나는 발산을 파국적 기억이라 명명한다 — 연속 학습이 그것을 중심으로 조직되어 있는 파국적 망각의 역이다. 먼저, 우리는 1,867개 저장소의 247,694개 지시 수명에 걸쳐 이 현상을 특성화한다: 에이전틱 프롬프트는 한계 없이 자라며, 수명 동안 3배 이상 커지고(+226%), 커밋마다 순증 +4.9개의 지시를 얻는다; 나아가 지시는 오래될수록 삭제될 가능성이 낮아진다(로그 위험률 -0.032/커밋). 다음으로, 우리는 프롬프트 주석이 이 성장을 멈출 수 있음을 보인다: IFEval을 뒤집으면 최적 프롬프트가 알려진 검증 가능한 월드들이 얻어지며, 거기서 잠재 근거를 부호화한 주석은 초과 지시의 99.3%를 제거한다(+211.3% → +1.4%). 마지막으로, 같은 반전을 WildIFEval에 적용하여, 프롬프트 주석이 실세계 에이전틱 지시 이행을 최대 23.1%까지 개선할 수 있음을 보인다. 영어가 새로운 코드라면, 왜 우리에게는 아직 주석이 없는가?
Write a brief post about how Earth is different from Venus.
...
Write your response as three sentences, each ending with a period.
# Task 0 continues to fail on sentence count; last instruction was
vague; maybe being explicit about periods will help?
압도적으로, 에이전틱 README는 성장을 멈추지 않는다. copilot-instructions.md, AGENTS.md 또는 CLAUDE.md는 지시를 얻어 가면서 좀처럼 덜어내지 않는다 (1). 파일을 지우는 것이 답은 아니다: 이런 파일을 가진 저장소는 에이전트 작업을 더 빨리, 더 적은 토큰으로 끝낸다 (12). 전부 유지하는 것도 공짜가 아니다: 제약이 누적될수록 지시 이행은 저하되고 (6; 11), 중앙값 파일은 이미 39개의 지시를 담고 있으며, 평균은 자체 수명 동안 3배 이상 늘어난다(+226%, 그림 1(b)).
이 성장은 서로 다른 메커니즘으로 설명될 수 있다. 요구사항이 더 이상 적용되지 않게 되는 것이라면(지시 노후도), 삭제 위험률은 지시의 나이에 따라 상승해야 한다. 취약한 지시가 일찍 죽고 견고한 지시만 남는 것이라면(내용 취약성), 위험률은 하락한다. 유지관리자가 지시의 근거를 잃는 것이라면(불완전 회상), 위험률은 나이에 따라 하락하고, 앞의 두 경쟁 가설과 달리 유지관리자 수에 따라서도 하락한다. 라인 diff와 파일 크기로는 개별 지시를 시간에 걸쳐 분해할 수 없기에, 지금까지 아무도 근본 원인을 식별하지 못했다.
"이 코드는 대체 왜 있는 거지?"는 모든 엔지니어가 한 번쯤 던져 본 질문이다. 에이전틱 지시를 삭제하는 일은 회귀의 위험을 수반하며, 이를 안전하게 수행하려면 유지관리자가 현실적으로 실행할 수 없는 반사실 실험들이 필요하다. 지시의 잠재 근거를 기록하는 비용은 이지만, 그것을 재구성하는 비용은 이다 — 지시 개짜리 프롬프트에서 그렇다(2장). 여러 저자의 연속된 편집은 그 잠재 근거를 파괴하므로, 삭제 위험률은 나이에 따라 붕괴하고, 추가가 제거를 앞지르며, 지시는 에이전트가 작동 불능이 될 때까지 한계 없이 자란다 — 파국적 기억이다. 파국적 망각에서는 경사 학습기가 지켰어야 할 것을 덮어쓴다 (14; 4; 7); 파국적 기억에서는 유지관리자가 덮어썼어야 할 것을 지킨다. 둘 다 실패하며, 같은 이유로 실패한다: 갱신을 정당화해 줄 근거가 사라져 버렸기 때문이다.
에이전틱 프롬프트에서 삭제가 실제로 일어나는 방식이 근본 원인을 가리킨다. 지시 소멸의 76.8%는 파일을 불도저식으로 밀어버리는 단 한 번의 커밋으로 도착하며, 그 후 성장은 이전 속도로 재개된다(3.3절): 지시 하나를 제거하는 데는 이유가 필요하지만, 전부 제거하는 데는 아무 이유도 필요 없다. 그리고 위험률도 이에 동의한다 — 지시가 오래될수록 제거될 가능성이 낮아지고, 파일을 편집한 저자가 많을수록 더욱 낮아진다(3장).
소프트웨어 공학은 수십 년 전에 주석으로 이 문제를 해결했다: 다음 유지관리자에게 건네지되 인터프리터에게는 보이지 않는 텍스트다 (8). 코드가 왜 그렇게 작성되었는지를 복원하는 일은 개발자들의 가장 심각한 문제이므로 (9), 관례는 '어떻게'나 '무엇'이 아니라 '왜'를 기록하는 것이다 (15). 놀랍지 않게도, 이 둘 모두 에이전틱 프롬프트에 그대로 이어진다.
우리는 지시의 잠재 근거를 부호화하는 프롬프트 주석이 무한한 프롬프트 성장을 멈출 수 있음을 보인다: 51 스텝에 걸쳐 초과 크기의 99.3%를 제거하고(+211.3% → +1.4%), 15 스텝에서는 +60.4%에서 5.8%로(66.2pp) 줄인다(그림 1(a)). 무관한 맥락은 모델의 주의를 흩뜨리므로 (22), 이는 실제 프롬프트에서 지시 이행을 최대 23.1%(11.6pp)까지 개선한다. 우리는 주석 페이로드를 바꿔 가며 이 효과를 절제(ablation)하여, 결과에 접지된 잠재 근거가 이득을 이끈다는 것을 보인다. 마지막으로, (에이전틱) 유지관리자가 더 유능해질수록 프롬프트 주석의 우위는 오히려 더 커진다는 것을 보인다(4장).
우리는 프롬프트 유지관리에 대한 새로운 접근을 기여하며, 이를 네 차원으로 특성화한다:
프롬프트 유지관리 이론. 잠재 근거의 복원 가능성 붕괴가 무한 성장을 예측한다(2장).
무한 프롬프트 성장의 근본 원인. 247,694개의 지시 수명에 걸쳐 삭제 위험률이 나이에 따라 붕괴하며, 이는 지시 노후도나 내용 취약성이 아니라 불완전 회상을 지목한다(3.4절).
알려진 최적을 갖춘 새로운 평가. IFEval을 뒤집으면 최소 커버가 알려진 검증 가능한 월드들이 얻어지므로, 초과 크기와 정확성이 측정 가능해진다(4.1절, 4.3절).
실용적 해법. 프롬프트 주석은 초과 크기의 99.3%를 제거하고(4장), 실제 프롬프트에서 지시 이행을 최대 23.1%까지 개선한다(4.3절).
우리는 프롬프트 유지관리를 검열되고 잡음 섞인 피드백으로부터 관측 불가능한 제약 집합을 온라인으로 추정하는 문제로 모델링하고, 쓰기 시점의 유래(provenance)가 붕괴함에 따라 발산하는 평형 프롬프트 크기를 유도한다. 그 유래가 없으면, 최적 추정기는 추가 전용(append-only)이 된다.
태스크 는 명시된 목적 를 그 관측 불가능한 제약 과 짝지으며, 이 제약들은 검증기들의 고정된 숨은 집합 에서 뽑힌다. 시점 의 프롬프트는 유한한 지시 집합 이고, 지시 는 시점 에 프롬프트에 들어와 나이 를 갖는다. 에 대한 응답은 를 확률 로 만족한다; 는 로부터의 표본을 제외하면 관측 불가능하다.
각 시점 마다 시스템에서는 세 당사자가 상호작용한다. (에이전틱일 수도 있는) 유지관리자는 지시를 추가·삭제하여 프롬프트를 으로 갱신한다. 하네스는 태스크 를 뽑아 프롬프트 아래에서 실행자를 사용해 실행한 뒤, 를 사용해 검증하여 로부터의 표본을 생성한다.
유지관리자의 목표는 최소 커버 , 즉 기대 제약 만족을 최대화하는 가장 작은 지시 집합이다. 형식적으로,
| (1) |
이 논문의 모든 실험은 를 에 대해 두 축으로 채점한다: 정확성, 즉 기대 만족도 와, 초과 크기 다. 유지관리 레짐은 한 축을 저하시키지 않으면서 다른 축을 개선할 때에만 이긴다.
특정한 함수 형태를 가정하지 않은 채, 우리는 가 표 1에 나열된 성질들을 만족한다고 가정한다. 성질 A1–A3(지시 가능성, 간섭, 중복)은 전체 레짐을 결정하고, 성질 A4(검열)와 A5(확률성)는 각각 삭제를 막고 추가를 몰아간다.
| Property | Behavior | |
|---|---|---|
| A1 | instructability | some raises |
| A2 | interference | adding lowers other |
| A3 | redundancy | a second adds no |
| A4 | censoring | outcomes don’t name their |
| A5 | stochasticity | even when covered |
회귀를 감수하지 않고 지시를 삭제하려면 유지관리자는 실행 불가능한 수의 반사실 실험을 돌려야 한다. 가 에 기여하는 바를 로 쓰자 — 를 갖는 태스크들에 대해서다; 는 가 모든 에 대해 성립할 때 초과(excess)다. 이를 추정한다는 것은 를 탐침한다는 뜻인데, 중복은 한 번에 하나씩의 탐침을 무력화한다: 하나의 제약을 각각 커버하는 두 지시는 따로 보면 공짜처럼 보이지만, 둘 다 지우면 제약이 깨진다. 따라서 정직한 감사는 번의 부분집합 탐침을 요구하며, 는 일반적으로 계산 불가능하다. 유지관리자가 왜 를 추가했는지 — 그 잠재 근거 — 를 알면 이 비용은 로 무너지지만, 는 에 따라 급속히 붕괴한다.
따라서 복원 가능성이 평형 크기를 결정한다. 붕괴를 다음과 같이 정의하자
| (2) |
여기서 한계량은 다; 따라서 이고, 와 가 모두 성립한다(일 때). 우리는 그 붕괴를 불완전 회상이라 부른다: 지시는 남아 있고 그 실패는 재발하지만, 그 잠재 근거는 점점 더 복원 불가능해진다. 유지관리자는 그 이유가 살아남아 있고 초과로 검증될 때에만 합리적으로 지시를 삭제하므로, 지시 자신의 나이에 대한 위험률은 다음과 같이 인수분해된다(성문화된 조직 규칙에 쓰이는 사건-이력 형식이다; 21; 13; 30),
| (3) |
에 대해 성립한다. 추가는 합산된 위험률과 상계되어,
| (4) |
에피소드 추가 에 대해 성립한다. 그러면 흐름 균형이 무한 성장을 낳는다:
| (5) |
식 5는 닫힌 형식의 파국적 기억이다: 추가가 일정한 속도로 도착하고 제약이 고정되어 있어도, 초과 크기는 로 발산한다. 즉, 태스크가 변하지 않더라도, 각 지시가 왜 쓰였는지에 대한 기억이 붕괴하는 것만으로 지시의 무한 성장을 몰아가기에 충분하다.
따라서 복원 가능성은 필요한 개입이며, 뒤에서 보이듯 충분한 개입이기도 하다. 잠재 근거가 붕괴하도록 내버려 두면, 남아 있는 유일한 실질적 삭제 수단은 전면 재작성(rewrite)뿐이다(3.3절); 그것을 복원하면, 프롬프트는 근처에 정착한다(4.2절).
에이전틱 컨텍스트 파일은 누군가 전면적으로 재작성할 때까지 성장하고, 그 뒤 다시 성장한다. 이것이 우리가 래칫이라 부르는 독특한 톱니형 성장 곡선의 특징이다(그림 4). 래칫의 삭제 위험률과 공변량은 그 근본 원인 — 불완전 회상 — 을 처음으로 식별해 낸다.
우리는 에이전틱 프롬프트를 개별 지시로 분해하고 커밋 히스토리에 걸쳐 그 소멸을 추적한 다음(3.1절–3.3), 지시 노후도와 내용 취약성 가설을 반증하고, 마지막으로 불완전 회상만이 내놓을 수 있는 예측을 확증한다(3.4절). 우리의 코퍼스는 1,867개의 GitHub 저장소, 1,801개의 다중 버전 파일, 299,440건의 버전 간 전이, 247,694건의 지시 수명을 아우른다. 구축, 분절, 매칭, 중도절단(censoring)의 세부는 부록 A에 상술한다.
유지관리자는 추가만 하고 거의 제거하지 않으므로, 에이전틱 프롬프트는 히스토리가 끝나거나 파일이 전면적으로 재작성될 때까지 지시 개수, 지시 복잡도, 전체 크기 면에서 한계 없이 성장한다.
마지막으로 추적된 버전 기준, 중앙값 파일은 39개의 지시를 담고 있으며(90번째 백분위: 131), 이는 지시 이행이 저하되기 시작하는 임계값을 한참 넘는 수준이다 (6; 11). 다중 버전 저장소 1,576개 중 64.3%가 지시 개수를 늘렸고 26.6%가 줄였으며, 순증가의 중앙값은 +7개 지시다. 대량 재작성을 제외하면 19,267개 커밋에 걸쳐 커밋당 평균 순 +4.9개의 지시가 추가된다.
우리가 측정한 모든 구성요소가 성장한다. 파일 자신의 수명에 걸쳐 평균 궤적은 개수에서 최대 +226%(그림 1(b)), 평균 지시 길이에서 +10% 증가한다. 그와 함께 에이전틱 프롬프트의 전체 크기도 +140% 성장하므로, 이 개수 증가는 텍스트가 지시 클래스와 페이로드 클래스 사이를 옮겨 다닌 결과가 아니다(A.5절).
유지관리자가 지시를 삭제할 때는 대체로 대량 재작성을 통해 통째로 삭제한다. 지시 소멸의 77.3%가 전면 재작성 또는 형제 파일로의 이관(migration)에서 발생한다. 이런 경우 라인 diff로는 삭제와 재문구화(rewording)를 구분할 수 없으며, 이것이 "삭제는 드물다"는 관찰이 설명되지 않은 채 남아 있던 이유를 부분적으로 설명한다: 프롬프트 변경 연구들은 추가가 지배적이라고 보고하면서도 개별 지시가 어떻게 되었는지는 규명하지 않았다 (24).
한 커밋에서 파일이 지시의 절반 이상을 잃으면 이를 전면 재작성(rewrite)이라 부르고, 텍스트가 형제 파일에 다시 나타나면 이관(migration)이라 부른다. 우리는 둘 다 경쟁 위험(competing risks)으로 중도절단 처리한다(소멸 96,162건과 682건, 노출을 양방향으로 한정하는 방식은 A.4절). 어느 쪽도 유지관리자가 특정 지시가 그 자리를 차지할 가치가 있는지 판단하는 과정을 수반하지 않기 때문이다 (13). 매칭은 손으로 주석한 50건의 전이에서 정밀도 1.000, 재현율 0.933으로 검증되었으며, 그 결과 247,694건의 수명과 28,426건의 추적된 삭제가 남는다.
대량 재작성은 프롬프트의 크기를 리셋하지만 근본 원인(불완전 회상)을 해소하지는 못하므로, 프롬프트는 재작성 직후 곧바로 다시 성장하기 시작한다.
파일들을 첫 대량 재작성 시점 에 정렬하면, 평균 지시 개수는 까지 단조 증가하다가 에서 재작성 이전 값의 59.5%로 떨어지고, 이후 10개 커밋에 걸쳐 91.5%까지 회복한다(그림 4). 실제로 에이전틱 프롬프트는 재작성 이후에 더 빠르게 성장한다: 파일은 대량 재작성 이전에는 커밋당 4.1%씩, 이후에는 4.9%씩 지시를 늘린다.
삭제 위험률 과 저자 수와의 상호작용은 지시 성장을 이끄는 메커니즘이 불완전 회상임을 식별해 낸다.
특히 지시 노후도와 불완전 회상은 삭제 위험률에 대해 서로 반대의 기울기를 예측한다: 전자는 지시가 시대에 뒤떨어지면서 위험률이 나이에 따라 상승할 것으로 예측하고 (10; 18), 후자는 지시 이면의 근거가 소실되면서 위험률이 하락할 것으로 예측한다. 그림 5에서 볼 수 있듯이 삭제 위험률 은 나이에 따라 하락한다 . 저장소 층화 부트스트랩으로 얻은 로그 위험률 기울기는 커밋당 이며, 그 구간은 0을 배제한다(95% CI ; A.6절).
내용 취약성 — 취약한 지시, 파일, 저장소가 일찍 죽는 현상 — 은 구성 효과(compositional effects)를 통해 삭제 위험률을 아래로 휘게 할 수 있지만, 구성만으로는 이 기울기를 설명할 수 없다. 우리는 무-frailty 기준선 (26)과 대비해 감마 frailty 모형으로 재적합했다(소멸 건, 50커밋에서 중도절단). 그 가장 강한 형태인 동일 텍스트 공유 지시는 30.8%를 흡수하지만 기울기는 로 남는다(; A.7절).
마지막으로, 불완전 회상은 어느 경쟁 가설도 설명할 수 없는 것을 예측한다: 잠재 근거가 유지관리자가 변경을 수행하는 동안 인코딩된다면, 삭제 위험률은 나이만이 아니라 파일을 손댄 유지관리자의 수에 따라서도 감쇠해야 한다. 인간 저자를 세고 파일 활동량을 통제했을 때, 실제로 그렇다: (; A.8절).
따라서 실제 저장소 전반에서 무한한 프롬프트 성장은 광범위하고, 파일이 도달하는 크기에서는 비용이 크며, 오직 불완전 회상으로만 설명 가능하다. 다만 이 설정은 관찰된 것이지 배정된 것이 아니므로, 다음으로 우리는 유지관리자가 무엇을 물려받는지를 우리가 통제하는 설정으로 넘어간다.
| Instruction Count | Constraint Satisfaction | ||||||
|---|---|---|---|---|---|---|---|
| Role | Arm | Excess Size (%) | Rate (%, ) | Rate (%, ) | |||
| control | no prompt comments | 15 | 552 | 3.5 | |||
| placebo | comment-shaped noise | 15 | 552 | 3.3 | |||
| treatment | informative comments | 15 | 552 | 2.1 | |||
| control | no prompt comments | 51 | 184 | 6.6 | |||
| placebo | comment-shaped noise | 51 | 184 | 5.3 | |||
| treatment | informative comments | 51 | 184 | 2.2 | |||
프롬프트 주석은 에이전틱 프롬프트에서 지시의 무한 성장을 영구적으로 멈출 수 있으며, 그 과정에서 더 작고 더 견고한 프롬프트를 통해 지시 이행을 개선한다.
프롬프트 유효성을 평가하기 위해, 우리는 먼저 태스크가 정상(stationary)인 설정에서 에이전틱 프롬프트를 위한 새로운 평가법을 제안한다(4.1절). 이 평가를 사용해 프롬프트 주석이 프롬프트를 이론적 최적 최소 커버 근처에 정착시킨다는 것을 보인다(4.2절). 마지막으로, 프롬프트 주석이 실제 프롬프트에서 불필요하고 노이즈 섞인 지시로 인해 상실된 지시 이행을 되사올 수 있음을 보인다(4.3절).
실무에서 에이전틱 코딩 맥락의 유지관리자는 관측 불가능한 제약 집합을 충족하는 유효한 프롬프트를 학습해야 한다. 정확성을 최대화하려면 이 프롬프트는 모든 제약을 동시에 커버하면서도, 지시 이행 감쇠라는 잘 알려진 문제 (6; 11)를 감안하면 최소여야 한다.
따라서 프롬프트 평가에는 초과 크기와 정확성 둘 다의 측정이 필요한데, 초과 크기를 계산하려면 최소 커버가 필요하고 이는 일반적으로 계산 불가능하다(2장). 표준 지시 이행 벤치마크 스위트가 한 가지 경로를 제공한다.
IFEval (29)를 뒤집음으로써 이 문제를 공략할 수 있다. 각 벤치마크 항목 — 지시 , 검증기 — 에 대해 다음 변환을 적용한다:
를 숨긴다. 항목에 명시된 지시들이 참조 최소 커버 이 되므로, 가 선험적으로 알려지고 초과 크기가 측정 가능해진다.
를 유지한다. 그 검증기들이 월드의 숨은 제약 집합이 되어, 하네스만이 실행하고 유지관리자에게는 결코 이름조차 알려지지 않는다.
브리프 를 생성한다. 더 강한 모델이 를 일반적 태스크 목표("제품 발표문을 작성하라")로 손실 압축 요약한다.
그다음 새 유지관리자가 스텝에 걸쳐 로부터 를 재구성하는데, 에서 나온 중도절단되고 노이즈 섞인 피드백만을 본다. 소속 조건(arm)에 따라 지시 에 그 지시의 잠재 근거를 담은 주석 을 달 수 있는지가 결정된다. 다음 유지관리자는 와 모든 을 읽고, 실행자는 만 읽는다.
지시는 실행자에게 무엇을 할지 말하고, 주석은 다음 유지관리자에게 왜 그런지를 말한다. 이 분리를 강제하기 위해 하네스는 프롬프트가 실행자에게 도달하기 전에 주석을 제거하고, 과거 실패를 인용하는 지시는 모두 거부하여, 주석을 잠재 근거가 살아남을 수 있는 유일한 채널로 남긴다(부록 B).
|
Do not truncate or cut off your response; always complete every sentence and thought you begin.
# r1: response was truncated mid-sentence ("A body that you often s") suggesting response generation stopped prematurely; may indicate token limit, instruction conflict, or assistant aborting output; this directive ensures responses are complete |
|---|
|
Use the word ’wilderness’ exactly 5 times in your response.
# r3: task 0 failed with ’certain wording is not used the right number of times’ — the response uses ’wilderness’ only 2 times but requirement expects exactly 5 occurrences; d12 (3 bold sections) was passing, so keeping that approach |
|
Divide the response body into exactly 4 paragraphs: (1) introduction to the water cycle, (2) evaporation and condensation, (3) precipitation and collection, (4) conclusion. Separate each paragraph with exactly three blank lines.
# r3: "response is not split into the right number of paragraphs" recurring across r2-r3; previous directive d18 specified two blank lines between paragraphs but failed; increasing to three blank lines while maintaining strict 4-paragraph structure |
#)이며 실행자에게는 결코 도달하지 않는다. 8,541건의 추가 중 3건으로, 제약 패밀리당 하나씩이다.지시의 잠재 근거를 인코딩한 프롬프트 주석은 프롬프트를 그 최소 커버에 정착시킨다(그림 1(a)). 그 잠재 근거는 지시 이면의 실패, 가설, 그리고 그 가설이 어떻게 되었는지를 요약한다(그림 6).
구체적으로, 552건의 유지관리 히스토리에 걸쳐 잠재 근거를 프롬프트 주석으로 인코딩한 유지관리자는 초과 크기 5.8%로 프롬프트를 학습한 반면, 주석 없는 유지관리자는 +60.4%였고(66.2pp 차이), 제약 충족은 동등(parity)했다(표 2). 두 조건(arm)의 차이는 핸드오프뿐이다: 프롬프트 지시와 함께, 유지관리자의 요약된 잠재 근거를 담은 주석이 넘어가는지(또는 넘어가지 않는지)다.
(에이전틱) 유지관리자의 역량이 커질수록 래칫은 더 세게 돌아가고 프롬프트 주석은 더 크게 돕는다. 에서 유지관리자를 3개 티어로 바꿔 보면, 주석 없는 조건의 초과 크기는 +67.7%에서 +571.9%로 상승한다. 최상위 티어에서 프롬프트 주석은 대조군 대비 제약 충족과 초과 크기 양쪽에서 엄격한 파레토 이득을 가능하게 한다(표 9).
마지막으로, 에서의 절제(ablation) 실험은 주석이 결과(outcome)를 담아야 함을 보여준다(표 10). 주석 모양 노이즈는 무주석 조건의 노이즈 범위 안에 떨어지고, 결과 없이 시도만 서술한 내러티브는 +70.0%로 우리의 최악 조건이 되어, 후임자에게 검증되지 않은 전제를 확장하라고 넘겨준다. 스키마 내에서는 무슨 일이 있었는지를 기록하는 두 필드가 감소 효과를 담당한다: 재발 횟수 필드 하나만 빼도 그 효과의 37%가 사라진다.
불필요하고 노이즈 섞인 지시는 참되고 올바른 지시에 대한 준수를 저하시키며, 주석은 그 손실의 대부분을 회복시킨다.
WildIFEval (11)을 같은 방식으로 뒤집으면 이 검정을 실제 프롬프트로, 그리고 개수가 아니라 지시 이행으로 옮겨올 수 있다. 각 벤치마크 항목 를 4.1절과 같이 월드로 변환하되, 유지관리자가 개 지시 전부를 학습하게 하는 대신 개의 참 지시와 다른 항목들의 집합 에서 균등 추출한 개의 노이즈 지시를 시드로 넣는다. WildIFEval의 제약은 사람이 쓴 산문이라 코드 검증기가 딸려 있지 않으므로, 우리는 제약 하나와 응답 하나만 보고 그 외에는 아무것도 — 프롬프트도, 조건 라벨도, 히스토리도 — 보지 못하는 조건-맹검(arm-blind) LLM 심판으로 채점한다. 64개 월드에 걸쳐, 과 에서, 그 노이즈 지시들은 프롬프트에 이미 있던 참 지시에 대한 정확성을 24.1pp 잃게 한다 — 에서 65.6%였던 것이 여기서는 41.5%다(95% CI: [33.4, 14.9]pp). 전체 세부는 D.1절에 있다.
주석은 3회의 유지관리 라운드에 걸쳐, 동일한 프롬프트를 받은 무주석 유지관리자 대비 충족률을 50.4%에서 62.0%로 끌어올린다(11.6pp, 95% CI: [5.1, 18.3]pp) — 23.1%의 상대 이득이다. 절제 실험은 주석에 인코딩된 잠재 근거가 이 행동을 이끈다는 것을 다시 보여준다: 주석 모양 노이즈는 무주석 조건에서 2.7pp 떨어진 곳에 위치한다(95% CI: [4.4, 10.1]pp, 0을 포함). 이 소절의 모든 대비는 단일 심판 아래의 비율이므로, 우리는 6,336건의 판정 전부를 두 번째 심판으로 재채점했다: 기준은 재현되며, 그 심판이 측정한 효과는 여기 인용한 것과 3.8pp 다르고(7.8pp 대 11.6pp; 95% CI: [1.9, +9.6]pp), 이는 0을 배제하지 않는다(D.3절).
따라서 배정(assignment) 하에서, 잠재 근거를 인코딩한 프롬프트 주석은 지시 개수를 최적 최소 커버로 줄이는 동시에 실제 프롬프트에서 지시 이행을 되사온다는 것을 확인한다. 다음으로 우리의 접근을 선행 연구와 맥락화하고 대비한다.
선행 측정 연구들은 컨텍스트 파일이 제 몫을 하며 오직 성장하기만 한다는 사실을 확립했다.
1은 AGENTS.md류 파일의 특성을 규명했는데, 이 파일들은 내용을 축적할 뿐 좀처럼 덜어내지 않는다. 24은 저장소 내 프롬프트의 진화를 추적했으며, 그곳에서 추가가 다른 모든 편집 유형을 압도한다. 12는 이 파일들이 스스로 비용을 상쇄함을 보였는데, 파일을 보유한 저장소가 에이전트 작업을 더 빨리, 더 적은 토큰으로 완료하기 때문이다. 우리는 그 성장을 개별 지시의 생애 전체에 걸쳐 측정하되, 삭제 위험률(deletion hazard)을 추정하고 무엇이 이를 좌우하는지 식별할 수 있을 만큼 세밀하게 측정한다
(3.4절).
에이전트 메모리 시스템은 이미 망각을 구현하고 있으며, 각각은 관측 가능한 낡음(staleness) 프록시에 기대고 있다. MemGPT는 컨텍스트 오버플로 시 축출한다 (17). Mem0는 모순이 감지되면 삭제하고, 그 그래프 변형과 Zep은 대체된 항목에 타임스탬프를 찍어 무효화한다 (2; 20). FSFM은 수동적 감쇠부터 안전-트리거 삭제까지의 메커니즘을 목록화한다 (5). 그러나 사람이 작성한 지시에는 그런 프록시가 존재하지 않는다. 지시는 단지 오래되었거나 드물게 트리거된다는 이유만으로 낡아지지 않는다. 대신 우리는 지시의 잠재 근거(latent reasoning)가 그 지시를 유지할지 말지를 결정하는 일차 동인이어야 함을 보인다 (2절, 3.4절).
조직의 성문 규칙은 사람들이 수십 년에 걸쳐 유지하는 인공물이며, 광범위하게 연구되어 왔다. Lehman의 법칙은 프로그램의 성장을 변화하는 환경 탓으로 돌리는데 (10), 이는 수요 측면의 설명이다. 30는 규칙 변경을 규칙 자체의 나이에 비율이 좌우되는 확률 과정으로 다루고, 21는 규칙 개체군이 조밀해질수록 규칙 탄생률이 떨어짐을 보이며, 13은 이 둘을 규칙의 탄생·개정·정지에 대한 하나의 설명으로 종합한다. 우리는 이들의 통찰을 활용하여 구성적 효과와 낡음을 넘어서는 에이전틱 프로그래밍 고유의 동학을 규명하고, 나아가 나이 에 의존하는 새로운 잠재 근거 복원가능성 인자 을 분해해 낸다 (식 3, 3.4절).
소프트웨어 엔지니어링은 유사한 과제를 수십 년 전에 구문 구조와 엔지니어링 관례로 해결했다. 문학적 프로그래밍(literate programming)은 프로그램이 인간 독자를 향해 쓰인다고 주장했고 (8), 15은 왜(why)를 주석으로 남기는 것을 표준 관행으로 만들었으며, 9는 그 근거를 복원하는 일이 개발자들의 가장 심각한 문제임을 발견했고, 아키텍처 결정 기록(ADR)은 결정 시점에 그것을 기록하는 일을 제도화했으며 (16), 커밋 메시지는 그것을 실어 나르기 위해 존재하지만 일상적으로 실패한다 (25). 우리는 구조적 통찰과 의미적 통찰 양쪽 위에 직접 구축하여 본 연구 결과의 핵심 기둥을 이끌어내며, 지시의 잠재 근거를 인코딩한 주석이 제약 충족을 동등하게 유지하면서 초과 크기를 줄인다는 것을 보인다 (4.2절).
그러나 코드-주석 충실도는 악명 높게 취약하며, 그 괴리에 통째로 바쳐진 연구 계열들이 존재한다. 주석과 그것이 기술하는 코드는 공진화가 잘 되지 않고 (3), 주석-코드 불일치의 탐지와 해소는 그 자체로 별개의 ML-for-SWE 과제다 (19; 18). 우리의 절제 실험(ablation)은 정보량이 낮거나, 구조가 부실하거나, 오도하는 근거가 에이전틱 코딩에도 동일한 해악을 옮긴다는 것을 식별한다 (4.2절, 표 10).
연속 학습은 우리와 가장 가까운 사촌이지만, 주로 목표가 표류하는 과제를 겨냥한다. 과제 시퀀스로 훈련된 네트워크는 앞선 과제가 가르친 것을 덮어쓴다 (14; 4). 리허설과, 이전에 중요했던 파라미터 쪽으로의 정규화는 (7) 이동하는 목표가 파괴할 것을 보존한다. L2P, DualPrompt, CODA-Prompt는 그 부담을 입력 쪽으로 옮겨, 동결된 백본이 선택해 쓰는 고정 크기 프롬프트 풀을 학습함으로써 성장을 설계상 유계로 만든다 (28; 27; 23). 우리의 과제는 정상적(stationary)이지만, 우리는 이들의 프레임워크를 빌려 와 고정 자원 제약이 이끄는 상보적 통찰을 발견한다: 저쪽에서는 고정된 파라미터가 이동하는 목표 아래 파국적 망각을 일으키고, 이쪽에서는 간헐적 실패가 (근사적으로) 고정된 지시 개수 아래 파국적 기억을 일으킨다 (식 5, 4.2절).
IFEval은 검증 가능한 제약에 대해 응답을 채점한다 (29). FollowBench는 점진적으로 추가되는 제약 수준을 등급화하고, WildIFEval은 다수의 제약을 한꺼번에 담은 실제 요청을 수집하는데, 둘 다 요구되는 제약 집합이 커질수록 지시 이행이 저하됨을 기록한다 (6; 11). 이들 벤치마크는 응답이 충족해야 하는 제약의 대가를 값매김하며, 그것이 바로 우리의 문제의식이 딛고 선 해악이다. 우리는 이를 뒤집어(invert) 불필요한 지시의 대가를 대신 값매김하고 (4.3절), 최소 커버(minimum cover)를 관측 가능하게 만든다 — 이것이 없으면 초과 크기는 측정 불가능하다 (4.1절).
영어가 새로운 코드라면, 왜 우리에게는 아직 주석이 없는가?
근본적으로 우리는 두 가지를 보인다: (i) 에이전틱 프롬프트가 성장하는 이유는 지시의 잠재 근거가 지시보다 빨리 소멸하기 때문이며 (3.4절), (ii) 그 잠재 근거를 작성 시점에 프롬프트 주석으로 저장하면 지시 개수가 줄고 지시 이행이 회복된다 (4.2절, 4.3절).
어느 쪽도 놀랄 일은 아니다. 소프트웨어 엔지니어링은 동일한 문제를 수십 년 전에 식별하고 해결했으며, 연속 학습은 그 쌍대 문제 — 파국적 망각 — 를 지금 이 순간 풀고 있다. 두 분야 모두 세부에서는 다르지만, 원리 차원의 교훈을 제공한다. 다만 LLM 에이전트는 우리가 그 교훈을 채택하기도 전에 실제 업무를 수행하기 시작했다. 우리는 이제 두 분야 모두에서 기꺼이 빌려 온다.
우리의 결과는 세 갈래의 새로운 연구 방향을 연다. 코딩 에이전트 개발자는 프롬프트에 주석 구문을 부여하여 지시의 잠재 근거가 다음 유지관리자에게 도달하게 할 수 있다 — 우리의 프로토타입은 유망하지만 어디까지나 프로토타입일 뿐이다. 에이전틱 코딩 프롬프트를 관리하는 유지관리자는 모범 사례를 식별할 수 있다: 소프트웨어 엔지니어링 모범 사례와 상당 부분 겹칠 수 있지만, 거의 확실히 차이도 존재한다. 마지막으로 연구자는 (i) 이를 능가하는 것을 찾을 수 있는데, 프롬프트 유지보수는 텍스트 위의 연속 학습이지만 아직 아무도 그 리허설·정규화의 유사물을 구축하지 않았기 때문이며, (ii) 이를 측정하는 것도 찾을 수 있는데, 대표성 있는 제약 개수에서, 그리고 기계적으로 검증 불가능한 제약에 대해서다.
지금 모든 분야가 AI에서 빌려 가고 있다. 우리도 그만큼 선뜻 되빌려 와야 한다. 파국적 기억에 대한 답은 40년 묵은 것이었고 바로 옆 분야에 있었다 — 다음 답 역시 그럴지 모른다.
우리는 세 가지 측정상의 선택을 고정한 채 한 번도 바꾸지 않았다: 추적기 내부에 적용된 50% 전면 재작성(rewrite) 임계값 — 이는 이관(migration) 규칙과 함께 소멸 사례의 77.3%를 중도절단한다 (A.4절); 299,440건의 추적된 전이에 대해 손으로 주석한 50건의 전이로 단 한 번 검증된 매처 — 대규모 층화 재주석이 이 간극을 메울 수 있다 (A.3절); 그리고 말뭉치별 분절 문법 — 말뭉치 측에서 가장 큰 미검증 자유도다 (A.2절). 살아남은 매처 오류는 나이 기울기를 0 쪽으로 편향시키므로, 우리가 보고하는 하락은 하한이다.
우리의 통제 실험은 유지 비용이 거의 공짜인 조건에서 메커니즘을 입증한다: 중앙값 파일의 39개 지시에 대비되는 2~3개 지시의 커버, 15스텝 지평, 유지관리자와 실행자를 겸하는 단일 모델, 기계적으로 검증 가능한 영어 제약 (B.3절). 4.3절은 사람이 작성한 4~5개 제약에 16개의 방해 지시(distractor)를 얹어 실행하며, 여기서는 유지 비용이 명백히 공짜가 아니다. 그러나 이는 실제 파일에서 초과분을 키워낸 것이 아니라 벤치마크 프롬프트에 초과분을 심어 넣은 것이다: 초과분의 비용이 얼마이고 주석이 무엇을 회복시키는지를 값매김할 뿐, 래칫이 그 규모에서 지속되는지는 결코 말해 주지 않으며, 그 부분은 저장소 연구가 대신 담당한다. WildIFEval의 제약은 코드가 아니라 산문이므로, 그곳의 충족 여부는 조건(arm)을 모르는 LLM 심판이 채점하며 모든 비율은 그 심판 아래에서의 비율이다. 대비 결과는 첫 번째 심판과 효과 크기가 구별되지 않는 두 번째 심판 아래에서도 재현되지만, 어느 심판도 정답 기준(ground truth)이 아니므로 우리는 정확도가 아니라 재현과 일치를 측정한다 (D.3절).
우리의 적용 범위는 공개 GitHub의 에이전트 컨텍스트 파일에 한정된다:
CLAUDE.md, AGENTS.md, 또는 copilot-instructions.md를 보유한 1,867개 저장소. 우리는 이들의 언어 분포를 측정하지 않았으며, 어떤 결과도 비영어 지시에 대해서는 말하지 않는다. 3.4절의 다중 저자 상호작용은 파일을 편집한 사람의 수를 세는 것이지, 지시의 원저자가 떠났는지를 세는 것이 아니다. 파국적 기억이 시스템 프롬프트나 에이전트 스킬 파일에까지 미치는지는 열린 문제로 남는다.
우리는 LLM을 기술 실행·작성 실행·연구 지원을 위한 위임된 컴파일러로서 아낌없이 사용했다: 문헌 리뷰 종합, 섹션 구조화, LaTeX 포매팅, 실험 코드·분석 코드·부록 텍스트의 공동 생성 등이다. 모든 기술적 내용, 실험 설계, 이론적 기여, 과학적 주장은 저자의 독창적 작업이다. 프로그램 방식의 생성기가 초록·본문·부록의 모든 수치를 정본(canonical) 실험 산출물로부터 산출하며, 보고된 값 중 LLM이 만들어낸 것은 없다.
우리는 공개 저장소 이력을 채굴하며, 우리가 접촉하는 유일한 개인 데이터는 저작 메타데이터다. 파일 이력의 각 커밋은 저자 이름과 이메일을 담고 있는데, 우리는 추출 시점에 이를 서로 다른 편집자의 수 — 3.4절의 공변량 — 로 환원한다. 우리가 공개하는 어떤 산출물도 신원을 담지 않는다. 우리는 저장소 콘텐츠를 재배포하지 않으며, 파생 테이블과 그것을 재구축하는 코드만 배포한다 (부록 E). 이 파일들은 공개돼 있지만, 누구도 이 측정을 위해 그것을 작성하지는 않았다. 따라서 우리가 보고하는 모든 결과는 어느 한 유지관리자에 대한 판단이 아니라 1,867개 저장소에 대한 집계다.
주된 위험은 우리 자신의 권고에 있다. 우리는 유지관리자에게 근거를 복원할 수 있는 지시는 삭제하라고 말하는데, 이 규칙을 자동화하는 운영자는 근거가 실재했던 지시까지 삭제하게 될 것이다. 우리의 프로토콜은 프롬프트의 적지 않은 비율을 비워내며, 주석 없는 조건(arm)이 정확히 그런 세계들에서 더 높은 점수를 받는다 (C.5절). 주석을 쓰는 일은 아무것도 제거하지 않으므로 안전하다. 그러나 주석에 따라 행동하는 일은 그렇지 않다. 이 프로토콜을 배치하는 운영자는 삭제 경로에 사람을 두어야 하며, 누군가 프로토콜을 안전 관련 지시에 대해 검증하기 전까지는 그런 지시를 적용 범위 밖에 두어야 한다.
우리는 말뭉치에서 불쾌한(offensive) 콘텐츠를 감사하지 않았으며, 원문 그대로 인쇄한 문자열은 단 세 개뿐이고 모두 우리 자신의 실행에서 나온 주석이다 (그림 6). 우리는 참가자를 모집하지 않았고, 본 연구의 유일한 수작업 주석은 저자 한 명이 수행했으며 (표 3), 독립적 재주석이 이를 보완할 수 있을 것이다. 우리는 아무것도 훈련하지 않으며, E.1절이 계산 자원을 보고한다.
우리는 프레임의 텍스트를 재사용하지 않고 모든 파일의 모든 버전을 재도출했다. 스냅샷은 파일에 대한 주장을 뒷받침할 뿐이며, 지시에 대한 주장은 히스토리만이 뒷받침한다. 프레임은 파일 수준 성장을 확립한 연구인 1의 저장소 목록으로, 기본 브랜치에 CLAUDE.md, AGENTS.md, 또는 copilot-instructions.md를 최소 하나 보유한 공개 GitHub 저장소들이다. 우리는 각 저장소를 blobless 방식으로 클론하고 추적 대상 컨텍스트 파일 각각의 전체 커밋 히스토리를 순회했다. 1,867개 저장소로부터 최소 두 버전을 가진 파일 1,801개, 추적된 버전 간 전이 299,440건, 스펠(spell) 247,694건을 얻었다.
앞으로 순회하는 방식은 측정을 시간에 대해 대칭적으로 유지하기도 한다. 만약 각 파일의 지시 집합을 최종 버전에 고정하고 역방향으로 탐색했다면, 그 버전까지의 생존을 조건화한 셈이 되었을 것이다. 생존이야말로 연구 대상인 양이다.
| Gate | Criterion | Threshold | Observed | Pass |
|---|---|---|---|---|
| 0 | Median per-repo net | |||
| 0 | Grow:shrink ratio | 2.42 | ||
| A | Deletions excluding rewrites | 28,426 | ||
| A | Tail share at/above median age | 57.0% | ||
| B | Matcher precision / recall | 1.000 / 0.933 | ||
| – | Median rel. growth, all multi-version files: count vs. length | count length | vs. |
우리는 절(clause) 수준의 명령문 하나를 지시라 부르고, 파일 내 나머지 전부를 페이로드(payload)라 부른다. 분할은 두 단계로 수행한다: 각 파일 버전을 마크다운 구조에 따라 나누되 목록 항목과 블록 경계를 취하고, 그 다음 남은 산문을 문장 경계에서 나눈다. 제목, 펜스 코드, 표, 전체 줄 볼드 레이블, 그리고 2단어 미만의 단편은 페이로드로 보내는데, 그 길이에서는 한 줄이 대개 규칙이 아니라 레이블이기 때문이다. 페이로드는 위험 집합(risk set)에 절대 들어가지 않는다. 그래도 우리는 이를 집계하며, 3.1절에서 지시 개수 옆에 함께 보고하여, 우리가 보고하는 성장이 파일이 나이 들수록 더 많은 텍스트를 지시 클래스로 라우팅한 데서 온 것인지 독자가 확인할 수 있게 한다.
우리는 문법을 게이트를 읽기 전에 코퍼스별로 고정했으며, 이는 코퍼스 쪽에서 우리의 가장 큰 미검증 자유도로 남아 있다. 다른 문법이었다면 다른 가 나왔을 것이다. 우리는 비율을 보고하므로 의 상수배 재조정은 비율에 영향을 주지 않지만, 파일 연령에 따라 거동이 드리프트하는 문법이라면 그렇지 않을 것이다.
우리는 연속된 버전 간 지시들을 3단계 캐스케이드로 매칭한다. 먼저 정확한 문자열 동등성을 시도하고, 다음으로 대소문자·공백·마크다운 구두점을 제거한 정규화 후의 동등성을, 그 다음으로 유사도 70 이상의 퍼지 매칭을 시도한다. 어느 단계에서든 매칭되면 생존으로 집계한다. 아직 사용 가능한 파트너 중 최고 점수를 취하며, 각 지시는 최대 한 번만 매칭된다. 매칭되지 않은 기존 지시는 사망이고, 매칭되지 않은 새 지시는 탄생이다.
이 캐스케이드는 삭제된 지시와 재표현된 지시를 구별하며, 3.2절은 그 분리에 기대고 있다. 줄 수준 diff는 재표현 하나를 삭제 하나 더하기 추가 하나로 채점하므로, 줄 수준의 삭제 카운트는 지시 삭제 0건과도, 다수와도 똑같이 부합한다. 따라서 매처는 우리가 코퍼스에서 취하는 모든 결과의 경계를 정한다. 우리는 이를 수작업 주석된 50개 전이에서 한 차례 검증하여, 데이터를 끌어오기 전에 고정해 둔 바닥값 0.85/0.80 대비 정밀도 1.000과 재현율 0.933에 도달했다(표 3). 이는 추적된 전이 299,440건에 비하면 작은 풀이며, 정본 실행이 산출하지 않은 코퍼스 쪽 유일한 수치다. Limitations에 그렇게 명시했다. 전체 규모의 층화 재주석이 이 간극을 닫을 것이다.
살아남은 어떤 오류든 우리 추정치를 보수적으로 만든다. 놓친 재표현은 그 재표현이 일어난 연령에 사망을 만들어내는데, 재표현은 젊은 지시보다 오래되고 많이 편집된 지시에서 더 자주 일어난다. 따라서 매처의 누락은 고연령 꼬리에 위험률을 더하며, 이는 추정 기울기를 0 쪽으로 편향시킨다. 그 편향 아래에서 측정된 감소는 참 감소의 하한이다.
| (a) Anatomy of a rewrite commit | ||||
|---|---|---|---|---|
| Rewrite commits | 1,353 | |||
| Median instructions killed / born | 46 / 14 | |||
| Events leaving the file empty | 24.4% | |||
| Events replacing half the dead text | 38.3% | |||
| Events carrying any cross-file migration | 2.9% | |||
| (b) Event study vs. window half-width | ||||
| Window | ||||
| 317 | ||||
| 213 | ||||
| 158 | ||||
| 126 | ||||
| 52 | ||||
| (c) Growth within inter-rewrite segments | ||||
| Segment | Median | Growing | Net | |
| 0 | 1,597 | 78.5% | ||
| 1 | 543 | 81.6% | ||
| 2 | 180 | 82.2% | ||
| 3+ | 178 | 86.0% | ||
우리는 위험률이 한 종류의 이벤트만을 대상으로 돌아가기를 원한다: 유지관리자가 어떤 지시가 더는 그 자리를 차지할 가치가 없다고 결정하는 것. 우리는 다른 두 종류의 소멸을 경쟁 위험으로 검열(censor)한다. 전면 재작성(rewrite)은 파일의 살아 있는 지시 중 최소 50%가 한꺼번에 죽는 커밋으로, 위험에 놓인 지시가 최소 5개라는 바닥 조건을 두어 지시 2개짜리 파일이 하나를 잃는 경우가 해당되지 않게 한다. 이주(migration)는 같은 커밋의 형제 파일에서 그 텍스트가 다시 나타나는 사망이며, 이는 저장소 전역에서 매칭한다.
둘을 합치면 관측된 지시 사망의 77.3%가 검열된다. 재작성 사망만으로도 우리가 위험률을 추정하는 근거인 삭제를 3.4 대 1로 웃돈다. 이것이 우리의 단일 최대 노출이며, 두 방향으로 읽힌다. 추정을 위협한다 — 우리는 사망의 소수에서 삭제 위험률을 적합하는데, 통상적 가지치기를 전면 재작성으로 오인한 재작성 임계값은 실제 삭제를 위험 집합에서 빼낼 것이기 때문이다. 동시에 하나의 발견을 보고한다 — 유지관리자는 가지치기하는 대신 교체하며, 이는 정확히 식 5가 예측하는 바다.
표 4는 독자가 코퍼스를 재추적하지 않고도 실행할 수 있는 검사들을 모은 것이다. 패널 (a)는 그 이벤트가 정말로 대량 삭제임을 보여준다. 중앙값 이벤트는 탄생시키는 것보다 훨씬 많은 지시를 죽이고, 이벤트의 4분의 1은 파일에 지시를 하나도 남기지 않으며, 죽은 텍스트의 절반이라도 대체하는 이벤트는 절반이 안 된다. 패널 (b)는 이벤트 스터디를 모든 윈도 반폭에서 재추정한다. 균형 패널의 구성은 그 폭에 의존하며, 스윕 없이는 독자가 우리의 결과를 우리의 선택으로부터 분리할 수 없다. 하락과 반등 둘 다 이를 견뎌낸다. 패널 (c)는 래칫이 자기 제한적인지를 묻는데, 그렇다면 이후 재작성 뒤에 더 느린 성장으로 나타날 것이다. 오히려 그 뒤의 성장은 더 빠르다. 파일 간 이주도 이 이벤트들을 설명하지 못한다: 재작성 커밋 중 이주 사망을 하나라도 동반하는 것은 3% 미만이다.
우리는 표 4에서 한 가지 검사를 생략한다: 50% 임계값 자체의 스윕이다. 추적기가 그 임계값을 내부적으로 적용하므로, 이를 바꾸는 것은 출력의 재집계가 아니라 파이프라인 재실행을 의미하며, 우리에게는 그런 실행이 없다. Limitations가 그 감사를 명시한다.
3.1절은 성장을 세 성분으로 분해하고 셋 모두를 보고한다. 이 분해는 우리의 명제를 반증할 수 있고, 합계는 그럴 수 없다. 파일이 주로 이미 가진 규칙을 정교화하며 성장했다고 가정해 보자. 그렇다면 래칫은 장황함에 관한 이야기가 되고, 지시를 세는 것은 핵심을 놓칠 것이다. 실제로는 그렇지 않다: 그림 1(b)와 같은 정규화 수명 그리드, 같은 추정량에서, 각 파일 자신의 첫 버전 대비 평균 지시 길이는 +10%에서 정점을 찍는데(비율이 정의되는 1,776개 다중 버전 파일 기준), 지시 개수의 +226%와 대비된다. 비지시 페이로드는 그와 나란히 +140% 성장하므로, 개수 성장은 텍스트가 지시 클래스와 페이로드 클래스 사이를 이동한 것이 아니다.
우리는 두 축 모두 구성(composition)에 대한 강건성을 위해 선택했다. 정규화 수명은 모집단이 나이에 따라 얇아지게 두는 대신 모든 생존 파일이 모든 지점에서 기여하게 하고, 각 파일 자신의 첫 버전으로 나누는 것은 수준 구성을 제거한다. 그 두 번째 단계가 없다면, 큰 파일이 더 오래 사는 코퍼스는 전적으로 생존편향에 불과한 성장을 보일 것이다.
그림 5는 지시 연령에 대한 삭제 위험의 평활화된 Nelson–Aalen 추정량을 그린다. 연령 에서 위험 집합은 연령 에 도달하는 것이 관측된 모든 스펠을 담는다. 스펠은 세 가지 방식 중 하나로 그 집합을 떠난다: 이벤트인 삭제로; 검열된 경쟁 위험으로; 또는 파일 히스토리의 끝에 도달함으로써. 세 번째 이탈이 지배적이며, 이는 우리에게 알려주는 바가 적다. 마지막 커밋에서 아직 살아 있는 지시는 아직 발화하지 않은 위험률을 가진 것이지, 결코 발화하지 않을 위험률과 같은 것이 아니다.
우리는 연령을 달력 일수가 아니라 파일을 건드린 커밋 수로 센다. 식 3은 그 시계 위에서 정의되는데, 이 검토 기회당 위험을 측정하며, 휴면 저장소에 놓인 지시에게는 그 기회가 결코 주어지지 않기 때문이다. 우리는 달력 일수를 보강 증거로만 보고하는데, 달력 시계에서만의 감소는 파일이 나이 들수록 단순히 덜 편집되는 것과도 부합할 것이기 때문이다.
우리는 연령 부터 50까지에 걸쳐 대역폭 2커밋(달력 시계로는 30일)으로 비율을 커널 평활화한다. 기대 이벤트 1건 미만이 뒷받침하는 그리드 지점은 그리는 대신 버리므로, 곡선은 자신의 지지 범위를 결코 넘어가지 않는다. 신뢰 대역과 로그 위험률 기울기는 저장소로 층화된 부트스트랩에서 취하며, 스펠이 아니라 저장소를 복원추출로 재표집한다(200회 추출, 시드 0). 한 저장소 안의 지시들은 저자, 분할 결과, 유지관리 문화를 공유한다. 스펠 수준 부트스트랩은 이들을 독립으로 취급하여 구간을 수 배 과소평가할 것이다. 우리는 추출들에 걸친 중앙값 기울기를 보고하며, 2.5 및 97.5 백분위수를 그 구간으로 삼는다.
| Rows | Frailty | Spells | Deaths | Slope | 95% CI | Absorbed | |
|---|---|---|---|---|---|---|---|
| all spells | no frailty (baseline) | 247,694 | 28,255 | – | – | ||
| shared within repository | 247,694 | 28,255 | 1.44 | 4.9% | |||
| shared within file | 247,694 | 28,255 | 1.49 | 4.3% | |||
| recurring text | no frailty (baseline) | 20,807 | 2,669 | – | – | ||
| shared within repository | 20,807 | 2,669 | 2.85 | 1.5% | |||
| shared by instruction text | 20,807 | 2,669 | 3.41 | 30.8% |
모집단 전체에 걸쳐 감소하는 위험률은 지속시간 의존성만큼이나 생존 이질성의 신호이기도 하다. 이것이 3.4절의 내용-취약성(content-fragility) 메커니즘이다: 일부 지시가 본질적으로 취약하다면 그것들은 일찍 죽고, 고연령에 아직 살아 있는 것들은 강건한 잔여다. 우리는 이를 감마 frailty 모형으로 검정하며, 이 이름이 네 번째 메커니즘으로 읽히는 일이 없도록 추정량에 대해 전체에 걸쳐 그 이름을 유지한다. 각 클러스터에 평균 1, 분산 인 감마 frailty 을 부여하는데, 이는 모집단 위험률을 으로 만든다. 그러면 완벽하게 평탄한 개별 기저 조차 이 정하는 비율로 감소하는 를 만들어낸다. 따라서 우리는 frailty의 존재를 당연한 것으로 두고, 그것이 우리의 기울기를 설명하는지만 묻는다.
우리는 와 를 위험 테이블 위에서 구간별 지수(piecewise-exponential) EM으로 결합 적합하는데, 연령 커밋 하나당 구간 하나이며 50커밋에서 행정적 검열을 둔다. 이는 위의 부트스트랩과는 다른 추정량이며, 둘이 함께 등장하는 모든 곳에서 그렇게 표기한다. 헤드라인 기울기는 여전히 Nelson–Aalen 부트스트랩이다. 표 5는 EM 적합 자체의 무-frailty 기준선을 함께 실어, 모든 흡수 몫이 명시된 분모를 갖게 한다. 우리의 테스트 스위트는 복원 검사들을 담고 있으며, 그중에는 의 평탄한 기저가 감소로 읽히지 않는지 확인하는 검사가 있다.
우리는 세 수준에서 클러스터링한다. 저장소와 파일 frailty는 모든 스펠에서 식별한다. 지시 내용이 공유하는 frailty는 같은 정규화 텍스트가 최소 두 저장소에 걸쳐 재출현하는 곳에서만 식별할 수 있으므로, 그 부분표본에서 적합하고 그 부분표본 자체의 무-frailty 기준선을 옆에 함께 보고한다. 내용이 단연 가장 많이 흡수하고, 같은 행들에서 저장소 클러스터링은 거의 아무것도 흡수하지 못하는데, 이는 흡수된 분산의 위치를 저자가 아니라 지시 텍스트에 둔다. 기울기는 셋 모두를 견뎌낸다.
우리는 한 번에 하나의 클러스터링 수준만 적합하므로, 각 은 그 수준 단독에 귀속할 수 있는 분산의 상한이다. 교차된 저장소 내용 사양은 적합하지 않는다.
| Term | Coef. | SE | 95% CI | |
| age | 0.0028 | |||
| multi-author | 0.0178 | |||
| multi-author age | 0.0018 | |||
| commits | 0.0071 | |||
| commits age | 0.0007 | |||
| ; 1,837 files, 589 multi-author; 15,118 risk cells | ||||
내용 취약성과 불완전 회상은 동일한 주변(marginal) 예측을 한다. 둘은 하나의 조건부 예측에서 갈린다. 고정된 지시별 frailty는 상수이므로, 여러 사람이 편집하는 파일과 한 사람이 편집하는 파일 사이에 연령 기울기가 달라질 이유를 주지 않는다. 불완전 회상은 이유를 준다: 그것이 붕괴한다고 말하는 근거(rationale)를 사람이 보유하며, 사람은 떠난다.
우리는 파일 수준 감마 frailty를 얹은 구간별 지수(piecewise-exponential) 위험률 하나를 적합하는데, 이는 앞 소절이 측정한 파일 간 이질성을 제한 뒤의 상호작용을 추정한다. 그런 다음 연령을, 최소 두 명의 서로 다른 인간 저자가 파일을 건드렸는지의 지표와 상호작용시킨다. 카운트 전에 봇 커밋을 제외하는데, 자동 포매터와 의존성 봇은 컨텍스트 파일을 건드리지만 근거를 담지 않으며, 메커니즘이 적용되지 않는 바로 그 커밋들로 다저자 층을 부풀릴 것이기 때문이다.
다저자 파일은 더 활발하기도 하며, 파일 활동량만으로도 연령 기울기가 생길 수 있다. 따라서 우리는 커밋을 수준으로도, 연령과 상호작용시켜서도 투입하여 검정 대상 공변량과 같은 지위에 둔다. 회의적인 독자라면 그 상호작용부터 확인해야 한다. 이를 본문이 아니라 표 6에 두는 이유는 오직 본문에 검정 대상 항만을 위한 자리밖에 없기 때문이다.
이 분석은 탐색적이다. 우리는 이에 대해 어떤 기준도 사전 등록하지 않았고, 이는 사양 곡선이 아니라 단일 사양이며, multi-author 지위는 교체(turnover)를 측정하는 것이 아니라 대리하는 것으로, 파일을 편집한 사람 수를 셀 뿐 특정 지시를 작성한 사람이 떠났는지는 확인하지 않는다. 우리는 이를 경쟁 설명에 불리하게 작용하는 증거로 보고하는 것이지, 통과한 게이트로 보고하는 것이 아니다.
검증기를 두 개 이상 가진 모든 IFEval 항목을 취해, 시드당 184개 월드와 3개 시드에 걸쳐 조건(arm)당 552개의 유지관리 이력을 얻는다. 커버는 지시 두 개(423개 이력) 또는 세 개(129개)까지이며, 이는 3.1절의 중앙값 컨텍스트 파일보다 한 자릿수(order of magnitude) 작은 규모다. 두 계층이 서로 다른 결과를 보이는 곳에서는 어디서든 두 계층을 분리하여 보고한다. 또한 월드를 시드 하에서 순열 표집(permutation-sample)하므로, 월드 인덱스는 각 시드에서 서로 다른 항목을 의미하며 가 분석 단위가 된다. 더 강한 모델이 월드당 한 번 목표(objective) 를 생성하고, 우리는 그것을 월드와 함께 동결한다. 따라서 유지관리 프로토콜이 바뀌어도 목표는 드리프트할 수 없다.
세 역할이 루프를 구동하며, 측정은 오직 하네스만 수행한다. 15개 스텝의 각 스텝에서 하네스는 월드로부터 태스크 1개를 표집하고, 목표를 다시 진술하며, 답변을 채점할 월드의 제약 2개를 추출한다. 실행자는 주석이 제거된 현재 프롬프트 하에서 답변하고, 검증기들이 실행된다. 그 다음 새로 생성된 유지관리자 인스턴스가 지시를 추가·삭제하는데, 각 추가에는 자신의 프로토콜이 규정하는 대로 주석을 태깅하며, 스텝 사이에는 프롬프트와 해당 조건(arm)이 지속시키는 것 외에는 아무것도 갖고 다니지 않는다. 우리는 재문구화(rewording) 연산을 제공하지 않으므로, 지시의 텍스트는 작성 시점에 고정되고 모든 지시는 모호하지 않은 나이(age)를 가지며, 이는 3.2절이 커밋 히스토리로부터 복원하는 스펠(spell) 정의와 일치한다. 유지관리자와 실행자는 모두 claude-haiku-4-5인데, 이는 프론티어 모델보다 유지관리자가 3절의 파일 작성자들과 역량 면에서 더 가깝도록 선택한 것이다.
하네스는 제약·파라미터·분류 체계를 일절 지목하지 않는 평이한 언어의 불평(complaint)을 반환하며, 응답이 통과하면 단순한 판정(verdict) 외에는 아무것도 반환하지 않는다. 이것이 2절이 가정하는 검열(censoring)이다. 표 7은 월드 풀이 인스턴스화하는 모든 제약 타입을 그것이 만들어내는 불평과 나란히 나열하므로, 독자는 유지관리자의 과제가 잘 정의된(well posed) 것인지 판단할 수 있다: 불평은 차원(dimension)을 지목할 뿐 파라미터는 결코 지목하지 않으므로, 단어 수가 어긋났다는 말을 들은 유지관리자는 피드백으로부터 목표값을 읽어낼 수 없다.
조건(arm)들은 다섯 가지 조건이 동시에 성립할 때만 분리된다: 모호한 판정, 검열된 통과, 제약 식별자의 비공개, 간결성을 요구하지 않는 유지관리자 목표, 그리고 최소 10스텝의 호라이즌(horizon). 다섯이 모두 성립하기 전까지는 어떤 조건(arm)도 분리되지 않았다. 검증기 명세를 전부 공개하면 무주석 조건은 +3.0%의 초과 크기에 안착하고 효과는 완전히 사라진다. 우리는 이 체제를 탐색으로 찾았으며, 그 탐색 순서가 이를 정당화한다: 각 조건은 실제 유지관리자 역시 갖고 있지 않은 정보를 제거하는 것이기 때문이다.
다섯 가지 중 두 가지는 파라미터로 선택한 것이 아니라 설계 실패로서 맞닥뜨린 것이다. 안정적인 제약 식별자는 을 누설한다: 라운드를 넘어 지속되는 id가 주어지면 유지관리자는 커버 크기를 추론해 히스토리 없이도 그 크기까지 가지치기하며, 모든 조건(arm)이 수렴한다. 간결성을 언급하는 유지관리자 목표는 래칫을 정보의 산물이 아니라 목표의 산물인 인공물로 만든다. 최소성(minimality) 목표를 완전히 제거해도 삭제-대-추가 비율은 본질적으로 변하지 않았으며, 이는 그런 해석을 배제한다.
| Family | Verifier type | Worlds | Complaint returned on failure |
|---|---|---|---|
| keywords | existence | 69 | the response is missing some required content |
| forbidden_words | 81 | the response contains wording it must not use | |
| frequency | 75 | certain wording is not used the right number of times | |
| letter_frequency | 57 | a certain letter does not appear the right number of times | |
| length | number_paragraphs | 48 | the response is not split into the right number of paragraphs |
| number_sentences | 99 | the response has the wrong number of sentences | |
| number_words | 108 | the response’s word count is off | |
| content | number_placeholders | 42 | the response needs a different number of bracketed placeholders |
| postscript | 36 | the response is missing a postscript | |
| format | json_format | 27 | the response is not valid JSON |
| multiple_sections | 24 | the response is not organized into the expected sections | |
| number_bullet_lists | 54 | the response does not have the right number of bullet lists | |
| number_highlighted_sections | 87 | the response needs a different number of highlighted sections | |
| title | 36 | the response is missing a properly formatted title | |
| case | capital_word_frequency | 39 | the number of fully-capitalized words is off |
| english_capital | 42 | the response’s letter casing is wrong | |
| english_lowercase | 75 | the response’s letter casing is wrong | |
| punctuation | no_comma | 87 | the response’s punctuation breaks a rule |
| start / end | end_checker | 27 | the response does not end the required way |
| quotation | 69 | the response does not begin and end the required way |
지시는 실행자에게 향하는 명령문으로, 응답이 무엇을 해야 하는지만 진술하고 왜인지는 결코 진술하지 않는다. 주석은 다음 유지관리자에게 향하며, 자신의 조건(arm)이 지속시키는 내용을 담는다.
프롬프트에는 주석 문법이 하나뿐이며, 그것은 주석을 지시 하나에만 붙이고 다른 어떤 것에도 붙이지 않는다. 유지관리되는 프롬프트는 지시당 한 줄씩의 줄 시퀀스이며, 각 줄은 [di] text로 쓰인다. 여기서 i는 추가 시점에 하네스가 카운터로부터 부여하는 식별자이고, 해당 조건(arm)이 주석을 지닐 때는 언제나 #과 주석이 같은 줄에 이어진다. 식별자는 위치가 아니다. 그것은 결코 바뀌지 않고 결코 재사용되지 않으므로, di를 지목하는 주석은 열 라운드 뒤에도 같은 지시를 지목하며, 실행자용 렌더링은 그것을 위치 기반 목록으로 대체한다. 유지관리자는 주석을 그것이 부연하는 추가와 함께 한 번만 작성하며, 지시를 재문구화할 수 없는 것과 마찬가지로 이후에는 편집할 수 없다. 주석이 유일한 채널인 모든 프로토콜(본 논문의 것 포함)에서 하네스는 주석을 1,024자에서 절단한다. 각 추가는 또한 cause 하나를 지니는데, 이는 유지관리자가 해당 지시가 겨냥한다고 믿는 요구사항을 지목하는 한 구절이며, 우리는 이를 기록만 하고 어떤 프롬프트에도 결코 렌더링하지 않는다.
문법은 지시 줄 위 수준에서는 아무것도 제공하지 않는다. 파일 수준 주석도, 서문(preamble)도, 삭제에 대한 주석도 없다 — 삭제 연산은 식별자 하나를 받으며 텍스트를 전혀 지니지 않는다. 따라서 살아 있는 지시에 붙지 않은 근거(rationale)는 머물 곳이 없고, 자신이 부연하는 지시와 함께 죽는다. 이는 구현상의 지름길이 아니라 식 5가 형식화하는 제약이다: 프롬프트 전체에 자유롭게 주석을 달 수 있는 유지관리자는 이 설계가 검열하는 바로 그 히스토리를 보존할 것이고, 모든 조건(arm)이 수렴할 것이다. 하네스는 실행자가 프롬프트를 읽기 전에 주석을 제거하며, 과거 실패·검증 결과·스텝을 인용하는 지시는 어떤 것이든 거부하므로, 어떤 조건(arm)도 지시 본문을 통해 이력(provenance)을 우회 전달할 수 없다. 그림 7은 유지관리자에게 주어지는 지시의 전문을 한 단어도 빠짐없이 제시하고, 그림 8은 정규 실행의 실제 프롬프트 하나를 두 투영(projection) 모두를 거쳐 따라간다. 두 번째 투영은 렌더 함수를 설명하는 대신 그 실행의 실제 저장 상태에 대해 두 렌더 함수를 직접 호출하여 만든 것인데, 주석 제거(strip)가 실행자가 무시할 수 있는 요청이 아니라 코드로서 실행되기 때문이다. C.6절은 이 제거를 해제함으로써 그것의 가치를 측정한다.
(a) 유지관리자 시스템 프롬프트 (전 조건 공통)
You maintain a reusable prompt (a numbered list of directives) for an assistant that repeatedly performs variations of one task. After each round, some responses were scored against hidden requirements; you see this round’s scores below. Optimize the prompt for LONG-RUN average score. You may add directives and delete existing ones. Each response is checked against a random sample of the hidden requirements. You are NOT told how many requirements exist, which ones were sampled, or which directive (if any) satisfied a passing one; a failure may include a description of what went wrong. Rules for directives: - A directive is one imperative sentence addressed to the assistant about what the RESPONSE must do. It must NEVER mention scores, failures, rounds, or history. - You cannot reword a directive; to change one, delete it and add a new one. - With each add, supply ‘comment‘ (a note to the future maintainer: which observed failure prompted this, in your own words, e.g. "task 1 was flagged for comma use") and ‘cause‘ (one short phrase naming the requirement you believe it targets, e.g. "no commas allowed"). Return only the operations. An empty ops list keeps the prompt unchanged.
(b) 프로토콜 부록 (정보성 주석 조건 전용)
Your ONLY memory across rounds is the ‘comment‘ attached to each directive (at most 1,024 characters, frozen when the directive is added). Write every comment as a commit message to all future maintainers, containing: - "r<N>:" — this round’s number, inferred as one more than the highest r<N> in the existing comments (r1 if there are none); - the failure description that prompted this directive, quoted, and how many rounds it has been recurring; - the lineage of this failure: which approaches were already tried against it and FALSIFIED (copy forward any falsifications recorded in the comments of directives you are deleting now — a deleted directive’s comment vanishes with it); - if this directive replaces a deleted one that might still have been doing work, the deleted directive’s exact text in quotes, so a successor can restore it verbatim. Before deleting any directive, read its comment: if its failure has not recurred since the round it was added, the directive is likely PREVENTING that failure — keep it. Delete a directive when its comment’s failure kept recurring anyway (falsified), or when it duplicates another directive’s target.
(a) 하나의 문서로서의 유지관리 프롬프트 (목표, 지시, 주석)
Objective: Write a blog post about the sleek new magistrates. [d1] End your response with a postscript section labeled ’P.S.’ # r1: task 0 failed with "the response is missing a postscript"; no prior attempts [d10] Ensure your response has between 300 and 400 words. # r6: task 0 failed with "the response’s word count is off"; truncated output suggests responses may be too short or too long. Adding explicit word count range to target this requirement. [d12] Include exactly one bullet list in your response, with at least three items. # r7: task 0 failed with "the response does not have the right number of bullet lists"; this is a new failure not seen before. The response needs a structured bullet list to satisfy this requirement. [d14] Include exactly three bullet lists in your response, each with at least three items. # r9: task 0 failed with "the response does not have the right number of bullet lists"; d13 specified two lists but requirement demands three. Escalating from two to three lists.
(b) 매 라운드 유지관리자에게 건네지는 것
## Current prompt directives (panel (a)’s commented list, verbatim) ## This round’s scores task 0: a requirement PASSED task 0: a requirement (the response does not have the right number of bullet lists) FAILED
(c) 실행자에게 건네지는 것: 같은 지시, 주석 제거됨
Follow ALL of these directives in your response: 1. End your response with a postscript section labeled ’P.S.’ 2. Ensure your response has between 300 and 400 words. 3. Include exactly one bullet list in your response, with at least three items. 4. Include exactly three bullet lists in your response, each with at least three items. --- user message --- (panel (a)’s objective, verbatim)
(d) 플라시보 주석 풀
- added after one of the responses was flagged in an earlier round - a response failed a requirement around this in a previous round - several earlier rounds seemed to have trouble with this - this came up in the scores a while back - added to address a recurring issue seen earlier - an earlier round’s feedback pointed at something like this - one of the tasks was marked down for this before - kept seeing failures that looked related to this
| Arm | Excess size (%) | Sat. (%) | |
| no prompt comments | 423 | 38.7 | |
| comment-shaped noise | 423 | 39.5 | |
| informative comments | 423 | 39.0 | |
| no prompt comments | 129 | 40.3 | |
| comment-shaped noise | 129 | 42.9 | |
| informative comments | 129 | 35.7 | |
| pooled | |||
| no prompt comments | 552 | 39.0 | |
| comment-shaped noise | 552 | 40.3 | |
| informative comments | 552 | 38.2 | |
| Excess size | Satisfaction | |||||
|---|---|---|---|---|---|---|
| Maintainer | Control | commit (%) | Control (%) | commit (%) | ||
| Haiku 4.5 | ||||||
| Sonnet 5 | ||||||
| Opus 5 | ||||||
표 9는 실행자, 과제 스트림, 지평, 프로토콜을 고정한 채 유지관리자만 움직이며, 이 효과에 유지관리자/실행자 짝 맞춤이 필요한가에 답한다. 필요하지 않다: 무주석 조건(arm)의 초과분은 능력과 함께 커지고, 주석 프로토콜의 이점도 능력과 함께 커진다. Sonnet 5 행은 완전성을 위해 보고하지만 능력 판독이 아니라 규정 준수 기록이다 — 그 유지관리자는 추가 5회 중 2회꼴로 주석 예산을 초과했으므로, 주어진 프로토콜대로 쓰지 않았다.
| Excess size | Satisfaction | |||
|---|---|---|---|---|
| Ablation | (%) | (%) | ||
| comment-shaped noise | ||||
| narrative without outcomes | ||||
| commit, full schema | ||||
| – round counter | ||||
| – recurrence count | ||||
| – falsification lineage | ||||
| – verbatim restore quote | ||||
| Excess size (%) | s0 | s1 | s2 | Pooled | sd |
|---|---|---|---|---|---|
| no prompt comments | 10.9 | ||||
| comment-shaped noise | 6.5 | ||||
| informative comments | 8.2 | ||||
| Satisfaction (%) | s0 | s1 | s2 | Pooled | sd |
| no prompt comments | 0.9 | ||||
| comment-shaped noise | 0.4 | ||||
| informative comments | 1.3 | ||||
| Criterion of record | s0 | s1 | s2 | Pooled | |
| (i) uncommented arm ratchets | |||||
| (iv) noise uncommented |
기록 기준 네 가지 모두 세 개의 월드 추출 각각에서 개별적으로 성립하며(표 11), 병합에서만 성립하는 것이 아니다. 각 시드는 적격 IFEval 풀의 새로운 순열 표본이므로, 세 열은 한 풀에 대한 반복 실행이 아니라 월드 풀의 독립 추출이다. 무주석 조건(arm)의 시드 간 산포 10.9pp는 이 설계가 검정력을 갖춘 66.2pp 효과에 비해 작다.
| (a) Per-world calibration to the minimum cover | ||||||
| Arm | Mean ratio | Mean | Empty | Within | Above | |
| no prompt comments | 552 | 1.604 | 0.921 | 2.4% | 33.3% | 22.3% |
| comment-shaped noise | 552 | 1.532 | 0.822 | 1.1% | 35.0% | 21.9% |
| informative comments | 552 | 0.942 | 0.481 | 12.1% | 37.3% | 9.8% |
| (b) Satisfaction on the worlds the protocol emptied, and on the rest | ||||||
| Arm | Satisfaction | 95% CI | Paired vs. the protocol arm | 95% CI | ||
| worlds the protocol emptied | ||||||
| no prompt comments | 67 | 0.279 | ||||
| comment-shaped noise | 67 | 0.328 | ||||
| informative comments | 67 | 0.259 | — | |||
| worlds it kept instructions on | ||||||
| no prompt comments | 485 | 0.406 | ||||
| comment-shaped noise | 485 | 0.413 | ||||
| informative comments | 485 | 0.399 | — | |||
프로토콜은 조건(arm) 평균에서만이 아니라 월드별로 커버에 도달하며(표 12a), 짧은 쪽으로 과도하게 넘어간다: 프롬프트 8개 중 1개를 비우는데, 정보 없는(uninformed) 두 조건(arm) 어느 쪽에서도 거의 없는 일이다. 표 12(b)는 그 값을 매긴다. 프로토콜이 비어 있는 채로 끝났는가로 월드를 분할하고 각 분할 내에서 모든 조건(arm)을 읽는데, 이는 비교를 같은 월드들에 쌍대응시켜 난이도를 고정한다. 충족의 동등 충족(parity)은 프로토콜이 지시를 유지한 곳에서는 성립하고 비운 곳에서는 실패한다. 그곳들은 모든 조건(arm)이 자기 평균보다 훨씬 낮은 점수를 내는 어려운 월드이며, 분할을 정의하는 것은 프로토콜 자신의 종점이므로, 쌍대응 결손은 삭제 비용을 추정하는 것이 아니라 그 상계를 준다.
여기서 권고에 대한 조건 하나가 따라 나온다. 주석을 쓰는 것은 아무것도 제거하지 않으므로 아무 위험도 없다. 위험이 자리한 곳은 주석에 근거해 삭제를 실행하는 지점인데, 이 실험은 유지관리자가 얼마나 깊이 가지치기할 수 있는가에 아무런 하한(floor)을 부과하지 않았다. 프로토콜을 배치하는 운영자는 하한을 부과해야 한다.
코드는 주석 채널을 실행자로부터 분리하며, 이 설계 선택에는 측정 가능한 대가가 따른다. 우리는 표준(canonical) 실행과 모든 면에서 동일하되 프로토콜 조건(arm)의 주석을 유지관리자의 프롬프트뿐 아니라 실행자의 프롬프트에도 렌더링한다는 점만 다른 한 번의 실행에서, 시드 1개로 이를 해제한다. 노출은 명목적이 아니라 실질적인데, 실행자 호출의 85.1%가 주석을 보여줄 수 있는 프롬프트를 가지고 있었고, 나머지는 프롬프트가 아직 비어 있던 스텝이었기 때문이다.
우리는 184개 월드에 걸쳐 표준 실행과 월드별로 쌍대응한다: 프롬프트는 0.1% 대비 +28.5% 초과 크기로 끝나고(28.6pp, [5.5, 58.5]pp), 충족률 차이는 1.7pp([5.2, 1.5]pp, 0에 걸침)다. 모델이 읽는 파일에 근거(rationale)를 써 넣는 것은 프롬프트 크기를 대가로 치르면서 정확성은 전혀 사 주지 않는다. 이 효과는 추가가 아니라 전적으로 삭제에서 발생하며, 상당수의 월드에서 방향이 뒤집히므로, 우리는 시드 1개에서의 방향을 보고하는 것이지 확정된 크기를 보고하는 것이 아니다. 실행자에게 보이는 주석이 왜 유지관리자로 하여금 덜 삭제하게 만드는지는 검증하지 않았다.
답변 품질의 오염은 이 비용의 일부로 보이지 않는다. 유지관리 어휘는 노출된 조건(arm)의 완성문 중 0.04%에 나타나는데 차단된 프롬프트 하에서는 0.00%이므로, 실행자가 노트를 눈에 띄게 되받아 말하지는 않는다. 차단(strip)은 조건(arm) 간에 달라지는 것을 주석 채널의 정보 내용만으로 남겨둠으로써 이 실험에서 제자리를 얻으며, 이것이 4.2절의 인과적 해석을 정당화한다. 우리는 이를 발생하지도 않은 누출에 대한 방어라고 주장하지 않는다.
| ssr | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Arm | provided | withheld | all | trunc. | ||||||
| 5 | 1 | 0 | control | 32 | 0.547 | 0.531 | 0.544 | 5.500 | 6.594 | 0.219 |
| 5 | 1 | 0 | placebo | 32 | 0.578 | 0.500 | 0.562 | 5.250 | 5.781 | 0.188 |
| 5 | 1 | 0 | treatment | 32 | 0.633 | 0.531 | 0.613 | 5.750 | 6.250 | 0.281 |
| 5 | 1 | 16 | control | 32 | 0.531 | 0.438 | 0.512 | 14.750 | 14.406 | 0.312 |
| 5 | 1 | 16 | placebo | 32 | 0.523 | 0.500 | 0.519 | 14.406 | 12.969 | 0.312 |
| 5 | 1 | 16 | treatment | 32 | 0.656 | 0.500 | 0.625 | 6.500 | 7.031 | 0.250 |
| 6 | 1 | 0 | control | 32 | 0.688 | 0.531 | 0.661 | 6.656 | 6.969 | 0.375 |
| 6 | 1 | 0 | placebo | 32 | 0.650 | 0.500 | 0.625 | 6.312 | 6.906 | 0.344 |
| 6 | 1 | 0 | treatment | 32 | 0.575 | 0.500 | 0.562 | 6.562 | 6.594 | 0.438 |
| 6 | 1 | 16 | control | 32 | 0.525 | 0.344 | 0.495 | 14.812 | 14.844 | 0.344 |
| 6 | 1 | 16 | placebo | 32 | 0.569 | 0.406 | 0.542 | 14.969 | 13.688 | 0.344 |
| 6 | 1 | 16 | treatment | 32 | 0.631 | 0.531 | 0.615 | 7.125 | 7.562 | 0.406 |
WildIFEval은 사람이 작성한 제약 분해를 제공하며 코드 검증기는 제공하지 않으므로, 여기서의 만족 여부는 표 7의 프로그램적 검증기가 아니라 LLM 저지(judge)이다. 저지(judge)는 claude-haiku-4-5이며, 정확히 하나의 제약과 하나의 응답만을 프롬프트로 받아 불리언 값을 요구받는다 — 프롬프트 도, 조건(arm) 레이블도, 히스토리도, 형제 제약도 없다 — 따라서 입력의 어떤 것도 조건(arm)들을 구별하지 못하며, 두 조건(arm)이 동일한 응답을 산출하면 동일하게 채점된다. 두 조건(arm) 모두 동일한 모델이 동일한 호출 형태로 판정하므로, 저지(judge) 오류는 대비에 공통적이며 대비를 가로질러 차등적이지 않다. 응답은 원문 그대로 저장되므로 스위트를 재생성하지 않고 재판정할 수 있으며, 이것이 다음 소절에 생성 비용이 들지 않는 이유다.
| Contrast under each judge | did | ||
|---|---|---|---|
| Criterion | claude-haiku-4-5 | gpt-5.6-luna | claude-haiku-4-5 gpt-5.6-luna |
| (i) interference | [, ] | [, ] | — |
| (ii) comments buy IF | [, ] | [, ] | [, ] |
| (v) not just recovery | [, ] | [, ] | [, ] |
| (aux) recovery | [, ] | [, ] | [, ] |
| (iii) comments buy size | [, ] | [, ] | [, ] |
| (iv) placebo null (SSR) | [, ] | [, ] | [, ] |
| (iv) placebo null (size) | [, ] | [, ] | [, ] |
gpt-5.6-luna는 claude-haiku-4-5의 능력 티어에 부합하므로, 둘 사이의 불일치는 능력 차이가 아니라 벤더 차이이며, 동일한 프롬프트, 스키마, 토큰 상한, 을 통해 동일한 저장된 응답을 재채점한다: 모델만 다르다. 4열은 월드별 이중차분(difference-in-differences) 이며, 와 은 2열과 3열의 저지(judge)들로, 그 동일한 월드들에 대해 계산된다 — 두 저지(judge)의 효과 크기가 다른지를 말해주는 추정치이며, 겹치는 두 개의 저지별 구간은 그것을 말해주지 못한다. 이 값은 모든 행에서 0을 포함하므로, 두 점추정치 사이의 벌어짐은 저지(judge) 차이라는 증거적 뒷받침이 없다. 에서 이것은 동등성이 아니라 증거의 부재다: (ii)의 구간은 까지 이른다. 비율은 제약별 만족률이며, 두 크기(size) 행은 지시의 개수로서 내장된 통제다 — 어떤 저지(judge)도 를 보지 못하므로, 그들의 열은 정확히 일치해야 하며 그들의 did는 이어야 한다.
| Pass rate | ||||||
|---|---|---|---|---|---|---|
| Slice | Agree | [95% CI] | claude-haiku-4-5 | gpt-5.6-luna | Lenience | |
| all arms | 6,336 | 0.821 | 0.639 [0.620, 0.657] | 0.545 | 0.547 | |
| control | 2,112 | 0.816 | 0.631 [0.598, 0.664] | 0.539 | 0.534 | |
| treatment | 2,112 | 0.819 | 0.632 [0.598, 0.665] | 0.565 | 0.563 | |
| placebo | 2,112 | 0.827 | 0.653 [0.618, 0.684] | 0.529 | 0.543 | |
claude-haiku-4-5와 저지(judge) gpt-5.6-luna를 풀링 및 조건(arm)별로 비교한다: 원시 일치율, 95% 부트스트랩 구간을 동반한 Cohen's , 각 저지(judge) 자신의 주변 통과율, 그리고 관대함(lenience), 즉 부호 있는 불일치 — 양수는 가 탈락시키는 것을 가 통과시킨다는 뜻이다. 은 두 평가자가 아무리 잘 일치해도 한 레이블이 드물면 0을 향해 붕괴하기 때문에 주변율 옆에 항상 함께 표시된다; 여기서는 주변율이 거의 같으므로 은 유병률 아티팩트가 아니다. 조건(arm)별 행을 먼저 읽어라: 균일한 관대함은 모든 조건(arm)을 상한 쪽으로 압축해 모든 격차를 기계적으로 줄이는 반면, 조건(arm)별로 달라지는 관대함은 저지(judge)가 처치와 상호작용한다는 뜻이 된다. 그것은 변하지 않는다 — 는 세 조건(arm)에 걸쳐 0.631–0.653의 범위에 있다. 두 저지(judge)는 개별 판정의 17.9%에서 불일치하지만 주변 통과율의 차이는 0.002에 불과하므로, 불일치는 누적되지 않고 상쇄된다: 같은 임계값, 다른 항목들. 저지(judge) 1은 벤더 기본값으로 디코딩했고 재판정은 으로 이루어졌으므로, 이 수치들은 저지(judge) 1의 샘플링 분산을 흡수하며 일치도를 아래에서 경계 짓는다.
4.3절의 어떤 대비도 그것을 채점한 모델의 속성이 아니다. 우리는 저장된 6,336개 판정 전체를 gpt-5.6-luna로 재채점했다. 이는 저지(judge) 1의 능력 티어에 맞춘 두 번째 저지(judge)로, 둘 사이의 불일치가 능력 차이가 아니라 벤더 차이가 되도록 한 것이며, 프롬프트, 스키마, 토큰 상한, 을 고정하여 모델만 변하도록 했다. 표 14가 그 결과다: 저지(judge) 1이 통과시키는 모든 기준은 두 번째 저지(judge) 하에서도 사전 등록된 부호를 유지하고, 간섭과 크기 기준은 두 저지(judge) 모두에서 0을 배제하는 구간을 유지하며, 플라시보는 둘 다에서 귀무(null)로 남는다. 두 저지(judge)는 이 설계가 판별할 수 있는 한에서 효과의 크기에 대해서도 일치한다. 지시 준수 기준에 대한 이들의 월드별 이중차분은 3.8pp(95% CI: [1.9, +9.6]pp)이므로, 두 점추정치(11.6pp와 7.8pp) 사이의 벌어짐은 저지(judge) 차이라는 증거적 뒷받침이 없다. 에서 이것은 동등성이 아니라 증거의 부재다: 구간은 9.6pp에 달하는 저지(judge) 차이를 허용하며, 그것을 좁히는 데 필요한 것은 더 많은 저지(judge)가 아니라 더 많은 월드다.
표 15는 일치도를 보고하는데, 우리는 이를 기록하되 게이트로 쓰지는 않는다: 두 저지(judge)가 절대적 난이도에 대해 불일치하면서도 조건(arm)들의 순위는 동일하게 매길 수 있으며, 4.3절이 인용하는 것은 그 순위다. 저지(judge) 1과 gpt-5.6-luna는 에서 개별 판정의 82.1%에 대해 일치하며(), — 하중을 지는 부분은 — 이 조건(arm)에 따라 변하지 않으므로 저지(judge) 노이즈가 조건(arm) 간 격차를 만들어냈을 수 없다는 점이다. 우리가 측정하지 않는 것은 저지(judge)의 정확도다: 어느 모델도 정답 기준(ground truth)이 아니므로 불일치는 어느 쪽이 옳은지를 결코 말해주지 않으며, 4.3절의 모든 비율은 명명된 저지(judge) 하에서의 비율로 남는다. 정확도 주장을 허가하려면 사람이 주석한 하위 표본이 필요한데, 우리는 그것을 수행하지 않았다.
이 효과는 일반적 이득이 아니라 시드된 노이즈로부터의 회복이다. 에서 조건(arm)들은 어느 방향으로도 일관되게 갈라지지 않는다: 주석 조건(arm)은 에서는 통제 위에, 에서는 통제 아래에 위치한다. 주석 조건(arm)이 만족률을 유지하는 동안 통제가 두 층 모두에서 하락하는 것은 프롬프트가 제거할 방해 지시를 담고 있는 에서만이다. 불필요한 지시를 담고 있지 않은 프롬프트는 이 실험의 범위 밖이다.
이 캠페인의 정본 실행은 두 역할, 3개의 시드 전부, 세 조건(arm) 전부에 걸쳐 49,680회의 모델 호출, 37.9M 토큰, 45 모델-시간이 들었다; 실행이 워커들로 팬아웃되기 때문에 벽시계 시간은 그보다 낮게 나온다. 호출 횟수는 조건(arm) 간에 동일한데, 모든 조건(arm)이 동일한 월드, 동일한 지평, 동일하게 동결된 과제 스트림을 만나기 때문이다 — 거기서 조건(arm) 간 차이가 난다면 조건(arm)들이 애초에 매칭되지 않았다는 뜻이고 4절의 어떤 대비도 허가되지 않을 것이므로, 우리는 이를 기술하는 것이 아니라 단언한다. 조작은 대신 유지관리자 입력 토큰에 존재하며, 이는 각 조건(arm)의 핸드오프가 실어 나르는 것에 따라 증가한다(주석 없는 조건(arm)에서 주석 조건(arm)으로 7.0M에서 9.9M으로). 두 역할 모두 claude-haiku-4-5로 실행된다; 각 월드의 한 줄짜리 목표는 빌드 시점에 claude-sonnet-5가 한 번 생성한 뒤 월드와 함께 동결되며, 모든 조건(arm)에 대해 동일하다.
우리는 어떤 모델도 훈련하지 않으므로, 예산은 그래디언트 스텝이 아니라 추론과 파싱이다. 두 절반 모두 CPU 전용 클라우드 컨테이너(8 vCPU, 16 GiB, 가속기 없음)에서 실행된다. 코퍼스 절반은 네트워크·파싱에 결박되어 있으며, 1,867개 리포지토리를 blobless로 클론하고 모든 컨텍스트 파일의 모든 역사적 버전을 분절화하고, 그 벽시계 예산을 사람 손으로 감시하는 대신 코드로 강제한다. 통제 실험은 해당 호출들을 호스팅된 API에 대해 발행하므로, claude-haiku-4-5와 claude-sonnet-5의 파라미터 수는 공개되어 있지 않아 우리가 보고할 수 없다. 우리는 모델 버전과 변화하는 모든 디코딩 설정(역할별 max_tokens, 목표 생성에는 확장 사고 비활성화)을 실행의 해석 완료된(resolved) 설정에 고정한다. 그 외에는 API 기본값으로 디코딩하며 이에 대한 하이퍼파라미터 탐색은 수행하지 않았다. 이 설계의 조절 손잡이는 B.3절의 피드백 조건과 주석 프로토콜 자체이며, 우리는 생존자만이 아니라 실패와 함께 둘 다 보고한다(표 10).
우리는 두 개의 아티팩트를 소비하며, 각각을 그것이 공개된 목적인 연구를 위해 사용한다. 에이전트-컨텍스트 표집틀은 1의 리포지토리 선택으로, 라이선스 파일이 없는 복제 패키지로 배포된다. 따라서 우리는 그로부터 리포지토리 URL 목록만을 취하고, 모든 콘텐츠 바이트를 해당 리포지토리들 자체의 공개 히스토리로부터 재도출하는데, 이는 이 연구가 요구하는 측정이기도 하다(A.1절). 통제 실험의 월드는 google-research의 일부로 Apache 2.0 하에 공개된 IFEval 입력 집합 (29)으로부터 구축한다. 우리는 어떤 리포지토리 콘텐츠도 재배포하지 않는다. 우리는 파생된 지시별 테이블과, 위의 공개 소스로부터 그것을 산출하는 코드만을 공개한다.
버전 간 매칭은 유사도 임계값 70의 rapidfuzz로 수행하고(A.3절), 삭제 위험(hazard)은 lifelines의 Nelson–Aalen 추정량으로 추정한다. 프레일티(frailty) 모형과 상호작용 모형은 라이브러리 루틴이 아니라 우리 자체의 조각별 지수(piecewise-exponential) EM으로 적합하므로(A.7절), 이 부록은 어떤 것을 참조하는 대신 그 추정량을 명시한다. 모델 호출은 Anthropic Python SDK를 통해 이루어진다. 락파일이 정확한 버전을 해석하여 각 실행의 env.lock에 동결하므로, 수치를 재현하는 독자는 인쇄된 버전 문자열을 대조하는 것이 아니라 구성상(by construction) 동일한 의존성 집합을 해석하게 된다.
코퍼스는 CLAUDE.md, AGENTS.md, 또는 copilot-instructions.md를 포함하는 1,867개의 공개 GitHub 리포지토리로, 1,801개의 다중 버전 파일, 299,440개의 추적된 전이, 247,694개의 지시 스펠(spell)을 산출하며, 그중 28,426개가 삭제로 끝난다(A.1절). 우리는 홀드아웃 데이터에 아무것도 적합하지 않으므로 훈련/시험 분할을 수행하지 않는다: 코퍼스 전체에 대해 추정하고, 통제 실험은 적격 IFEval 풀의 시드된 순열로 월드를 추출한다(B.1절). 우리는 코퍼스의 자연어 분포, 프로그래밍 언어 분포, 도메인 구성, 또는 저자들의 어떤 인구통계적 속성도 측정하지 않았다. 여기의 어떤 결과도 비영어 지시를 포괄하는 것으로 읽혀서는 안 된다. 한계(Limitations) 절은 이를 가정으로 메워질 공백이 아니라 우리 범위의 경계로 명시한다.
커밋 메타데이터는 사람을 식별하며, 우리는 추출 시점에 이를 파일당 1비트로 축약한다: 최소 두 명의 서로 다른 비-봇 저자가 그 파일을 건드렸는가 여부, 즉 A.8절의 공변량이다. 이 축약의 다운스트림에는 어떤 이름이나 주소도 실리지 않으며, 공개된 어떤 아티팩트에도 실리지 않는다.
원본 링크·인용
본문·참고문헌에 등장한 원문 유래 외부 링크의 보조 목록이다 (본문 내 위치에도 동일 링크가 유지되어 있다).
기타
| 원문 | 이 문서 | 원문 | 이 문서 |
|---|---|---|---|
| catastrophic remembering | 파국적 기억 | catastrophic forgetting | 파국적 망각 |
| ratchet | 래칫 | imperfect recall | 불완전 회상 |
| latent reasoning | 잠재 근거 | rewrite | 전면 재작성 |
| instruction | 지시 | informative comment | 정보성 주석 |
| maintainer / executor | 유지관리자 / 실행자 | deletion hazard | 삭제 위험률 |
| hidden constraint set | 숨은 제약 집합 | arm / world | 조건(arm) / 월드 |
| excess size | 초과 크기 | staleness | 노후도 |
원문: Kushal Chakrabarti, "Why Does CLAUDE.md Keep Growing? Catastrophic Remembering in Agentic Coding", arXiv:2608.11095v1 (2026-08-11) · 한국어 완역·정리 2026-08-13 · dosi.dev