| 발행처 오리진 | 아바타 로드 시 origin 거부/404 | Supabase Storage avatars(공개) 만 — R2·타 CDN은 로더 화이트리스트(*.supabase.co) 밖 |
_project_base_url | parts webp 404(페이지 오리진에 붙음) | 발행 시 빈 문자열. 로더 `base |
| 업로드 키 오리진 | Storage RLS vs 엣지 검증 불일치 | 키 = <authUid>/uploads/<uuid>.png (auth.uid()). 엣지 isSafeObjectKey(key, authId, ["uploads"]) — users.id 아님 |
| Modal 인풋 취소 | 로컬 런처 kill이 원격 취소 | 웹엔드포인트는 .spawn()(비동기)이라 무관. CLI 경로는 [[autorig-upload-e2e]] nohup+disown |
| 프리셋 이름 충돌 | 구본 mimi와 신본 동명 | 매니페스트 name 구분(예: "미미(서버본)"). 최종 승격 시 avatars/mimi/ 덮어써 캐논화 |
| 볼륨 스테일 발행 실패 | finishing에서 character.json 없음(볼륨엔 실존) — 오케스트레이터 컨테이너가 spawn 시점 뷰라 build_rig 커밋이 안 보임 | _publish_avatar 선두 jobs.reload()(2026-07-11 반영) + 발행 3회 재시도. 스테이지 함수의 reload 패턴을 볼륨 읽는 모든 지점에 |
| 발행 실패 = $2 증발 아님 | status=failed지만 jobs/<exp>/rig 완성본 생존 | 구조: modal volume get(⚠️ 목적지 동명 폴더 있으면 Errno 21) → bake_storage_avatar.py → ChatterBox scripts/publish-avatar-job.mjs <jobId> <pubDir>(검증+업로드+done PATCH) |
| 에러 원문 사용자 노출 | 30분 기다린 유저가 파이썬 트레이스백을 봄 | 원문은 avatar_jobs.error(진단용)에만 — CB UI는 일반 안내(atelier.commissionFailedHint, 2026-07-11) |
| 형제 키폼 소실(닫힌 입만 얼굴서 분리) | 라이브 머리회전 시 닫힌 입만 제자리에 붙박여 위로 떠 보이고 열면 그 아래서 열림 — 정면 정지 렌더·bbox·잉크선 분석 전부 정상인 은닉 결함(306592e7: mouth_closed_master AngleY@-30만 0, 형제는 ~95px) | 원인=증류가 얇은 파트의 특정 각도 키를 delta 0으로 남김(flow 신뢰 0/피팅 실패). distill_tha3_rotation.repair_sibling_dropout()이 형제 affine 피팅으로 자동수복(잔차≈0) + scan_rig_health "형제 키폼 소실" FAIL 게이트. 기발행 리그는 같은 피팅으로 로컬 패치→재발행 |
| 재발행이 유저에게 안 닿음 | 수정 재발행 후에도 유저는 구본 — ①같은 generated_at 재발행이면 CDN/파츠캐시가 "안 바뀜" 취급 ②project.json 은 max-age=3600 브라우저 캐시(하드 리프레시도 앱의 로드후 fetch 엔 무효) ③캐시버스트 쿼리 검증은 원본만 봐서 "발행됨" 오판 | generated_at 반드시 범프 + publish-avatar-job.mjs/deploy-avatar.mjs의 내용 rev 대조·맨 URL 전파 확인 사용. CB 로더는 project.json cache:'no-cache' 재검증(2026-07-11 수정, 프론트 배포 필요) |
| 웜 컨테이너 볼륨 스테일(일반형) | 스테이지 함수가 시작부 jobs.reload() 없이 /vol 읽으면 웜 재사용 시 이전 잡 시점 뷰 — "입력 없음"류 즉사 | /vol 읽는 모든 함수 시작부에 reload — 2026-07-11 감사에서 seethrough_decompose 누락분 보수. 신규 스테이지 추가 시 체크리스트 |