# 18. 전용 GPU 환경 정리 · 운영자 AI 카드

삭제 전 inventory와 실제 종료 상태를 확인하는 운영자 전용 카드입니다.

```ai-prompt
Robot Atlas 18장 정리를 수행하세요.
ISAAC_REPO/workshop/chapters/18-gpu-cleanup.md와 실제 운영 CLI를 먼저 읽으세요.
현재 isaac.py에 없는 cleanup/capacity 명령을 있다고 가정하지 마세요.

범위:
정확히 gpu-cluster-01과 RobotAtlasIsaac, RobotAtlasIsaacAddons,
RobotAtlasIsaacBuild만 정리합니다.
기존 GPU01·Jeju·운영 Fargate·공유 VPC/Subnet/NAT/endpoint·인증서·DNS는 유지합니다.
일반 참가자의 robot-lab app에서 수행하지 마세요.

순서:
1. 신규 operator 제출과 웹의 Isaac 접수를 중지한 상태를 확인합니다.
   현재·실행 중 Fargate task definition은 읽기만 하며 서비스를 중지하지 않습니다.
2. active GPU 작업이 없고 소유 빌드가 종료됐는지 확인합니다.
3. 정확한 stack ID·template hash·자원 목록·Retain 데이터를 inventory에 보관합니다.
4. warm --replicas 0으로 소유 holder를 중지한 뒤 전용 컨트롤러와 완료된 소유 Job을 정리합니다.
5. isaac-sim-spot, 선택한 isaac-sim-ondemand의 NodeClass·소유권·이웃 workload를 검증하고 GPU 노드를 제거합니다.
6. 전용 build·addons를 삭제하고 CPU pool/노드를 제거한 뒤 cluster 스택을 마지막에 삭제합니다.
7. 실제 종료와 보존 데이터·이미지·로그·볼륨·잔여 비용을 기록합니다.

가드:
소유 태그, 고정 계정/VPC, inventory stack ID·template·자원 목록 불일치는 거부합니다.
알 수 없는 Job/pool/workload를 함께 지우지 마세요.
PDB/finalizer 삭제, 강제 전체 drain, EC2 전체 terminate, 전역 Docker prune을 사용하지 마세요.
S3·DynamoDB·ECR의 Retain을 유지하며 데이터 purge를 임의로 수행하지 마세요.
새 정책 제거와 기존 Fargate 역할/서비스 삭제를 혼동하지 마세요.
정리 중 workloads, warm --replicas 1, enable-ondemand 또는 새 submit을 실행하지 마세요.
DNS·계정 전체 visibility·legacy discovery 태그를 변경하지 마세요.

관리형 EC2가 기본 목록에서 안 보일 수 있으므로 저장한 NodeClaim/providerID의
특정 instance ID로 종료를 확인하세요. 빈 목록을 비용 0의 증거로 삼지 마세요.
삭제한 정확한 자원·최종 상태·보존 항목·미완료 정리와 다음 확인 시각을 보고하세요.
```
