본문으로 건너뛰기
문서

패치 동작과 복구

CodeSpace는 Codex V4A 패치를 받으며 고정된 라이브러리를 호출하기 전에 작업 공간 규칙을 적용합니다. 라이브러리가 지원하는 옵션이 곧 서비스에서 허용하는 동작은 아닙니다.

패치 요청 계약

상대 경로와 read가 반환한 버전을 사용합니다. absent는 대상 파일이 없어야 한다는 뜻입니다. 이동 전 파일 상태를 확인하려면 원본과 대상 경로의 예상 버전을 모두 지정하세요. 사전 검증·적용 예시에서 서로 다른 두 요청에 작업 키를 어떻게 사용하는지 설명합니다.

규칙CodeSpace 동작
경로등록 루트 안에서 해석하며 절대 경로와 범위 이탈 거부
심볼릭 링크·특수 파일심볼릭 링크 경로와 장치·소켓·FIFO 거부
추가·이동 대상이 이미 존재기존 대상을 덮어쓰지 않고 거부
줄바꿈Codex의 PreserveLineEndings 사용. 선택된 동작 일치 사례를 테스트
패치 형식V4A만 지원. unified diff 자동 변환이나 git apply 대체 실행 없음
사전 검증check_only: true로 파일을 쓰지 않고 검사. 예약이나 이후 적용 성공 보장은 아님

결과와 복구 한계

상태의미와 다음 행동
checked사전 검증 성공. 실제 적용에는 새 작업 키 사용
applied적용 후 디스크 해시가 도우미가 보고한 값과 일치
rejected요청 거부 또는 오류 기록. 오류 내용과 실행이 이미 시작되었는지 확인
failed_rolled_back도우미 적용 실패 후 스냅샷 복원 완료로 보고됨
failed_partial도우미 적용 실패 후 복원이 불완전함. 파일 확인 필요
unknown최종 결과를 알 수 없음. 재시도 전에 파일과 기록 확인

Runner는 대상 파일을 스냅샷으로 저장하고 도우미의 적용 호출이 실패하면 복원합니다. 그러나 도우미가 성공 응답을 보낸 뒤 검증에서 오류가 발생하면 현재는 복원 전에 반환됩니다. 게이트웨이는 파일이 변경되었어도 그 오류를 rejected로 기록할 수 있습니다. 모든 거부 결과를 파일 변경이 없었다는 증거로 해석하지 마세요. 비정상 종료 후에도 자동 스냅샷 복원이나 작업 재실행은 하지 않습니다. git reset --hard는 사용하지 않습니다.

성공 결과에는 영향을 받은 files와 변경 종류·확인 가능한 전후 해시를 담은 changes가 있습니다. 해시는 관측한 파일을 설명하며 저장소 커밋이나 빌드 성공을 뜻하지 않습니다. 같은 fileschanges가 패치 원장에 저장되며 operation_statuskind: "patch"minted/finished 이벤트와 함께 반환합니다. 명령 실행은 이 원장에 기록되지 않습니다.

쓰기 점유와 전송

명령 하나가 실행 중이면 같은 작업 공간의 다른 패치·명령은 WORKSPACE_BUSY로 거부됩니다. 대기 큐는 없습니다. 읽기와 검색은 가능합니다. 패치 작업 키는 저장된 요청과 인자가 일치할 때만 이전 결과를 재사용합니다. 응답이 불확실한 상태에서 새 키를 선택하면 변경을 중복 적용할 수 있습니다.

stdio와 Streamable HTTP의 도구 스키마는 같습니다. 연결 실패만으로 변경 작업이 실행되었는지 판단할 수 없습니다. 오류 코드복구 규칙을 참고하세요.