요약
dpt init은 dpt.json을 먼저 기록한 뒤 tests/, .dpt/, .dpt/.gitignore를 생성합니다. 후속 단계가 실패하면 앞서 생성한 상태를 rollback하지 않아 재실행이 막힙니다.
- 검토 기준:
main@4e87765f95c106edb3c956cfad2abc1db64c0c39
- 판정: CONFIRMED
- 우선순위: P2
영향
초기화가 실패했는데도 dpt.json이 남습니다. 원인을 해결해도 다음 dpt init은 “이미 설정 파일이 있습니다”로 실패합니다.
발생 조건 및 확인 범위
tests 경로에 일반 파일을 만든 fixture에서 다음을 확인했습니다.
- 첫
init이 tests 생성 단계에서 실패합니다.
- 먼저 작성된
dpt.json은 남습니다.
- 두 번째
init은 기존 설정 파일 때문에 즉시 실패합니다.
같은 순서상 .dpt 생성 또는 .gitignore 기록 실패에서도 부분 상태가 남을 수 있습니다.
재현 및 검증 방법
mkdir /tmp/dpt-init-repro
cd /tmp/dpt-init-repro
printf '%s\n' '{"pack":{"description":"repro","pack_format":71}}' > pack.mcmeta
touch tests
dpt init --pack .
test -f dpt.json
dpt init --pack .
기대 동작
init 실패 시 실행 전 상태로 rollback하거나, 실패 가능한 검증과 디렉터리 준비를 먼저 마친 뒤 설정 파일을 마지막에 원자적으로 commit해야 합니다.
완료 조건
관련 코드
요약
dpt init은dpt.json을 먼저 기록한 뒤tests/,.dpt/,.dpt/.gitignore를 생성합니다. 후속 단계가 실패하면 앞서 생성한 상태를 rollback하지 않아 재실행이 막힙니다.main@4e87765f95c106edb3c956cfad2abc1db64c0c39영향
초기화가 실패했는데도
dpt.json이 남습니다. 원인을 해결해도 다음dpt init은 “이미 설정 파일이 있습니다”로 실패합니다.발생 조건 및 확인 범위
tests경로에 일반 파일을 만든 fixture에서 다음을 확인했습니다.init이tests생성 단계에서 실패합니다.dpt.json은 남습니다.init은 기존 설정 파일 때문에 즉시 실패합니다.같은 순서상
.dpt생성 또는.gitignore기록 실패에서도 부분 상태가 남을 수 있습니다.재현 및 검증 방법
기대 동작
init실패 시 실행 전 상태로 rollback하거나, 실패 가능한 검증과 디렉터리 준비를 먼저 마친 뒤 설정 파일을 마지막에 원자적으로 commit해야 합니다.완료 조건
tests충돌 시dpt.json을 남기지 않는다..dpt충돌 및.gitignore기록 실패에서도 부분 상태를 남기지 않는다.tests/내용은 보존한다.관련 코드
runInitconfig.Write