패치 동작과 복구
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가 있습니다. 해시는 관측한 파일을 설명하며 저장소 커밋이나 빌드 성공을 뜻하지 않습니다. 같은 files와 changes가 패치 원장에 저장되며 operation_status가 kind: "patch"와 minted/finished 이벤트와 함께 반환합니다. 명령 실행은 이 원장에 기록되지 않습니다.
쓰기 점유와 전송
명령 하나가 실행 중이면 같은 작업 공간의 다른 패치·명령은 WORKSPACE_BUSY로 거부됩니다. 대기 큐는 없습니다. 읽기와 검색은 가능합니다. 패치 작업 키는 저장된 요청과 인자가 일치할 때만 이전 결과를 재사용합니다. 응답이 불확실한 상태에서 새 키를 선택하면 변경을 중복 적용할 수 있습니다.
stdio와 Streamable HTTP의 도구 스키마는 같습니다. 연결 실패만으로 변경 작업이 실행되었는지 판단할 수 없습니다. 오류 코드와 복구 규칙을 참고하세요.