/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 [26935] INFO: Waiting for application startup. {"timestamp": "2026-08-26T01:59:13.732250+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-26T01:59:13.927884+00:00", "level": "INFO", "logger": "app.core.step_lock", "message": "스텝 락 하트비트 시작 (간격=30s, boot_id=3d10b53b)"} INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) {"timestamp": "2026-08-26T01:59:31.129715+00:00", "level": "INFO", "logger": "app.modules.llm.gemini_key_pool", "message": "Gemini key pool: 2 key(s) loaded"} INFO: 127.0.0.1:60318 - "GET /api/v1/health HTTP/1.1" 200 OK INFO: 127.0.0.1:60326 - "POST /api/v1/auth/login HTTP/1.1" 200 OK {"timestamp": "2026-08-26T01:59:44.942253+00:00", "level": "WARNING", "logger": "app.core.steps.image_steps", "message": "Step scene_image_pipeline: config drift 를 env 승인으로 통과 — 비파괴 resume 재실행 (config_hash mismatch (step-local): cp=8ecc517c8c053501, current=caf13a0779718046)"} {"timestamp": "2026-08-26T01:59:44.942312+00:00", "level": "INFO", "logger": "app.services.step_execution_service", "message": "start_step scene_image_pipeline: completed cp decision=rerun_self reason=config drift — step_config_drift_ack 명시 승인, 비파괴 resume 재실행: config_hash mismatch (step-local): cp=8ecc517c8c053501, current=caf13a0779718046 — submitting background"} {"timestamp": "2026-08-26T01:59:44.942352+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:60328 - "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-26T01:59:44.955774+00:00", "level": "WARNING", "logger": "app.core.steps.image_steps", "message": "Step scene_image_pipeline: config drift 를 env 승인으로 통과 — 비파괴 resume 재실행 (config_hash mismatch (step-local): cp=8ecc517c8c053501, current=caf13a0779718046)"} {"timestamp": "2026-08-26T01:59:44.959220+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step scene_image_pipeline started (run_id=304033c9-b7b7-4ee3-8b35-741c0b25ad06, 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=06a8e489-0f5b-7b59-80f1-b4acb31d5071&path=aHR0cDovLzE5Mi4xNjguMTMzLjg3OjUxNzMvYXBp. {"timestamp": "2026-08-26T01:59:44.993972+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-26T01:59:45.006621+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 17 scene_stills (shot-based) to DB"} {"timestamp": "2026-08-26T01:59:45.008013+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-08-26T01:59:45.009198+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-08-26T01:59:45.018292+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-26T01:59:45.023464+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-26T01:59:45.025492+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-26T01:59:45.050429+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-26T01:59:45.058187+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 17 scene_stills (shot-based) to DB"} {"timestamp": "2026-08-26T01:59:45.059457+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-08-26T01:59:45.060588+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-08-26T01:59:45.068780+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-26T01:59:45.072077+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-26T01:59:45.073237+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-26T01:59:45.093321+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-26T01:59:45.094420+00:00", "level": "INFO", "logger": "app.modules.image_checkpoint", "message": "Checkpoint loaded: scene — 7 completed, 0 failed"} {"timestamp": "2026-08-26T01:59:45.119638+00:00", "level": "INFO", "logger": "app.services.scene_reference_service", "message": "Loaded 7 existing reference images for 10 entities"} {"timestamp": "2026-08-26T01:59:45.119704+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-26T01:59:45.131445+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-26T01:59:45.132544+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe: 운영자 선언 무콘티 예외 2샷 — BGFIRST 대상 제외 후 기존 경로 생성: ['S11sh1', 'S75sh7']"} {"timestamp": "2026-08-26T01:59:45.144370+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S1sh2: confined fp 판별 제외 — 자전거 정비소 내부는 조종실이나 차량 내부처럼 인물이나 제어 장치의 배치가 엄격하게 중요한 공간이 아니며, 단순한 실내 공간이므로 평면도 보조가"} {"timestamp": "2026-08-26T01:59:45.547095+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "Opik usage 에 캐시 항목 기록 켬 (create_usage_object 래핑)"} {"timestamp": "2026-08-26T01:59:45.547185+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)"} 10:59:45 - LiteLLM Router:INFO: router.py:812 - Routing strategy: simple-shuffle {"timestamp": "2026-08-26T01:59:45.577851+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "Routing strategy: simple-shuffle"} {"timestamp": "2026-08-26T01:59:45.578162+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "LiteLLM Router initialized: 16 deployments (2 Gemini keys, OpenAI=True slot=primary/2)"} 10:59:45 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T01:59:45.594659+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 10:59:48 - 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-26T01:59:48.284207+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"} 10:59:53 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T01:59:53.727418+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 10:59:54 - 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-26T01:59:54.266072+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"} 10:59:59 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T01:59:59.501554+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 10:59:59 - 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-26T01:59:59.981048+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"} 11:00:05 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:00:05.225896+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:00:06 - 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-26T02:00:06.022217+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"} 11:00:11 - LiteLLM Router:INFO: router.py:5437 - Trying to fallback b/w models {"timestamp": "2026-08-26T02:00:11.536249+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "Trying to fallback b/w models"} {"timestamp": "2026-08-26T02:00:11.536765+00:00", "level": "WARNING", "logger": "app.core.openai_keys", "message": "OpenAI 키 전환: primary → secondary (사유=429 · 지점=router.completion[gpt]). 이 프로세스는 이후 secondary 슬롯을 쓴다."} {"timestamp": "2026-08-26T02:00:11.536864+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "LiteLLM Router 무효화 — OpenAI 키 슬롯 전환 반영"} 11:00:11 - LiteLLM Router:INFO: router.py:812 - Routing strategy: simple-shuffle {"timestamp": "2026-08-26T02:00:11.547619+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "Routing strategy: simple-shuffle"} {"timestamp": "2026-08-26T02:00:11.549282+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "LiteLLM Router initialized: 16 deployments (2 Gemini keys, OpenAI=True slot=secondary/2)"} 11:00:11 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:00:11.550744+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} {"timestamp": "2026-08-26T02:00:14.075512+00:00", "level": "ERROR", "logger": "asyncio", "message": "Task was destroyed but it is pending!\ntask: wait_for=>"} 11:00:15 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:00:15.586229+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:00:15 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:00:15.594392+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[32m 200 OK\u001b[0m"} 11:00:15 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:00:15.598841+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:00:18 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:00:18.195349+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:00:18 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:00:18.206961+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-26T02:00:18.233970+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe S1sh2: JIT 검증 — 지출 흔적(record 갱신) 있으나 산출 동일, 영속 생략 (1/300)"} {"timestamp": "2026-08-26T02:00:18.234886+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S1sh4: confined fp 판별 제외 — 이 공간은 차량 조종석이나 통제실과 같이 복잡한 기기 및 좌석 배치가 중요한 공간이 아니며, 단순한 자전거 수리 작업실 내부에서 두 인물이 마주"} 11:00:18 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:00:18.648151+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:00:21 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:00:21.768278+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:00:21 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:00:21.779909+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[32m 200 OK\u001b[0m"} 11:00:21 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:00:21.791981+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:00:24 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:00:24.501876+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:00:24 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:00:24.512573+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-26T02:00:24.532684+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe S1sh4: JIT 검증 — 지출 흔적(record 갱신) 있으나 산출 동일, 영속 생략 (2/300)"} 11:00:24 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:00:24.915691+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:00:27 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:00:27.990241+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:00:27 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:00:27.999685+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[32m 200 OK\u001b[0m"} 11:00:28 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:00:28.013678+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:00:30 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:00:30.401471+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:00:30 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:00:30.410058+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-26T02:00:30.437439+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe S2sh1: JIT 검증 — 지출 흔적(record 갱신) 있으나 산출 동일, 영속 생략 (3/300)"} {"timestamp": "2026-08-26T02:00:30.442072+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S2sh3: 노인(C03) pose-locked by prev S2sh1 — 캐릭터 참조 제외"} 11:00:30 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:00:30.807299+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:00:34 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:00:34.466292+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:00:34 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:00:34.474354+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[32m 200 OK\u001b[0m"} 11:00:34 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:00:34.486637+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:00:38 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:00:38.186688+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:00:38 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:00:38.196899+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-26T02:00:38.221215+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe S2sh3: JIT 검증 — 입력이 낡아 재생성 (4/300)"} {"timestamp": "2026-08-26T02:00:38.234702+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S2sh3: 완료 (selected=B, fix=True)"} {"timestamp": "2026-08-26T02:00:38.237902+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S2sh6: 노인(C03) pose-locked by prev S2sh3 — 캐릭터 참조 제외"} 11:00:38 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:00:38.612020+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:00:41 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:00:41.415690+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:00:41 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:00:41.424802+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[32m 200 OK\u001b[0m"} 11:00:41 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:00:41.437641+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:00:44 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:00:44.533699+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:00:44 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:00:44.541827+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-26T02:00:44.572616+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe S2sh6: JIT 검증 — 입력이 낡아 재생성 (5/300)"} {"timestamp": "2026-08-26T02:00:44.582924+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S2sh6: 완료 (selected=B, fix=True)"} {"timestamp": "2026-08-26T02:00:44.583842+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S3sh1: confined fp 판별 제외 — 이 장소는 자전거 수리점 내부로, 차량 운전석이나 조종실과 같이 복잡한 제어 장치가 있는 공간이 아니며, 인물들의 위치나 방향성이 이야기 전개에"} 11:00:44 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:00:44.985490+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:00:49 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:00:49.538136+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:00:49 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:00:49.541899+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[32m 200 OK\u001b[0m"} 11:00:49 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:00:49.547109+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:00:51 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:00:51.876068+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:00:51 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:00:51.883423+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-26T02:00:51.901647+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe S3sh1: JIT 검증 — 입력이 낡아 재생성 (6/300)"} {"timestamp": "2026-08-26T02:00:51.911863+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S3sh1: 완료 (selected=A, fix=True)"} {"timestamp": "2026-08-26T02:00:51.912763+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S3sh2: confined fp 판별 제외 — 이 숏은 조종실이나 차량 내부처럼 좌석 배치나 통제 장치 위치가 중요한 공간이 아니며, 단순히 자전거 수리점 문가에서 밖을 바라보는 장면이므로 "} 11:02:08 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:02:08.236956+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:02:10 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:02:10.400834+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:02:10 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:02:10.407324+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.6-sol)\u001b[32m 200 OK\u001b[0m"} 11:02:10 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.6-sol; provider = openai {"timestamp": "2026-08-26T02:02:10.420992+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.6-sol; provider = openai"} 11:02:13 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-08-26T02:02:13.398136+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:02:13 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.6-sol) 200 OK {"timestamp": "2026-08-26T02:02:13.404052+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-26T02:02:13.431094+00:00", "level": "WARNING", "logger": "app.services.still_recipe_service", "message": "still_recipe S3sh2: JIT 검증 — 입력이 낡아 재생성 (7/300)"} {"timestamp": "2026-08-26T02:02:13.440154+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe S3sh2: 완료 (selected=A, fix=True)"} {"timestamp": "2026-08-26T02:02:13.440281+00:00", "level": "INFO", "logger": "app.services.still_recipe_service", "message": "still_recipe JIT 검증 요약: 그대로 0 · 재생성 7 (그중 산출동일 3) · record없음(검증불가 skip) 0 · 실패 0"} {"timestamp": "2026-08-26T02:02:13.443833+00:00", "level": "INFO", "logger": "app.services.scene_image_service", "message": "still_recipe v1: 4/7 샷 생성 완료 (episode=8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9)"} {"timestamp": "2026-08-26T02:02:13.454554+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step scene_image_pipeline completed (completed=7/7, failed=0)"} {"timestamp": "2026-08-26T02:02:13.463882+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-26T02:02:13.471908+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 17 scene_stills (shot-based) to DB"} {"timestamp": "2026-08-26T02:02:13.473308+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-08-26T02:02:13.474487+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-08-26T02:02:13.481941+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-26T02:02:13.485495+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-26T02:02:13.487467+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:62031 - "GET /api/v1/projects/f1cf927b-c0e2-4dc9-ae2e-e29b6c5bf913/episodes/8750a231-f2d4-4855-9a5a-8d7f9a3a0bc9/steps/locks HTTP/1.1" 200 OK