/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 [99210] INFO: Waiting for application startup. {"timestamp": "2026-05-28T03:46:45.369582+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."} INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8015 (Press CTRL+C to quit) INFO: 127.0.0.1:64701 - "POST /api/v1/auth/login HTTP/1.1" 200 OK {"timestamp": "2026-05-28T03:47:07.663760+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:shot_aware_bg_render_plan (Step shot_aware_bg_render_plan for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:64703 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/shot_aware_bg_render_plan?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T03:47:07.679384+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step shot_aware_bg_render_plan started (run_id=3732d877-60f9-496b-a22a-2a50eff48da6, model=gpt)"} 12:47:07 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:47:07.689776+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:64709 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64717 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64734 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64738 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64742 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64752 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64756 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64760 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64763 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64767 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64776 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64780 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64784 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:49:15 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:49:15.478238+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:49:15 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:49:15.484587+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:64788 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64792 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64796 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64800 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64804 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64808 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64813 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:50:29 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:50:29.584363+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:50:29 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:50:29.592873+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:64817 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64822 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64825 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64829 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64833 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64836 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64840 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64844 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64848 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64853 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64857 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:52:16 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:52:16.869644+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:52:16 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:52:16.878483+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:64861 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64865 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64869 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64873 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64884 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64888 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64892 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64896 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:53:42 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:53:42.528578+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:53:42 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:53:42.536233+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:64903 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64907 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64910 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64914 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64918 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:54:32 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:54:32.388595+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} {"timestamp": "2026-05-28T03:54:32.413296+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step shot_aware_bg_render_plan completed (completed=4/1, failed=0)"} {"timestamp": "2026-05-28T03:54:32.496750+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.entity_sync_service", "message": "Synced 41 entities to DB from checkpoint (upsert); removed 0 stale links"} {"timestamp": "2026-05-28T03:54:32.572234+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T03:54:32.590500+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:54:32.606457+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T03:54:32.619205+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T03:54:32.621043+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.outlook_sync_service", "message": "Synced 12 outlooks + 13 character-outlook links (Δ +0 / -0)"} {"timestamp": "2026-05-28T03:54:32.632687+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 28 total short_ids found"} {"timestamp": "2026-05-28T03:54:32.634586+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T03:54:32.636793+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=shot_aware_bg_render_plan, repaired=0)"} INFO: 127.0.0.1:64923 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T03:57:04.415467+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:background_render (Step background_render for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:64974 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/background_render?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T03:57:04.423979+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 1 downstream steps from background_render (delete_cp=True): ['scene_image_pipeline']"} {"timestamp": "2026-05-28T03:57:04.426558+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step background_render started (run_id=cbd0ea61-388a-494c-b869-b7b7ae696324, model=gpt)"} INFO: 127.0.0.1:64980 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64995 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65001 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65013 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65019 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65023 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65027 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65038 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65042 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65049 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65056 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65061 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65066 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65070 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65076 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65080 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65086 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65091 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65096 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65102 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65106 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65111 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65116 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65128 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65135 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65139 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65145 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65181 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65185 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65192 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65196 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65202 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65207 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65211 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65217 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65221 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65227 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65232 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65240 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65246 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65253 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65270 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65274 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65278 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65291 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65295 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65303 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65312 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65317 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65323 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65328 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65334 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65338 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65343 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65348 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65352 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65358 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65362 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65370 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65374 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65378 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65385 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65389 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65395 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65406 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65410 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65416 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65426 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65434 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65439 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65444 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65450 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65455 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65462 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65467 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65469 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65474 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65477 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65484 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/pipeline-gate HTTP/1.1" 200 OK INFO: 127.0.0.1:65486 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca HTTP/1.1" 200 OK INFO: 127.0.0.1:65488 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65496 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65503 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65507 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65513 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:65532 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49153 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T04:18:00.949498+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:ref_image_gen (Step ref_image_gen for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:49159 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/ref_image_gen?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T04:18:00.956889+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 3 downstream steps from ref_image_gen (delete_cp=True): ['character_state_variant', 'composite_image_gen', 'scene_image_pipeline']"} {"timestamp": "2026-05-28T04:18:00.958946+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step ref_image_gen started (run_id=6b9ec39c-17c6-4ea4-bc25-e7e10f47c5b9, model=gemini-image)"} {"timestamp": "2026-05-28T04:18:01.001826+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.entity_sync_service", "message": "Synced 41 entities to DB from checkpoint (upsert); removed 0 stale links"} {"timestamp": "2026-05-28T04:18:01.034670+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T04:18:01.046281+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T04:18:01.058308+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T04:18:01.067870+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T04:18:01.069301+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.outlook_sync_service", "message": "Synced 12 outlooks + 13 character-outlook links (Δ +0 / -0)"} {"timestamp": "2026-05-28T04:18:01.076754+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 28 total short_ids found"} {"timestamp": "2026-05-28T04:18:01.077409+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T04:18:01.079106+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=-, repaired=0)"} {"timestamp": "2026-05-28T04:18:01.112583+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "Opik callback enabled (project: theroad-scene-lab)"} 13:18:01 - LiteLLM Router:INFO: router.py:812 - Routing strategy: simple-shuffle {"timestamp": "2026-05-28T04:18:01.125524+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "Routing strategy: simple-shuffle"} {"timestamp": "2026-05-28T04:18:01.125858+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "LiteLLM Router initialized: 8 deployments (1 Gemini keys, OpenAI=True)"} 13:18:01 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:18:01.133834+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:49170 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49182 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49191 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49198 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49211 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 13:19:14 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:14.388721+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:14 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK OPIK: Started logging traces to the "theroad-scene-lab" project at https://www.comet.com/opik/api/v1/session/redirect/projects/?trace_id=06a17c24-2646-7e3b-8000-cdd348d1865f&path=aHR0cHM6Ly93d3cuY29tZXQuY29tL29waWsvYXBpLw==. {"timestamp": "2026-05-28T04:19:14.393067+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T04:19:14.453636+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 붉은 원형 표식 (prop, t2i_count=3, base_for_variant=False, variant_self=False, required=True, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.453765+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 스마트폰 (prop, t2i_count=5, base_for_variant=False, variant_self=False, required=False, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.453818+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 인우 (character, t2i_count=4, base_for_variant=False, variant_self=False, required=True, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.453859+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 낡은 인형 (prop, t2i_count=0, base_for_variant=False, variant_self=False, required=False, skipped=True)"} {"timestamp": "2026-05-28T04:19:14.453893+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 민숙 (character, t2i_count=4, base_for_variant=True, variant_self=False, required=True, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.453928+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 약초 잎 (prop, t2i_count=2, base_for_variant=False, variant_self=False, required=False, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.453958+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 낡은 사진 (prop, t2i_count=4, base_for_variant=False, variant_self=False, required=True, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.453989+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 검은 고양이 (character, t2i_count=0, base_for_variant=False, variant_self=False, required=False, skipped=True)"} {"timestamp": "2026-05-28T04:19:14.454020+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 좌표 메모지 (prop, t2i_count=1, base_for_variant=False, variant_self=False, required=True, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.454052+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 겁에 질린 남자 (character, t2i_count=0, base_for_variant=False, variant_self=False, required=False, skipped=True)"} {"timestamp": "2026-05-28T04:19:14.454084+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 해상 지도 (prop, t2i_count=1, base_for_variant=False, variant_self=False, required=True, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.454114+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 한국인 남자 (character, t2i_count=3, base_for_variant=False, variant_self=False, required=True, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.454144+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 한국인 여자 (character, t2i_count=2, base_for_variant=False, variant_self=False, required=True, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.454175+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 낯선 한국인 남자 (character, t2i_count=1, base_for_variant=False, variant_self=False, required=True, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.454204+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 로트와일러 (character, t2i_count=0, base_for_variant=False, variant_self=False, required=False, skipped=True)"} {"timestamp": "2026-05-28T04:19:14.454255+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 혜수 (character, t2i_count=6, base_for_variant=False, variant_self=False, required=True, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.454285+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 12살 여자아이 (character, t2i_count=0, base_for_variant=False, variant_self=True, required=False, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.454313+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 수리영 (character, t2i_count=24, base_for_variant=False, variant_self=False, required=True, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.454343+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 김형사 (character, t2i_count=0, base_for_variant=False, variant_self=False, required=False, skipped=True)"} {"timestamp": "2026-05-28T04:19:14.454372+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 검은 실루엣의 한국인 남자 (character, t2i_count=1, base_for_variant=False, variant_self=False, required=True, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.454403+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 백팩 (prop, t2i_count=2, base_for_variant=False, variant_self=False, required=False, skipped=False)"} {"timestamp": "2026-05-28T04:19:14.454433+00:00", "level": "INFO", "logger": "app.services.reference_pipeline_orchestrator", "message": "Low-freq decision: 살인 사건 현장 사진 (prop, t2i_count=0, base_for_variant=False, variant_self=False, required=False, skipped=True)"} {"timestamp": "2026-05-28T04:19:14.476401+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 한국인 남자 (type=character)"} {"timestamp": "2026-05-28T04:19:14.476685+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 민숙 (type=character)"} {"timestamp": "2026-05-28T04:19:14.477167+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 낯선 한국인 남자 (type=character)"} {"timestamp": "2026-05-28T04:19:14.477343+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 수리영 (type=character)"} {"timestamp": "2026-05-28T04:19:14.477710+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 스마트폰 (type=prop)"} {"timestamp": "2026-05-28T04:19:14.477967+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 백팩 (type=prop)"} {"timestamp": "2026-05-28T04:19:14.478241+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 붉은 원형 표식 (type=prop)"} {"timestamp": "2026-05-28T04:19:14.478644+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 혜수 (type=character)"} {"timestamp": "2026-05-28T04:19:14.479491+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 약초 잎 (type=prop)"} {"timestamp": "2026-05-28T04:19:14.479814+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 인우 (type=character)"} {"timestamp": "2026-05-28T04:19:14.480168+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 해상 지도 (type=prop)"} {"timestamp": "2026-05-28T04:19:14.480356+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 검은 실루엣의 한국인 남자 (type=character)"} {"timestamp": "2026-05-28T04:19:14.480642+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 한국인 여자 (type=character)"} {"timestamp": "2026-05-28T04:19:14.480916+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 낡은 사진 (type=prop)"} {"timestamp": "2026-05-28T04:19:14.481266+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 좌표 메모지 (type=prop)"} {"timestamp": "2026-05-28T04:19:14.481781+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 한국인 남자 (character)"} {"timestamp": "2026-05-28T04:19:14.482018+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 민숙 (character)"} {"timestamp": "2026-05-28T04:19:14.482568+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 수리영 (character)"} {"timestamp": "2026-05-28T04:19:14.482889+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 낯선 한국인 남자 (character)"} {"timestamp": "2026-05-28T04:19:14.483013+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 스마트폰 (prop)"} {"timestamp": "2026-05-28T04:19:14.483264+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 붉은 원형 표식 (prop)"} {"timestamp": "2026-05-28T04:19:14.483547+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 백팩 (prop)"} {"timestamp": "2026-05-28T04:19:14.483986+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 혜수 (character)"} {"timestamp": "2026-05-28T04:19:14.484129+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 해상 지도 (prop)"} {"timestamp": "2026-05-28T04:19:14.484262+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 검은 실루엣의 한국인 남자 (character)"} {"timestamp": "2026-05-28T04:19:14.485420+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 인우 (character)"} {"timestamp": "2026-05-28T04:19:14.486434+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 한국인 여자 (character)"} {"timestamp": "2026-05-28T04:19:14.487188+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 좌표 메모지 (prop)"} {"timestamp": "2026-05-28T04:19:14.488104+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 약초 잎 (prop)"} {"timestamp": "2026-05-28T04:19:14.488360+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 낡은 사진 (prop)"} {"timestamp": "2026-05-28T04:19:14.489540+00:00", "level": "INFO", "logger": "app.modules.llm.gemini_key_pool", "message": "Gemini key pool: 1 key(s) loaded"} INFO: 127.0.0.1:49235 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK OPIK: Started logging traces to the "Default Project" project at https://www.comet.com/opik/api/v1/session/redirect/projects/?trace_id=019e6ccf-00b4-71fe-b08b-739e68c29fca&path=aHR0cHM6Ly93d3cuY29tZXQuY29tL29waWsvYXBpLw==. 13:19:26 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:26.119565+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:27 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:27.027920+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:28 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:28.193817+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:28 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:28.201259+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 13:19:28 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:28.548047+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:28 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:28.584997+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:28 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:28.973324+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:28 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:28.983182+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 13:19:30 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:30.225497+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:30 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:30.234083+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 13:19:33 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:33.206682+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:33 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:33.216324+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 13:19:33 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:33.620186+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:35 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:35.046991+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:35 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:35.121523+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:37 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:37.924929+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:37 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:37.932688+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 13:19:38 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:38.637367+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:38 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:38.700721+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:38 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:38.702864+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 13:19:38 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:38.792638+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:38 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:38.795153+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:49254 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 13:19:39 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:39.794793+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:40 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:40.160501+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:42 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:42.188470+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:42 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:42.196631+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 13:19:43 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:43.189613+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:43 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:43.756057+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:43 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:43.762322+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 13:19:43 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:43.976849+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:43 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:43.980558+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 13:19:44 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:44.235319+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:44 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:44.707916+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:47 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:47.429740+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 13:19:47 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:47.763542+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:47 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:47.768987+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 13:19:47 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:47.772763+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:47 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:47.773480+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 13:19:47 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:47.967943+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:47 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:47.975501+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 13:19:49 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:19:49.224942+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:19:49 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:19:49.228318+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 13:19:50 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:19:50.899604+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:49267 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 13:20:01 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:20:01.034942+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:20:01 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:20:01.038388+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T04:20:01.057810+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Generating reference image for: 12살 여자아이 (type=character)"} {"timestamp": "2026-05-28T04:20:01.058192+00:00", "level": "INFO", "logger": "app.modules.pipeline.ref_image_pipeline", "message": "Using type-specific ref prompt template for 12살 여자아이 (character)"} INFO: 127.0.0.1:49275 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 13:20:22 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T04:20:22.843326+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:49286 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 13:20:27 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T04:20:27.363233+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 13:20:27 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T04:20:27.368812+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T04:20:27.415917+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step ref_image_gen completed (completed=22/53, failed=0)"} {"timestamp": "2026-05-28T04:20:27.467460+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.entity_sync_service", "message": "Synced 41 entities to DB from checkpoint (upsert); removed 0 stale links"} {"timestamp": "2026-05-28T04:20:27.522791+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T04:20:27.539402+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T04:20:27.554377+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T04:20:27.566516+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T04:20:27.567950+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.outlook_sync_service", "message": "Synced 12 outlooks + 13 character-outlook links (Δ +0 / -0)"} {"timestamp": "2026-05-28T04:20:27.577378+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 28 total short_ids found"} {"timestamp": "2026-05-28T04:20:27.578267+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T04:20:27.580567+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=ref_image_gen, repaired=0)"} INFO: 127.0.0.1:49293 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49302 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49311 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49320 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49326 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49334 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49342 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49350 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49358 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49365 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49380 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49389 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49397 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49407 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49420 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49434 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49447 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49456 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49470 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49477 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49480 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49489 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T04:25:46.297347+00:00", "level": "INFO", "logger": "app.core.steps.background_render_step", "message": "background_render: registered 12 chain_bg ImageAssets"} {"timestamp": "2026-05-28T04:25:46.310264+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step background_render completed (completed=1/1, failed=0)"} {"timestamp": "2026-05-28T04:25:46.343011+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.entity_sync_service", "message": "Synced 41 entities to DB from checkpoint (upsert); removed 0 stale links"} {"timestamp": "2026-05-28T04:25:46.382940+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T04:25:46.398485+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T04:25:46.414478+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T04:25:46.425922+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T04:25:46.427350+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.outlook_sync_service", "message": "Synced 12 outlooks + 13 character-outlook links (Δ +0 / -0)"} {"timestamp": "2026-05-28T04:25:46.436120+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 28 total short_ids found"} {"timestamp": "2026-05-28T04:25:46.436795+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T04:25:46.438479+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=background_render, repaired=0)"} INFO: 127.0.0.1:49497 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:49533 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: Shutting down INFO: Waiting for application shutdown. INFO: Application shutdown complete. INFO: Finished server process [99210]