/Users/manta/Documents/Projects/TheRoad-I1/backend/app/api/v1/prompts.py:19: UserWarning: Field name "schema_json" in "PromptCreate" shadows an attribute in parent "BaseModel" class PromptCreate(BaseModel): /Users/manta/Documents/Projects/TheRoad-I1/backend/app/api/v1/prompts.py:27: UserWarning: Field name "schema_json" in "PromptUpdate" shadows an attribute in parent "BaseModel" class PromptUpdate(BaseModel): INFO: Started server process [36963] INFO: Waiting for application startup. {"timestamp": "2026-08-25T18:17:29.471351+00:00", "level": "WARNING", "logger": "app.main", "message": "SECURITY: insecure default credentials in use — DEFAULT_ADMIN_PASSWORD, DEFAULT_CREATOR_PASSWORD. Override via env vars before exposing this server."} {"timestamp": "2026-08-25T18:17:29.688507+00:00", "level": "WARNING", "logger": "app.main", "message": "Recovered 1 stale pipeline progress entries on startup"} {"timestamp": "2026-08-25T18:17:29.691821+00:00", "level": "INFO", "logger": "app.core.step_lock", "message": "스텝 락 하트비트 시작 (간격=30s, boot_id=798efe6e)"} INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) INFO: 127.0.0.1:63785 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:63797 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:63800 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK {"timestamp": "2026-08-25T18:17:51.358848+00:00", "level": "INFO", "logger": "app.modules.llm.gemini_key_pool", "message": "Gemini key pool: 2 key(s) loaded"} INFO: 127.0.0.1:63803 - "GET /api/v1/health HTTP/1.1" 200 OK INFO: 127.0.0.1:63816 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:63818 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:63821 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:63823 - "POST /api/v1/auth/login HTTP/1.1" 200 OK INFO: 127.0.0.1:63825 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps/locks HTTP/1.1" 200 OK INFO: 127.0.0.1:63830 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK {"timestamp": "2026-08-25T18:18:36.798401+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913:8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9:scene_image_pipeline (Step scene_image_pipeline for 8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9)"} INFO: 127.0.0.1:63834 - "POST /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps/scene_image_pipeline?mode=resume HTTP/1.1" 200 OK {"timestamp": "2026-08-25T18:18:36.806978+00:00", "level": "WARNING", "logger": "app.core.step_runner", "message": "[STALE_RUNNING] step=scene_image_pipeline atomic steal succeeded (expected_started_at=2026-08-25T16:56:36.465271+00:00, expected_run_id=dce12aeb-e7a7-412f-91bc-06aaa907b8a0, new_run_id=7dc268d8-8ab8-4264-9223-4e78f6fa8fdb)"} {"timestamp": "2026-08-25T18:18:36.808592+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step scene_image_pipeline started (run_id=7dc268d8-8ab8-4264-9223-4e78f6fa8fdb, model=mixed)"} OPIK: Started logging traces to the "theroad-scene-lab" project at http://192.168.133.87:5173/api/v1/session/redirect/projects/?trace_id=06a8ddc7-ccf2-7fec-b585-b7281d97814d&path=aHR0cDovLzE5Mi4xNjguMTMzLjg3OjUxNzMvYXBp. {"timestamp": "2026-08-25T18:18:36.841099+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.entity_sync_service", "message": "Synced 7 entities to DB from checkpoint (upsert); removed 0 stale links"} {"timestamp": "2026-08-25T18:18:36.853649+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 17 scene_stills (shot-based) to DB"} {"timestamp": "2026-08-25T18:18:36.854885+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-08-25T18:18:36.855899+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-08-25T18:18:36.866057+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.outlook_sync_service", "message": "Synced 3 outlooks + 3 character-outlook links (Δ +0 / -0)"} {"timestamp": "2026-08-25T18:18:36.871434+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 9 total short_ids found"} {"timestamp": "2026-08-25T18:18:36.873554+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode 8750a231, step=-, repaired=0)"} {"timestamp": "2026-08-25T18:18:36.896319+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.entity_sync_service", "message": "Synced 7 entities to DB from checkpoint (upsert); removed 0 stale links"} {"timestamp": "2026-08-25T18:18:36.903609+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 17 scene_stills (shot-based) to DB"} {"timestamp": "2026-08-25T18:18:36.904654+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-08-25T18:18:36.905531+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-08-25T18:18:36.912703+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.outlook_sync_service", "message": "Synced 3 outlooks + 3 character-outlook links (Δ +0 / -0)"} {"timestamp": "2026-08-25T18:18:36.916200+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 9 total short_ids found"} {"timestamp": "2026-08-25T18:18:36.917565+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode 8750a231, step=-, repaired=0)"} {"timestamp": "2026-08-25T18:18:36.937289+00:00", "level": "INFO", "logger": "app.core.asset_readiness", "message": "AssetReadiness OK: AssetReadiness episode=8750a231: expected=8 registered=8 disk=8 missing=0"} {"timestamp": "2026-08-25T18:18:36.938269+00:00", "level": "INFO", "logger": "app.modules.image_checkpoint", "message": "Checkpoint loaded: scene — 6 completed, 0 failed"} {"timestamp": "2026-08-25T18:18:36.963753+00:00", "level": "INFO", "logger": "app.services.scene_reference_service", "message": "Loaded 7 existing reference images for 10 entities"} {"timestamp": "2026-08-25T18:18:36.963816+00:00", "level": "INFO", "logger": "app.services.scene_validation_service", "message": "Skipping legacy scene image validation — scene_lvm_validation_mode=off (LVM 2 disabled by cost policy; only mode='full' enables it)."} {"timestamp": "2026-08-25T18:18:36.975064+00:00", "level": "INFO", "logger": "app.services.scene_reference_service", "message": "Loaded outfit + composite + state_variant refs into scene_ref_image_map"} {"timestamp": "2026-08-25T18:18:36.977093+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe: 운영자 선언 무콘티 예외 2샷 — BGFIRST 대상 제외 후 기존 경로 생성: ['S11sh1', 'S75sh7']"} {"timestamp": "2026-08-25T18:18:36.991435+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S1sh2: confined fp 판별 제외 — 자전거 정비소 내부는 조종실이나 차량 내부처럼 인물이나 제어 장치의 배치가 엄격하게 중요한 공간이 아니며, 단순한 실내 공간이므로 평면도 보조가"} {"timestamp": "2026-08-25T18:18:37.034075+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S1sh4: confined fp 판별 제외 — 이 공간은 차량 조종석이나 통제실과 같이 복잡한 기기 및 좌석 배치가 중요한 공간이 아니며, 단순한 자전거 수리 작업실 내부에서 두 인물이 마주"} INFO: 127.0.0.1:63844 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:63853 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps/locks HTTP/1.1" 200 OK INFO: 127.0.0.1:63855 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:63867 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:63874 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/00000000-0000-0000-0000-0000deadbeef/steps/locks HTTP/1.1" 200 OK INFO: 127.0.0.1:63878 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK WARNING: Invalid HTTP request received. WARNING: Invalid HTTP request received. INFO: 127.0.0.1:63890 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:63896 - "POST /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/00000000-0000-0000-0000-0000deadbeef/steps/locks/scene_image_pipeline/release?expected_run_id=wrong-value HTTP/1.1" 409 Conflict INFO: 127.0.0.1:63901 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK {"timestamp": "2026-08-25T18:19:33.061547+00:00", "level": "WARNING", "logger": "app.api.v1.steps", "message": "[LOCK-RELEASE] step=scene_image_pipeline released=True — manual release by 8f23bd46-3c9c-4c3a-9ef6-15f46c575409 (verdict=dead, force=False, revoked_run_id=run-of-dead-process): 락 수리 검증"} INFO: 127.0.0.1:63904 - "POST /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/00000000-0000-0000-0000-0000deadbeef/steps/locks/scene_image_pipeline/release?expected_run_id=run-of-dead-process&reason=%eb%9d%bd+%ec%88%98%eb%a6%ac+%ea%b2%80%ec%a6%9d HTTP/1.1" 200 OK INFO: 127.0.0.1:63911 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:63915 - "POST /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps/locks/scene_image_pipeline/release?expected_run_id=7dc268d8-8ab8-4264-9223-4e78f6fa8fdb HTTP/1.1" 409 Conflict INFO: 127.0.0.1:63924 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:63946 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK {"timestamp": "2026-08-25T18:20:02.617649+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "Opik usage 에 캐시 항목 기록 켬 (create_usage_object 래핑)"} {"timestamp": "2026-08-25T18:20:02.617723+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "Opik callback enabled (project: theroad-scene-lab, url: http://192.168.133.87:5173/api, cache_wiring=ok)"} 03:20:02 - LiteLLM Router:INFO: router.py:812 - Routing strategy: simple-shuffle {"timestamp": "2026-08-25T18:20:02.643395+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "Routing strategy: simple-shuffle"} {"timestamp": "2026-08-25T18:20:02.643771+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "LiteLLM Router initialized: 16 deployments (2 Gemini keys, OpenAI=True slot=primary/2)"} 03:20:02 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-25T18:20:02.659292+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 03:20:07 - LiteLLM Router:INFO: router.py:1570 - litellm.completion(model=openai/gpt-5.6-sol) Exception litellm.RateLimitError: RateLimitError: OpenAIException - You have no credits remaining. Add credits to continue using the API at https://platform.openai.com/settings/organization/billing/. {"timestamp": "2026-08-25T18:20:07.102667+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[31m Exception litellm.RateLimitError: RateLimitError: OpenAIException - You have no credits remaining. Add credits to continue using the API at https://platform.openai.com/settings/organization/billing/.\u001b[0m"} INFO: 127.0.0.1:63962 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:20:12 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-25T18:20:12.510272+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 03:20:15 - LiteLLM Router:INFO: router.py:1570 - litellm.completion(model=openai/gpt-5.6-sol) Exception litellm.RateLimitError: RateLimitError: OpenAIException - You have no credits remaining. Add credits to continue using the API at https://platform.openai.com/settings/organization/billing/. {"timestamp": "2026-08-25T18:20:15.771183+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[31m Exception litellm.RateLimitError: RateLimitError: OpenAIException - You have no credits remaining. Add credits to continue using the API at https://platform.openai.com/settings/organization/billing/.\u001b[0m"} INFO: 127.0.0.1:63970 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:20:21 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-25T18:20:21.263695+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 03:20:24 - LiteLLM Router:INFO: router.py:1570 - litellm.completion(model=openai/gpt-5.6-sol) Exception litellm.RateLimitError: RateLimitError: OpenAIException - You have no credits remaining. Add credits to continue using the API at https://platform.openai.com/settings/organization/billing/. {"timestamp": "2026-08-25T18:20:24.509939+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[31m Exception litellm.RateLimitError: RateLimitError: OpenAIException - You have no credits remaining. Add credits to continue using the API at https://platform.openai.com/settings/organization/billing/.\u001b[0m"} 03:20:29 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-25T18:20:29.937058+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} INFO: 127.0.0.1:63979 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:20:32 - LiteLLM Router:INFO: router.py:1570 - litellm.completion(model=openai/gpt-5.6-sol) Exception litellm.RateLimitError: RateLimitError: OpenAIException - You have no credits remaining. Add credits to continue using the API at https://platform.openai.com/settings/organization/billing/. {"timestamp": "2026-08-25T18:20:32.923269+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[31m Exception litellm.RateLimitError: RateLimitError: OpenAIException - You have no credits remaining. Add credits to continue using the API at https://platform.openai.com/settings/organization/billing/.\u001b[0m"} 03:20:38 - LiteLLM Router:INFO: router.py:5437 - Trying to fallback b/w models {"timestamp": "2026-08-25T18:20:38.279078+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "Trying to fallback b/w models"} {"timestamp": "2026-08-25T18:20:38.279310+00:00", "level": "WARNING", "logger": "app.core.openai_keys", "message": "OpenAI 키 전환: primary → secondary (사유=429 · 지점=router.completion[gpt]). 이 프로세스는 이후 secondary 슬롯을 쓴다."} {"timestamp": "2026-08-25T18:20:38.279370+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "LiteLLM Router 무효화 — OpenAI 키 슬롯 전환 반영"} 03:20:38 - LiteLLM Router:INFO: router.py:812 - Routing strategy: simple-shuffle {"timestamp": "2026-08-25T18:20:38.287010+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "Routing strategy: simple-shuffle"} {"timestamp": "2026-08-25T18:20:38.287474+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "LiteLLM Router initialized: 16 deployments (2 Gemini keys, OpenAI=True slot=secondary/2)"} 03:20:38 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-25T18:20:38.288731+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} INFO: 127.0.0.1:63995 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64001 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64009 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:21:04 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-25T18:21:04.439302+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 03:21:04 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-25T18:21:04.461722+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[32m 200 OK\u001b[0m"} 03:21:04 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-25T18:21:04.479786+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} INFO: 127.0.0.1:64019 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64028 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:21:22 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-25T18:21:22.707458+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 03:21:22 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-25T18:21:22.735064+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-08-25T18:21:22.755011+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe S2sh1: JIT 검증 — 입력이 낡아 재생성 (1/300)"} {"timestamp": "2026-08-25T18:21:22.780360+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S2sh1: 완료 (selected=B, fix=False)"} {"timestamp": "2026-08-25T18:21:22.788616+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S2sh3: 노인(C03) pose-locked by prev S2sh1 — 캐릭터 참조 제외"} {"timestamp": "2026-08-25T18:21:22.799473+00:00", "level": "INFO", "logger": "app.modules.pipeline.cine_transform", "message": "cine_transform S2sh3: 불변축을 바꿔 기각한 변환 — 원본 유지, 호출 없음 (axis_drift:objects)"} {"timestamp": "2026-08-25T18:21:22.799587+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe S2sh3: 변환이 불변축을 바꿔 기각 — 원본을 최종본으로 확정 (axis_drift:objects)"} {"timestamp": "2026-08-25T18:21:22.812410+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S2sh6: 노인(C03) pose-locked by prev S2sh3 — 캐릭터 참조 제외"} {"timestamp": "2026-08-25T18:21:22.820955+00:00", "level": "INFO", "logger": "app.modules.pipeline.cine_transform", "message": "cine_transform S2sh6: 불변축을 바꿔 기각한 변환 — 원본 유지, 호출 없음 (axis_drift:people,objects,light_source)"} {"timestamp": "2026-08-25T18:21:22.821262+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe S2sh6: 변환이 불변축을 바꿔 기각 — 원본을 최종본으로 확정 (axis_drift:people,objects,light_source)"} {"timestamp": "2026-08-25T18:21:22.831820+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S3sh1: confined fp 판별 제외 — 이 장소는 자전거 수리점 내부로, 차량 운전석이나 조종실과 같이 복잡한 제어 장치가 있는 공간이 아니며, 인물들의 위치나 방향성이 이야기 전개에"} {"timestamp": "2026-08-25T18:21:22.867397+00:00", "level": "INFO", "logger": "app.modules.pipeline.cine_transform", "message": "cine_transform S3sh1: 불변축을 바꿔 기각한 변환 — 원본 유지, 호출 없음 (axis_drift:place,people,objects,light_source)"} {"timestamp": "2026-08-25T18:21:22.867509+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe S3sh1: 변환이 불변축을 바꿔 기각 — 원본을 최종본으로 확정 (axis_drift:place,people,objects,light_source)"} {"timestamp": "2026-08-25T18:21:22.876369+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S3sh2: confined fp 판별 제외 — 이 숏은 조종실이나 차량 내부처럼 좌석 배치나 통제 장치 위치가 중요한 공간이 아니며, 단순히 자전거 수리점 문가에서 밖을 바라보는 장면이므로 "} 03:21:22 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-08-25T18:21:22.919444+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:64040 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64045 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64055 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64072 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:22:05 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-25T18:22:05.765121+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 03:22:05 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-08-25T18:22:05.774590+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:64080 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64086 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64104 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64113 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64122 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64131 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64138 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64143 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64150 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64166 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64173 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64188 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64201 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64209 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:24:26 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-08-25T18:24:26.559626+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:64218 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64224 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64230 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64238 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64253 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64259 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64267 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:25:38 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-25T18:25:38.642412+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 03:25:38 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-08-25T18:25:38.651916+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:64273 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK {"timestamp": "2026-08-25T18:25:51.140897+00:00", "level": "INFO", "logger": "app.modules.llm.image_format", "message": "ensure_png_bytes: JPEG → PNG 정규화 (290601 → 1066372 bytes) [x-ai/grok-imagine-image-2.0/still_recipe_roll]"} 03:25:51 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-08-25T18:25:51.155030+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:64283 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64293 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64310 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64323 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64330 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64339 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:26:47 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-25T18:26:47.220541+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 03:26:47 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-08-25T18:26:47.223081+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:64353 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64362 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64369 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64374 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64382 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64388 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64396 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64404 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64421 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64427 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64435 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64440 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64449 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64458 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64466 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64472 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64482 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64487 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64506 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64513 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64537 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64542 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64550 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64555 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64565 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64573 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64582 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:31:13 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-08-25T18:31:13.106234+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:64593 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64606 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64611 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64622 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64632 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:32:09 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-25T18:32:09.096906+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 03:32:09 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-08-25T18:32:09.109386+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:64649 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64655 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64664 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64669 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64686 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64694 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64701 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64706 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64716 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64723 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64731 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64740 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64754 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64763 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64772 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64777 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64786 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64797 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64812 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK {"timestamp": "2026-08-25T18:35:22.619433+00:00", "level": "WARNING", "logger": "app.modules.pipeline.multiroll_select", "message": "multiroll_select[still_S3sh2]: fix-rejudge — 수정본 개악 판정, 선정 원본(A) 유지"} INFO: 127.0.0.1:64822 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:35:26 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-25T18:35:26.388006+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} INFO: 127.0.0.1:64830 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64835 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:35:46 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-25T18:35:46.550856+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 03:35:46 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-25T18:35:46.582802+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[32m 200 OK\u001b[0m"} 03:35:46 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-25T18:35:46.605496+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} INFO: 127.0.0.1:64852 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK 03:36:01 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-25T18:36:01.910917+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 03:36:01 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-25T18:36:01.920626+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-08-25T18:36:01.955090+00:00", "level": "WARNING", "logger": "app.modules.pipeline.cine_transform", "message": "cine_transform S3sh2: 변환본이 소스의 불변축을 바꿨다(place, people, objects, moment, light_source) — 원본을 최종본으로 확정한다. place=A는 공구 작업대와 열린 출입구가 있는 실내 작업장이며, B는 건물·배관·실외기 사이의 좁은 골목이다.; people=A에는 노란 외투를 입은 여성 1명이 보이고, B에는 회색 계열 옷을 입고 골목 바닥에 누운 사람들이 보인다.; objects=A에는 여성이 든 손전등, 열린 공구함, 작업대와 벽걸이 공구들이 있고, B에는 실외기, 배관, 전선, 간판과 골목의 물건들이 있다.; moment=A의 여성은 서서 손전등을 들고 작업장 안을 바라보며, B의 사람들은 골목 바닥에 누워 있다.; light_source=A는 작업장 "} {"timestamp": "2026-08-25T18:36:01.961964+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe S3sh2: 변환이 불변축을 바꿔 기각 — 원본을 최종본으로 확정 (axis_drift:place,people,objects,moment,light_source)"} {"timestamp": "2026-08-25T18:36:01.987631+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S3sh2: 완료 (selected=A, fix=True)"} {"timestamp": "2026-08-25T18:36:01.987792+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe JIT 검증 요약: 그대로 5 · 재생성 1 (그중 산출동일 0) · record없음(검증불가 skip) 0 · 실패 0"} {"timestamp": "2026-08-25T18:36:01.987896+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "cine 변환 검증 기각 4샷(원본이 최종본): S2sh3, S2sh6, S3sh1, S3sh2"} {"timestamp": "2026-08-25T18:36:01.996197+00:00", "level": "INFO", "logger": "app.services.scene_image_service", "message": "still_recipe v1: 2/7 샷 생성 완료 (episode=8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9)"} {"timestamp": "2026-08-25T18:36:02.018882+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step scene_image_pipeline completed (completed=7/7, failed=0)"} {"timestamp": "2026-08-25T18:36:02.038827+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.entity_sync_service", "message": "Synced 7 entities to DB from checkpoint (upsert); removed 0 stale links"} {"timestamp": "2026-08-25T18:36:02.056980+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 17 scene_stills (shot-based) to DB"} {"timestamp": "2026-08-25T18:36:02.059067+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-08-25T18:36:02.061137+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-08-25T18:36:02.076366+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.outlook_sync_service", "message": "Synced 3 outlooks + 3 character-outlook links (Δ +0 / -0)"} {"timestamp": "2026-08-25T18:36:02.084097+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 9 total short_ids found"} {"timestamp": "2026-08-25T18:36:02.087721+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode 8750a231, step=scene_image_pipeline, repaired=0)"} INFO: 127.0.0.1:64861 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64861 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK {"timestamp": "2026-08-25T18:36:04.145421+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913:8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9:outlook_dedup (Step outlook_dedup for 8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9)"} INFO: 127.0.0.1:64861 - "POST /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps/outlook_dedup?mode=resume HTTP/1.1" 200 OK {"timestamp": "2026-08-25T18:36:04.152582+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step outlook_dedup started (run_id=4d8535a5-435f-4b82-98b0-e2823267a5b4, model=gpt)"} {"timestamp": "2026-08-25T18:36:04.153320+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "_resolve_model: unknown step 'entity_review' — falling back to 'gemini-pro'. If intentional, register in STEP_MANIFEST or _PIPELINE_STEP_EXTENSIONS."} 03:36:04 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-08-25T18:36:04.154400+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 03:36:08 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-25T18:36:08.705758+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 03:36:08 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-08-25T18:36:08.707713+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-08-25T18:36:08.713349+00:00", "level": "INFO", "logger": "app.core.steps.outlook_steps", "message": "Outlook dedup: no duplicates found"} {"timestamp": "2026-08-25T18:36:08.723589+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step outlook_dedup completed (completed=1/1, failed=0)"} {"timestamp": "2026-08-25T18:36:08.745567+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.entity_sync_service", "message": "Synced 7 entities to DB from checkpoint (upsert); removed 0 stale links"} {"timestamp": "2026-08-25T18:36:08.764735+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 17 scene_stills (shot-based) to DB"} {"timestamp": "2026-08-25T18:36:08.767230+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-08-25T18:36:08.769367+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-08-25T18:36:08.783967+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.outlook_sync_service", "message": "Synced 3 outlooks + 3 character-outlook links (Δ +0 / -0)"} {"timestamp": "2026-08-25T18:36:08.792730+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 9 total short_ids found"} {"timestamp": "2026-08-25T18:36:08.795337+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode 8750a231, step=outlook_dedup, repaired=0)"} INFO: 127.0.0.1:64868 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps HTTP/1.1" 200 OK INFO: Shutting down INFO: Waiting for application shutdown. INFO: Application shutdown complete. INFO: Finished server process [36963]