Executive Summary
승인을 기다리느라 두 시간 멈춰 있던 에이전트가 다시 움직인다. 그사이 검색 인덱스는 다시 쌓였고 모델 별칭은 새 버전을 가리키게 됐다. 재개된 실행은 처음 근거를 모을 때와 다른 전제 위에서 답을 마무리하는데, 호출은 하나도 실패하지 않는다. 실행은 멈춤과 재시도, 분기, 위임을 거치며 몇 시간씩 늘어진다. 그동안 프롬프트와 모델 별칭, 검색 인덱스, 정책은 서로에 아랑곳없이 각자 배포된다. 이름은 그대로인 채 그 이름이 가리키는 대상만 바뀐다.
바르잔 모자파리(Barzan Mozafari)가 8월 5일 arXiv에 올린 논문은 저장된 상태와 바뀐 전제가 한 실행 안에서 만나면 모든 호출이 성공해도 결과가 앞뒤가 맞지 않을 수 있다고 정리한다. 실행 가능한 LangGraph 코드를 담은 스타 상위 100개 공개 저장소를 훑은 결과, 상태를 이어 가는 워크플로우를 쓰는 코드베이스의 7.4%가 살아 있는 리소스나 실행 중 고르는 리소스를 불변 바인딩 없이 참조하고 있었다.
논문의 형식적 증명보다 실무자에게 중요한 것은 이 어긋남이 조용하다는 사실이다. 예외도 재시도 실패도 없고 로그에는 정상 종료만 남는다. 이 글은 논문이 그 어긋남을 데이터베이스의 격리 문제로 정식화하며 붙인 네 가지 이름을 하나씩 보고, 데이터를 가진 쪽이 무엇을 기록해 두어야 하는지까지 따라간다.
주요 수치
출처: arXiv:2608.05412
이 문제는 아직 오지 않은 위험이 아니라 이미 배포된 코드에서 확인된 상태다.
7.4%
방어 없이 리소스를 참조한 코드베이스
상태를 이어 가는 워크플로우를 쓰면서 불변 바인딩이 보이지 않는 비율
100개
감사 대상 공개 저장소
실행 가능한 LangGraph 코드를 담은 스타 상위 저장소, 별도 벤치마크가 아닌 실제 코드
마이크로초
프로토타입의 검사 비용
SemIso가 비호환 리소스와 분기 병합을 실행 중에 막는 데 드는 시간 단위
에러 로그에는 아무것도 남지 않는다
승인 요청 하나를 앞에 두고 에이전트가 멈춰 있다고 하자. 1단계에서 사내 문서를 검색해 근거를 모아 뒀고, 2단계에서는 그 근거로 답을 종합할 참이다. 담당자가 결재를 누르기까지 두 시간이 걸렸고 그사이 야간 배치가 검색 인덱스를 다시 쌓았다. 재개된 실행은 새 인덱스 위에서 답을 마무리한다. 근거를 모은 세계와 답을 쓴 세계가 서로 다른 셈이다.
이 실패는 예외로 드러나지 않는다. 검색도 성공했고 모델 호출도 성공했다. 재시도가 돌지도 않았고 타임아웃도 나지 않았다. 관측 도구가 보여 주는 것은 정상 종료된 실행 하나뿐이다. 논문이 짚는 지점이 여기다. 워크플로우는 저장해 둔 상태와 그사이 바뀐 전제를 한자리에서 섞어 쓰게 되고, 그 결과는 모든 호출이 성공한 상태에서도 스스로 앞뒤가 맞지 않는다.
더 까다로운 것은 이름이 바뀌지 않는다는 점이다. 논문의 표현으로는 안정된 이름이 새로운 동작을 얻는다. 코드에 적힌 모델 별칭은 지난달과 같고 프롬프트 템플릿의 경로도 같고 벡터 인덱스의 이름도 같다. 바뀐 것은 그 이름이 오늘 가리키는 대상이다. 배포 파이프라인 입장에서는 정상적인 업데이트이고, 실행 중인 워크플로우 입장에서는 발밑이 갈린 것이다.
실행이 자기가 시작된 환경보다 오래 산다
논문은 첫 문장에서 조건을 못 박는다. AI 실행은 이제 자신이 시작된 환경보다 오래 살아남을 수 있다. 한 번의 모델 호출 안에 들어가던 일이 멈춤과 재시도, 분기, 서브에이전트, 모델이 고르는 도구 호출로 펼쳐지면서 실행의 수명이 길어졌다. 수명이 길어진 만큼 그 아래에서 리소스가 갈아치워질 시간도 함께 늘어난다.
아래 도식은 두 개의 시간대를 겹쳐 놓은 것이다. 위쪽은 워크플로우의 진행이고 아래쪽은 그 워크플로우가 참조하는 리소스의 배포다. 두 시간대는 서로를 모른 채 각자 흐른다.
이 구분은 실무에서 이미 논쟁거리였다. 체크포인트를 남긴다는 것과 그 체크포인트가 참조하는 리소스가 여전히 유효하다는 것은 다른 보장이라는 지적이 프로덕션 에이전트 런타임을 다루는 쪽에서 반복해서 나왔다. 세션 메모리가 남아 있다고 해서 어떤 셸 명령이 실제로 실행됐는지, 재시도가 부작용을 두 번 일으키지 않았는지가 증명되는 것은 아니다. 상태 복원과 전제 복원은 다른 일이다.
어긋남에 네 개의 이름이 붙었다
논문의 실질적인 기여는 이 어긋남을 자동으로 검출 가능한 네 가지 이상 현상으로 갈라놓은 데 있다. 이름이 붙기 전까지 이 증상들은 재현되지 않는 버그 하나로 뭉뚱그려졌다. 네 가지는 발생하는 지점이 서로 다르고, 그래서 막는 방법도 다르다.
붙은 이름은 semantic read skew, compatibility skew, context escape, merge skew다. 아래 표는 각각이 어느 대목에서 생기고 현장에서는 어떤 모습으로 나타나는지를 나란히 둔 것이다.
| 이상 현상 | 언제 생기는가 | 현장에서의 모습 |
|---|---|---|
| semantic read skew | 한 실행이 리소스의 옛 정의와 새 정의를 섞어 읽을 때 | 1단계는 구버전 인덱스로 근거를 찾고, 2단계는 재구축된 인덱스로 답을 종합한다 |
| compatibility skew | 함께 맞물려야 할 리소스가 따로 갱신될 때 | 임베딩 모델만 올라가고 벡터 인덱스는 옛 임베딩 그대로여서 유사도 순위가 조용히 어긋난다 |
| context escape | 의미 컨텍스트가 하위 실행으로 상속되지 않을 때 | 상위 에이전트는 새 정책으로 승인받았는데 위임받은 서브에이전트가 캐시된 옛 정책을 읽는다 |
| merge skew | 전제가 다른 분기들이 하나로 합쳐질 때 | 서로 다른 시점의 가격 데이터로 계산한 두 결과를 합산해, 어느 시점에도 없던 값이 나온다 |
넷을 관통하는 문제는 하나다. 무엇을 근거로 판단했는지가 실행 내내 고정되지 않았다. 첫 번째는 시간축에서, 두 번째는 리소스 사이의 짝에서, 세 번째는 위임의 경계에서, 네 번째는 분기를 합치는 자리에서 그 고정이 풀린다. 풀리는 자리만 다를 뿐 잃는 것은 같다.
검출 가능성이 이 분류의 핵심이다. 네 가지 모두 실행 시점의 리소스 식별자를 기록해 두면 기계가 판정할 수 있는 조건으로 쓰였다. 사람이 결과를 읽고 이상하다고 느끼는 단계까지 기다릴 필요가 없다는 뜻이고, 뒤집어 말하면 그 식별자를 남기지 않은 시스템은 네 가지 중 어느 것도 판정할 수 없다는 뜻이다.
데이터베이스는 이 문제를 40년 전에 풀었다
논문은 이것을 격리 문제라고 부른다. 데이터베이스 트랜잭션은 동시에 일어나는 데이터 갱신을 제약하지만, 워크플로우 체크포인팅에는 의미 환경의 동시 변경에 대응하는 계약이 없다. 같은 종류의 위험인데 한쪽에는 사십 년 묵은 규율이 있고 다른 쪽에는 아무것도 없다.
저자가 누구인지가 이 진단의 무게를 정한다. 바르잔 모자파리는 미시간대에서 데이터베이스 동시성 제어와 근사 질의 처리를 연구해 온 사람이고, 지금은 데이터 웨어하우스를 에이전트로 최적화하는 회사를 운영한다. AI 워크플로우에 트랜잭션을 비유로 갖다 붙인 것이 아니라, 격리 이론을 만들던 계보의 연구자가 자기 분야의 도구를 한 계층 위로 옮겨 놓았다.
옮겨 놓는 방식도 데이터베이스 쪽 문법을 따른다. 서로 독립적인 세 가지 보장을 정의하고, 그 조합에서 격리 수준의 부분 순서를 끌어낸다. 어떤 이상 현상까지 허용할지가 곧 어느 수준을 고를지가 된다.
세 가지는 각각 다른 것을 지킨다. 리소스 안정성은 실행이 참조하는 정의가 도중에 바뀌지 않게 붙잡는다. 리소스 간 호환성은 임베딩 모델과 벡터 인덱스처럼 맞물려 쓰이는 짝이 어긋난 조합으로 만나지 않는지를 검증한다. 이어받기 상속은 체크포인트에서 되살아난 실행과 서브에이전트에게 넘어간 작업에도 처음의 전제가 따라붙게 한다. 셋은 서로를 대신하지 못한다. 안정성만 걸어 두면 짝이 어긋나는 경우를 놓치고, 상속이 빠지면 위임하는 순간에 전제가 끊긴다.
조합에서 나오는 이름들도 낯익다. 직렬 가능성과 스냅샷 격리는 1980년대와 90년대의 동시성 제어 연구가 다듬어 놓은 눈금이고, 논문은 같은 눈금의 이름 앞에 의미를 붙여 Semantic Read Committed와 Semantic Snapshot Isolation을 세운다. 아래 도식은 왼쪽의 세 보장이 어떻게 오른쪽의 수준으로 이어지는지를 정리한 것이다.
눈금이 생겼다는 사실 자체가 실무에는 더 쓸모 있다. 지금까지 에이전트의 재현성은 있거나 없거나 둘 중 하나로 이야기됐다. 격리 수준이 부분 순서로 정의되면 어디까지 비용을 치를지 고를 수 있게 된다. 사람 승인이 끼는 장시간 실행에는 높은 수준을 걸고, 짧게 끝나는 조회형 작업에는 낮은 수준을 두는 식의 선택이 가능해진다.
공개 저장소 100개를 열어 보니 7.4%가 무방비였다
이론만 있는 논문이었다면 여기서 끝났을 것이다. 저자는 실행 가능한 LangGraph 코드를 담은 스타 상위 100개 공개 저장소를 대상으로 소스 감사를 돌렸다. 판정 기준은 보수적으로 잡았다. 상태를 이어 가는 워크플로우를 쓰면서, 살아 있는 리소스나 실행 중 고르는 의미 리소스를 같은 워크플로우 안에서 참조하는데, 불변 바인딩이 눈에 띄지 않는 경우만 셌다. 그 조건에서 7.4%가 걸렸다.
열세 개 중 하나꼴이다. 스타를 많이 받아 참고 구현으로 복사되는 저장소들이라는 점을 감안하면 숫자보다 파급이 크다. 게다가 보수적 기준이었으므로 실제 노출은 이보다 넓을 여지가 있다.
논문이 이름을 붙이기 전부터 같은 증상은 관측되고 있었다. LangGraph 저장소에 올라온 공개 RFC 하나는 체크포인트를 건널 때 나타나는 행동 드리프트를 다룬다. 에러 없이 특정 어휘가 사라지거나 도구 호출 패턴이 달라지는데 실행 로그만 보면 정상 성공으로 읽힌다는 관찰이다. 논문의 semantic read skew와 사실상 같은 현상을 실무자가 자기 언어로 먼저 불러낸 셈이다.
에이전트가 유독 버전 드리프트에 노출돼 있다는 분석도 같은 시기에 나왔다. 하나의 논리적 스텝이 모델 버전과 프롬프트 텍스트, 도구 스키마, 검색 인덱스, 메모리 스냅샷, 샌드박스 이미지, 정책 규칙에 동시에 매달려 있기 때문이다.
논문이 내놓은 프로토타입 SemIso는 이 보장들을 미들웨어에서 강제한다. 의미 컨텍스트를 하위 실행으로 전파하고, 호환되지 않는 리소스와 분기 병합을 실행 중에 막는다. 검사 비용은 마이크로초 단위로 보고됐다. 재현성을 위해 실행 속도를 크게 내주지 않아도 된다는 뜻이다. 다만 다른 런타임에서도 같은 값이 나오는지는 아직 확인되지 않았다.
무엇을 근거로 판단했는지가 남아 있는가
네 가지 이상 현상은 모두 실행 시점의 리소스 식별자가 남아 있어야 판정된다. 이 조건은 미들웨어의 문제이기 이전에 데이터 쪽의 문제다. 인덱스가 어느 스냅샷이었는지, 임베딩 모델이 어느 버전이었는지, 정책 문서가 몇 차 개정이었는지가 어딘가에 적혀 있지 않으면 미들웨어도 판정할 근거가 없다.
재현되지 않는 실행은 그래서 감사도 디버깅도 되지 않는다. 규제 대응 자리에서 왜 이 결정을 내렸느냐는 질문을 받으면 그 시점의 근거 집합을 다시 세울 수 있어야 하는데, 리소스가 버전 없이 흘러갔다면 되돌릴 좌표가 없다. 사고 원인을 찾는 자리에서도 마찬가지다. 같은 입력을 넣었을 때 같은 답이 나오지 않는다면 무엇을 고쳐야 하는지 확인할 방법이 없다.
데이터를 운영하는 쪽에서 지금 확인할 수 있는 것은 두 가지다.
- • 실행이 시작될 때 무엇을 붙잡았는지 기록되는가. 모델 별칭과 인덱스 스냅샷, 프롬프트 버전, 정책 개정 번호를 실행 로그가 아니라 실행의 전제로 남긴다. 이름이 아니라 그 시점에 이름이 가리키던 대상을 적어야 뒤에 대조할 수 있다.
- • 그 기록이 재개와 위임을 건너서도 따라가는가. 체크포인트에서 되살아난 실행, 서브에이전트에게 넘어간 작업, 병렬 분기가 합쳐지는 지점에서 전제가 끊기면 앞의 기록도 소용이 없다. 계보를 남긴다는 말은 결국 이 세 경계를 건너서도 같은 좌표가 유지된다는 뜻이다.
데이터 버저닝과 계보 관리는 오랫동안 분석 재현과 규제 대응을 위한 장치로 이야기됐다. 사람이 나중에 확인하려고 남기는 기록이었다. 실행 중에 그 기록을 읽고 다음 단계를 막을지 말지 판단하는 주체가 생기면 성격이 달라진다. 있으면 좋은 문서에서 없으면 판정이 불가능한 배관으로 옮겨 간다.
Editor's Note
페블러스가 AI-Ready Data를 이야기할 때 품질과 함께 강조해 온 것이 어떤 데이터가 어떤 판단에 쓰였는지를 남기는 일이다. 이 논문은 그 기록이 사후 감사용이 아니라 실행 중 판정의 입력이 되는 조건을 보여 준다.
참고문헌
학술 논문
- 1.Mozafari, Barzan. (2026). "BEGIN AI TRANSACTION: Semantic Isolation for Durable AI Workflows." arXiv:2608.05412 [cs.DB].
업계 관찰·공개 논의
- 2.langchain-ai/langgraph Issue #7327. "RFC: Observability hook for cross-checkpoint behavioral drift in long-running agents." GitHub.
- 3.Zylos Research. (2026). "Durable Execution for AI Agent Runtimes: Checkpointing, Replay, and Recovery."
- 4.Diagrid. (2026). "Why Checkpoints Aren't Durable Execution."
- 5.arXiv. "cs.DB Recent Submissions." 데이터베이스 분야 최신 논문 목록.