요약
오래된 run 탐지는 .dpt/runs/<run> 디렉터리 자체의 mtime만 확인합니다. 기존 server.log에 새 로그를 써도 부모 run 디렉터리 mtime은 갱신되지 않아 장기 실행 세션이 stale로 분류될 수 있습니다.
- 검토 기준:
main@4e87765f95c106edb3c956cfad2abc1db64c0c39
- 판정: 판별과 fixture 삭제 CONFIRMED, 실제 장기 세션 피해는 CONDITIONAL
- 우선순위: P3
영향
활동 중인 run이 dpt clean 또는 대화형 cleanup 대상에 포함될 수 있습니다. 사용자가 승인하거나 --yes를 사용하면 삭제됩니다.
발생 조건 및 확인 범위
다음 조건이 모두 필요합니다.
- 세션이 7일 이상 실행 중일 것
- run 루트의 다른 디렉터리 엔트리 변경이 없을 것
- 별도 cleanup이 실행될 것
- 사용자가 삭제를 승인하거나
--yes를 사용할 것
doctor는 경고만 하고 직접 삭제하지 않습니다.
재현 및 검증 방법
.dpt/runs/active/server.log를 만듭니다.
active 디렉터리 mtime을 8일 전으로 설정합니다.
server.log mtime만 현재 시각으로 갱신합니다.
FindArtifacts(root, 7일, now)를 호출합니다.
- 현재 active run이 stale로 반환되는지 확인합니다.
clean --yes fixture에서 fresh log가 있는 run도 삭제되는지 확인합니다.
기대 동작
활동 중인 run은 생성 시각만으로 stale 처리하지 않아야 합니다. active lock/PID/lease, heartbeat, 하위 파일 최신 시각 또는 삭제 직전 liveness 재검증이 필요합니다.
완료 조건
관련 코드
요약
오래된 run 탐지는
.dpt/runs/<run>디렉터리 자체의 mtime만 확인합니다. 기존server.log에 새 로그를 써도 부모 run 디렉터리 mtime은 갱신되지 않아 장기 실행 세션이 stale로 분류될 수 있습니다.main@4e87765f95c106edb3c956cfad2abc1db64c0c39영향
활동 중인 run이
dpt clean또는 대화형 cleanup 대상에 포함될 수 있습니다. 사용자가 승인하거나--yes를 사용하면 삭제됩니다.발생 조건 및 확인 범위
다음 조건이 모두 필요합니다.
--yes를 사용할 것doctor는 경고만 하고 직접 삭제하지 않습니다.재현 및 검증 방법
.dpt/runs/active/server.log를 만듭니다.active디렉터리 mtime을 8일 전으로 설정합니다.server.logmtime만 현재 시각으로 갱신합니다.FindArtifacts(root, 7일, now)를 호출합니다.clean --yesfixture에서 fresh log가 있는 run도 삭제되는지 확인합니다.기대 동작
활동 중인 run은 생성 시각만으로 stale 처리하지 않아야 합니다. active lock/PID/lease, heartbeat, 하위 파일 최신 시각 또는 삭제 직전 liveness 재검증이 필요합니다.
완료 조건
server.log를 stale로 반환하지 않는다.clean --yes가 동일한 안전 정책을 사용한다.관련 코드
FindArtifactsRemoveArtifactsrunClean