arXiv 2608.11095v1 · cs.AI · 2026-08-11 · 한국어 완역

CLAUDE.md는 왜 계속 자라는가?

에이전틱 코딩의 파국적 기억(Catastrophic Remembering) — 프롬프트는 왜 자라기만 하고, 주석은 어떻게 그것을 멈추는가.

Kushal Chakrabarti (South Park Commons) · 원문: arxiv.org/html/2608.11095v1 · 번역·요약·팩트체크 2026-08-13

읽기 전에

핵심 질문

CLAUDE.md 같은 에이전틱 프롬프트 파일은 왜 삭제 없이 무한히 자라기만 하는가 — 그리고 "왜 이 지시를 넣었는지"를 주석으로 남기는 것만으로 그 성장이 정말 멈추는가?

멘탈 모델

지시 추가는 O(1)로 싸지만, 근거(latent reasoning)가 사라진 지시를 안전하게 지우려면 O(2^|D|)의 반사실 실험이 필요하다 — 그래서 유지보수자는 지우지 못하고 쌓기만 하는 "래칫"에 갇힌다(파국적 기억). 논문은 이 기제를 (1) GitHub 1,867개 레포 관찰로 입증하고, (2) IFEval을 뒤집어 최적 프롬프트가 알려진 세계를 만들어 "근거를 담은 주석"이 래칫을 멈춤을 실험으로 보인다.

선행 개념

  • CLAUDE.md / AGENTS.md / copilot-instructions.md — 코딩 에이전트가 매 작업마다 읽는 레포 내 지시 파일. 이 논문의 관찰 대상.
  • Catastrophic forgetting(파국적 망각) — 신경망이 새 과제를 배우며 이전 과제를 덮어써 잃는 continual learning의 고전 문제. 논문이 명명한 "catastrophic remembering"은 그 역상(지워야 할 것을 계속 보존).
  • IFEval / WildIFEval — 검증 가능한 제약(단어 수, 문단 수 등)으로 지시 준수를 채점하는 벤치마크. 논문은 이를 "뒤집어"(지시를 숨기고 검증기만 남겨) 최적 프롬프트 크기를 아는 실험 환경을 만든다.
  • 생존분석 / hazard(위험률) — 개별 지시가 "나이 a에서 삭제될 확률"을 추정하는 통계 기법(Nelson–Aalen 추정, frailty 모델). hazard의 기울기 부호가 경쟁 가설 3개를 판별하는 핵심 도구.
  • Minimum cover(최소 덮개) D* — 제약 만족을 최대화하는 가장 작은 지시 집합. 초과 크기(excess size) = |D_t|/|D*| − 1 로 프롬프트를 채점한다.
  • Censoring(중도절단) — 통째 재작성(rewrite)·타 파일 이주(migration)에 의한 소멸은 "판단에 의한 삭제"가 아니므로 hazard 추정에서 제외하는 처리. 전체 소멸의 77.3%가 여기 해당.

권장 읽기 순서

  1. 시간 없을 때 (요약 경로): Abstract → Figure 1(a)·(b)와 Figure 2(래칫 기제와 주석 해법이 그림 두 장에 압축돼 있다) → §6 Discussion → Table 2(핵심 수치 한 표).
  2. 완독 경로 1단계 — 문제와 이론: §1 Introduction → §2(수식이 나오지만 핵심은 식 (5): 근거 회복률 ρ̄→0이면 프롬프트 크기가 발산한다는 폐형식. Table 1의 가정 A1–A5만 잡고 가면 된다).
  3. 완독 경로 2단계 — 관찰 증거: §3 전체(3.1 무한 성장 → 3.2 소멸의 77.3%는 삭제가 아님 → 3.3 재작성 후 즉시 재성장 → 3.4 hazard 기울기로 경쟁 가설 기각). Figure 4·5를 본문과 함께 볼 것.
  4. 완독 경로 3단계 — 개입 실험: §4(4.1 IFEval 뒤집기 설계 → 4.2 주석이 최소 덮개로 수렴시킴 + placebo/ablation → 4.3 WildIFEval로 실전 지시 준수 개선). Figure 6의 실제 주석 예시 3개가 "informative comment"가 무엇인지 가장 빨리 보여준다.
  5. 마무리: §5 Related Work(조직행동론·literate programming과의 연결이 논문의 지적 재미) → Limitations(LLM judge 의존, 50% 재작성 임계값 미스윕 등 저자가 직접 밝힌 약점).
  6. 부록(선택): 방법론 검증이 궁금하면 A(코퍼스 구축·매칭·경쟁위험) → B(Inverse-IFEval 테스트베드) → D(WildIFEval 복제). 수치 재현이 목적이 아니면 건너뛰어도 본문 이해에 지장 없다.

예상 소요

요약만: 5분 · 본문 완독: 30~40분 · 부록 포함: 70~90분

점검 질문

  1. 삭제 hazard가 지시의 나이에 따라 감소한다(log-hazard −0.032/commit)는 관측이 왜 "지시 노후화(staleness)"와 "내용 취약성(fragility)" 가설을 기각하고 "불완전한 기억(imperfect recall)"만을 지지하는가? 각 가설이 예측하는 기울기 부호를 말할 수 있는가?
  2. 지시 소멸의 76.8%가 파일 절반 이상을 날리는 단일 커밋(불도저 재작성)으로 일어나고, 재작성 후 성장률이 오히려 빨라진다(4.1%→4.9%/commit)는 사실이 "래칫" 기제와 어떻게 맞물리는가 — 왜 하나를 지우는 데는 이유가 필요하고 전부 지우는 데는 필요 없는가?
  3. +226%(실제 레포에서 파일 수명 동안 지시 수 증가), 99.3%(통제 실험에서 주석이 제거한 초과 크기: +211.3%→+1.4%), 23.1%(WildIFEval에서 지시 준수 상대 개선) — 세 수치가 각각 어떤 설정(관찰 vs 통제 vs 실전 복제)에서 나왔고, placebo(주석 모양 노이즈)가 효과를 내지 못한 것이 왜 "근거 내용 자체"가 원인이라는 증거가 되는가?

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 — 필드 관찰 (1,867개 레포, 247,694개 지시 수명)

증거 2 — 통제 실험 (Inverse-IFEval 테스트베드)

증거 3 — 실전 이행 개선 (WildIFEval 복제)

기제 (왜 이런 일이 생기나)

추가는 싸다. 실패가 나면 지시 한 줄을 덧붙이는 비용은 즉시적이고 O(1)이다. 추가의 비용(간섭·이행 저하)은 확산적이라 그 자리에서 청구되지 않는다 — 피드백은 검열되어(A4) 어떤 지시가 문제인지 이름을 대지 않고, 확률적 실패(A5)는 계속 새 지시를 부른다.
근거는 기록되지 않고 소멸한다. 지시를 넣은 이유(latent reasoning)는 쓰는 순간엔 공짜지만 어디에도 기록되지 않는다. 여러 저자의 연속 편집이 그 기억을 파괴하고, 회복 확률 ρ̄(a)는 나이와 함께 0으로 감쇠한다. 읽을 때 재구성하려면 O(2^|D|).
근거 없는 삭제는 회귀 위험 → 아무도 안 지운다. 유지관리자는 근거가 살아 있고 초과임이 검증될 때만 합리적으로 삭제한다. 근거가 죽으면 남는 유일한 실전 삭제 수단은 전면 재작성(모든 걸 지우는 데는 이유가 필요 없으므로) — 그래서 소멸의 76.8%가 불도저이고, 근본 원인은 안 고쳐졌으므로 즉시 재성장한다.
해법: 주석이 근거를 보존한다. 소프트웨어 공학이 수십 년 전에 푼 문제 — 인터프리터에겐 안 보이고 다음 유지관리자에게 향하는 텍스트(주석), "how가 아니라 why를 기록하라". 실패·가설·결과를 담은 프롬프트 주석은 ρ̄를 복원해 O(2^|D|)를 O(1)로 되돌리고, 프롬프트를 최소 커버 근처에 안착시킨다.

함의

"영어가 새로운 코드라면 왜 주석이 없는가" — 논문의 관통 질문이다. 시사점 세 갈래: (1) 코딩 에이전트 개발자는 프롬프트에 주석 문법을 부여해 지시의 근거가 다음 유지관리자(사람이든 에이전트든)에게 도달하게 할 수 있다 — 논문의 구현은 프로토타입임을 자인. (2) 에이전틱 프롬프트 유지관리자는 베스트 프랙티스를 정립할 수 있다 — 소프트웨어 공학 관행과 크게 겹치겠지만 차이도 분명 있다. (3) 연구자에게: 프롬프트 유지보수는 텍스트 위의 continual learning인데 아직 rehearsal/regularization의 유사물이 없고, 기계 검증 불가능한 제약·현실적 제약 수에서의 측정법도 없다. 단, 저자 스스로 경고: 이 처방의 최대 리스크는 처방 자체다 — "근거를 회복할 수 있는 지시를 지워라"를 자동화한 오퍼레이터는 근거가 실재했던 지시까지 지우게 된다. 주석을 쓰는 것은 아무것도 제거하지 않으므로 안전하지만, 주석에 근거해 행동하는 것은 아니다. 삭제 경로에 사람을 두고, 안전 관련 지시는 검증 전까지 범위 밖에 둘 것. 참고로 코드-주석 불일치 연구가 경고하듯, 저정보·저구조·오도성 근거는 에이전틱 코딩에서도 동일한 해악을 옮긴다(절제 실험으로 확인).

한계 (논문 스스로 밝힌 것)

신뢰도 · 팩트체크

B+

인용 문헌 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 프리프린트이며 단독 저자 논문.

arXiv:2608.11095 (abs)

🟡

코퍼스 규모: 1,867개 레포지토리 / 247,694개 지시(instruction) 수명

내적 일관성 확인: 초록·§3·부록 A.1 모두 1,867 레포·247,694 lifetimes로 일치하고, A.1은 1,801개 다중버전 파일·299,440 버전 전이라는 중간 수치까지 정합적으로 제시. 다만 저자 자체 구축 코퍼스로 외부 미검증 — 매칭 검증이 저자 1인의 50개 수기 주석에만 의존한다고 Limitations에 자인.

arXiv:2608.11095 초록·§3·A.1

🟡

에이전틱 README는 수명 동안 +226% 성장, 커밋당 순증 +4.9개 지시

내적 일관성 확인: 초록·§1·Figure 1(b)·§3.1이 모두 +226%로 일치하고, §3.1이 "19,267 커밋에 걸쳐 커밋당 순 +4.9개(대량 rewrite 제외)"로 구체화. 부록 A.5가 길이 성장(+10%)과 분리해 개수 성장임을 방어. 저자 자체 측정으로 외부 미검증.

arXiv:2608.11095 §3.1·A.5

🟡

첫 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)로 설명 가능. 외부 미검증.

arXiv:2608.11095 §3.3·Figure 4

🟡

삭제 위험률(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 쪽으로 편향시켜 하한이라는 방어도 자체 제시. 외부 미검증.

arXiv:2608.11095 §3.4·Figure 5

⚠️

정보성 주석(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 역변환이라는 저자 고안 인공 환경의 결과. 외부 재현 없음 — 헤드라인 수치치고 근거가 얇다.

arXiv:2608.11095 Table 2·§4.2

⚠️

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세계의 소규모 실험, 외부 미검증.

arXiv:2608.11095 §4.3·D.3

벤치마크 · 생태계 사실

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년경"이라는 논문 설명과 부합.

arXiv 2503.06573 — WildIFEval

⚠️

이 논문의 테스트베드 명칭 "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)이 하이픈 유무만 다른 사실상 동일 명칭을 별개 테스트베드에 재사용한 것은 독자 혼동 소지가 명백하다 — 선행 벤치마크 인용·구별 여부를 본문에서 확인할 필요.

arXiv 2509.04292 — Inverse IFEval (선행, 타 연구진)

CLAUDE.md / AGENTS.md는 실제 에이전틱 코딩 도구의 지시 파일 관행이다.

사실. CLAUDE.md는 Claude Code(Anthropic 공식 CLI)가 프로젝트/유저 단위로 자동 로드하는 메모리·지시 파일이고, AGENTS.md는 OpenAI Codex 등 여러 도구가 채택한 공개 규약(agents.md)이다. 도구 공식 문서·규약 사이트로 확립된 배경 사실이며 논문의 전제와 일치한다.

agents.md — 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로 쓰는 것은 자연스러운 선택이다.

Anthropic — Introducing Claude Haiku 4.5


원본 (완역)

CLAUDE.md는 왜 계속 자라는가?
에이전틱 코딩에서의 파국적 기억

Kushal Chakrabarti — 소속: South Park Commons — 이메일: [email protected]

초록

CLAUDE.md와 같은 에이전틱 코딩 README는 실제 저장소에서 한계 없이 자라며, 저장소가 은퇴하거나 누군가 파일을 전면 재작성(rewrite)할 때에만 멈춘다. 우리는 이 현상의 원인을 불완전 회상에서 찾는다: 지시를 덧붙이는 일은 언제나 값싸지만, 어떤 지시의 근거가 사라지고 나면, 정확성 회귀를 감수하지 않고 그 지시를 삭제하는 비용은 O(2|D|)O(2^{|D|})에 이른다 — 지시 |D||D|개짜리 프롬프트 기준이다. 우리는 그 결과로 나타나는 발산을 파국적 기억이라 명명한다 — 연속 학습이 그것을 중심으로 조직되어 있는 파국적 망각의 역이다. 먼저, 우리는 1,867개 저장소의 247,694개 지시 수명에 걸쳐 이 현상을 특성화한다: 에이전틱 프롬프트는 한계 없이 자라며, 수명 동안 3배 이상 커지고(+226%), 커밋마다 순증 +4.9개의 지시를 얻는다; 나아가 지시는 오래될수록 삭제될 가능성이 낮아진다(로그 위험률 -0.032/커밋). 다음으로, 우리는 프롬프트 주석이 이 성장을 멈출 수 있음을 보인다: IFEval을 뒤집으면 최적 프롬프트가 알려진 검증 가능한 월드들이 얻어지며, 거기서 잠재 근거를 부호화한 주석은 초과 지시의 99.3%를 제거한다(+211.3% → +1.4%). 마지막으로, 같은 반전을 WildIFEval에 적용하여, 프롬프트 주석이 실세계 에이전틱 지시 이행을 최대 23.1%까지 개선할 수 있음을 보인다. 영어가 새로운 코드라면, 왜 우리에게는 아직 주석이 없는가?

그림 1(a) — 인과: 주석 없는 프롬프트는 무한 성장, 정보성 주석은 최적 크기 근처에 안착
(a) 인과적(Causal): 주석이 없는(또는 주석 모양 노이즈만 있는) 프롬프트는 한계 없이 자라고, 정보성 주석이 있으면 동일한 정확성 수준에서 최적 크기 근처에 정착한다. 초과 크기는 |Dt||D|1\frac{\lvert D_{t}\rvert}{\lvert D_{\star}\rvert}{-}1로, 최적 IFEval 프롬프트 DD_{\star} 기준이다; 밴드는 184개 월드에 대한 95% 부트스트랩이다.
그림 1(b) — 관찰: 에이전틱 README의 지시 수는 수명 동안 3배 이상(+226%) 증가
(b) 관찰적(Observational): 생성 이후, 에이전틱 README의 프롬프트 지시 개수는 파일 수명에 걸쳐 3배 이상 늘어난다(+226%) — 1,867개 GitHub 저장소와 247,694개 지시 수명에 걸친 결과다. 파일 첫 버전 대비 지시 개수 |Dt||D0|1\frac{\lvert D_{t}\rvert}{\lvert D_{0}\rvert}{-}1; 수명은 파일별로 정규화했다.
그림 1: 프롬프트 지시를 삭제하려면 그것이 왜 추가되었는지를 기억해야 한다; 에이전틱 프롬프트에는 주석이 없으므로, 수명 내내 자라기만 한다.
WRITE (t=0t=0)THE LOOP (t=1..kt=1..k)EDIT (t=kt=k)fail: ×\timesd4d_{4} d1d3d_{1}\dots d_{3} +d4d6+d_{4}\dots d_{6} d1d3d_{1}\dots d_{3} d4d6d_{4}\dots d_{6} why?latent reasoning never written×\times?
(a) 에이전틱 프롬프트는 왜 자라기만 하는가? did_{i} 뒤에 있는 잠재 근거는 결코 기록되지 않고 (에이전틱일 수도 있는) 개발 루프를 거치며 붕괴하므로, 삭제는 급성 회귀의 위험을 지는 반면 추가의 비용은 분산된 채로 남는다.
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?
(b) 해법: 정보성 주석은 잠재 근거를 부호화하며, 이것이 에이전틱 README의 무한 성장을 멈춘다.
그림 2: 프롬프트-주석 월드. 잠재 근거는 쓰는 시점에는 공짜지만 읽는 시점에 재구성하려면 지수적으로 비싸다; 그러나 프롬프트 주석은 그것을 보존하여 에이전틱 README의 무한 성장을 멈춘다.

1 서론

압도적으로, 에이전틱 README는 성장을 멈추지 않는다. copilot-instructions.md, AGENTS.md 또는 CLAUDE.md는 지시를 얻어 가면서 좀처럼 덜어내지 않는다 (1). 파일을 지우는 것이 답은 아니다: 이런 파일을 가진 저장소는 에이전트 작업을 더 빨리, 더 적은 토큰으로 끝낸다 (12). 전부 유지하는 것도 공짜가 아니다: 제약이 누적될수록 지시 이행은 저하되고 (6; 11), 중앙값 파일은 이미 39개의 지시를 담고 있으며, 평균은 자체 수명 동안 3배 이상 늘어난다(+226%, 그림 1(b)).

이 성장은 서로 다른 메커니즘으로 설명될 수 있다. 요구사항이 더 이상 적용되지 않게 되는 것이라면(지시 노후도), 삭제 위험률은 지시의 나이에 따라 상승해야 한다. 취약한 지시가 일찍 죽고 견고한 지시만 남는 것이라면(내용 취약성), 위험률은 하락한다. 유지관리자가 지시의 근거를 잃는 것이라면(불완전 회상), 위험률은 나이에 따라 하락하고, 앞의 두 경쟁 가설과 달리 유지관리자 수에 따라서도 하락한다. 라인 diff와 파일 크기로는 개별 지시를 시간에 걸쳐 분해할 수 없기에, 지금까지 아무도 근본 원인을 식별하지 못했다.

"이 코드는 대체 왜 있는 거지?"는 모든 엔지니어가 한 번쯤 던져 본 질문이다. 에이전틱 지시를 삭제하는 일은 회귀의 위험을 수반하며, 이를 안전하게 수행하려면 유지관리자가 현실적으로 실행할 수 없는 반사실 실험들이 필요하다. 지시의 잠재 근거를 기록하는 비용은 O(1)O(1)이지만, 그것을 재구성하는 비용은 O(2|D|)O(2^{|D|})이다 — 지시 |D||D|개짜리 프롬프트에서 그렇다(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 망각은 왜를 기억하기를 요구한다

그림 3 — 여섯 개 컨텍스트 파일의 지시 수 추이: 유지관리자는 가지치기 대신 불도저식 재작성
그림 3: 유지관리자는 가지치기 대신 불도저식으로 밀어버리며, 래칫은 그것마저 살아남는다. 여섯 개의 예시 컨텍스트 파일에 대한 지시 개수 DtD_{t}; 빨간 세로선은 파일을 지시의 절반 이하로 잘라내는 커밋을 표시한다. 전면 재작성(rewrite)이 전체 지시 소멸의 76.8%를 실어 나르며, 재성장은 즉각적이다: 평균 파일은 59.5%까지 떨어졌다가 10 커밋 안에 91.5%로 돌아온다(첫 재작성 시점에 정렬한 52개 파일, 그림 4).

우리는 프롬프트 유지관리를 검열되고 잡음 섞인 피드백으로부터 관측 불가능한 제약 집합을 온라인으로 추정하는 문제로 모델링하고, 쓰기 시점의 유래(provenance)가 붕괴함에 따라 발산하는 평형 프롬프트 크기를 유도한다. 그 유래가 없으면, 최적 추정기는 추가 전용(append-only)이 된다.

태스크 j=(oj,Cj)j=(o_{j},C_{j})는 명시된 목적 ojo_{j}를 그 관측 불가능한 제약 CjCC_{j}\subseteq C과 짝지으며, 이 제약들은 검증기들의 고정된 숨은 집합 C={gc}C=\{g_{c}\}에서 뽑힌다. 시점 tt의 프롬프트는 유한한 지시 집합 DtD_{t}이고, 지시 dd는 시점 τd\tau_{d}에 프롬프트에 들어와 나이 ad=tτda_{d}=t-\tau_{d}를 갖는다. jj에 대한 응답은 cCjc\in C_{j}를 확률 qc(D,j)q_{c}(D,j)로 만족한다; CCqCq_{C}로부터의 표본을 제외하면 관측 불가능하다.

각 시점 tt마다 시스템에서는 세 당사자가 상호작용한다. (에이전틱일 수도 있는) 유지관리자는 지시를 추가·삭제하여 프롬프트를 DtD_{t}으로 갱신한다. 하네스는 태스크 jj를 뽑아 프롬프트 DtD_{t} 아래에서 실행자를 사용해 실행한 뒤, CjC_{j}를 사용해 검증하여 qCq_{C}로부터의 표본을 생성한다.

유지관리자의 목표는 최소 커버 DD_{\star}, 즉 기대 제약 만족을 최대화하는 가장 작은 지시 집합이다. 형식적으로,

D=argminD|D|,=argmaxDEj,cCj[qc(D,j)]\begin{split}D_{\star}&=\operatorname*{argmin}_{D\in\mathcal{M}}|D|,\\ \mathcal{M}&=\operatorname*{argmax}_{D}\,\mathrm{E}_{j,\,c\in C_{j}}[q_{c}(D,j)]\end{split} (1)

이 논문의 모든 실험은 DtD_{t}DD_{\star}에 대해 두 축으로 채점한다: 정확성, 즉 기대 만족도 E[qc]\mathrm{E}[q_{c}]와, 초과 크기 |Dt||D|1\frac{|D_{t}|}{|D_{\star}|}-1다. 유지관리 레짐은 한 축을 저하시키지 않으면서 다른 축을 개선할 때에만 이긴다.

특정한 함수 형태를 가정하지 않은 채, 우리는 qCq_{C}표 1에 나열된 성질들을 만족한다고 가정한다. 성질 A1–A3(지시 가능성, 간섭, 중복)은 전체 레짐을 결정하고, 성질 A4(검열)와 A5(확률성)는 각각 삭제를 막고 추가를 몰아간다.

표 1: 숨은 제약 집합과 그 피드백의 다섯 가지 특성(2장). 지시 가능성·간섭·중복은 레짐 축을 결정하고, 검열은 삭제를 막으며, 확률성은 추가를 몰아간다.
Property Behavior
A1 instructability some dd raises qcq_{c}
A2 interference adding dd lowers other qcq_{c^{\prime}}
A3 redundancy a second dd^{\prime} adds no qcq_{c}
A4 censoring outcomes don’t name their dd
A5 stochasticity qc<1q_{c}<1 even when covered

회귀를 감수하지 않고 지시를 삭제하려면 유지관리자는 실행 불가능한 수의 반사실 실험을 돌려야 한다. ddcc에 기여하는 바를 Δc(dD)=𝔼j[qc(D,j)qc(D{d},j)]\Delta_{c}(d\mid D)=\mathbb{E}_{j}[q_{c}(D,j)-q_{c}(D\setminus\{d\},j)]로 쓰자 — cCjc\in C_{j}를 갖는 태스크들에 대해서다; ddΔc0\Delta_{c}\leq 0가 모든 cc에 대해 성립할 때 초과(excess)다. 이를 추정한다는 것은 D{d}D\setminus\{d\}를 탐침한다는 뜻인데, 중복은 한 번에 하나씩의 탐침을 무력화한다: 하나의 제약을 각각 커버하는 두 지시는 따로 보면 공짜처럼 보이지만, 둘 다 지우면 제약이 깨진다. 따라서 정직한 감사는 O(2|Dt|)O(2^{|D_{t}|})번의 부분집합 탐침을 요구하며, DD_{\star}는 일반적으로 계산 불가능하다. 유지관리자가 왜 dd를 추가했는지 — 그 잠재 근거 rdr_{d} — 를 알면 이 비용은 O(1)O(1)로 무너지지만, rdr_{d}ada_{d}에 따라 급속히 붕괴한다.

그림 4 — 래칫: 전면 재작성은 크기만 리셋하고 성장률은 리셋하지 못한다
그림 4: 래칫: 재작성은 프롬프트의 크기를 리셋하지만 성장률은 리셋하지 못한다. 프롬프트는 첫 재작성 이전에 커밋당 4.1%씩 자라고, 59.5%로 잘린 뒤, 즉시 그리고 더 빠르게 — 커밋당 4.9%씩 — 재성장한다. 재작성 직전 대비 평균 지시 수, 각 파일의 재작성 이벤트를 t=0t=0에 정렬; 밴드: 95% 부트스트랩 CI.
그림 5 — 삭제 위험률은 지시 나이에 따라 하락: 불완전 회상의 시그니처
그림 5: 삭제 위험률은 지시 나이에 따라 하락한다: 불완전 회상의 시그니처로, 지시 노후도(상승)와 나이-무관 삭제(평평)는 둘 다 이 패턴을 내지 못한다. 28,426건의 삭제에 대해 커밋 단위 나이에 대한 Nelson–Aalen 추정, 95% 저장소-층화 부트스트랩 밴드; 기울기 0.032-0.032/커밋 ([0.047,0.019][-0.047,-0.019]).

따라서 복원 가능성이 평형 크기를 결정한다. 붕괴를 다음과 같이 정의하자

ρ(d,a)=Pr(rd recoverable at age a),\rho(d,a)=\Pr(r_{d}\text{ recoverable at age }a), (2)

여기서 한계량은 ρ¯(a)=𝔼dρ(d,a)\bar{\rho}(a)=\mathbb{E}_{d}\,\rho(d,a)다; 따라서 ρ(d,0)=ρ¯(0)=1\rho(d,0)=\bar{\rho}(0)=1이고, ρ(d,a)0\rho(d,a)\rightarrow 0ρ¯(a)0\bar{\rho}(a)\rightarrow 0가 모두 성립한다(aa\rightarrow\infty일 때). 우리는 그 붕괴를 불완전 회상이라 부른다: 지시는 남아 있고 그 실패는 재발하지만, 그 잠재 근거는 점점 더 복원 불가능해진다. 유지관리자는 그 이유가 살아남아 있고 초과로 검증될 때에만 합리적으로 지시를 삭제하므로, 지시 자신의 나이에 대한 위험률은 다음과 같이 인수분해된다(성문화된 조직 규칙에 쓰이는 사건-이력 형식이다; 21; 13; 30),

h(a)ρ¯(a)s(a),h(a)\;\approx\;\bar{\rho}(a)\,s(a), (3)

s(a)=Pr(excessa)s(a)=\Pr(\text{excess}\mid a)에 대해 성립한다. 추가는 합산된 위험률과 상계되어,

𝔼[|Dt+1||Dt|]=Atdh(ad),\mathbb{E}\bigl[|D_{t+1}|-|D_{t}|\bigr]\;=\;A_{t}-\sum_{d}h(a_{d}), (4)

에피소드 추가 AtA_{t}에 대해 성립한다. 그러면 흐름 균형이 무한 성장을 낳는다:

|D|=Aρ¯(a)sa.|D_{\infty}|\;=\;\frac{A}{\bar{\rho}(a)\,s}\;\xrightarrow[\;a\to\infty\;]{}\;\infty. (5)

식 5는 닫힌 형식의 파국적 기억이다: 추가가 일정한 속도로 도착하고 제약이 고정되어 있어도, 초과 크기는 ρ¯0\bar{\rho}\to 0로 발산한다. 즉, 태스크가 변하지 않더라도, 각 지시가 왜 쓰였는지에 대한 기억이 붕괴하는 것만으로 지시의 무한 성장을 몰아가기에 충분하다.

따라서 복원 가능성은 필요한 개입이며, 뒤에서 보이듯 충분한 개입이기도 하다. 잠재 근거가 붕괴하도록 내버려 두면, 남아 있는 유일한 실질적 삭제 수단은 전면 재작성(rewrite)뿐이다(3.3절); 그것을 복원하면, 프롬프트는 DD_{\star} 근처에 정착한다(4.2절).

3 프롬프트는 래칫처럼 움직인다: 성장, 전면 재작성, 재성장

에이전틱 컨텍스트 파일은 누군가 전면적으로 재작성할 때까지 성장하고, 그 뒤 다시 성장한다. 이것이 우리가 래칫이라 부르는 독특한 톱니형 성장 곡선의 특징이다(그림 4). 래칫의 삭제 위험률과 공변량은 그 근본 원인 — 불완전 회상 — 을 처음으로 식별해 낸다.

우리는 에이전틱 프롬프트를 개별 지시로 분해하고 커밋 히스토리에 걸쳐 그 소멸을 추적한 다음(3.1절3.3), 지시 노후도와 내용 취약성 가설을 반증하고, 마지막으로 불완전 회상만이 내놓을 수 있는 예측을 확증한다(3.4절). 우리의 코퍼스는 1,867개의 GitHub 저장소, 1,801개의 다중 버전 파일, 299,440건의 버전 간 전이, 247,694건의 지시 수명을 아우른다. 구축, 분절, 매칭, 중도절단(censoring)의 세부는 부록 A에 상술한다.

3.1 에이전틱 프롬프트는 전면 재작성이 있을 때까지 무한히 성장한다

유지관리자는 추가만 하고 거의 제거하지 않으므로, 에이전틱 프롬프트는 히스토리가 끝나거나 파일이 전면적으로 재작성될 때까지 지시 개수, 지시 복잡도, 전체 크기 면에서 한계 없이 성장한다.

마지막으로 추적된 버전 기준, 중앙값 파일은 39개의 지시를 담고 있으며(90번째 백분위: 131), 이는 지시 이행이 저하되기 시작하는 임계값을 한참 넘는 수준이다 (6; 11). 다중 버전 저장소 1,576개 중 64.3%가 지시 개수를 늘렸고 26.6%가 줄였으며, 순증가의 중앙값은 +7개 지시다. 대량 재작성을 제외하면 19,267개 커밋에 걸쳐 커밋당 평균 순 +4.9개의 지시가 추가된다.

우리가 측정한 모든 구성요소가 성장한다. 파일 자신의 수명에 걸쳐 평균 궤적은 개수에서 최대 +226%(그림 1(b)), 평균 지시 길이에서 +10% 증가한다. 그와 함께 에이전틱 프롬프트의 전체 크기도 +140% 성장하므로, 이 개수 증가는 텍스트가 지시 클래스와 페이로드 클래스 사이를 옮겨 다닌 결과가 아니다(A.5절).

3.2 사라짐의 대부분은 삭제가 아니다

유지관리자가 지시를 삭제할 때는 대체로 대량 재작성을 통해 통째로 삭제한다. 지시 소멸의 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건의 추적된 삭제가 남는다.

3.3 전면 재작성 직후 성장이 즉시 재개된다

대량 재작성은 프롬프트의 크기를 리셋하지만 근본 원인(불완전 회상)을 해소하지는 못하므로, 프롬프트는 재작성 직후 곧바로 다시 성장하기 시작한다.

파일들을 첫 대량 재작성 시점 t=0t=0에 정렬하면, 평균 지시 개수는 t=1t=-1까지 단조 증가하다가 t=0t=0에서 재작성 이전 값의 59.5%로 떨어지고, 이후 10개 커밋에 걸쳐 91.5%까지 회복한다(그림 4). 실제로 에이전틱 프롬프트는 재작성 이후에 더 빠르게 성장한다: 파일은 대량 재작성 이전에는 커밋당 4.1%씩, 이후에는 4.9%씩 지시를 늘린다.

3.4 삭제 위험률이 경쟁 메커니즘들을 반증한다

삭제 위험률 h(a)h(a)과 저자 수와의 상호작용은 지시 성장을 이끄는 메커니즘이 불완전 회상임을 식별해 낸다.

특히 지시 노후도와 불완전 회상은 삭제 위험률에 대해 서로 반대의 기울기를 예측한다: 전자는 지시가 시대에 뒤떨어지면서 위험률이 나이에 따라 상승할 것으로 예측하고 (10; 18), 후자는 지시 이면의 근거가 소실되면서 위험률이 하락할 것으로 예측한다. 그림 5에서 볼 수 있듯이 삭제 위험률 h(a)h(a)은 나이에 따라 하락한다 aa. 저장소 층화 부트스트랩으로 얻은 로그 위험률 기울기는 커밋당 0.032-0.032이며, 그 구간은 0을 배제한다(95% CI [0.047,0.019][-0.047,-0.019]; A.6절).

내용 취약성 — 취약한 지시, 파일, 저장소가 일찍 죽는 현상 — 은 구성 효과(compositional effects)를 통해 삭제 위험률을 아래로 휘게 할 수 있지만, 구성만으로는 이 기울기를 설명할 수 없다. 우리는 무-frailty 기준선 (26)과 대비해 감마 frailty 모형으로 재적합했다(소멸 n=28,255n=28,255건, 50커밋에서 중도절단). 그 가장 강한 형태인 동일 텍스트 공유 지시는 30.8%를 흡수하지만 기울기는 0.0355-0.0355로 남는다([0.0414,0.0296][-0.0414,-0.0296]; A.7절).

마지막으로, 불완전 회상은 어느 경쟁 가설도 설명할 수 없는 것을 예측한다: 잠재 근거가 유지관리자가 변경을 수행하는 동안 인코딩된다면, 삭제 위험률은 나이만이 아니라 파일을 손댄 유지관리자의 수에 따라서도 감쇠해야 한다. 인간 저자를 세고 파일 활동량을 통제했을 때, 실제로 그렇다: βmulti-author×age=0.021\beta_{\text{multi-author}\times\text{age}}=-0.021 (z=11.7z=-11.7; A.8절).

따라서 실제 저장소 전반에서 무한한 프롬프트 성장은 광범위하고, 파일이 도달하는 크기에서는 비용이 크며, 오직 불완전 회상으로만 설명 가능하다. 다만 이 설정은 관찰된 것이지 배정된 것이 아니므로, 다음으로 우리는 유지관리자가 무엇을 물려받는지를 우리가 통제하는 설정으로 넘어간다.

Instruction Count Constraint Satisfaction
Role Arm TT NN |DT||D_{T}| Excess Size (%) Rate (%, t=Tt{=}T) Rate (%, t=0t{=}0)
control no prompt comments 15 552 3.5 +60.4±18.4+60.4\pm 18.4 39.0±2.839.0\pm 2.8 23.2±2.423.2\pm 2.4
placebo comment-shaped noise 15 552 3.3 +53.2±14.6+53.2\pm 14.6 40.3±2.740.3\pm 2.7 22.0±2.422.0\pm 2.4
treatment informative comments 15 552 2.1 5.8±6.6-5.8\pm 6.6 38.2±2.638.2\pm 2.6 21.5±2.421.5\pm 2.4
control no prompt comments 51 184 6.6 +211.3±105.3+211.3\pm 105.3 44.0±4.944.0\pm 4.9 23.9±3.923.9\pm 3.9
placebo comment-shaped noise 51 184 5.3 +147.9±79.9+147.9\pm 79.9 42.6±4.942.6\pm 4.9 22.3±4.222.3\pm 4.2
treatment informative comments 51 184 2.2 +1.4±22.1+1.4\pm 22.1 44.0±4.744.0\pm 4.7 21.7±3.921.7\pm 3.9
표 2: 정보성 주석은 동등 충족(parity) 상태에서 초과 크기를 줄이며, T=51T{=}51에서 그 효과가 더 크다. 초과 크기는 |D|=2.2|D_{\star}|{=}2.2 시점의 |DT|/|D|1|D_{T}|/|D_{\star}|{-}1이고, rate는 해당 라운드에서 채점된 제약 중 통과한 비율이며 t=Tt{=}T은 마지막 3라운드 평균이다. 굵은 글씨 = 해당 블록 내 최고 성적이면서 CI가 서로 겹치지 않는 경우; ±\pm은 95% 부트스트랩 CI의 절반으로, 비대칭이다. T=15T{=}15에서 시드 3개, T=51T{=}51에서 1개.

4 주석은 래칫을 멈추고 지시 이행을 되사온다

프롬프트 주석은 에이전틱 프롬프트에서 지시의 무한 성장을 영구적으로 멈출 수 있으며, 그 과정에서 더 작고 더 견고한 프롬프트를 통해 지시 이행을 개선한다.

프롬프트 유효성을 평가하기 위해, 우리는 먼저 태스크가 정상(stationary)인 설정에서 에이전틱 프롬프트를 위한 새로운 평가법을 제안한다(4.1절). 이 평가를 사용해 프롬프트 주석이 프롬프트를 이론적 최적 최소 커버 근처에 정착시킨다는 것을 보인다(4.2절). 마지막으로, 프롬프트 주석이 실제 프롬프트에서 불필요하고 노이즈 섞인 지시로 인해 상실된 지시 이행을 되사올 수 있음을 보인다(4.3절).

4.1 IFEval을 뒤집으면 최소 커버가 관측 가능해진다

실무에서 에이전틱 코딩 맥락의 유지관리자는 관측 불가능한 제약 집합을 충족하는 유효한 프롬프트를 학습해야 한다. 정확성을 최대화하려면 이 프롬프트는 모든 제약을 동시에 커버하면서도, 지시 이행 감쇠라는 잘 알려진 문제 (6; 11)를 감안하면 최소여야 한다.

따라서 프롬프트 평가에는 초과 크기와 정확성 둘 다의 측정이 필요한데, 초과 크기를 계산하려면 최소 커버가 필요하고 이는 일반적으로 계산 불가능하다(2장). 표준 지시 이행 벤치마크 스위트가 한 가지 경로를 제공한다.

IFEval (29)를 뒤집음으로써 이 문제를 공략할 수 있다. 각 벤치마크 항목 (Dj,Cj)(D_{j},C_{j}) — 지시 DjD_{j}, 검증기 CjC_{j} — 에 대해 다음 변환을 적용한다:

  1. DjD_{j}를 숨긴다. 항목에 명시된 지시들이 참조 최소 커버 DD_{\star}이 되므로, |D||D_{\star}|가 선험적으로 알려지고 초과 크기가 측정 가능해진다.

  2. CjC_{j}를 유지한다. 그 검증기들이 월드의 숨은 제약 집합이 되어, 하네스만이 실행하고 유지관리자에게는 결코 이름조차 알려지지 않는다.

  3. 브리프 ojo_{j}를 생성한다. 더 강한 모델이 DjD_{j}를 일반적 태스크 목표("제품 발표문을 작성하라")로 손실 압축 요약한다.

그다음 새 유지관리자가 TT 스텝에 걸쳐 ojo_{j}로부터 DjD_{j}를 재구성하는데, CjC_{j}에서 나온 중도절단되고 노이즈 섞인 피드백만을 본다. 소속 조건(arm)에 따라 지시 dd에 그 지시의 잠재 근거를 담은 주석 rdr_{d}을 달 수 있는지가 결정된다. 다음 유지관리자는 DtD_{t}와 모든 rdr_{d}을 읽고, 실행자는 DtD_{t}만 읽는다.

지시는 실행자에게 무엇을 할지 말하고, 주석은 다음 유지관리자에게 왜 그런지를 말한다. 이 분리를 강제하기 위해 하네스는 프롬프트가 실행자에게 도달하기 전에 주석을 제거하고, 과거 실패를 인용하는 지시는 모두 거부하여, 주석을 잠재 근거가 살아남을 수 있는 유일한 채널로 남긴다(부록 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
그림 6: 각 주석은 그 지시 이면의 실패, 가설, 그리고 그 결과를 명시한다. 주석은 녹색(#)이며 실행자에게는 결코 도달하지 않는다. 8,541건의 추가 중 3건으로, 제약 패밀리당 하나씩이다.

4.2 잠재 근거를 인코딩한 주석은 프롬프트를 커버에 정착시킨다

지시의 잠재 근거를 인코딩한 프롬프트 주석은 프롬프트를 그 최소 커버에 정착시킨다(그림 1(a)). 그 잠재 근거는 지시 이면의 실패, 가설, 그리고 그 가설이 어떻게 되었는지를 요약한다(그림 6).

구체적으로, 552건의 유지관리 히스토리에 걸쳐 잠재 근거를 프롬프트 주석으로 인코딩한 유지관리자는 초과 크기 -5.8%로 프롬프트를 학습한 반면, 주석 없는 유지관리자는 +60.4%였고(66.2pp 차이), 제약 충족은 동등(parity)했다(표 2). 두 조건(arm)의 차이는 핸드오프뿐이다: 프롬프트 지시와 함께, 유지관리자의 요약된 잠재 근거를 담은 주석이 넘어가는지(또는 넘어가지 않는지)다.

(에이전틱) 유지관리자의 역량이 커질수록 래칫은 더 세게 돌아가고 프롬프트 주석은 더 크게 돕는다. T=15T{=}15에서 유지관리자를 3개 티어로 바꿔 보면, 주석 없는 조건의 초과 크기는 +67.7%에서 +571.9%로 상승한다. 최상위 티어에서 프롬프트 주석은 대조군 대비 제약 충족과 초과 크기 양쪽에서 엄격한 파레토 이득을 가능하게 한다(표 9).

마지막으로, T=15T{=}15에서의 절제(ablation) 실험은 주석이 결과(outcome)를 담아야 함을 보여준다(표 10). 주석 모양 노이즈는 무주석 조건의 노이즈 범위 안에 떨어지고, 결과 없이 시도만 서술한 내러티브는 +70.0%로 우리의 최악 조건이 되어, 후임자에게 검증되지 않은 전제를 확장하라고 넘겨준다. 스키마 내에서는 무슨 일이 있었는지를 기록하는 두 필드가 감소 효과를 담당한다: 재발 횟수 필드 하나만 빼도 그 효과의 37%가 사라진다.

4.3 실제 프롬프트에서 노이즈 지시는 정확성을 잃게 하고 주석이 그것을 되사온다

불필요하고 노이즈 섞인 지시는 참되고 올바른 지시에 대한 준수를 저하시키며, 주석은 그 손실의 대부분을 회복시킨다.

WildIFEval (11)을 같은 방식으로 뒤집으면 이 검정을 실제 프롬프트로, 그리고 개수가 아니라 지시 이행으로 옮겨올 수 있다. 각 벤치마크 항목 (Dj,Cj)(D_{j},C_{j})4.1절과 같이 월드로 변환하되, 유지관리자가 |Dj||D_{j}|개 지시 전부를 학습하게 하는 대신 |Dj|K|D_{j}|-K개의 참 지시와 다른 항목들의 집합 DijD_{i\neq j}에서 균등 추출한 GG개의 노이즈 지시를 시드로 넣는다. WildIFEval의 제약은 사람이 쓴 산문이라 코드 검증기가 딸려 있지 않으므로, 우리는 제약 하나와 응답 하나만 보고 그 외에는 아무것도 — 프롬프트도, 조건 라벨도, 히스토리도 — 보지 못하는 조건-맹검(arm-blind) LLM 심판으로 채점한다. 64개 월드에 걸쳐, K=1K{=}1G=16G{=}16에서, 그 노이즈 지시들은 프롬프트에 이미 있던 참 지시에 대한 정확성을 24.1pp 잃게 한다 — G=0G{=}0{}에서 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) 하에서, 잠재 근거를 인코딩한 프롬프트 주석은 지시 개수를 최적 최소 커버로 줄이는 동시에 실제 프롬프트에서 지시 이행을 되사온다는 것을 확인한다. 다음으로 우리의 접근을 선행 연구와 맥락화하고 대비한다.

5 관련 연구

에이전틱 컨텍스트 파일에 대한 실증 연구.

선행 측정 연구들은 컨텍스트 파일이 제 몫을 하며 오직 성장하기만 한다는 사실을 확립했다. 1AGENTS.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은 이 둘을 규칙의 탄생·개정·정지에 대한 하나의 설명으로 종합한다. 우리는 이들의 통찰을 활용하여 구성적 효과와 낡음을 넘어서는 에이전틱 프로그래밍 고유의 동학을 규명하고, 나아가 나이 aa에 의존하는 새로운 잠재 근거 복원가능성 인자 ρ¯(a)\bar{\rho}(a)을 분해해 낸다 (식 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절).

6 논의

영어가 새로운 코드라면, 왜 우리에게는 아직 주석이 없는가?

근본적으로 우리는 두 가지를 보인다: (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절이 계산 자원을 보고한다.

참고문헌 (References)

부록 A 필드 코퍼스

A.1 코퍼스 구축

우리는 프레임의 텍스트를 재사용하지 않고 모든 파일의 모든 버전을 재도출했다. 스냅샷은 파일에 대한 주장을 뒷받침할 뿐이며, 지시에 대한 주장은 히스토리만이 뒷받침한다. 프레임은 파일 수준 성장을 확립한 연구인 1의 저장소 목록으로, 기본 브랜치에 CLAUDE.md, AGENTS.md, 또는 copilot-instructions.md를 최소 하나 보유한 공개 GitHub 저장소들이다. 우리는 각 저장소를 blobless 방식으로 클론하고 추적 대상 컨텍스트 파일 각각의 전체 커밋 히스토리를 순회했다. 1,867개 저장소로부터 최소 두 버전을 가진 파일 1,801개, 추적된 버전 간 전이 299,440건, 스펠(spell) 247,694건을 얻었다.

앞으로 순회하는 방식은 측정을 시간에 대해 대칭적으로 유지하기도 한다. 만약 각 파일의 지시 집합을 최종 버전에 고정하고 역방향으로 탐색했다면, 그 버전까지의 생존을 조건화한 셈이 되었을 것이다. 생존이야말로 연구 대상인 양이다.

A.2 지시 분할

Gate Criterion Threshold Observed Pass
0 Median per-repo net ΔD>0\Delta D>0 >0>0 +7+7 \checkmark
0 Grow:shrink ratio >1.5>1.5 2.42 \checkmark
A Deletions excluding rewrites 300\geq 300 28,426 \checkmark
A Tail share at/above median age 20%\geq 20\% 57.0% \checkmark
B Matcher precision / recall 0.85\geq 0.85 1.000 / 0.933 \checkmark
Median rel. growth, all multi-version files: count vs. length count >> length 1.1931.193 vs. 1.0281.028 \checkmark
표 3: 사전 등록된 모든 기준이 정본 코퍼스에서 통과한다. 행: 파이프라인 코드보다 먼저 확정된 기준들(§A.2A.4); 열: 각 기준이 작성될 때 기준으로 삼은 임계값과 이번 실행이 산출한 값. 게이트 B는 이번 실행이 아니라 50개 전이의 수작업 주석 풀에서 측정되며, 코퍼스 쪽에서 유일하게 상속된 수치다. Grow:shrink는 지시를 얻은 다중 버전 저장소의 비율을 지시를 잃은 저장소의 비율로 나눈 것이고, tail share는 관측된 지시 연령의 중앙값 이상에서 발생한 삭제의 비율로, 그 연령 너머의 식별을 보장한다.

우리는 절(clause) 수준의 명령문 하나를 지시라 부르고, 파일 내 나머지 전부를 페이로드(payload)라 부른다. 분할은 두 단계로 수행한다: 각 파일 버전을 마크다운 구조에 따라 나누되 목록 항목과 블록 경계를 취하고, 그 다음 남은 산문을 문장 경계에서 나눈다. 제목, 펜스 코드, 표, 전체 줄 볼드 레이블, 그리고 2단어 미만의 단편은 페이로드로 보내는데, 그 길이에서는 한 줄이 대개 규칙이 아니라 레이블이기 때문이다. 페이로드는 위험 집합(risk set)에 절대 들어가지 않는다. 그래도 우리는 이를 집계하며, 3.1절에서 지시 개수 옆에 함께 보고하여, 우리가 보고하는 성장이 파일이 나이 들수록 더 많은 텍스트를 지시 클래스로 라우팅한 데서 온 것인지 독자가 확인할 수 있게 한다.

우리는 문법을 게이트를 읽기 전에 코퍼스별로 고정했으며, 이는 코퍼스 쪽에서 우리의 가장 큰 미검증 자유도로 남아 있다. 다른 문법이었다면 다른 |Dt||D_{t}|가 나왔을 것이다. 우리는 비율을 보고하므로 |Dt||D_{t}|의 상수배 재조정은 비율에 영향을 주지 않지만, 파일 연령에 따라 거동이 드리프트하는 문법이라면 그렇지 않을 것이다.

A.3 버전 간 매칭

우리는 연속된 버전 간 지시들을 3단계 캐스케이드로 매칭한다. 먼저 정확한 문자열 동등성을 시도하고, 다음으로 대소문자·공백·마크다운 구두점을 제거한 정규화 후의 동등성을, 그 다음으로 유사도 70 이상의 퍼지 매칭을 시도한다. 어느 단계에서든 매칭되면 생존으로 집계한다. 아직 사용 가능한 파트너 중 최고 점수를 취하며, 각 지시는 최대 한 번만 매칭된다. 매칭되지 않은 기존 지시는 사망이고, 매칭되지 않은 새 지시는 탄생이다.

이 캐스케이드는 삭제된 지시와 재표현된 지시를 구별하며, 3.2절은 그 분리에 기대고 있다. 줄 수준 diff는 재표현 하나를 삭제 하나 더하기 추가 하나로 채점하므로, 줄 수준의 삭제 카운트는 지시 삭제 0건과도, 다수와도 똑같이 부합한다. 따라서 매처는 우리가 코퍼스에서 취하는 모든 결과의 경계를 정한다. 우리는 이를 수작업 주석된 50개 전이에서 한 차례 검증하여, 데이터를 끌어오기 전에 고정해 둔 바닥값 0.85/0.80 대비 정밀도 1.000과 재현율 0.933에 도달했다(표 3). 이는 추적된 전이 299,440건에 비하면 작은 풀이며, 정본 실행이 산출하지 않은 코퍼스 쪽 유일한 수치다. Limitations에 그렇게 명시했다. 전체 규모의 층화 재주석이 이 간극을 닫을 것이다.

살아남은 어떤 오류든 우리 추정치를 보수적으로 만든다. 놓친 재표현은 그 재표현이 일어난 연령에 사망을 만들어내는데, 재표현은 젊은 지시보다 오래되고 많이 편집된 지시에서 더 자주 일어난다. 따라서 매처의 누락은 고연령 꼬리에 위험률을 더하며, 이는 추정 기울기를 0 쪽으로 편향시킨다. 그 편향 아래에서 측정된 감소는 참 감소의 하한이다.

A.4 경쟁 위험: 전면 재작성(rewrite)과 이주(migration)

(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 \geq half the dead text 38.3%
Events carrying any cross-file migration 2.9%
(b) Event study vs. window half-width
Window ww nn k=wk{=}{-}w k=0k{=}0 k=+wk{=}{+}w
±2\pm 2 317 3%-3\% 49%-49\% 33%-33\%
±3\pm 3 213 8%-8\% 53%-53\% 39%-39\%
±4\pm 4 158 11%-11\% 55%-55\% 40%-40\%
±5\pm 5 126 16%-16\% 61%-61\% 39%-39\%
±10\pm 10^{\star} 52 29%-29\% 71%-71\% 58%-58\%
(c) Growth within inter-rewrite segments
Segment nn Median Growing Net ΔD\Delta D
0 1,597 ×1.33\times 1.33 78.5% +34.0+34.0
1 543 ×1.32\times 1.32 81.6% +34.3+34.3
2 180 ×1.37\times 1.37 82.2% +39.8+39.8
3+ 178 ×1.46\times 1.46 86.0% +42.3+42.3
표 4: 전면 재작성(rewrite)은 대량 삭제이고, 그 형태는 측정에 사용된 윈도에 의존하지 않으며, 재작성 이후의 성장은 이전보다 느리지 않다. (a) 코퍼스 내 모든 재작성 커밋에 걸쳐, 재작성 커밋이 수행하는 일. (b) 그림 4의 이벤트 스터디를 각 윈도 반폭에서 재추정한 것: 파일의 첫 재작성 직전 버전 대비 DtD_{t}, 모든 오프셋에서 관측된 파일들의 균형 패널에 대한 중앙값, 완전 소거 이벤트는 제외. 열은 이벤트 ww 커밋 전, 이벤트 시점, 그리고 ww 커밋 후의 수준으로, 각각 직전 버전 대비이며, \star그림 4가 그리는 폭을 표시한다. nn가 폭과 함께 감소하는 것은 균형 패널이 이벤트를 전체 윈도만큼 넘겨 생존한 파일만 남기기 때문이고, 하락과 반등은 그렇지 않다. (c) 각 재작성 간 구간(2\geq 2 커밋) 내의 성장; 구간 00은 첫 재작성까지 이어지고, 구간 kkkk번째에서 시작하므로 그 시작 크기는 해당 재작성이 남긴 것이다. 재작성 임계값 자체는 전체에 걸쳐 0.50.5로 고정되며 스윕하지 않는다(§A.4).

우리는 위험률이 한 종류의 이벤트만을 대상으로 돌아가기를 원한다: 유지관리자가 어떤 지시가 더는 그 자리를 차지할 가치가 없다고 결정하는 것. 우리는 다른 두 종류의 소멸을 경쟁 위험으로 검열(censor)한다. 전면 재작성(rewrite)은 파일의 살아 있는 지시 중 최소 50%가 한꺼번에 죽는 커밋으로, 위험에 놓인 지시가 최소 5개라는 바닥 조건을 두어 지시 2개짜리 파일이 하나를 잃는 경우가 해당되지 않게 한다. 이주(migration)는 같은 커밋의 형제 파일에서 그 텍스트가 다시 나타나는 사망이며, 이는 저장소 전역에서 매칭한다.

둘을 합치면 관측된 지시 사망의 77.3%가 검열된다. 재작성 사망만으로도 우리가 위험률을 추정하는 근거인 삭제를 3.4 대 1로 웃돈다. 이것이 우리의 단일 최대 노출이며, 두 방향으로 읽힌다. 추정을 위협한다 — 우리는 사망의 소수에서 삭제 위험률을 적합하는데, 통상적 가지치기를 전면 재작성으로 오인한 재작성 임계값은 실제 삭제를 위험 집합에서 빼낼 것이기 때문이다. 동시에 하나의 발견을 보고한다 — 유지관리자는 가지치기하는 대신 교체하며, 이는 정확히 식 5가 예측하는 바다.

표 4는 독자가 코퍼스를 재추적하지 않고도 실행할 수 있는 검사들을 모은 것이다. 패널 (a)는 그 이벤트가 정말로 대량 삭제임을 보여준다. 중앙값 이벤트는 탄생시키는 것보다 훨씬 많은 지시를 죽이고, 이벤트의 4분의 1은 파일에 지시를 하나도 남기지 않으며, 죽은 텍스트의 절반이라도 대체하는 이벤트는 절반이 안 된다. 패널 (b)는 이벤트 스터디를 모든 윈도 반폭에서 재추정한다. 균형 패널의 구성은 그 폭에 의존하며, 스윕 없이는 독자가 우리의 결과를 우리의 선택으로부터 분리할 수 없다. 하락과 반등 둘 다 이를 견뎌낸다. 패널 (c)는 래칫이 자기 제한적인지를 묻는데, 그렇다면 이후 재작성 뒤에 더 느린 성장으로 나타날 것이다. 오히려 그 뒤의 성장은 더 빠르다. 파일 간 이주도 이 이벤트들을 설명하지 못한다: 재작성 커밋 중 이주 사망을 하나라도 동반하는 것은 3% 미만이다.

우리는 표 4에서 한 가지 검사를 생략한다: 50% 임계값 자체의 스윕이다. 추적기가 그 임계값을 내부적으로 적용하므로, 이를 바꾸는 것은 출력의 재집계가 아니라 파이프라인 재실행을 의미하며, 우리에게는 그런 실행이 없다. Limitations가 그 감사를 명시한다.

A.5 개수 성장 대 정교화 성장

3.1절은 성장을 세 성분으로 분해하고 셋 모두를 보고한다. 이 분해는 우리의 명제를 반증할 수 있고, 합계는 그럴 수 없다. 파일이 주로 이미 가진 규칙을 정교화하며 성장했다고 가정해 보자. 그렇다면 래칫은 장황함에 관한 이야기가 되고, 지시를 세는 것은 핵심을 놓칠 것이다. 실제로는 그렇지 않다: 그림 1(b)와 같은 정규화 수명 그리드, 같은 추정량에서, 각 파일 자신의 첫 버전 대비 평균 지시 길이는 +10%에서 정점을 찍는데(비율이 정의되는 1,776개 다중 버전 파일 기준), 지시 개수의 +226%와 대비된다. 비지시 페이로드는 그와 나란히 +140% 성장하므로, 개수 성장은 텍스트가 지시 클래스와 페이로드 클래스 사이를 이동한 것이 아니다.

우리는 두 축 모두 구성(composition)에 대한 강건성을 위해 선택했다. 정규화 수명은 모집단이 나이에 따라 얇아지게 두는 대신 모든 생존 파일이 모든 지점에서 기여하게 하고, 각 파일 자신의 첫 버전으로 나누는 것은 수준 구성을 제거한다. 그 두 번째 단계가 없다면, 큰 파일이 더 오래 사는 코퍼스는 전적으로 생존편향에 불과한 성장을 보일 것이다.

A.6 삭제 위험률

그림 5는 지시 연령에 대한 삭제 위험의 평활화된 Nelson–Aalen 추정량을 그린다. 연령 aa에서 위험 집합은 연령 aa에 도달하는 것이 관측된 모든 스펠을 담는다. 스펠은 세 가지 방식 중 하나로 그 집합을 떠난다: 이벤트인 삭제로; 검열된 경쟁 위험으로; 또는 파일 히스토리의 끝에 도달함으로써. 세 번째 이탈이 지배적이며, 이는 우리에게 알려주는 바가 적다. 마지막 커밋에서 아직 살아 있는 지시는 아직 발화하지 않은 위험률을 가진 것이지, 결코 발화하지 않을 위험률과 같은 것이 아니다.

우리는 연령을 달력 일수가 아니라 파일을 건드린 커밋 수로 센다. 식 3은 그 시계 위에서 정의되는데, h(a)h(a)이 검토 기회당 위험을 측정하며, 휴면 저장소에 놓인 지시에게는 그 기회가 결코 주어지지 않기 때문이다. 우리는 달력 일수를 보강 증거로만 보고하는데, 달력 시계에서만의 감소는 파일이 나이 들수록 단순히 덜 편집되는 것과도 부합할 것이기 때문이다.

우리는 연령 00부터 50까지에 걸쳐 대역폭 2커밋(달력 시계로는 30일)으로 비율을 커널 평활화한다. 기대 이벤트 1건 미만이 뒷받침하는 그리드 지점은 그리는 대신 버리므로, 곡선은 자신의 지지 범위를 결코 넘어가지 않는다. 신뢰 대역과 로그 위험률 기울기는 저장소로 층화된 부트스트랩에서 취하며, 스펠이 아니라 저장소를 복원추출로 재표집한다(200회 추출, 시드 0). 한 저장소 안의 지시들은 저자, 분할 결과, 유지관리 문화를 공유한다. 스펠 수준 부트스트랩은 이들을 독립으로 취급하여 구간을 수 배 과소평가할 것이다. 우리는 추출들에 걸친 중앙값 기울기를 보고하며, 2.5 및 97.5 백분위수를 그 구간으로 삼는다.

A.7 감마 frailty 적합

Rows Frailty Spells Deaths Slope 95% CI θ\theta Absorbed
all spells no frailty (baseline) 247,694 28,255 0.0506-0.0506 [0.0524,0.0489][-0.0524,-0.0489]
shared within repository 247,694 28,255 0.0481-0.0481 [0.0499,0.0464][-0.0499,-0.0464] 1.44 4.9%
shared within file 247,694 28,255 0.0485-0.0485 [0.0502,0.0467][-0.0502,-0.0467] 1.49 4.3%
recurring text no frailty (baseline) 20,807 2,669 0.0513-0.0513 [0.0571,0.0455][-0.0571,-0.0455]
shared within repository 20,807 2,669 0.0505-0.0505 [0.0566,0.0445][-0.0566,-0.0445] 2.85 1.5%
shared by instruction text 20,807 2,669 0.0355-0.0355 [0.0414,0.0296][-0.0414,-0.0296] 3.41 30.8%
표 5: 구성(composition)은 모든 클러스터링 수준에서 연령 기울기를 줄이지만 결코 뒤집지 못한다. 각 행은 구간별 지수(piecewise-exponential) EM으로 적합한 감마 frailty 사양 하나다(§A.7). 열은 커밋당 로그 위험률 기울기와 그 95% CI, 적합된 frailty 분산 θ\theta, 그리고 해당 블록의 무(無)-frailty 기울기 중 클러스터링이 흡수하는 몫을 제시한다. Recurring text는 텍스트가 2\geq 2개 저장소에 나타나는 지시들로 제한하는데, 이는 지시 내용이 공유하는 frailty를 식별할 수 있는 행들이다; 흡수 몫은 블록 내에서, 같은 행들에 대한 무-frailty 적합과 비교한다. 사망은 50커밋에서 행정적으로 검열한다. 기울기 00은 삭제 위험이 지시 연령에 대해 평탄함을 뜻하고, 양의 기울기는 지시 노후도가 예측하는 것이다. 내용(content)이 가장 많이 흡수한다. 같은 행들에서 저장소 클러스터링은 거의 아무것도 흡수하지 못하며, 이는 흡수된 분산이 저자가 아니라 지시 텍스트에 있음을 시사한다.

모집단 전체에 걸쳐 감소하는 위험률은 지속시간 의존성만큼이나 생존 이질성의 신호이기도 하다. 이것이 3.4절의 내용-취약성(content-fragility) 메커니즘이다: 일부 지시가 본질적으로 취약하다면 그것들은 일찍 죽고, 고연령에 아직 살아 있는 것들은 강건한 잔여다. 우리는 이를 감마 frailty 모형으로 검정하며, 이 이름이 네 번째 메커니즘으로 읽히는 일이 없도록 추정량에 대해 전체에 걸쳐 그 이름을 유지한다. 각 클러스터에 평균 1, 분산 θ\theta인 감마 frailty zz을 부여하는데, 이는 모집단 위험률을 hpop(a)=h0(a)/(1+θH0(a))h_{\text{pop}}(a)=h_{0}(a)/(1+\theta H_{0}(a))으로 만든다. 그러면 완벽하게 평탄한 개별 기저 h0h_{0}조차 θ\theta이 정하는 비율로 감소하는 hpoph_{\text{pop}}를 만들어낸다. 따라서 우리는 frailty의 존재를 당연한 것으로 두고, 그것이 우리의 기울기를 설명하는지만 묻는다.

우리는 h0h_{0}θ\theta를 위험 테이블 위에서 구간별 지수(piecewise-exponential) EM으로 결합 적합하는데, 연령 커밋 하나당 구간 하나이며 50커밋에서 행정적 검열을 둔다. 이는 위의 부트스트랩과는 다른 추정량이며, 둘이 함께 등장하는 모든 곳에서 그렇게 표기한다. 헤드라인 기울기는 여전히 Nelson–Aalen 부트스트랩이다. 표 5는 EM 적합 자체의 무-frailty 기준선을 함께 실어, 모든 흡수 몫이 명시된 분모를 갖게 한다. 우리의 테스트 스위트는 복원 검사들을 담고 있으며, 그중에는 θ=1\theta=1의 평탄한 기저가 감소로 읽히지 않는지 확인하는 검사가 있다.

우리는 세 수준에서 클러스터링한다. 저장소와 파일 frailty는 모든 스펠에서 식별한다. 지시 내용이 공유하는 frailty는 같은 정규화 텍스트가 최소 두 저장소에 걸쳐 재출현하는 곳에서만 식별할 수 있으므로, 그 부분표본에서 적합하고 그 부분표본 자체의 무-frailty 기준선을 옆에 함께 보고한다. 내용이 단연 가장 많이 흡수하고, 같은 행들에서 저장소 클러스터링은 거의 아무것도 흡수하지 못하는데, 이는 흡수된 분산의 위치를 저자가 아니라 지시 텍스트에 둔다. 기울기는 셋 모두를 견뎌낸다.

우리는 한 번에 하나의 클러스터링 수준만 적합하므로, 각 θ\theta은 그 수준 단독에 귀속할 수 있는 분산의 상한이다. 교차된 저장소 ×\times 내용 사양은 적합하지 않는다.

A.8 저자 교체 상호작용

Term Coef. SE zz 95% CI
age 0.0490-0.0490 0.0028 17.3-17.3 [0.0546,0.0435][-0.0546,-0.0435]
multi-author 0.0237-0.0237 0.0178 1.3-1.3 [0.0587,+0.0113][-0.0587,+0.0113]
multi-author ×\times age 0.0211-0.0211 0.0018 11.7-11.7 [0.0246,0.0175][-0.0246,-0.0175]
log\log commits +0.1920+0.1920 0.0071 +26.9+26.9 [+0.1780,+0.2059][+0.1780,+0.2059]
log\log commits ×\times age +0.0034+0.0034 0.0007 +4.8+4.8 [+0.0021,+0.0048][+0.0021,+0.0048]
θfile=1.35\theta_{\text{file}}=1.35; 1,837 files, 589 multi-author; 15,118 risk cells
표 6: 연령 기울기는 더 많은 사람이 파일을 편집하는 곳에서 가팔라지며, 이는 구성(composition)이 만들어낼 수 없는 것이다. 각 행은 파일 수준 감마 frailty를 얹어 적합한 구간별 지수(piecewise-exponential) 위험률 하나의 항이다(§A.8). 열은 계수, 표준오차, zz, 그리고 95% CI를 제시한다. multi-author2\geq 2명의 서로 다른 인간 저자가 파일을 건드린 경우 값 1을 취하며, 봇 커밋은 제외한다. 검정 대상 항은 multi-author ×\times age다: 불완전 회상(imperfect recall)은 이것이 음수일 것으로 예측하고, 고정된 지시별 frailty는 어느 방향으로든 0을 예측한다. log\log 커밋은 파일 활동량을 통제하는데, 다저자 파일은 더 활발하기도 하기 때문이다. 이 적합은 탐색적 작업으로 수행했으며 이에 대해 사전 등록된 기준은 없다.

내용 취약성과 불완전 회상은 동일한 주변(marginal) 예측을 한다. 둘은 하나의 조건부 예측에서 갈린다. 고정된 지시별 frailty는 상수이므로, 여러 사람이 편집하는 파일과 한 사람이 편집하는 파일 사이에 연령 기울기가 달라질 이유를 주지 않는다. 불완전 회상은 이유를 준다: 그것이 붕괴한다고 말하는 근거(rationale)를 사람이 보유하며, 사람은 떠난다.

우리는 파일 수준 감마 frailty를 얹은 구간별 지수(piecewise-exponential) 위험률 하나를 적합하는데, 이는 앞 소절이 측정한 파일 간 이질성을 제한 뒤의 상호작용을 추정한다. 그런 다음 연령을, 최소 두 명의 서로 다른 인간 저자가 파일을 건드렸는지의 지표와 상호작용시킨다. 카운트 전에 봇 커밋을 제외하는데, 자동 포매터와 의존성 봇은 컨텍스트 파일을 건드리지만 근거를 담지 않으며, 메커니즘이 적용되지 않는 바로 그 커밋들로 다저자 층을 부풀릴 것이기 때문이다.

다저자 파일은 더 활발하기도 하며, 파일 활동량만으로도 연령 기울기가 생길 수 있다. 따라서 우리는 log\log 커밋을 수준으로도, 연령과 상호작용시켜서도 투입하여 검정 대상 공변량과 같은 지위에 둔다. 회의적인 독자라면 그 상호작용부터 확인해야 한다. 이를 본문이 아니라 표 6에 두는 이유는 오직 본문에 검정 대상 항만을 위한 자리밖에 없기 때문이다.

이 분석은 탐색적이다. 우리는 이에 대해 어떤 기준도 사전 등록하지 않았고, 이는 사양 곡선이 아니라 단일 사양이며, multi-author 지위는 교체(turnover)를 측정하는 것이 아니라 대리하는 것으로, 파일을 편집한 사람 수를 셀 뿐 특정 지시를 작성한 사람이 떠났는지는 확인하지 않는다. 우리는 이를 경쟁 설명에 불리하게 작용하는 증거로 보고하는 것이지, 통과한 게이트로 보고하는 것이 아니다.

부록 B Inverse-IFEval 테스트베드

B.1 월드

검증기를 두 개 이상 가진 모든 IFEval 항목을 취해, 시드당 184개 월드와 3개 시드에 걸쳐 조건(arm)당 552개의 유지관리 이력을 얻는다. 커버는 지시 두 개(423개 이력) 또는 세 개(129개)까지이며, 이는 3.1절의 중앙값 컨텍스트 파일보다 한 자릿수(order of magnitude) 작은 규모다. 두 계층이 서로 다른 결과를 보이는 곳에서는 어디서든 두 계층을 분리하여 보고한다. 또한 월드를 시드 하에서 순열 표집(permutation-sample)하므로, 월드 인덱스는 각 시드에서 서로 다른 항목을 의미하며 (seed,world)(\text{seed},\text{world})가 분석 단위가 된다. 더 강한 모델이 월드당 한 번 목표(objective) ojo_{j}를 생성하고, 우리는 그것을 월드와 함께 동결한다. 따라서 유지관리 프로토콜이 바뀌어도 목표는 드리프트할 수 없다.

B.2 역할과 유지관리 루프

세 역할이 루프를 구동하며, 측정은 오직 하네스만 수행한다. 15개 스텝의 각 스텝에서 하네스는 월드로부터 태스크 1개를 표집하고, 목표를 다시 진술하며, 답변을 채점할 월드의 제약 2개를 추출한다. 실행자는 주석이 제거된 현재 프롬프트 하에서 답변하고, 검증기들이 실행된다. 그 다음 새로 생성된 유지관리자 인스턴스가 지시를 추가·삭제하는데, 각 추가에는 자신의 프로토콜이 규정하는 대로 주석을 태깅하며, 스텝 사이에는 프롬프트와 해당 조건(arm)이 지속시키는 것 외에는 아무것도 갖고 다니지 않는다. 우리는 재문구화(rewording) 연산을 제공하지 않으므로, 지시의 텍스트는 작성 시점에 고정되고 모든 지시는 모호하지 않은 나이(age)를 가지며, 이는 3.2절이 커밋 히스토리로부터 복원하는 스펠(spell) 정의와 일치한다. 유지관리자와 실행자는 모두 claude-haiku-4-5인데, 이는 프론티어 모델보다 유지관리자가 3절의 파일 작성자들과 역량 면에서 더 가깝도록 선택한 것이다.

B.3 피드백 체제

하네스는 제약·파라미터·분류 체계를 일절 지목하지 않는 평이한 언어의 불평(complaint)을 반환하며, 응답이 통과하면 단순한 판정(verdict) 외에는 아무것도 반환하지 않는다. 이것이 2절이 가정하는 검열(censoring)이다. 표 7은 월드 풀이 인스턴스화하는 모든 제약 타입을 그것이 만들어내는 불평과 나란히 나열하므로, 독자는 유지관리자의 과제가 잘 정의된(well posed) 것인지 판단할 수 있다: 불평은 차원(dimension)을 지목할 뿐 파라미터는 결코 지목하지 않으므로, 단어 수가 어긋났다는 말을 들은 유지관리자는 피드백으로부터 목표값을 읽어낼 수 없다.

조건(arm)들은 다섯 가지 조건이 동시에 성립할 때만 분리된다: 모호한 판정, 검열된 통과, 제약 식별자의 비공개, 간결성을 요구하지 않는 유지관리자 목표, 그리고 최소 10스텝의 호라이즌(horizon). 다섯이 모두 성립하기 전까지는 어떤 조건(arm)도 분리되지 않았다. 검증기 명세를 전부 공개하면 무주석 조건은 +3.0%의 초과 크기에 안착하고 효과는 완전히 사라진다. 우리는 이 체제를 탐색으로 찾았으며, 그 탐색 순서가 이를 정당화한다: 각 조건은 실제 유지관리자 역시 갖고 있지 않은 정보를 제거하는 것이기 때문이다.

다섯 가지 중 두 가지는 파라미터로 선택한 것이 아니라 설계 실패로서 맞닥뜨린 것이다. 안정적인 제약 식별자는 |C||C|을 누설한다: 라운드를 넘어 지속되는 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
표 7: 숨은 제약 문법과, 그것에 대해 유지관리자가 받는 유일한 신호. 행: 정규(canonical) 실행의 월드들에 걸쳐 인스턴스화된 검증기 타입을 IFEval 패밀리별로 묶은 것; 열: 숨은 제약 집합이 해당 타입을 포함하는 (seed,world)(\text{seed},\text{world}) 쌍의 수와, 응답이 그 타입에 실패했을 때 하네스가 반환하는 불평. 불평은 차원을 지목할 뿐 파라미터, 임계값, 검증기의 정체는 결코 지목하지 않는다 — "응답의 단어 수가 어긋났다"는 말을 들은 유지관리자는 피드백으로부터 목표값을 읽어낼 수 없으며, 이것이 §2가 가정하는 검열이다. 두 대소문자(casing) 검사만 설계상 하나의 불평을 공유하고, 그 외 모든 타입은 서로 다른 불평을 갖는다. 하나의 월드가 두세 개의 제약을 갖기 때문에 합계는 월드 수를 초과한다.

B.4 채널

지시는 실행자에게 향하는 명령문으로, 응답이 무엇을 해야 하는지만 진술하고 왜인지는 결코 진술하지 않는다. 주석은 다음 유지관리자에게 향하며, 자신의 조건(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.
  
그림 7: 유지관리자가 전달받는 내용과, 조건(arm) 간에 유일하게 다른 것. (a)는 모든 조건에 주어지고, (b)는 정보성 주석 조건에만 주어지며, 그 프로토콜이 지속시키는 모든 것은 작성 시점에 지시별 주석 안에 기록된다. 그 밖의 어떤 입력에서도 조건 간 차이는 없다. 그림 8은 두 역할이 그 다음에 보게 되는 것을 보여준다. 줄바꿈은 본 지면에 맞추어 배치한 것이다.

(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
  
그림 8: 실제로 유지관리된 프롬프트 하나와, 두 역할이 받는 그것의 두 투영. 정규 실행의 프로토콜 조건 마지막 라운드에서 가져온 것으로, 시드 0의 월드 170이며 조건 중앙값 2 대비 4개 지시로 끝난, 본 지면에 들어가는 가장 큰 프롬프트다. (a)는 유지관리자가 편집하는 산출물이자 본 논문이 옹호하는 형태다 — 목표, 지시, 그리고 각 지시가 작성될 때 함께 쓰인 주석이 한 문서 안에 있으나, 어떤 역할도 이 문서를 받지 않는다. (b)는 그 목록을, 차원만 지목하고 파라미터는 결코 지목하지 않는 검열된 보고서와 짝지은 것이다. (c)는 실행자의 호출로, 설명이 아니라 렌더 함수가 실제로 산출한 것이다: 주석 삭제, 식별자 삭제, 목표는 사용자 메시지로 이동. 둘 사이의 제거(strip)는 요청이 아니라 코드다. (d)는 플라시보 조건이 실제 주석 대신 대입하는 풀이다. 시스템 프롬프트는 그림 7에 있고, 표기법은 B.4절의 것이다.

부록 C Inverse-IFEval 결과

C.1 커버 크기별 결과

Arm NN Excess size (%) Sat. (%)
|D|=2|D_{\star}|=2
no prompt comments 423 +74.2+74.2 [+52.2,+98.8][+52.2,+98.8] 38.7
comment-shaped noise 423 +65.1+65.1 [+48.2,+84.4][+48.2,+84.4] 39.5
informative comments 423 1.1-1.1 [9.2,+7.7][-9.2,+7.7] 39.0
|D|=3|D_{\star}|=3
no prompt comments 129 +15.2+15.2 [+0.5,+31.8][+0.5,+31.8] 40.3
comment-shaped noise 129 +14.2+14.2 [1.8,+32.6][-1.8,+32.6] 42.9
informative comments 129 21.2-21.2 [28.7,13.2][-28.7,-13.2] 35.7
pooled
no prompt comments 552 +60.4+60.4 [+43.8,+80.7][+43.8,+80.7] 39.0
comment-shaped noise 552 +53.2+53.2 [+39.4,+68.7][+39.4,+68.7] 40.3
informative comments 552 5.8-5.8 [12.0,+1.1][-12.0,+1.1] 38.2
표 8: 래칫(ratchet)은 두 층(stratum) 모두에서 성립하며, 프로토콜은 두 층 모두에서 이를 역전시킨다. 각 행은 하나의 |D||D_{\star}| 층 내의 조건(arm)이며, 아래에 병합(pooled) 행이 있다. 열은 유닛 수, 최종 초과 크기 |DT||D|1\frac{|D_{T}|}{|D_{\star}|}{-}1와 그 95% 월드별 퍼센타일 부트스트랩 CI, 그리고 마지막 3스텝 제약 충족률을 제시한다. 무주석 조건(arm)의 CI는 두 층 모두에서 커버를 제외하는데, 커버가 지시 2개인 곳에서는 커버를 크게 상회하고 3개인 곳에서는 더 작은 격차로 상회하므로, 병합 결과가 한 슬라이스에 의해 견인되는 것이 아니다. 지시 3개 층에서는 프로토콜 조건(arm)이 커버 아래까지 가지치기하는데, 이 비용은 §C.5가 산정한다. 여기서 커버는 최대 지시 3개까지이며, 이는 §3.1의 중앙값 컨텍스트 파일보다 한 자릿수 낮은 규모다.

표 84.2절의 병합 수치 뒤에 있는 전체 분할이며, 두 층은 헤드라인에 대해 의견이 갈린다. 커버가 2인 곳에서는 무주석 조건(arm)이 커버를 크게 상회한 채 끝난다. 커버가 3인 곳에서는 그 구간이 커버에 걸쳐 있으므로, 표 11의 기준 (i)은 3제약 슬라이스 단독으로는 성립하지 않는다. 따라서 병합된 래칫은 이 지평(horizon)에서는 2제약 결과다.

이 불일치는 실험의 결함이 아니라 2절의 간섭 체제(interference regime)가 실험 내부에서 나타난 것임을 보여준다. 간섭은 삭제가 이득이 되게 만드는데, 이 제약 개수에서는 약하고 3.1절이 측정하는 개수에서는 강하다. 따라서 우리의 범위는 분리된다: 실험은 유지가 거의 공짜인 곳에서 메커니즘을 입증하고, 코퍼스는 가지치기가 이득이 될 곳에서 래칫이 작동함을 보여준다.

C.2 유지관리자 능력에 따른 래칫

Excess size Satisfaction
Maintainer Control Δ\Delta commit (%) zz Control (%) Δ\Delta commit (%) zz
Haiku 4.5 1.681.68 42.1-42.1 2.45-2.45 40.940.9 4.5-4.5 0.72-0.72
Sonnet 5 3.073.07 61.7\mathbf{-61.7} 8.40-8.40 38.538.5 +7.4+7.4 0.890.89
Opus 5 6.726.72 52.3-52.3 9.82-9.82 45.345.3 +18.4\mathbf{+18.4} 2.122.12
표 9: 더 강한 유지관리자일수록 래칫이 더 세게 걸리고, 프로토콜은 그들을 더 많이 돕는다. 행들은 하나의 실행자(Haiku 4.5), 과제 스트림, 지평(horizon), 프로토콜을 공유하며, 유지관리자만 바뀐다. 각 블록은 무주석 조건(arm) 자체의 수준 — 최종 크기 |DT|/|D||D_{T}|/|D_{\star}|, 마지막 3스텝 제약 충족률 — 을 제시한 뒤, 같은 행의 대조군에 대비한 commit을 제시하는데, 유지관리자 교체는 대조군도 함께 움직이기 때문이다. zz은 쌍대응(paired) 월드별 통계량이며, 볼드|z||z|이 판별해 주는 행들 가운데 블록 내 최대 Δ\Delta다. Sonnet 5는 추가 5회 중 2회꼴로 1,024자 주석 예산을 초과했다. n=64n{=}64개 월드, 시드 1개.

표 9는 실행자, 과제 스트림, 지평, 프로토콜을 고정한 채 유지관리자만 움직이며, 이 효과에 유지관리자/실행자 짝 맞춤이 필요한가에 답한다. 필요하지 않다: 무주석 조건(arm)의 초과분은 능력과 함께 커지고, 주석 프로토콜의 이점도 능력과 함께 커진다. Sonnet 5 행은 완전성을 위해 보고하지만 능력 판독이 아니라 규정 준수 기록이다 — 그 유지관리자는 추가 5회 중 2회꼴로 주석 예산을 초과했으므로, 주어진 프로토콜대로 쓰지 않았다.

C.3 주석 채널에 필요한 것

Excess size Satisfaction
Ablation Δ\Delta (%) zz Δ\Delta (%) zz
comment-shaped noise 3.1-3.1 0.33-0.33 +3.3+3.3 0.770.77
narrative without outcomes +8.8+8.8 0.860.86 3.3-3.3 0.82-0.82
commit, full schema 48.9-48.9 2.78-2.78 +4.1+4.1 0.500.50
– round counter 47.4-47.4 2.63-2.63 1.9-1.9 0.23-0.23
– recurrence count 30.9-30.9 1.83-1.83 3.2-3.2 0.42-0.42
– falsification lineage 34.3-34.3 2.14-2.14 9.6-9.6 1.19-1.19
– verbatim restore quote 43.5-43.5 2.43-2.43 8.9-8.9 1.09-1.09
표 10: 주석은 결과(outcome)를 담아야 한다. 모든 행은 해당 실행의 조건(arm)을 그 자신의 대조군과 대비한 것이다. 주석 모양 노이즈는 주석 조건(arm)의 표면 형태로 대조군의 정보를 담고 있으며, 절(clause) 행들은 commit 스키마의 네 필드를 하나씩 차례로 제거한다. zz는 그 옆의 Δ\Delta에 대한 쌍대응 월드별 통계량이다. 절 행에는 n=64n{=}64개 월드와 시드 1개; 두 내용(content) 행은 전체 풀(full-pool) 실행이다.

표 10은 세 가지 반론을 분리한다: 효과가 주석의 텍스트인가 내용인가, 근거(rationale)에 별도의 채널이 필요한가, 스키마의 어느 필드가 가지치기를 담당하는가. 행들은 각 실행의 조건(arm)을 그 자신의 무주석 대조군과 대비한 것이다. 절(clause) 행들은 commit 스키마의 필드를 하나씩 제거하며, 명칭은 그림 8(a)가 부여한 것을 따른다; 각 변형은 그 외에는 전체 프로토콜과 바이트 단위로 동일하므로, 한 행의 대비는 제거된 필드이지 문구 변경이 아니다.

C.4 월드 추출 간 재현

Excess size (%) s0 s1 s2 Pooled sd
no prompt comments +59.9+59.9 +49.8+49.8 +71.6+71.6 +60.4+60.4 10.9
comment-shaped noise +54.9+54.9 +46.0+46.0 +58.8+58.8 +53.2+53.2 6.5
informative comments 0.1-0.1 2.1-2.1 15.1-15.1 5.8-5.8 8.2
Satisfaction (%) s0 s1 s2 Pooled sd
no prompt comments 38.838.8 38.338.3 40.040.0 39.039.0 0.9
comment-shaped noise 40.040.0 40.040.0 40.840.8 40.340.3 0.4
informative comments 38.938.9 36.836.8 39.039.0 38.238.2 1.3
Criterion of record s0 s1 s2 Pooled
(i) uncommented arm ratchets \checkmark \checkmark \checkmark \checkmark
(iv) noise \approx uncommented \checkmark \checkmark \checkmark \checkmark
표 11: 모든 기준이 모든 월드 추출에서 통과한다. 상단 블록은 조건(arm)별 최종 초과 크기 |DT||D|1\frac{|D_{T}|}{|D_{\star}|}{-}1을 시드당 한 열로 제시하고, 이어 병합 값과 시드 간 표준편차(pp)를 제시한다. 각 시드는 IFEval 항목의 새로운 순열 표본이므로, 시드들은 월드 풀의 독립 추출이지 한 풀에 대한 반복 실행이 아니다. 중간 블록은 마지막 3라운드 제약 충족률을 수준으로 제시하여, 크기 결과를 그것이 치른 정확성 대가 옆에서 읽을 수 있게 한다. 하단 블록은 기록 기준(criteria of record)을 제시한다. 우리는 이것들을 실행 전에 고정했고 각각을 시드별로 평가하는데, 병합에서는 통과했으나 세 시드 중 하나에서 실패한 기준은 평균화 아티팩트일 것이며, 여기서 격차가 있다면 그것이 드러날 것이기 때문이다. 시드 간에 무주석 조건(arm)은 이 설계가 검정력을 갖춘 효과에 비해 거의 변동하지 않으며, 그것이 우리가 §4.2에서 병합 수치를 읽는 이유다.

기록 기준 네 가지 모두 세 개의 월드 추출 각각에서 개별적으로 성립하며(표 11), 병합에서만 성립하는 것이 아니다. 각 시드는 적격 IFEval 풀의 새로운 순열 표본이므로, 세 열은 한 풀에 대한 반복 실행이 아니라 월드 풀의 독립 추출이다. 무주석 조건(arm)의 시드 간 산포 10.9pp는 이 설계가 검정력을 갖춘 66.2pp 효과에 비해 작다.

C.5 조건(arm) 평균이 감추는 것

(a) Per-world calibration to the minimum cover
Arm NN Mean ratio Mean |ratio1||{\rm ratio}-1| Empty Within 14\frac{1}{4} Above 1.5×1.5\times
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 NN Satisfaction 95% CI Paired Δ\Delta vs. the protocol arm 95% CI
worlds the protocol emptied
no prompt comments 67 0.279 [0.209,0.348][0.209,0.348] 0.020-0.020 [0.065,+0.025][-0.065,+0.025]
comment-shaped noise 67 0.328 [0.256,0.400][0.256,0.400] 0.070-0.070 [0.114,0.027][-0.114,-0.027]
informative comments 67 0.259 [0.199,0.321][0.199,0.321]
worlds it kept instructions on
no prompt comments 485 0.406 [0.377,0.436][0.377,0.436] 0.007-0.007 [0.031,+0.016][-0.031,+0.016]
comment-shaped noise 485 0.413 [0.383,0.443][0.383,0.443] 0.014-0.014 [0.034,+0.007][-0.034,+0.007]
informative comments 485 0.399 [0.368,0.429][0.368,0.429]
표 12: 주석 조건(arm)은 평균에서도 개별 프롬프트에서도 똑같이 커버에 가장 가깝다. (a)는 최종 스텝에서의 월드별 캘리브레이션을 제시한다: 평균 |DT|/|D||D_{T}|/|D_{\star}|, 평균 ||DT|/|D|1|\bigl||D_{T}|/|D_{\star}|-1\bigr| (0 = 모든 월드가 정확히 커버에 위치), 그리고 비어 있는 채로 끝난 월드, 커버의 4분의 1 이내에서 끝난 월드, 커버를 1.5×1.5\times 이상 상회한 월드의 비율. 정보성 주석이 두 판독 모두에서 이기므로 그 조건(arm) 평균은 직접 읽어도 된다: 둘이 일치할 필요는 없으며, 둘이 갈리는 경우 오도하는 쪽은 평균이다. 그래도 평균은 꼬리(tail)를 감춘다. 프로토콜 하에서는 프롬프트 8개 중 1개가 비어 있는 채로 끝나는데, 무주석 조건(arm)에서는 40개 중 1개다. (b)는 그 꼬리의 값을 매긴다. 프로토콜 조건(arm)이 비어 있는 채로 끝났는가로 월드를 분할한 뒤, 각 분할 내에서 조건(arm)별 마지막 3스텝 충족률과, 같은 월드들에서 프로토콜 조건(arm)과의 쌍대응 차이를 95% 부트스트랩 CI와 함께 제시한다. 동등 충족(parity)은 프로토콜이 지시를 유지한 곳에서는 성립하고 지시를 비운 곳에서는 실패한다. 그곳들은 어려운 월드이며, 모든 조건(arm)이 자기 평균보다 훨씬 낮은 점수를 낸다. 분할을 정의하는 것은 프로토콜 자신의 종점이므로, 이 쌍대응 결손은 삭제 비용을 추정하는 것이 아니라 그 상계를 준다.

프로토콜은 조건(arm) 평균에서만이 아니라 월드별로 커버에 도달하며(표 12a), 짧은 쪽으로 과도하게 넘어간다: 프롬프트 8개 중 1개를 비우는데, 정보 없는(uninformed) 두 조건(arm) 어느 쪽에서도 거의 없는 일이다. 표 12(b)는 그 값을 매긴다. 프로토콜이 비어 있는 채로 끝났는가로 월드를 분할하고 각 분할 내에서 모든 조건(arm)을 읽는데, 이는 비교를 같은 월드들에 쌍대응시켜 난이도를 고정한다. 충족의 동등 충족(parity)은 프로토콜이 지시를 유지한 곳에서는 성립하고 비운 곳에서는 실패한다. 그곳들은 모든 조건(arm)이 자기 평균보다 훨씬 낮은 점수를 내는 어려운 월드이며, 분할을 정의하는 것은 프로토콜 자신의 종점이므로, 쌍대응 결손은 삭제 비용을 추정하는 것이 아니라 그 상계를 준다.

여기서 권고에 대한 조건 하나가 따라 나온다. 주석을 쓰는 것은 아무것도 제거하지 않으므로 아무 위험도 없다. 위험이 자리한 곳은 주석에 근거해 삭제를 실행하는 지점인데, 이 실험은 유지관리자가 얼마나 깊이 가지치기할 수 있는가에 아무런 하한(floor)을 부과하지 않았다. 프로토콜을 배치하는 운영자는 하한을 부과해야 한다.

C.6 주석 차단(strip) 해제

코드는 주석 채널을 실행자로부터 분리하며, 이 설계 선택에는 측정 가능한 대가가 따른다. 우리는 표준(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절의 인과적 해석을 정당화한다. 우리는 이를 발생하지도 않은 누출에 대한 방어라고 주장하지 않는다.

부록 D WildIFEval 복제

D.1 설계 그리드

ssr
NN KK DD Arm nn provided withheld all |Dt||D_{t}| |DT||D_{T}| 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
표 13: 조건(arm) 효과는 방해 지시가 있는 곳에서 나타난다. §4.3의 모든 설계 셀을 최종 유지관리 라운드 시점에서 보여준다: NN개의 숨겨진 제약 중 KK개는 시드된 프롬프트에서 보류되었고, DD개의 방해 지시가 NKN{-}K개의 참 지시와 함께 시드되었으며, 각 조건(arm)마다 한 행이다. ssr 열은 제공된 NKN{-}K(간섭), 보류된 KK(회복), 그리고 전체 NN(헤드라인)에 대한 제약별 만족률을 제시한다; |Dt||D_{t}|는 실행자가 본 프롬프트이고, |DT||D_{T}|은 마지막 라운드 이후의 프롬프트이며, trunc.는 실행자의 토큰 상한에 도달한 응답의 비율로, 그것이 달리 설명할 수 있었을 비율들 옆에 함께 표로 제시된다. D=16D{=}16에서 treatment는 전체-NN ssrD=0D{=}0 수준으로 유지하는 반면 control은 두 층 모두에서 하락한다. Size 열은 기술적(descriptive) 용도일 뿐이다: 이 실행의 시드된 주석은 자기 자신의 반증 조건을 명시하고 있어 방해 지시를 제거하는 데 유지관리자의 추론이 필요 없으며, 이 논문의 어떤 크기 관련 주장도 이 실행을 인용하지 않는다.

4.3절은 네 개의 대비(contrast)를 보고하며, 표 13은 그것들이 계산된 모든 셀을 보고한다. 따라서 독자는 헤드라인을 하나의 유리한 비교가 아니라 설계 전체에 대조하여 확인할 수 있다. 이 그리드는 분석 노트북이 렌더링하는 것과 동일한 계산을 이 스위트로 한정한 것이다.

D.2 채점

WildIFEval은 사람이 작성한 제약 분해를 제공하며 코드 검증기는 제공하지 않으므로, 여기서의 만족 여부는 표 7의 프로그램적 검증기가 아니라 LLM 저지(judge)이다. 저지(judge)는 claude-haiku-4-5이며, 정확히 하나의 제약과 하나의 응답만을 프롬프트로 받아 불리언 값을 요구받는다 — 프롬프트 DtD_{t}도, 조건(arm) 레이블도, 히스토리도, 형제 제약도 없다 — 따라서 입력의 어떤 것도 조건(arm)들을 구별하지 못하며, 두 조건(arm)이 동일한 응답을 산출하면 동일하게 채점된다. 두 조건(arm) 모두 동일한 모델이 동일한 호출 형태로 판정하므로, 저지(judge) 오류는 대비에 공통적이며 대비를 가로질러 차등적이지 않다. 응답은 원문 그대로 저장되므로 스위트를 재생성하지 않고 재판정할 수 있으며, 이것이 다음 소절에 생성 비용이 들지 않는 이유다.

D.3 저지(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 0.241\mathbf{-0.241} [0.334-0.334, 0.149-0.149] 0.197\mathbf{-0.197} [0.287-0.287, 0.108-0.108]
(ii) comments buy IF +0.116\mathbf{+0.116} [+0.051+0.051, +0.183+0.183] +0.078\mathbf{+0.078} [+0.006+0.006, +0.149+0.149] +0.038+0.038 [0.019-0.019, +0.096+0.096]
(v) not just recovery +0.116\mathbf{+0.116} [+0.048+0.048, +0.185+0.185] +0.083\mathbf{+0.083} [+0.005+0.005, +0.159+0.159] +0.033+0.033 [0.031-0.031, +0.095+0.095]
(aux) recovery +0.125\mathbf{+0.125} [+0.016+0.016, +0.250+0.250] +0.062+0.062 [0.062-0.062, +0.188+0.188] +0.062+0.062 [0.062-0.062, +0.203+0.203]
(iii) comments buy size 7.328\mathbf{-7.328} [8.641-8.641, 5.953-5.953] 7.328\mathbf{-7.328} [8.641-8.641, 5.953-5.953] +0.000+0.000 [+0.000+0.000, +0.000+0.000]
(iv) placebo null (SSR) +0.027+0.027 [0.044-0.044, +0.101+0.101] +0.033+0.033 [0.036-0.036, +0.101+0.101] 0.006-0.006 [0.070-0.070, +0.061+0.061]
(iv) placebo null (size) 1.297-1.297 [2.656-2.656, +0.031+0.031] 1.297-1.297 [2.656-2.656, +0.031+0.031] +0.000+0.000 [+0.000+0.000, +0.000+0.000]
표 14: §4.3이 보고하는 모든 대비는 독립적인 채점자에서도 살아남으며, 두 저지(judge)의 효과 크기는 구별 불가능하다. 행은 D.1절의 사전 등록된 기준이고, 2–3열은 각 저지(judge) 하에서의 짝지어진 treatment-control 차이(플라시보 행은 placebo-control, 간섭은 control 내에서 D=16D{=}16D=0D{=}0)를 W=64W{=}64개 월드에 대한 95% 백분위 부트스트랩 구간과 함께 제시한다; 굵은 글씨는 구간이 0을 배제하는 점추정치를 표시한다. gpt-5.6-lunaclaude-haiku-4-5의 능력 티어에 부합하므로, 둘 사이의 불일치는 능력 차이가 아니라 벤더 차이이며, 동일한 프롬프트, 스키마, 토큰 상한, temperature=0\text{temperature}{=}0을 통해 동일한 저장된 응답을 재채점한다: 모델만 다르다. 4열은 월드별 이중차분(difference-in-differences) (TC)|a(TC)|b(\text{T}-\text{C})|_{a}-(\text{T}-\text{C})|_{b}이며, aabb은 2열과 3열의 저지(judge)들로, 그 동일한 월드들에 대해 계산된다 — 두 저지(judge)의 효과 크기가 다른지를 말해주는 추정치이며, 겹치는 두 개의 저지별 구간은 그것을 말해주지 못한다. 이 값은 모든 행에서 0을 포함하므로, 두 점추정치 사이의 벌어짐은 저지(judge) 차이라는 증거적 뒷받침이 없다. W=64W{=}64에서 이것은 동등성이 아니라 증거의 부재다: (ii)의 구간은 0.0960.096까지 이른다. 비율은 제약별 만족률이며, 두 크기(size) 행은 지시의 개수로서 내장된 통제다 — 어떤 저지(judge)도 |DT||D_{T}|를 보지 못하므로, 그들의 열은 정확히 일치해야 하며 그들의 did00이어야 한다.
Pass rate
Slice nn Agree κ\kappa [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 +0.002+0.002
control 2,112 0.816 0.631 [0.598, 0.664] 0.539 0.534 0.006-0.006
treatment 2,112 0.819 0.632 [0.598, 0.665] 0.565 0.563 0.002-0.002
placebo 2,112 0.827 0.653 [0.618, 0.684] 0.529 0.543 +0.014+0.014
표 15: 저지(judge) 간 일치는 상당하며 조건(arm)에 따라 변하지 않으므로, 저지(judge) 노이즈가 표 14의 조건(arm) 간 격차를 만들어냈을 수 없다. 전체 6,336개 판정에 대해 저지(judge) a=a= claude-haiku-4-5와 저지(judge) b=b= gpt-5.6-luna를 풀링 및 조건(arm)별로 비교한다: 원시 일치율, 95% 부트스트랩 구간을 동반한 Cohen's κ\kappa, 각 저지(judge) 자신의 주변 통과율, 그리고 관대함(lenience), 즉 부호 있는 불일치 (b onlya only)/n(b\text{ only}-a\text{ only})/n — 양수는 aa가 탈락시키는 것을 bb가 통과시킨다는 뜻이다. κ\kappa은 두 평가자가 아무리 잘 일치해도 한 레이블이 드물면 0을 향해 붕괴하기 때문에 주변율 옆에 항상 함께 표시된다; 여기서는 주변율이 거의 같으므로 κ\kappa은 유병률 아티팩트가 아니다. 조건(arm)별 행을 먼저 읽어라: 균일한 관대함은 모든 조건(arm)을 상한 쪽으로 압축해 모든 격차를 기계적으로 줄이는 반면, 조건(arm)별로 달라지는 관대함은 저지(judge)가 처치와 상호작용한다는 뜻이 된다. 그것은 변하지 않는다 — κ\kappa는 세 조건(arm)에 걸쳐 0.631–0.653의 범위에 있다. 두 저지(judge)는 개별 판정의 17.9%에서 불일치하지만 주변 통과율의 차이는 0.002에 불과하므로, 불일치는 누적되지 않고 상쇄된다: 같은 임계값, 다른 항목들. 저지(judge) 1은 벤더 기본값으로 디코딩했고 재판정은 temperature=0\text{temperature}{=}0으로 이루어졌으므로, 이 수치들은 저지(judge) 1의 샘플링 분산을 흡수하며 일치도를 아래에서 경계 짓는다.

4.3절의 어떤 대비도 그것을 채점한 모델의 속성이 아니다. 우리는 저장된 6,336개 판정 전체를 gpt-5.6-luna로 재채점했다. 이는 저지(judge) 1의 능력 티어에 맞춘 두 번째 저지(judge)로, 둘 사이의 불일치가 능력 차이가 아니라 벤더 차이가 되도록 한 것이며, 프롬프트, 스키마, 토큰 상한, temperature=0\text{temperature}{=}0을 고정하여 모델만 변하도록 했다. 표 14가 그 결과다: 저지(judge) 1이 통과시키는 모든 기준은 두 번째 저지(judge) 하에서도 사전 등록된 부호를 유지하고, 간섭과 크기 기준은 두 저지(judge) 모두에서 0을 배제하는 구간을 유지하며, 플라시보는 둘 다에서 귀무(null)로 남는다. 두 저지(judge)는 이 설계가 판별할 수 있는 한에서 효과의 크기에 대해서도 일치한다. 지시 준수 기준에 대한 이들의 월드별 이중차분은 3.8pp(95% CI: [-1.9, +9.6]pp)이므로, 두 점추정치(11.6pp와 7.8pp) 사이의 벌어짐은 저지(judge) 차이라는 증거적 뒷받침이 없다. W=64W=64{}에서 이것은 동등성이 아니라 증거의 부재다: 구간은 9.6pp에 달하는 저지(judge) 차이를 허용하며, 그것을 좁히는 데 필요한 것은 더 많은 저지(judge)가 아니라 더 많은 월드다.

D.4 저지(judge) 일치도와 효과의 범위

표 15는 일치도를 보고하는데, 우리는 이를 기록하되 게이트로 쓰지는 않는다: 두 저지(judge)가 절대적 난이도에 대해 불일치하면서도 조건(arm)들의 순위는 동일하게 매길 수 있으며, 4.3절이 인용하는 것은 그 순위다. 저지(judge) 1과 gpt-5.6-lunaκ=0.639\kappa=0.639{}에서 개별 판정의 82.1%에 대해 일치하며([0.620,0.657][0.620,0.657]), — 하중을 지는 부분은 — κ\kappa이 조건(arm)에 따라 변하지 않으므로 저지(judge) 노이즈가 조건(arm) 간 격차를 만들어냈을 수 없다는 점이다. 우리가 측정하지 않는 것은 저지(judge)의 정확도다: 어느 모델도 정답 기준(ground truth)이 아니므로 불일치는 어느 쪽이 옳은지를 결코 말해주지 않으며, 4.3절의 모든 비율은 명명된 저지(judge) 하에서의 비율로 남는다. 정확도 주장을 허가하려면 사람이 주석한 하위 표본이 필요한데, 우리는 그것을 수행하지 않았다.

이 효과는 일반적 이득이 아니라 시드된 노이즈로부터의 회복이다. D=0D=0에서 조건(arm)들은 어느 방향으로도 일관되게 갈라지지 않는다: 주석 조건(arm)은 N=5N=5에서는 통제 위에, N=6N=6에서는 통제 아래에 위치한다. 주석 조건(arm)이 만족률을 유지하는 동안 통제가 두 층 모두에서 하락하는 것은 프롬프트가 제거할 방해 지시를 담고 있는 D=16D=16에서만이다. 불필요한 지시를 담고 있지 않은 프롬프트는 이 실험의 범위 밖이다.

부록 E 컴퓨트, 아티팩트, 재현성

E.1 컴퓨트

이 캠페인의 정본 실행은 두 역할, 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-5claude-sonnet-5의 파라미터 수는 공개되어 있지 않아 우리가 보고할 수 없다. 우리는 모델 버전과 변화하는 모든 디코딩 설정(역할별 max_tokens, 목표 생성에는 확장 사고 비활성화)을 실행의 해석 완료된(resolved) 설정에 고정한다. 그 외에는 API 기본값으로 디코딩하며 이에 대한 하이퍼파라미터 탐색은 수행하지 않았다. 이 설계의 조절 손잡이는 B.3절의 피드백 조건과 주석 프로토콜 자체이며, 우리는 생존자만이 아니라 실패와 함께 둘 다 보고한다(표 10).

E.2 무엇을 소비하며, 어떤 라이선스 하에서인가

우리는 두 개의 아티팩트를 소비하며, 각각을 그것이 공개된 목적인 연구를 위해 사용한다. 에이전트-컨텍스트 표집틀은 1의 리포지토리 선택으로, 라이선스 파일이 없는 복제 패키지로 배포된다. 따라서 우리는 그로부터 리포지토리 URL 목록만을 취하고, 모든 콘텐츠 바이트를 해당 리포지토리들 자체의 공개 히스토리로부터 재도출하는데, 이는 이 연구가 요구하는 측정이기도 하다(A.1절). 통제 실험의 월드는 google-research의 일부로 Apache 2.0 하에 공개된 IFEval 입력 집합 (29)으로부터 구축한다. 우리는 어떤 리포지토리 콘텐츠도 재배포하지 않는다. 우리는 파생된 지시별 테이블과, 위의 공개 소스로부터 그것을 산출하는 코드만을 공개한다.

E.3 무엇을 재구현하는가

우리는 IFEval의 평가 코드를 재사용하는 대신 표 7의 20개 제약 검증기를 직접 구현했는데, 우리의 테스트베드가 벤치마크를 뒤집기 때문이다: 검증기는 완성물을 채점하는 것이 아니라 유지관리되는 프롬프트에 대해 실행되어 검열된 불평을 반환해야 한다(B.3절). 재구현은 경계선에서 원본과 불일치할 수 있다. 따라서 이 논문의 모든 만족률은 우리 검증기에 대한 비율이며, 공개된 IFEval 수치가 아니라 조건(arm) 간에 비교 가능한 것이다.

E.4 보고된 수치를 결정하는 패키지

버전 간 매칭은 유사도 임계값 70의 rapidfuzz로 수행하고(A.3절), 삭제 위험(hazard)은 lifelines의 Nelson–Aalen 추정량으로 추정한다. 프레일티(frailty) 모형과 상호작용 모형은 라이브러리 루틴이 아니라 우리 자체의 조각별 지수(piecewise-exponential) EM으로 적합하므로(A.7절), 이 부록은 어떤 것을 참조하는 대신 그 추정량을 명시한다. 모델 호출은 Anthropic Python SDK를 통해 이루어진다. 락파일이 정확한 버전을 해석하여 각 실행의 env.lock에 동결하므로, 수치를 재현하는 독자는 인쇄된 버전 문자열을 대조하는 것이 아니라 구성상(by construction) 동일한 의존성 집합을 해석하게 된다.

E.5 커버리지, 그리고 이 코퍼스가 문서화되지 않은 용도

코퍼스는 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) 절은 이를 가정으로 메워질 공백이 아니라 우리 범위의 경계로 명시한다.

E.6 저자 메타데이터

커밋 메타데이터는 사람을 식별하며, 우리는 추출 시점에 이를 파일당 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