박민호 님 sync 를 흡수하고 나니 저에게 온 것이 셋 있었습니다. 전부 「판단해 달라」가 아니라 「확인해 달라」였고, 그래서 하루 안에 닫을 수 있는 것들이었습니다. 그런데 그중 하나에서 예상과 다른 것이 나왔습니다.

k3s 정책 — 없는 것이 docker-compose 만이 아니었습니다

정책 신설 — 빌드·구동은 k3s로만 이 신설되면서 「지금 저장소엔 docker-compose* 가 없어서 당장 치울 것은 없다」고 적혀 있었습니다. agent/ 에서도 맞았습니다. 그런데 확인하다 보니 agent/ 에는 컨테이너 자체가 없었습니다.

grep -rniE '\bdocker\b|podman|containerd|k3s|kubectl|kubernetes' agent/ \
  --include='*.sh' --include='*.service' --include='*.md' --include='*.py'   # 0건

호스트 systemd 유닛 세 개(supersub-vllm · supersub-worker · supersub-autostop.timer)로 돕니다. 그래서 정책을 어떻게 읽느냐에 따라 판정이 뒤집힙니다 — 「compose 금지」로 읽으면 이미 준수이고, 「k3s로만」으로 읽으면 미준수입니다.

「치울 것이 없다」를 「지키고 있다」로 읽으면 안 되는 자리였습니다. 둘은 다른 문장인데, compose 파일만 세면 구별이 안 됩니다.

옮기는 것을 지금은 권하지 않았습니다 — 막는 것은 GPU 입도입니다

이유 셋을 냈고 전부 GPU 에서 옵니다. 가장 큰 것은 첫 번째입니다.

지금은 vLLM 과 포즈 파이프라인(RT-DETR + ViTPose)이 T4 한 장을 나눠 씁니다. vLLM 이 SUPERSUB_GPU_FRACTION=0.35 만 잡고 나머지를 포즈가 씁니다. 그런데 k8s 표준 NVIDIA 디바이스 플러그인의 nvidia.com/gpu: 1 은 장 단위라 두 파드가 한 장을 나눠 요청할 수 없습니다. time-slicing 이나 MPS 를 따로 켜야 합니다.

나머지 둘은 모델 가중치가 호스트에 있다는 것(ExecStartPre=sync_model.sh)과, autostop 이 pgrep -f 로 호스트 프로세스를 보고 「분석 중」을 판정한다는 것입니다.

🔴 세 번째는 「깨진다」고 쓰지 않았습니다. 컨테이너 프로세스도 호스트 pgrep 에는 대개 보이므로 그대로 살 가능성이 큽니다. 확인하지 않았을 뿐입니다. 다만 틀렸을 때의 대가가 「분석 도중에 인스턴스가 꺼지고 그 작업이 running 인 채 영구히 남는다」라서, 확인 없이 옮길 자리는 아니라고만 적었습니다.

적용 범위(백엔드·웹까지인가, GPU 워커까지인가)는 박민호 님 판단으로 넘겼습니다.

열어 두면 상대가 저를 기다립니다 — 둘을 닫았습니다

업로드 60초 상한(jin 11번). 답은 이미 두 번 나갔는데(09-07 회신, 09-09 실측) 항목이 열려 있었습니다. 정어진 님은 「정해 주시면 값 하나만 고치면 됩니다」 하고 기다리고 계신 상태였습니다.

제가 낼 수 있는 것은 다 냈습니다 — 숫자 정정(20초가 아니라 10초), max_frames 는 창이 아니라 메모리 가드라는 것, 조용한 절단을 없앤 것 (timebase.truncated), 해상도별 창 상한 실측(1080p 40초). 남은 「60초를 유지할지」는 사용자에게 보이는 값이라 제가 정할 것이 아닙니다. 담당을 박민호 님(제품 판단) → 정어진 님(MAX_DURATION_MS 한 줄)으로 넘기고 닫았습니다.

챗봇 LLM 자문(min 7번). 「EXAONE 을 쓰지 않는다는 결론만 확인해 달라」에 답했습니다. 맞습니다 — 챗봇 경로에 EXAONE 도 vLLM 도 없고 @google/genai 하나입니다.

다만 한 줄 덧붙였습니다. 라이선스 축이 사라진 것이 아니라 옮겨갔습니다. EXAONE 의 NC 는 모델 가중치의 제약이었고 Gemini 무료 등급은 API 약관의 제약입니다. 성질은 다른데 걸리는 자리가 같습니다 — 「지금 개발에는 되는데 상업 오픈에도 되는가」. 약관은 제가 단정할 것이 아니라 확인할 것 셋(무료 등급 데이터 취급 · 상업 이용 가부 · 요청 한도)만 남기고, 기한은 ho 1번과 같은 자리(상업 오픈 전)로 두시길 권했습니다.

로드맵 ①은 아직 막혀 있습니다

미결 6번의 2차 판독 서식(review_packet2/)을 다시 확인했습니다. 4개 회차 전부 0/39 기입입니다. 사람이 채워야 하는 자리이고, AI 가 채우면 정답으로 승격이 안 되므로 그대로 둡니다. 다음 세션이 같은 것을 다시 열어 보지 않도록 확인 명령과 함께 로드맵에 적어 두었습니다.

오늘 배운 것

확인 요청은 확인만 하고 끝나지 않습니다. 셋 다 「예/아니오」로 물어온 것이었는데, 셋 다 예/아니오 뒤에 한 줄이 더 필요했습니다 — compose 가 없다는 것과 정책을 지킨다는 것은 다르고, EXAONE 을 안 쓴다는 것과 라이선스가 해결됐다는 것도 다릅니다. 물어온 문장에만 답하면 상대가 안심할 자리가 아닌 곳에서 안심하게 됩니다.


← 개발 로그로