/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 [77058] INFO: Waiting for application startup. {"timestamp": "2026-05-28T02:23:53.271099+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:61391 - "POST /api/v1/auth/login HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:24:06.491209+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_master_plan (Step background_master_plan for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:61393 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/background_master_plan?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:24:06.524356+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 14 downstream steps from background_master_plan (delete_cp=True): ['background_prompt', 'background_render', 'base_location_dossier', 'floor_plan_geometry_readback', 'floor_plan_overlay_payload', 'floor_plan_prompt', 'floor_plan_render', 'scene_detail', 'scene_image_pipeline', 'scene_verify', 'shot_aware_bg_render_plan', 'shot_dependency_t2i', 't2i_review', 'world_guide']"} {"timestamp": "2026-05-28T02:24:06.528818+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step background_master_plan started (run_id=a6343e28-d111-4c30-b961-d487894ed99f, model=gpt)"} {"timestamp": "2026-05-28T02:24:06.540395+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "Opik callback enabled (project: theroad-scene-lab)"} 11:24:06 - LiteLLM Router:INFO: router.py:812 - Routing strategy: simple-shuffle {"timestamp": "2026-05-28T02:24:06.556612+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "Routing strategy: simple-shuffle"} {"timestamp": "2026-05-28T02:24:06.556850+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "LiteLLM Router initialized: 8 deployments (1 Gemini keys, OpenAI=True)"} 11:24:06 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:24:06.575960+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:24:06 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai 11:24:06 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:24:06.576190+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:24:06 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:24:06.576412+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} {"timestamp": "2026-05-28T02:24:06.576618+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:61405 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:24:24 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:24:24.131287+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:24:24 - 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=06a17a75-8221-7cbc-8000-f250f09e933f&path=aHR0cHM6Ly93d3cuY29tZXQuY29tL29waWsvYXBpLw==. {"timestamp": "2026-05-28T02:24:24.134332+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:61416 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:24:27 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:24:27.713149+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:24:27 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:24:27.716251+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:61423 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:24:40 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:24:40.053699+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:24:40 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:24:40.056339+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:61431 - "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:61438 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:24:57 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:24:57.639988+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:24:57 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:24:57.643175+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:24:57.670227+00:00", "level": "INFO", "logger": "app.core.steps.background_master_plan_step", "message": "background_master_plan: prev catalog read from archive manifest_20260528_112406.json (D6 ID preservation under explicit force)."} {"timestamp": "2026-05-28T02:24:57.681018+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step background_master_plan completed (completed=4/4, failed=0)"} {"timestamp": "2026-05-28T02:24:57.748945+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-28T02:24:57.760790+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:24:57.776289+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:24:57.779881+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-28T02:24:57.789708+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:24:57.793176+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:24:57.794358+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T02:24:57.797347+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=background_master_plan, repaired=0)"} INFO: 127.0.0.1:61448 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:27:50.950838+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: run_all:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:all (Run all all steps for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:61578 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/run-all?mode=resume&category=all&approve_image_generation=true&image_call_cap=60 HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:27:50.955829+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step planning_doc_analysis: skipped"} {"timestamp": "2026-05-28T02:27:50.956870+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step text_cleanup: skipped"} {"timestamp": "2026-05-28T02:27:50.958303+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_segmentation: skipped"} {"timestamp": "2026-05-28T02:27:50.959150+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step episode_summary: skipped"} {"timestamp": "2026-05-28T02:27:50.960451+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step visual_world_rules: skipped"} {"timestamp": "2026-05-28T02:27:50.961999+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_save: skipped"} {"timestamp": "2026-05-28T02:27:50.963892+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_character_list: skipped"} {"timestamp": "2026-05-28T02:27:50.966493+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_summary: skipped"} {"timestamp": "2026-05-28T02:27:50.969195+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step beat_extract: skipped"} {"timestamp": "2026-05-28T02:27:50.971773+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_extract: skipped"} {"timestamp": "2026-05-28T02:27:50.973942+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_validator: skipped"} {"timestamp": "2026-05-28T02:27:50.976419+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_character: skipped"} {"timestamp": "2026-05-28T02:27:50.977704+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_character: skipped"} {"timestamp": "2026-05-28T02:27:50.979753+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_location: skipped"} {"timestamp": "2026-05-28T02:27:50.981000+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_location: skipped"} {"timestamp": "2026-05-28T02:27:50.982903+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_prop: skipped"} {"timestamp": "2026-05-28T02:27:50.984351+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_prop: skipped"} {"timestamp": "2026-05-28T02:27:50.988459+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_merge: skipped"} {"timestamp": "2026-05-28T02:27:50.990086+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_relation: skipped"} {"timestamp": "2026-05-28T02:27:50.991517+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_filter: skipped"} {"timestamp": "2026-05-28T02:27:50.992829+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_detail: skipped"} {"timestamp": "2026-05-28T02:27:50.994457+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_t2i: skipped"} {"timestamp": "2026-05-28T02:27:50.996510+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_selection: skipped"} {"timestamp": "2026-05-28T02:27:51.023374+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-28T02:27:51.027454+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:27:51.034510+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:27:51.035882+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-28T02:27:51.039318+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:27:51.039888+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:27:51.040485+00:00", "level": "WARNING", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca status NOT advanced — incomplete steps: ['scene_detail', 'shot_dependency_t2i', 't2i_review', 'floor_plan_prompt', 'floor_plan_overlay_payload', 'base_location_dossier', 'floor_plan_geometry_readback', 'shot_aware_bg_render_plan', 'background_prompt']"} {"timestamp": "2026-05-28T02:27:51.041707+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-28T02:27:51.043415+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_director: skipped"} {"timestamp": "2026-05-28T02:27:51.044892+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_director: skipped"} {"timestamp": "2026-05-28T02:27:51.046996+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_camera_flow: skipped"} {"timestamp": "2026-05-28T02:27:51.047975+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_dependency: skipped"} {"timestamp": "2026-05-28T02:27:51.075099+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-28T02:27:51.078295+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:27:51.084081+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:27:51.085147+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-28T02:27:51.087908+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:27:51.088392+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:27:51.088934+00:00", "level": "WARNING", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca status NOT advanced — incomplete steps: ['scene_detail', 'shot_dependency_t2i', 't2i_review', 'floor_plan_prompt', 'floor_plan_overlay_payload', 'base_location_dossier', 'floor_plan_geometry_readback', 'shot_aware_bg_render_plan', 'background_prompt']"} {"timestamp": "2026-05-28T02:27:51.089724+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-28T02:27:51.091465+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase1: skipped"} {"timestamp": "2026-05-28T02:27:51.111901+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-28T02:27:51.115004+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:27:51.121615+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:27:51.122712+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-28T02:27:51.125386+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:27:51.125912+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:27:51.126437+00:00", "level": "WARNING", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca status NOT advanced — incomplete steps: ['scene_detail', 'shot_dependency_t2i', 't2i_review', 'floor_plan_prompt', 'floor_plan_overlay_payload', 'base_location_dossier', 'floor_plan_geometry_readback', 'shot_aware_bg_render_plan', 'background_prompt']"} {"timestamp": "2026-05-28T02:27:51.127244+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-28T02:27:51.128771+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase2: skipped"} {"timestamp": "2026-05-28T02:27:51.150169+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-28T02:27:51.152972+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:27:51.158855+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:27:51.159949+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-28T02:27:51.162744+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:27:51.163249+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:27:51.163827+00:00", "level": "WARNING", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca status NOT advanced — incomplete steps: ['scene_detail', 'shot_dependency_t2i', 't2i_review', 'floor_plan_prompt', 'floor_plan_overlay_payload', 'base_location_dossier', 'floor_plan_geometry_readback', 'shot_aware_bg_render_plan', 'background_prompt']"} {"timestamp": "2026-05-28T02:27:51.164632+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-28T02:27:51.165912+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase3: skipped"} {"timestamp": "2026-05-28T02:27:51.168457+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_staging: skipped"} {"timestamp": "2026-05-28T02:27:51.170468+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step background_classify: skipped"} {"timestamp": "2026-05-28T02:27:51.172272+00:00", "level": "ERROR", "logger": "app.services.analysis_dispatch_service", "message": "Step background_master_plan error: background_master_plan contract drift detected — schema_version mismatch: 체크포인트=4, 현재=3. force 재실행 또는 수동 진단 필요."} INFO: 127.0.0.1:61590 - "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:61611 - "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:61631 - "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:61651 - "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:61670 - "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:61691 - "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:61709 - "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:61727 - "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:61748 - "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:61775 - "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:61794 - "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:61815 - "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:61835 - "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:61850 - "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:61859 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:34:40.591981+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:floor_plan_prompt (Step floor_plan_prompt for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:61866 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/floor_plan_prompt?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:34:40.601994+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 13 downstream steps from floor_plan_prompt (delete_cp=True): ['background_prompt', 'background_render', 'base_location_dossier', 'floor_plan_geometry_readback', 'floor_plan_overlay_payload', 'floor_plan_render', 'scene_detail', 'scene_image_pipeline', 'scene_verify', 'shot_aware_bg_render_plan', 'shot_dependency_t2i', 't2i_review', 'world_guide']"} {"timestamp": "2026-05-28T02:34:40.603297+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_prompt started (run_id=24952171-1d0d-489b-987f-931d86b33ccb, model=gpt)"} 11:34:40 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:34:40.609956+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:34:40 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:34:40.610943+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:34:40 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:34:40.612767+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:34:40 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:34:40.614208+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:61879 - "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:61887 - "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:61902 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:35:39 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:35:39.648764+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:35:39 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:35:39.651452+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 11:35:54 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:35:54.511459+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:35:54 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:35:54.512957+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:61923 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:36:10 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:36:10.044127+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:36:10 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:36:10.045777+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:61945 - "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:61963 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:37:00 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:37:00.113314+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:37:00 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:37:00.116857+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:37:00.152901+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_prompt completed (completed=1/1, failed=0)"} {"timestamp": "2026-05-28T02:37:00.208091+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-28T02:37:00.218213+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:37:00.232313+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:37:00.235081+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-28T02:37:00.242648+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:37:00.244359+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:37:00.245666+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T02:37:00.247867+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=floor_plan_prompt, repaired=0)"} INFO: 127.0.0.1:62004 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:37:49.382660+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: run_all:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:all (Run all all steps for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:62019 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/run-all?mode=resume&category=all&approve_image_generation=true&image_call_cap=60 HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:37:49.387063+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step planning_doc_analysis: skipped"} {"timestamp": "2026-05-28T02:37:49.387998+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step text_cleanup: skipped"} {"timestamp": "2026-05-28T02:37:49.389247+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_segmentation: skipped"} {"timestamp": "2026-05-28T02:37:49.390048+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step episode_summary: skipped"} {"timestamp": "2026-05-28T02:37:49.391124+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step visual_world_rules: skipped"} {"timestamp": "2026-05-28T02:37:49.392281+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_save: skipped"} {"timestamp": "2026-05-28T02:37:49.393965+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_character_list: skipped"} {"timestamp": "2026-05-28T02:37:49.395916+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_summary: skipped"} {"timestamp": "2026-05-28T02:37:49.398242+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step beat_extract: skipped"} {"timestamp": "2026-05-28T02:37:49.400956+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_extract: skipped"} {"timestamp": "2026-05-28T02:37:49.402593+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_validator: skipped"} {"timestamp": "2026-05-28T02:37:49.404826+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_character: skipped"} {"timestamp": "2026-05-28T02:37:49.406101+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_character: skipped"} {"timestamp": "2026-05-28T02:37:49.408058+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_location: skipped"} {"timestamp": "2026-05-28T02:37:49.409347+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_location: skipped"} {"timestamp": "2026-05-28T02:37:49.411364+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_prop: skipped"} {"timestamp": "2026-05-28T02:37:49.412506+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_prop: skipped"} {"timestamp": "2026-05-28T02:37:49.415388+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_merge: skipped"} {"timestamp": "2026-05-28T02:37:49.416376+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_relation: skipped"} {"timestamp": "2026-05-28T02:37:49.417689+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_filter: skipped"} {"timestamp": "2026-05-28T02:37:49.418990+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_detail: skipped"} {"timestamp": "2026-05-28T02:37:49.420424+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_t2i: skipped"} {"timestamp": "2026-05-28T02:37:49.421512+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_selection: skipped"} {"timestamp": "2026-05-28T02:37:49.453110+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-28T02:37:49.456397+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:37:49.464867+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:37:49.466133+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-28T02:37:49.469032+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:37:49.469661+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:37:49.470252+00:00", "level": "WARNING", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca status NOT advanced — incomplete steps: ['scene_detail', 'shot_dependency_t2i', 't2i_review', 'floor_plan_overlay_payload', 'base_location_dossier', 'floor_plan_geometry_readback', 'shot_aware_bg_render_plan', 'background_prompt']"} {"timestamp": "2026-05-28T02:37:49.471205+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-28T02:37:49.472614+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_director: skipped"} {"timestamp": "2026-05-28T02:37:49.474176+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_director: skipped"} {"timestamp": "2026-05-28T02:37:49.476541+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_camera_flow: skipped"} {"timestamp": "2026-05-28T02:37:49.477528+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_dependency: skipped"} {"timestamp": "2026-05-28T02:37:49.500729+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-28T02:37:49.503817+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:37:49.510567+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:37:49.511747+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-28T02:37:49.514578+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:37:49.515110+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:37:49.515653+00:00", "level": "WARNING", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca status NOT advanced — incomplete steps: ['scene_detail', 'shot_dependency_t2i', 't2i_review', 'floor_plan_overlay_payload', 'base_location_dossier', 'floor_plan_geometry_readback', 'shot_aware_bg_render_plan', 'background_prompt']"} {"timestamp": "2026-05-28T02:37:49.516493+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-28T02:37:49.517987+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase1: skipped"} {"timestamp": "2026-05-28T02:37:49.538407+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-28T02:37:49.541265+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:37:49.547392+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:37:49.548421+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-28T02:37:49.551439+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:37:49.551943+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:37:49.552467+00:00", "level": "WARNING", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca status NOT advanced — incomplete steps: ['scene_detail', 'shot_dependency_t2i', 't2i_review', 'floor_plan_overlay_payload', 'base_location_dossier', 'floor_plan_geometry_readback', 'shot_aware_bg_render_plan', 'background_prompt']"} {"timestamp": "2026-05-28T02:37:49.553268+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-28T02:37:49.554724+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase2: skipped"} {"timestamp": "2026-05-28T02:37:49.575620+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-28T02:37:49.578317+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:37:49.584534+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:37:49.585673+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-28T02:37:49.588558+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:37:49.589030+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:37:49.589522+00:00", "level": "WARNING", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca status NOT advanced — incomplete steps: ['scene_detail', 'shot_dependency_t2i', 't2i_review', 'floor_plan_overlay_payload', 'base_location_dossier', 'floor_plan_geometry_readback', 'shot_aware_bg_render_plan', 'background_prompt']"} {"timestamp": "2026-05-28T02:37:49.590358+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-28T02:37:49.591598+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase3: skipped"} {"timestamp": "2026-05-28T02:37:49.594199+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_staging: skipped"} {"timestamp": "2026-05-28T02:37:49.596181+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step background_classify: skipped"} {"timestamp": "2026-05-28T02:37:49.597921+00:00", "level": "ERROR", "logger": "app.services.analysis_dispatch_service", "message": "Step background_master_plan error: background_master_plan contract drift detected — schema_version mismatch: 체크포인트=4, 현재=3. force 재실행 또는 수동 진단 필요."} INFO: 127.0.0.1:62023 - "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:62029 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:38:07.217416+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:floor_plan_render (Step floor_plan_render for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:62037 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/floor_plan_render?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:38:07.228155+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 11 downstream steps from floor_plan_render (delete_cp=True): ['background_prompt', 'background_render', 'base_location_dossier', 'floor_plan_geometry_readback', 'scene_detail', 'scene_image_pipeline', 'scene_verify', 'shot_aware_bg_render_plan', 'shot_dependency_t2i', 't2i_review', 'world_guide']"} {"timestamp": "2026-05-28T02:38:07.229660+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_render started (run_id=3b706216-7a20-4bf9-a90c-d004f659ca13, model=gpt)"} {"timestamp": "2026-05-28T02:38:07.239538+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:floor_plan_overlay_payload (Step floor_plan_overlay_payload for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:62039 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/floor_plan_overlay_payload?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:38:07.245579+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 11 downstream steps from floor_plan_overlay_payload (delete_cp=True): ['background_prompt', 'background_render', 'base_location_dossier', 'floor_plan_geometry_readback', 'scene_detail', 'scene_image_pipeline', 'scene_verify', 'shot_aware_bg_render_plan', 'shot_dependency_t2i', 't2i_review', 'world_guide']"} {"timestamp": "2026-05-28T02:38:07.246927+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_overlay_payload started (run_id=90bd70c1-5596-421c-8f4a-f2815305e3cf, model=gpt)"} {"timestamp": "2026-05-28T02:38:07.251387+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_overlay_payload completed (completed=1/1, failed=0)"} INFO: 127.0.0.1:62045 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/base_location_dossier?mode=force HTTP/1.1" 400 Bad Request {"timestamp": "2026-05-28T02:38:07.274686+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-28T02:38:07.278375+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} INFO: 127.0.0.1:62047 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/floor_plan_geometry_readback?mode=force HTTP/1.1" 400 Bad Request {"timestamp": "2026-05-28T02:38:07.284992+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:38:07.286115+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-28T02:38:07.288870+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:38:07.289376+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:38:07.289869+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T02:38:07.290909+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=floor_plan_overlay_payload, repaired=0)"} INFO: 127.0.0.1:62049 - "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" 400 Bad Request INFO: 127.0.0.1:62051 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/background_prompt?mode=force HTTP/1.1" 400 Bad Request INFO: 127.0.0.1:62053 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/scene_detail?mode=force HTTP/1.1" 400 Bad Request INFO: 127.0.0.1:62071 - "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:62092 - "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:62109 - "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:62129 - "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:62149 - "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:62169 - "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:62188 - "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:62207 - "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:62232 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:42:45.602765+00:00", "level": "INFO", "logger": "app.core.steps.floor_plan_render_step", "message": "floor_plan_render: registered 4 floor_plan ImageAssets"} {"timestamp": "2026-05-28T02:42:45.623420+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_render completed (completed=1/1, failed=0)"} {"timestamp": "2026-05-28T02:42:45.684134+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-28T02:42:45.707765+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:42:45.723759+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:42:45.726509+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-28T02:42:45.733206+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:42:45.734434+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:42:45.735451+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T02:42:45.737547+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=floor_plan_render, repaired=0)"} INFO: 127.0.0.1:62252 - "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:62255 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:43:24.388832+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:floor_plan_overlay_payload (Step floor_plan_overlay_payload for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:62276 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/floor_plan_overlay_payload?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:43:24.396421+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 11 downstream steps from floor_plan_overlay_payload (delete_cp=True): ['background_prompt', 'background_render', 'base_location_dossier', 'floor_plan_geometry_readback', 'scene_detail', 'scene_image_pipeline', 'scene_verify', 'shot_aware_bg_render_plan', 'shot_dependency_t2i', 't2i_review', 'world_guide']"} {"timestamp": "2026-05-28T02:43:24.398879+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_overlay_payload started (run_id=5d3c9b7f-2145-414e-a328-d7967aab6254, model=gpt)"} {"timestamp": "2026-05-28T02:43:24.404553+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_overlay_payload completed (completed=1/1, failed=0)"} {"timestamp": "2026-05-28T02:43:24.410942+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:base_location_dossier (Step base_location_dossier for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:62278 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/base_location_dossier?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:43:24.423671+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 2 downstream steps from base_location_dossier (delete_cp=True): ['floor_plan_geometry_readback', 'shot_aware_bg_render_plan']"} {"timestamp": "2026-05-28T02:43:24.425335+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step base_location_dossier started (run_id=8324b769-c9c3-44bf-9906-d27a15b44f11, model=gpt)"} {"timestamp": "2026-05-28T02:43:24.432784+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-28T02:43:24.433078+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step base_location_dossier completed (completed=1/1, failed=0)"} {"timestamp": "2026-05-28T02:43:24.436539+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:floor_plan_geometry_readback (Step floor_plan_geometry_readback for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:62281 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/floor_plan_geometry_readback?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:43:24.439359+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:43:24.447330+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:43:24.447794+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 1 downstream steps from floor_plan_geometry_readback (delete_cp=True): ['shot_aware_bg_render_plan']"} {"timestamp": "2026-05-28T02:43:24.449241+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-28T02:43:24.450611+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_geometry_readback started (run_id=8f1eeb97-6693-4651-a92b-09ca30333ea0, model=gpt)"} {"timestamp": "2026-05-28T02:43:24.543578+00:00", "level": "ERROR", "logger": "asyncio", "message": "Task was destroyed but it is pending!\ntask: wait_for=>"} {"timestamp": "2026-05-28T02:43:24.543761+00:00", "level": "ERROR", "logger": "asyncio", "message": "Task was destroyed but it is pending!\ntask: wait_for=>"} {"timestamp": "2026-05-28T02:43:24.543825+00:00", "level": "ERROR", "logger": "asyncio", "message": "Task was destroyed but it is pending!\ntask: wait_for=>"} {"timestamp": "2026-05-28T02:43:24.543859+00:00", "level": "ERROR", "logger": "asyncio", "message": "Task was destroyed but it is pending!\ntask: wait_for=>"} 11:43:24 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:43:24.547673+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} {"timestamp": "2026-05-28T02:43:24.552101+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:43:24.557409+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:43:24.559379+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T02:43:24.561694+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=floor_plan_overlay_payload, repaired=0)"} {"timestamp": "2026-05-28T02:43:24.571359+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-28T02:43:24.575579+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:43:24.582769+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:43:24.585577+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-28T02:43:24.589079+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:43:24.589683+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:43:24.590275+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T02:43:24.591460+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=base_location_dossier, repaired=0)"} INFO: 127.0.0.1:62290 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:43:53 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:43:53.306602+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:43:53 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:43:53.330449+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:62309 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:44:22 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:44:22.309875+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:44:22 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:44:22.326580+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:62329 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:44:42 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:44:42.314752+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:44:42 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:44:42.334862+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:62345 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:45:29 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:45:29.405608+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} {"timestamp": "2026-05-28T02:45:29.406653+00:00", "level": "ERROR", "logger": "app.core.steps.floor_plan_geometry_readback_step", "message": "floor_plan_geometry_readback fp_id=fp_wheelhouse unexpected: response.choices[0].message.content is empty", "exception": "Traceback (most recent call last):\n File \"/Users/manta/Documents/Projects/TheRoad-I1/backend/app/core/steps/floor_plan_geometry_readback_step.py\", line 226, in _execute\n readback = compute_readback(\n ^^^^^^^^^^^^^^^^^\n File \"/Users/manta/Documents/Projects/TheRoad-I1/backend/app/modules/pipeline/floor_plan_geometry_readback.py\", line 235, in compute_readback\n out = vlm_provider(\n ^^^^^^^^^^^^^\n File \"/Users/manta/Documents/Projects/TheRoad-I1/backend/app/core/steps/floor_plan_geometry_readback_step.py\", line 223, in counted\n return base_provider(**kw)\n ^^^^^^^^^^^^^^^^^^^\n File \"/Users/manta/Documents/Projects/TheRoad-I1/backend/app/modules/pipeline/floor_plan_vlm_provider.py\", line 798, in litellm_vlm_provider\n raise VlmProviderError(\napp.modules.pipeline.floor_plan_vlm_provider.VlmProviderError: response.choices[0].message.content is empty"} {"timestamp": "2026-05-28T02:45:29.436051+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_geometry_readback partial (completed=3/1, failed=1)"} {"timestamp": "2026-05-28T02:45:29.486606+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-28T02:45:29.495747+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:45:29.507432+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:45:29.509329+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-28T02:45:29.514067+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:45:29.515109+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:45:29.516006+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T02:45:29.517655+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=floor_plan_geometry_readback, repaired=0)"} INFO: 127.0.0.1:62366 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:45:40.254921+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:62374 - "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-28T02:45:40.262457+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step shot_aware_bg_render_plan started (run_id=e6bc168c-2603-4c57-8357-df1b31c106c9, model=gpt)"} 11:45:40 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:45:40.268423+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} {"timestamp": "2026-05-28T02:45:40.280026+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_prompt (Step background_prompt for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:62376 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/background_prompt?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:45:40.286030+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 7 downstream steps from background_prompt (delete_cp=True): ['background_render', 'scene_detail', 'scene_image_pipeline', 'scene_verify', 'shot_dependency_t2i', 't2i_review', 'world_guide']"} {"timestamp": "2026-05-28T02:45:40.287286+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step background_prompt started (run_id=ef953a3c-ad1f-4f83-b4f7-6fc52c4aeaab, model=gpt)"} 11:45:40 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:45:40.294634+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:45:40 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai 11:45:40 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:45:40.295715+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:45:40 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:45:40.297697+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} {"timestamp": "2026-05-28T02:45:40.298993+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:62379 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/scene_detail?mode=force HTTP/1.1" 400 Bad Request INFO: 127.0.0.1:62396 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:46:16 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:46:16.040089+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:46:16 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:46:16.042724+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 11:46:16 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:46:16.057361+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:46:25 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:46:25.150537+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:46:25 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:46:25.151973+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 11:46:25 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:46:25.166470+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:62421 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:46:31 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:46:31.362134+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:46:31 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:46:31.364725+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 11:46:31 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:46:31.377415+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:46:32 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:46:32.223220+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:46:32 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:46:32.225205+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 11:46:32 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:46:32.238992+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:46:50 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:46:50.282538+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:46:50 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:46:50.284584+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 11:46:50 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:46:50.296309+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:62443 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:47:01 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:47:01.952535+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:47:01 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:47:01.955211+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 11:47:01 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:47:01.970683+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:47:06 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:47:06.351228+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:47:06 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:47:06.353196+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 11:47:06 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:47:06.365008+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:47:11 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:47:11.696468+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:47:11 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:47:11.700137+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 11:47:11 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:47:11.715100+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:47:24 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:47:24.631797+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:47:24 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:47:24.640609+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:62480 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:47:37 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:47:37.520066+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:47:37 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:47:37.522637+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 11:47:42 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:47:42.615325+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:47:42 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:47:42.618536+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 11:47:47 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:47:47.269057+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:47:47 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:47:47.271336+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:62502 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:48:03 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:48:03.297363+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:48:03 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:48:03.298713+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:48:03.318138+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step background_prompt completed (completed=1/1, failed=0)"} {"timestamp": "2026-05-28T02:48:03.376439+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-28T02:48:03.386617+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:48:03.399595+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:48:03.402801+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-28T02:48:03.411376+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:48:03.413206+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:48:03.414827+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T02:48:03.417032+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=background_prompt, repaired=0)"} INFO: 127.0.0.1:62526 - "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:62547 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:49:13 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:49:13.146406+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:49:13 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:49:13.154495+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:62568 - "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:62586 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:50:24 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:50:24.446906+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} {"timestamp": "2026-05-28T02:50:24.467766+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step shot_aware_bg_render_plan partial (completed=1/1, failed=2)"} {"timestamp": "2026-05-28T02:50:24.524035+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-28T02:50:24.534358+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:50:24.547438+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:50:24.550425+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-28T02:50:24.560146+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:50:24.562485+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:50:24.564079+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T02:50:24.566912+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:62606 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:50:41.719347+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:scene_detail (Step scene_detail for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:62614 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/scene_detail?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T02:50:41.748065+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-28T02:50:41.751435+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T02:50:41.759145+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T02:50:41.760348+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-28T02:50:41.763363+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T02:50:41.763894+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T02:50:41.764439+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T02:50:41.765307+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-28T02:50:41.770165+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Preserved stale checkpoint for shot_dependency_t2i (consumed by scene_detail) — 파일 보존, DB stale. drift 방지를 위해 scene_detail force 완료 후 shot_dependency_t2i도 재실행 권장"} {"timestamp": "2026-05-28T02:50:41.770859+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 5 downstream steps from scene_detail (delete_cp=True): ['scene_image_pipeline', 'scene_verify', 'shot_dependency_t2i', 't2i_review', 'world_guide']"} {"timestamp": "2026-05-28T02:50:41.772132+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step scene_detail started (run_id=0d4c6975-f2a0-4835-b864-e715536ca592, model=gemini-pro)"} {"timestamp": "2026-05-28T02:50:41.774306+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 50 shot_staging entries loaded"} {"timestamp": "2026-05-28T02:50:41.774883+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 18 scenes with fixed elements loaded"} {"timestamp": "2026-05-28T02:50:41.782136+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "_load_chain_bg_owned_by_shot: 22 shots mapped from 12 backgrounds"} {"timestamp": "2026-05-28T02:50:41.782540+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "_load_chain_bg_id_by_shot: 22 shots mapped to bg_id from 12 backgrounds"} {"timestamp": "2026-05-28T02:50:41.785491+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 9 prop term maps loaded for Task 14 namespace reconciliation"} {"timestamp": "2026-05-28T02:50:41.790608+00:00", "level": "INFO", "logger": "app.core.steps.detail_steps", "message": "scene_detail: 30 segments → 50 tasks (shot-based, 0 edited skipped)"} 11:50:41 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:50:41.813544+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:50:41 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:50:41.815153+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:50:41 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:50:41.816698+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:50:41 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:50:41.817558+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:50:41 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:50:41.818363+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:62635 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:51:10 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:51:10.138835+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:51:10 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:51:10.140376+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:51:10.157061+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S1 shot1 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} 11:51:10 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:51:10.178067+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:51:14 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:51:14.884981+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:51:14 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:51:14.887281+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:51:14.910017+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 2: 제거할 ID: L01 — retry"} 11:51:14 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:51:14.912409+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:51:24 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:51:24.199006+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:51:24 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:51:24.201881+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:51:24 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:51:24.242890+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:51:26 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:51:26.088114+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:51:26 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:51:26.090974+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:51:26 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:51:26.122683+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:51:29 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:51:29.657415+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:51:29 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:51:29.659765+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:51:29 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:51:29.703538+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:62660 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:51:34 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:51:34.637402+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:51:34 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:51:34.639635+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:51:34.663050+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "씬 1: C10 유효하지 않은 아웃룩 → O10로 교체"} 11:51:34 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:51:34.682069+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:51:46 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:51:46.707853+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:51:46 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:51:46.709643+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:51:46 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:51:46.739957+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:51:58 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:51:58.452144+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:51:58 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:51:58.455027+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:51:58.476794+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S6 shot1 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} 11:51:58 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:51:58.493370+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:62683 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:52:03 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:03.428876+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:03 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:52:03.432869+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:52:03 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:52:03.472987+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:52:17 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:17.156631+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:17 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:52:17.159293+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:52:17.183755+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S5 shot7 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} 11:52:17 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:52:17.197404+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:52:18 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:18.605656+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:18 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:52:18.609217+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:52:18.629449+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 7: 제거할 ID: L01 — retry"} 11:52:18 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:52:18.631734+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:52:21 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:21.874687+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:21 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:52:21.877364+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:52:21 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:52:21.912335+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:52:23 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:23.300447+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:23 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:52:23.302546+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:52:23 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:52:23.320321+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:52:28 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:28.609952+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:28 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:52:28.612851+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:52:28 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:52:28.647830+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} INFO: 127.0.0.1:62711 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:52:34 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:34.170578+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:34 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:52:34.172314+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:52:34 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:52:34.193756+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:52:39 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:39.198285+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:39 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:52:39.200965+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:52:39 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:52:39.222364+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:52:39 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:39.515032+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:39 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:52:39.517251+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:52:39.541339+00:00", "level": "WARNING", "logger": "app.core.subject_reference_policy", "message": "subject_reference_policy: dropping policy for non-shot-visible subject C09 (visible=[]) render_prompt_card:s10.shot4"} {"timestamp": "2026-05-28T02:52:39.541495+00:00", "level": "WARNING", "logger": "app.core.subject_reference_policy", "message": "subject_reference_policy: dropping policy for non-shot-visible subject C05 (visible=[]) render_prompt_card:s10.shot4"} 11:52:39 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:52:39.549295+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:52:46 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:46.517127+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:46 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:52:46.520604+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:52:46 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:52:46.533608+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:52:51 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:51.005494+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:51 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:52:51.008252+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:52:51 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:52:51.050639+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:52:55 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:55.160695+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:55 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:52:55.163185+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:52:55 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:52:55.204561+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:52:55 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:55.982928+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:55 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:52:55.985655+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:52:55.987078+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "call_structured[scene_detail] Tier 1 failed (LLM returned empty response for step=scene_detail, model=gemini-pro), trying sanitized input"} 11:52:56 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:52:56.010927+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:52:58 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:52:58.053347+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:52:58 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:52:58.054765+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:52:58.059576+00:00", "level": "INFO", "logger": "app.core.steps.detail_steps", "message": "scene_detail owned_repair S5_Shot1: owned redraw repair 성공 — 2 redraw_violation 해소"} 11:52:58 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:52:58.069071+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:62735 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:53:16 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:53:16.026335+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:53:16 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:53:16.028799+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:53:16.056326+00:00", "level": "WARNING", "logger": "app.core.subject_reference_policy", "message": "subject_reference_policy: dropping policy for non-shot-visible subject C09 (visible=[]) render_prompt_card:s10.shot4"} {"timestamp": "2026-05-28T02:53:16.056612+00:00", "level": "WARNING", "logger": "app.core.subject_reference_policy", "message": "subject_reference_policy: dropping policy for non-shot-visible subject C05 (visible=[]) render_prompt_card:s10.shot4"} 11:53:16 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:53:16.074359+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:53:19 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:53:19.462374+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:53:19 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:53:19.465358+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:53:19.488316+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S11 shot1 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_002', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} 11:53:19 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:53:19.506769+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:53:22 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:53:22.906727+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:53:22 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:53:22.908783+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:53:22.927938+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "씬 10: C09 유효하지 않은 아웃룩 → O09로 교체"} 11:53:22 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:53:22.950229+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:53:28 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:53:28.876111+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:53:28 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:53:28.878668+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:53:28.899310+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S12 shot5 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} {"timestamp": "2026-05-28T02:53:28.899599+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S12 shot5 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_002', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} {"timestamp": "2026-05-28T02:53:28.907605+00:00", "level": "WARNING", "logger": "app.core.steps._owned_helpers", "message": "merge_owned_object_usage: drop unknown owned_token [0]='dark red paint' (usage_kind='redraw') scene_detail s12_shot5"} 11:53:28 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:53:28.910360+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:53:31 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:53:31.471740+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:53:31 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:53:31.474065+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:53:31 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:53:31.508252+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} INFO: 127.0.0.1:62764 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:53:39 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:53:39.262128+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:53:39 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:53:39.264721+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:53:39 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:53:39.285531+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:53:43 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:53:43.873295+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:53:43 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:53:43.875327+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:53:43 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:53:43.889880+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:53:51 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:53:51.125826+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:53:51 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:53:51.128579+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:53:51 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:53:51.172724+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:53:51 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:53:51.730138+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:53:51 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:53:51.733561+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:53:51 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:53:51.746612+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:53:58 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:53:58.547197+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:53:58 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:53:58.549988+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:53:58.574017+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 13: 제거할 ID: L01 — retry"} 11:53:58 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:53:58.576332+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:53:59 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:53:59.498164+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:53:59 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:53:59.502026+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:53:59 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:53:59.538366+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:54:00 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:54:00.213871+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:54:00 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:54:00.217540+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:54:00.226517+00:00", "level": "INFO", "logger": "app.core.steps.detail_steps", "message": "scene_detail owned_repair S12_Shot5: owned redraw repair 성공 — 4 redraw_violation 해소"} 11:54:00 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:54:00.243753+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:62791 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:54:06 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:54:06.853965+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:54:06 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:54:06.856800+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:54:06 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:54:06.893072+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:54:07 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:54:07.890264+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:54:07 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:54:07.892735+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:54:07.905738+00:00", "level": "WARNING", "logger": "app.core.frame_spatial_contract", "message": "frame_spatial_contract: dropping constraint for non-shot-visible character target C02 (visible=['C01', 'L11'])"} 11:54:07 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:54:07.920659+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:54:11 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:54:11.651870+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:54:11 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:54:11.653103+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:54:11 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:54:11.675705+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:54:25 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:54:25.529263+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:54:25 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:54:25.532531+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:54:25.557300+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 13: retry 후에도 위반 {'L02'} — 강제 제거"} {"timestamp": "2026-05-28T02:54:25.557537+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S13 shot5 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} 11:54:25 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:54:25.575298+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:54:31 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:54:31.493936+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:54:31 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:54:31.497662+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:54:31 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:54:31.545686+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:62814 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:54:47 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:54:47.063341+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:54:47 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:54:47.066296+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:54:47 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:54:47.100685+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:54:49 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:54:49.134670+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:54:49 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:54:49.136561+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:54:49.163429+00:00", "level": "WARNING", "logger": "app.core.frame_spatial_contract", "message": "frame_spatial_contract: dropping constraint for non-shot-visible prop target P02 (visible=['C01', 'C05'])"} 11:54:49 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:54:49.169426+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:54:53 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:54:53.717231+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:54:53 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:54:53.720706+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:54:53.731504+00:00", "level": "WARNING", "logger": "app.core.frame_spatial_contract", "message": "frame_spatial_contract: dropping constraint for non-shot-visible character target C06 (visible=['C01', 'L10'])"} {"timestamp": "2026-05-28T02:54:53.731794+00:00", "level": "WARNING", "logger": "app.core.subject_reference_policy", "message": "subject_reference_policy: dropping policy for non-shot-visible subject C06 (visible=['C01']) render_prompt_card:s19.shot3"} 11:54:53 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:54:53.746272+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:54:56 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:54:56.241178+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:54:56 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:54:56.243770+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:54:56.266708+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S16 shot3 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} 11:54:56 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:54:56.278079+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:54:58 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:54:58.749419+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:54:58 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:54:58.751142+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:54:58.769471+00:00", "level": "WARNING", "logger": "app.core.frame_spatial_contract", "message": "frame_spatial_contract: dropping constraint for non-shot-visible character target C02 (visible=['C01', 'L11'])"} {"timestamp": "2026-05-28T02:54:58.776767+00:00", "level": "WARNING", "logger": "app.core.visible_entities_validator", "message": "validate_visible_entities_contract audit: S15_Shot4 entity_canon.name='수리영' base=C01 — no specific ID (candidates=['C01', 'C01O01']) within ±60 window (Source 2 downgraded to audit, see W20F2)."} 11:54:58 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:54:58.783226+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:62837 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:55:05 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:55:05.934784+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:55:05 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:55:05.937392+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:55:05 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:55:05.964776+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:55:17 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:55:17.612254+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:55:17 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:55:17.614704+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:55:17.633716+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 18: 제거할 ID: L05 — retry"} 11:55:17 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:55:17.636259+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:55:25 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:55:25.968010+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:55:25 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:55:25.971539+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:55:25.993614+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S19 shot3 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_002', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} {"timestamp": "2026-05-28T02:55:25.994065+00:00", "level": "WARNING", "logger": "app.core.frame_spatial_contract", "message": "frame_spatial_contract: dropping constraint for non-shot-visible character target C06 (visible=['C01', 'L10'])"} {"timestamp": "2026-05-28T02:55:25.994211+00:00", "level": "WARNING", "logger": "app.core.subject_reference_policy", "message": "subject_reference_policy: dropping policy for non-shot-visible subject C06 (visible=['C01']) render_prompt_card:s19.shot3"} 11:55:26 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:55:26.006007+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:55:29 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:55:29.847979+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:55:29 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:55:29.851663+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:55:29.875565+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 19: 제거할 ID: L09 — retry"} 11:55:29 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:55:29.878183+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:62858 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:55:37 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:55:37.606440+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:55:37 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:55:37.608902+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:55:37 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:55:37.623237+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:55:40 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:55:40.629441+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:55:40 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:55:40.633189+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:55:40.656226+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 20: 제거할 ID: L01 — retry"} 11:55:40 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:55:40.658529+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:55:45 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:55:45.463680+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:55:45 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:55:45.467566+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:55:45.489518+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 18: 제거할 ID: L05 — retry"} 11:55:45 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:55:45.492882+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:55:46 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:55:46.043210+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:55:46 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:55:46.045303+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:55:46 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:55:46.058141+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:55:51 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:55:51.062396+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:55:51 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:55:51.066669+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:55:51.073828+00:00", "level": "INFO", "logger": "app.core.steps.detail_steps", "message": "scene_detail owned_repair S19_Shot3: owned redraw repair 성공 — 1 redraw_violation 해소"} 11:55:51 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:55:51.092082+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:55:58 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:55:58.175171+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:55:58 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:55:58.178187+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:55:58.201653+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 19: retry 후에도 위반 {'L01'} — 강제 제거"} 11:55:58 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:55:58.218989+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:62883 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:56:06 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:56:06.670826+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:56:06 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:56:06.672958+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:56:06.694502+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 20: retry 후에도 위반 {'L02'} — 강제 제거"} 11:56:06 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:56:06.712409+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:56:15 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:56:15.585210+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:56:15 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:56:15.586818+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:56:15.612529+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S18 shot8 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} {"timestamp": "2026-05-28T02:56:15.612743+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S18 shot8 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_002', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} 11:56:15 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:56:15.624711+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:56:22 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:56:22.565263+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:56:22 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:56:22.568965+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:56:22 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:56:22.593107+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:56:26 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:56:26.957057+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:56:26 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:56:26.960140+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:56:26.983052+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 21: 제거할 ID: L01 — retry"} 11:56:26 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:56:26.985128+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:62909 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:56:35 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:56:35.452268+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:56:35 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:56:35.453931+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:56:35.481354+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "씬 21: C01 유효하지 않은 아웃룩 → O01로 교체"} 11:56:35 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:56:35.488550+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:56:43 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:56:43.780930+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:56:43 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:56:43.783398+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:56:43.797488+00:00", "level": "WARNING", "logger": "app.core.frame_spatial_contract", "message": "frame_spatial_contract: dropping constraint for non-shot-visible prop target P02 (visible=['C01', 'C05'])"} 11:56:43 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:56:43.812774+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:56:46 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:56:46.497375+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:56:46 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:56:46.500115+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:56:46 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:56:46.525570+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:56:47 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:56:47.737520+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:56:47 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:56:47.740030+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:56:47 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:56:47.755288+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:56:52 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:56:52.246766+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:56:52 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:56:52.250061+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:56:52 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:56:52.294709+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:56:54 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:56:54.130742+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:56:54 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:56:54.134289+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:56:54.158485+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 21: retry 후에도 위반 {'L02'} — 강제 제거"} 11:56:54 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:56:54.175879+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:56:54 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:56:54.654976+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:56:54 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:56:54.657850+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:56:54 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:56:54.673289+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:57:01 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:57:01.584355+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:57:01 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:57:01.586599+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:57:01.596099+00:00", "level": "INFO", "logger": "app.core.steps.detail_steps", "message": "scene_detail owned_repair S21_Shot8: owned redraw repair 성공 — 1 redraw_violation 해소"} 11:57:01 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:57:01.610433+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:62935 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:57:08 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:57:08.278826+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:57:08 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:57:08.282069+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:57:08.304064+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 24: 제거할 ID: L01 — retry"} 11:57:08 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:57:08.306866+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:57:14 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:57:14.959627+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:57:14 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:57:14.963199+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:57:15 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:57:15.001481+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:57:22 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:57:22.979781+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:57:22 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:57:22.982863+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:57:23.007013+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S26 shot5 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} {"timestamp": "2026-05-28T02:57:23.007171+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S26 shot5 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_002', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} {"timestamp": "2026-05-28T02:57:23.007489+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S26 shot5 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_003', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} 11:57:23 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:57:23.025174+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:57:26 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:57:26.896571+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:57:26 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:57:26.900275+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:57:26.926416+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S25 shot7 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_002', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} 11:57:26 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:57:26.938479+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:57:32 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:57:32.875308+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:57:32 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:57:32.876241+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:57:32 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:57:32.895785+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:62978 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:57:34 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:57:34.253519+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:57:34 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:57:34.255897+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:57:34.274602+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 26: 제거할 ID: L01 — retry"} 11:57:34 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:57:34.276693+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:57:41 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:57:41.161191+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:57:41 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:57:41.164925+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:57:41 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:57:41.207407+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:57:44 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:57:44.319136+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:57:44 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:57:44.321618+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:57:44 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:57:44.361618+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:57:45 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:57:45.140352+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:57:45 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:57:45.142502+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:57:45.147724+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "call_structured[scene_detail] Tier 1 failed (LLM returned empty response for step=scene_detail, model=gemini-pro), trying sanitized input"} 11:57:45 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:57:45.165142+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:57:45 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:57:45.170871+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:57:45 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:57:45.172376+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:57:45 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:57:45.192709+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:57:45 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:57:45.768596+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:57:45 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:57:45.770534+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:57:45.772644+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "call_structured[scene_detail] Tier 2 sanitized failed (LLM returned empty response for step=scene_detail, model=gemini-pro), trying GPT fallback"} 11:57:45 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T02:57:45.775927+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 11:57:51 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:57:51.579590+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:57:51 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:57:51.583307+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:57:51 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:57:51.608246+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:58:02 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:58:02.168753+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:58:02 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:58:02.169934+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:58:02.196810+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 28: 제거할 ID: L01 — retry"} 11:58:02 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:58:02.199104+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:62999 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:58:06 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:58:06.296326+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:58:06 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:58:06.297770+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:58:06.312974+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 26: retry 후에도 위반 {'L99'} — 강제 제거"} 11:58:06 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:58:06.324006+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:58:16 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:58:16.407369+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:58:16 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:58:16.408328+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:58:16.426249+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S29 shot1 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} {"timestamp": "2026-05-28T02:58:16.426403+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S29 shot1 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_002', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} {"timestamp": "2026-05-28T02:58:16.426487+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S29 shot1 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_003', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} 11:58:16 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:58:16.435122+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:58:24 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:58:24.189579+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:58:24 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:58:24.191911+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:58:24 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:58:24.207573+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:58:30 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:58:30.572541+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:58:30 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:58:30.575225+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:58:30.599118+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 29: 제거할 ID: L20 — retry"} 11:58:30 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:58:30.601668+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:58:31 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:58:31.175059+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:58:31 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:58:31.177093+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 11:58:31 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:58:31.208762+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 11:58:31 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:58:31.825053+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:58:31 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:58:31.827135+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 11:58:31 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T02:58:31.839506+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 11:58:33 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:58:33.733752+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:58:33 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:58:33.736193+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:58:33.759936+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 28: retry 후에도 위반 {'L02'} — 강제 제거"} {"timestamp": "2026-05-28T02:58:33.760329+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S28 shot5 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} INFO: 127.0.0.1:63026 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:58:40 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:58:40.284647+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:58:40 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T02:58:40.286500+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:58:40.298326+00:00", "level": "INFO", "logger": "app.core.steps.detail_steps", "message": "scene_detail owned_repair S29_Shot1: owned redraw repair 성공 — 1 redraw_violation 해소"} 11:58:59 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:58:59.088959+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:58:59 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:58:59.092759+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:63046 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 11:59:12 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:59:12.199739+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:59:12 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T02:59:12.202885+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:59:12.227729+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S29 shot8 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} {"timestamp": "2026-05-28T02:59:12.228012+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S29 shot8 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_002', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} 11:59:12 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T02:59:12.804927+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 11:59:12 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T02:59:12.806322+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T02:59:12.822897+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 29: 제거할 ID: L20 — retry"} 11:59:12 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T02:59:12.824771+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:63066 - "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:63085 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:00:06 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:00:06.333820+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:00:06 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T03:00:06.336187+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:00:06.356942+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 29: retry 후에도 위반 {'L01'} — 강제 제거"} {"timestamp": "2026-05-28T03:00:06.357221+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S29 shot4 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} {"timestamp": "2026-05-28T03:00:06.357339+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S29 shot4 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_002', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} {"timestamp": "2026-05-28T03:00:06.369988+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "_load_chain_bg_owned_by_shot: 22 shots mapped from 12 backgrounds"} {"timestamp": "2026-05-28T03:00:06.371686+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 50 shot_staging entries loaded"} {"timestamp": "2026-05-28T03:00:06.377997+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 50 shot_staging entries loaded"} {"timestamp": "2026-05-28T03:00:06.379040+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 18 scenes with fixed elements loaded"} {"timestamp": "2026-05-28T03:00:06.392013+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "_load_chain_bg_owned_by_shot: 22 shots mapped from 12 backgrounds"} {"timestamp": "2026-05-28T03:00:06.392587+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "_load_chain_bg_id_by_shot: 22 shots mapped to bg_id from 12 backgrounds"} {"timestamp": "2026-05-28T03:00:06.396870+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 9 prop term maps loaded for Task 14 namespace reconciliation"} {"timestamp": "2026-05-28T03:00:06.456699+00:00", "level": "WARNING", "logger": "app.core.subject_reference_policy", "message": "subject_reference_policy: dropping policy for non-shot-visible subject C09 (visible=[]) render_prompt_card:s10.shot4"} {"timestamp": "2026-05-28T03:00:06.456734+00:00", "level": "WARNING", "logger": "app.core.subject_reference_policy", "message": "subject_reference_policy: dropping policy for non-shot-visible subject C05 (visible=[]) render_prompt_card:s10.shot4"} {"timestamp": "2026-05-28T03:00:06.488783+00:00", "level": "WARNING", "logger": "app.core.frame_spatial_contract", "message": "frame_spatial_contract: dropping constraint for non-shot-visible character target C02 (visible=['C01', 'L11'])"} {"timestamp": "2026-05-28T03:00:06.501728+00:00", "level": "WARNING", "logger": "app.core.frame_spatial_contract", "message": "frame_spatial_contract: dropping constraint for non-shot-visible prop target P02 (visible=['C01', 'C05'])"} {"timestamp": "2026-05-28T03:00:06.504938+00:00", "level": "WARNING", "logger": "app.core.frame_spatial_contract", "message": "frame_spatial_contract: dropping constraint for non-shot-visible character target C06 (visible=['C01', 'L10'])"} {"timestamp": "2026-05-28T03:00:06.504979+00:00", "level": "WARNING", "logger": "app.core.subject_reference_policy", "message": "subject_reference_policy: dropping policy for non-shot-visible subject C06 (visible=['C01']) render_prompt_card:s19.shot3"} {"timestamp": "2026-05-28T03:00:06.594776+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step scene_detail completed (completed=50/50, failed=0)"} {"timestamp": "2026-05-28T03:00:06.623134+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:00:06.664860+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:00:06.676411+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:00:06.686141+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:00:06.687449+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:00:06.694876+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 28 entities updated, 28 total short_ids found"} {"timestamp": "2026-05-28T03:00:06.702481+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:00:06.703050+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T03:00:06.704245+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=scene_detail, repaired=0)"} INFO: 127.0.0.1:63102 - "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:63109 - "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:00:50.830343+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: run_all:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:all (Run all all steps for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:63119 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/run-all?mode=resume&category=all&approve_image_generation=true&image_call_cap=60 HTTP/1.1" 200 OK {"timestamp": "2026-05-28T03:00:50.835100+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step planning_doc_analysis: skipped"} {"timestamp": "2026-05-28T03:00:50.836094+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step text_cleanup: skipped"} {"timestamp": "2026-05-28T03:00:50.837446+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_segmentation: skipped"} {"timestamp": "2026-05-28T03:00:50.838209+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step episode_summary: skipped"} {"timestamp": "2026-05-28T03:00:50.839303+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step visual_world_rules: skipped"} {"timestamp": "2026-05-28T03:00:50.840509+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_save: skipped"} {"timestamp": "2026-05-28T03:00:50.842478+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_character_list: skipped"} {"timestamp": "2026-05-28T03:00:50.844822+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_summary: skipped"} {"timestamp": "2026-05-28T03:00:50.847080+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step beat_extract: skipped"} {"timestamp": "2026-05-28T03:00:50.849906+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_extract: skipped"} {"timestamp": "2026-05-28T03:00:50.851952+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_validator: skipped"} {"timestamp": "2026-05-28T03:00:50.854205+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_character: skipped"} {"timestamp": "2026-05-28T03:00:50.855479+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_character: skipped"} {"timestamp": "2026-05-28T03:00:50.857560+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_location: skipped"} {"timestamp": "2026-05-28T03:00:50.858955+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_location: skipped"} {"timestamp": "2026-05-28T03:00:50.860885+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_prop: skipped"} {"timestamp": "2026-05-28T03:00:50.862247+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_prop: skipped"} {"timestamp": "2026-05-28T03:00:50.865627+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_merge: skipped"} {"timestamp": "2026-05-28T03:00:50.866697+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_relation: skipped"} {"timestamp": "2026-05-28T03:00:50.868025+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_filter: skipped"} {"timestamp": "2026-05-28T03:00:50.869517+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_detail: skipped"} {"timestamp": "2026-05-28T03:00:50.871106+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_t2i: skipped"} {"timestamp": "2026-05-28T03:00:50.872256+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_selection: skipped"} {"timestamp": "2026-05-28T03:00:50.905420+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:00:50.941342+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:00:50.955043+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:00:50.965923+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:00:50.967321+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:00:50.975706+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:00:50.976480+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:00:50.977159+00:00", "level": "WARNING", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca status NOT advanced — incomplete steps: ['shot_dependency_t2i', 't2i_review', 'floor_plan_geometry_readback', 'shot_aware_bg_render_plan']"} {"timestamp": "2026-05-28T03:00:50.978176+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-28T03:00:50.980138+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_director: skipped"} {"timestamp": "2026-05-28T03:00:50.981903+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_director: skipped"} {"timestamp": "2026-05-28T03:00:50.984240+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_camera_flow: skipped"} {"timestamp": "2026-05-28T03:00:50.985269+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_dependency: skipped"} {"timestamp": "2026-05-28T03:00:51.007855+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:00:51.038359+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:00:51.051053+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:00:51.060443+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:00:51.061726+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:00:51.068640+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:00:51.069261+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:00:51.069821+00:00", "level": "WARNING", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca status NOT advanced — incomplete steps: ['shot_dependency_t2i', 't2i_review', 'floor_plan_geometry_readback', 'shot_aware_bg_render_plan']"} {"timestamp": "2026-05-28T03:00:51.070613+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-28T03:00:51.071919+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase1: skipped"} {"timestamp": "2026-05-28T03:00:51.093270+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:00:51.121643+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:00:51.134989+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:00:51.144255+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:00:51.145499+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:00:51.152604+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:00:51.153164+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:00:51.153695+00:00", "level": "WARNING", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca status NOT advanced — incomplete steps: ['shot_dependency_t2i', 't2i_review', 'floor_plan_geometry_readback', 'shot_aware_bg_render_plan']"} {"timestamp": "2026-05-28T03:00:51.154415+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-28T03:00:51.155981+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase2: skipped"} {"timestamp": "2026-05-28T03:00:51.176621+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:00:51.205812+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:00:51.219613+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:00:51.228031+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:00:51.229150+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:00:51.236083+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:00:51.236695+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:00:51.237255+00:00", "level": "WARNING", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca status NOT advanced — incomplete steps: ['shot_dependency_t2i', 't2i_review', 'floor_plan_geometry_readback', 'shot_aware_bg_render_plan']"} {"timestamp": "2026-05-28T03:00:51.238131+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-28T03:00:51.239555+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase3: skipped"} {"timestamp": "2026-05-28T03:00:51.241893+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_staging: skipped"} {"timestamp": "2026-05-28T03:00:51.244075+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step background_classify: skipped"} {"timestamp": "2026-05-28T03:00:51.245783+00:00", "level": "ERROR", "logger": "app.services.analysis_dispatch_service", "message": "Step background_master_plan error: background_master_plan contract drift detected — schema_version mismatch: 체크포인트=4, 현재=3. force 재실행 또는 수동 진단 필요."} INFO: 127.0.0.1:63122 - "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:63129 - "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:63132 - "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:01:26.988471+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_dependency_t2i (Step shot_dependency_t2i for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:63146 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/shot_dependency_t2i?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T03:01:26.993023+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step shot_dependency_t2i started (run_id=fd76133e-d801-47d9-9f1f-6db294f59b02, model=gpt-mini)"} 12:01:27 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:01:27.005506+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} {"timestamp": "2026-05-28T03:01:27.011020+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:t2i_review (Step t2i_review for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:63148 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/t2i_review?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T03:01:27.016576+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step t2i_review started (run_id=8bee8d2c-9609-4a2e-bcbd-c197b9e09481, model=gpt)"} 12:01:27 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:01:27.032325+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} {"timestamp": "2026-05-28T03:01:27.033530+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:world_guide (Step world_guide for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:63151 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/world_guide?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T03:01:27.038934+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 1 downstream steps from world_guide (delete_cp=True): ['scene_image_pipeline']"} {"timestamp": "2026-05-28T03:01:27.040390+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step world_guide started (run_id=f83c7c07-2864-43e6-99d7-039cc983df5c, model=gpt)"} {"timestamp": "2026-05-28T03:01:27.054893+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:63154 - "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 12:01:27 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:01:27.057941+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} {"timestamp": "2026-05-28T03:01:27.060481+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-28T03:01:27.061941+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step ref_image_gen started (run_id=1dc840df-40e1-4bff-aef1-cdf8caee0e32, model=gemini-image)"} {"timestamp": "2026-05-28T03:01:27.072513+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:63157 - "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:01:27.076876+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:01:27.078328+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step background_render started (run_id=b764ed3e-5be0-4ba1-92da-19628e3186e3, model=gpt)"} {"timestamp": "2026-05-28T03:01:27.086937+00:00", "level": "ERROR", "logger": "app.core.steps.background_render_step", "message": "background_render shot_aware_plan gate failed fp=fp_l05_main: shot_aware_plan: plan not production_clear (fp_id='fp_l05_main' status='failed' production_clear=False)"} {"timestamp": "2026-05-28T03:01:27.087063+00:00", "level": "ERROR", "logger": "app.core.steps.background_render_step", "message": "background_render shot_aware_plan gate failed fp=fp_l09_market_main: shot_aware_plan: plan not production_clear (fp_id='fp_l09_market_main' status='failed' production_clear=False)"} {"timestamp": "2026-05-28T03:01:27.088173+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:01:27.122056+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:01:27.135734+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:01:27.144242+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:01:27.145363+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:01:27.152254+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:01:27.152910+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:01:27.153544+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T03:01:27.154430+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-28T03:01:27.159840+00:00", "level": "ERROR", "logger": "app.core.step_runner", "message": "Step ref_image_gen _execute_and_finalize crashed: 분석이 완료되지 않았습니다 (현재: error). 분석을 먼저 완료하세요.\nTraceback (most recent call last):\n File \"/Users/manta/Documents/Projects/TheRoad-I1/backend/app/core/step_runner.py\", line 1224, in _execute_and_finalize\n result = self._execute(mode=execute_mode)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/Users/manta/Documents/Projects/TheRoad-I1/backend/app/core/steps/image_steps.py\", line 164, in _execute\n result = svc.generate_base_references(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/Users/manta/Documents/Projects/TheRoad-I1/backend/app/services/reference_image_service.py\", line 85, in generate_base_references\n return self.generate_reference_images_only(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/Users/manta/Documents/Projects/TheRoad-I1/backend/app/services/reference_image_service.py\", line 126, in generate_reference_images_only\n return self._pipeline_svc.run(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File \"/Users/manta/Documents/Projects/TheRoad-I1/backend/app/services/reference_pipeline_orchestrator.py\", line 161, in run\n raise AppError(\napp.core.errors.AppError: 분석이 완료되지 않았습니다 (현재: error). 분석을 먼저 완료하세요.\n"} {"timestamp": "2026-05-28T03:01:27.159884+00:00", "level": "ERROR", "logger": "app.services.step_execution_service", "message": "Step ref_image_gen failed: 분석이 완료되지 않았습니다 (현재: error). 분석을 먼저 완료하세요."} INFO: 127.0.0.1:63166 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:01:36 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:01:36.211911+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:01:36 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:01:36.216336+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:01:36.231698+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L01 (2 shots) — LLM OK"} 12:01:36 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:01:36.234789+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 12:01:37 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:01:37.358465+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:01:37 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:01:37.359192+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:01:37.359720+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "call_structured[shot_dependency_t2i] Tier 1 failed (LLM returned empty response for step=shot_dependency_t2i, model=gpt-mini), trying sanitized input"} 12:01:37 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:01:37.361083+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 12:01:38 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:01:38.206952+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:01:38 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:01:38.208080+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:01:38.209694+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "call_structured[shot_dependency_t2i] Tier 2 sanitized failed (LLM returned empty response for step=shot_dependency_t2i, model=gpt-mini), trying GPT fallback"} 12:01:38 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:01:38.211581+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 12:01:51 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:01:51.411868+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:01:51 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T03:01:51.413232+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:01:51.421307+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L02 (2 shots) — LLM OK"} 12:01:51 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:01:51.423023+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} INFO: 127.0.0.1:63186 - "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:63197 - "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:02:05.754558+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:scene_cinematography (Step scene_cinematography for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:63199 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/scene_cinematography?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T03:02:05.760442+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step scene_cinematography started (run_id=2039e8ae-7c7f-47ca-8283-06e7473bde18, model=gemini-pro)"} {"timestamp": "2026-05-28T03:02:05.765991+00:00", "level": "INFO", "logger": "app.core.steps.director_steps", "message": "Scene cinematography: 30 scenes, 30 shot types, 2 variations"} 12:02:05 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T03:02:05.767496+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:63201 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/shot_cinematography?mode=force HTTP/1.1" 400 Bad Request INFO: 127.0.0.1:63204 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/scene_dependency?mode=force HTTP/1.1" 400 Bad Request {"timestamp": "2026-05-28T03:02:05.823104+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:outlook_extraction (Step outlook_extraction for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:63206 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/outlook_extraction?mode=force HTTP/1.1" 200 OK INFO: 127.0.0.1:63208 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/scene_verify?mode=force HTTP/1.1" 400 Bad Request {"timestamp": "2026-05-28T03:02:05.855299+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:02:05.858166+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:outlook_dedup (Step outlook_dedup for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:63210 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/outlook_dedup?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T03:02:05.879147+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step outlook_dedup started (run_id=bfd20c94-5661-4d0e-a6f9-27a2b1078141, model=gpt)"} {"timestamp": "2026-05-28T03:02:05.880751+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "_resolve_model: unknown step 'entity_review' — falling back to 'gemini-pro'. If intentional, register in STEP_MANIFEST or _PIPELINE_STEP_EXTENSIONS."} 12:02:05 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T03:02:05.882106+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:63213 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/project_summary?mode=force HTTP/1.1" 400 Bad Request {"timestamp": "2026-05-28T03:02:05.888140+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:02:05.898669+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:02:05.908370+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:02:05.909756+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:02:05.917782+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:02:05.918485+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:02:05.919142+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T03:02:05.920144+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-28T03:02:05.923438+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step outlook_extraction started (run_id=844d7fc7-208c-4bef-8839-dcd5eaf18759, model=gemini-pro)"} {"timestamp": "2026-05-28T03:02:05.926010+00:00", "level": "INFO", "logger": "app.core.steps.outlook_steps", "message": "Outlook phase1: 30 scenes, 13 characters"} 12:02:05 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T03:02:05.927979+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 12:02:12 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:02:12.140331+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:02:12 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:02:12.142022+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:02:12.157257+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L04 (7 shots) — LLM OK"} 12:02:12 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:02:12.159823+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 12:02:16 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:02:16.642278+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:02:16 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T03:02:16.644775+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:02:16.654819+00:00", "level": "INFO", "logger": "app.core.steps.outlook_steps", "message": "Outlook dedup: no duplicates found"} {"timestamp": "2026-05-28T03:02:16.669915+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step outlook_dedup completed (completed=1/1, failed=0)"} {"timestamp": "2026-05-28T03:02:16.735637+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:02:16.807903+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:02:16.826040+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:02:16.840913+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:02:16.843175+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:02:16.854061+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:02:16.854801+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:02:16.855564+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T03:02:16.856964+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=outlook_dedup, repaired=0)"} 12:02:26 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:02:26.157496+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:02:26 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T03:02:26.161129+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:02:26.175737+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review entity C13 [missing_ethnicity]: 보통명사 인물인 12세 여자아이에 원문 기반 required demographic descriptor인 Korean이 T2I에서 누락되었습니다."} {"timestamp": "2026-05-28T03:02:26.175988+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review entity L16 [awkward_translation]: 원문 'PC방'은 한국적 업종 명칭으로 자연스러운데 T2I에서 'internet cafe'로 일반 번역되어 장소의 문화적 뉘앙스가 약해졌습니다."} {"timestamp": "2026-05-28T03:02:26.176075+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review entity L04 [awkward_translation]: 원문 '다세대 빌라'는 한국 주거 유형으로 자연스러운 표현인데 T2I의 'multi-family villa'는 영어권에서 어색하게 읽히고 의미가"} {"timestamp": "2026-05-28T03:02:26.176200+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review entity L12 [awkward_translation]: 원문 '다세대 빌라'는 한국 주거 유형으로 자연스러운 표현인데 T2I의 'multi-family villa'는 영어권에서 어색하게 읽히고 의미가"} {"timestamp": "2026-05-28T03:02:26.176286+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review entity L18 [proper_noun_translated]: 원문 지명 '서해'가 T2I에서 일반적인 South Korea의 wide open ocean으로 처리되어 고유 지명 뉘앙스가 사라졌습니다. Re"} {"timestamp": "2026-05-28T03:02:26.176345+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review entity P09 [missing_ethnicity]: 사진 속 훼손된 피해자 신체 일부에 원문 기반 required demographic descriptor인 Korean으로 보이는 인물 정보가 T"} 12:02:26 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:02:26.181629+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 12:02:26 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:02:26.231626+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:02:26 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T03:02:26.233093+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:02:26.254426+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step world_guide completed (completed=1/1, failed=0)"} {"timestamp": "2026-05-28T03:02:26.276503+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:02:26.308134+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:02:26.320193+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:02:26.329299+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:02:26.330530+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:02:26.337533+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:02:26.338095+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:02:26.338611+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T03:02:26.339626+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=world_guide, repaired=0)"} INFO: 127.0.0.1:63244 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:02:50 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:02:50.200110+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:02:50 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:02:50.203821+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:02:50.221687+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L05 (12 shots) — LLM OK"} 12:02:50 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:02:50.224562+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 12:02:54 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:02:54.116861+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:02:54 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T03:02:54.120247+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:02:54.134245+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review scene batch 1/5: 10 items, 1 issues"} 12:02:54 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:02:54.137122+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 12:03:01 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:01.232642+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:01 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:03:01.235686+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:01.251606+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L06 (3 shots) — LLM OK"} 12:03:01 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:03:01.254563+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 12:03:04 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:04.948367+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:04 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T03:03:04.951104+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:04.963043+00:00", "level": "INFO", "logger": "app.core.steps.outlook_steps", "message": "Outlook phase1 complete: 11 outlooks (O01~O11)"} {"timestamp": "2026-05-28T03:03:04.963323+00:00", "level": "WARNING", "logger": "app.core.steps.outlook_steps", "message": "Outlook phase1 retry 1/2: 2 orphan characters — ['C08(로트와일러)', 'C12(검은 고양이)']"} 12:03:04 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T03:03:04.967748+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:63268 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:03:08 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:08.844087+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:08 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:03:08.845723+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:08.863026+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L07 (2 shots) — LLM OK"} 12:03:08 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:03:08.865286+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 12:03:09 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:09.380726+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:09 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T03:03:09.384258+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:09.394792+00:00", "level": "WARNING", "logger": "app.core.steps.outlook_steps", "message": "Outlook phase1 retry 1: LLM returned 0 outlooks, stopping"} {"timestamp": "2026-05-28T03:03:09.395842+00:00", "level": "INFO", "logger": "app.core.steps.outlook_steps", "message": "O00 (Null Outlook) assigned to 2 characters: ['C08', 'C12']"} {"timestamp": "2026-05-28T03:03:09.405562+00:00", "level": "INFO", "logger": "app.core.steps.outlook_steps", "message": "Outlook phase2: mapping 11 outlooks to 30 scenes (O00: 2 chars excluded)"} 12:03:09 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T03:03:09.410822+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 12:03:16 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:16.268364+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:16 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:03:16.270308+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:16.281890+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L09 (4 shots) — LLM OK"} 12:03:16 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:03:16.284041+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 12:03:23 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:23.041003+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:23 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:03:23.043611+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:23.059184+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L11 (2 shots) — LLM OK"} 12:03:23 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:03:23.061923+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} INFO: 127.0.0.1:63294 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:03:35 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:35.566279+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:35 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T03:03:35.569125+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:35.593246+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step scene_cinematography completed (completed=30/30, failed=0)"} {"timestamp": "2026-05-28T03:03:35.636480+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:03:35.693844+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:03:35.711095+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:03:35.727244+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:03:35.743379+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:03:35.745451+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:03:35.758242+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:03:35.759067+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:03:35.759736+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T03:03:35.760981+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=scene_cinematography, repaired=0)"} 12:03:37 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:37.086517+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:37 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:03:37.088743+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:37.107451+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L13 (3 shots) — LLM OK"} 12:03:37 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:03:37.109911+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 12:03:38 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:38.816947+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:38 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T03:03:38.818687+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:38.829397+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review scene batch 2/5: 10 items, 1 issues"} 12:03:38 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:03:38.832118+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 12:03:44 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:44.750900+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:44 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:03:44.752236+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:44.761707+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L17 (2 shots) — LLM OK"} 12:03:44 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:03:44.763609+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 12:03:49 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:49.479640+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:49 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:03:49.483104+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:49.498910+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L19 (2 shots) — LLM OK"} 12:03:49 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:03:49.501856+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 12:03:50 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:50.311075+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:50 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:03:50.312796+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:50.314765+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "call_structured[shot_dependency_t2i] Tier 1 failed (LLM returned empty response for step=shot_dependency_t2i, model=gpt-mini), trying sanitized input"} 12:03:50 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:03:50.318120+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 12:03:51 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:51.372955+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:51 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:03:51.375107+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:51.378957+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "call_structured[shot_dependency_t2i] Tier 2 sanitized failed (LLM returned empty response for step=shot_dependency_t2i, model=gpt-mini), trying GPT fallback"} 12:03:51 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:03:51.383962+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 12:03:55 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:03:55.897385+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:03:55 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T03:03:55.900619+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:03:55.915261+00:00", "level": "INFO", "logger": "app.core.steps.outlook_steps", "message": "Outlook phase2 complete: 27 scene assignments"} {"timestamp": "2026-05-28T03:03:55.915470+00:00", "level": "WARNING", "logger": "app.core.steps.outlook_steps", "message": "Outlook phase2 retry 1/3: 2씬 누락"} 12:03:55 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T03:03:55.918548+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 12:04:02 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:04:02.600455+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:04:02 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T03:04:02.602229+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:04:02.617509+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review scene batch 3/5: 10 items, 0 issues"} 12:04:02 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:04:02.620576+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:63322 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:04:10 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:04:10.480503+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:04:10 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T03:04:10.484050+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:04:10.494494+00:00", "level": "INFO", "logger": "app.core.steps.outlook_steps", "message": "Outlook phase2 retry 1: 2/2 복구"} {"timestamp": "2026-05-28T03:04:10.494931+00:00", "level": "INFO", "logger": "app.core.steps.outlook_steps", "message": "O00 injected into 2 scene-character slots"} {"timestamp": "2026-05-28T03:04:10.504122+00:00", "level": "INFO", "logger": "app.core.steps.outlook_steps", "message": "Outlook phase3: cleaning 11 outlooks, 28 assignments (O00 protected)"} 12:04:10 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T03:04:10.509628+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 12:04:15 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:04:15.565513+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:04:15 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T03:04:15.568276+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:04:15.575407+00:00", "level": "INFO", "logger": "app.modules.pipeline.outlook_extractor_v2", "message": "Phase3 code cleanup: 11→11 outlooks (removed 0, merged 0)"} {"timestamp": "2026-05-28T03:04:15.575523+00:00", "level": "INFO", "logger": "app.core.steps.outlook_steps", "message": "O00 (Null Outlook) preserved in phase3 result"} {"timestamp": "2026-05-28T03:04:15.575586+00:00", "level": "INFO", "logger": "app.core.steps.outlook_steps", "message": "Outlook phase3 complete: 12 outlooks (removed 0)"} {"timestamp": "2026-05-28T03:04:15.583882+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step outlook_extraction completed (completed=12/1, failed=0)"} {"timestamp": "2026-05-28T03:04:15.623711+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:04:15.679545+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:04:15.696046+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:04:15.711998+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:04:15.729486+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:04:15.731626+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:04:15.744158+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:04:15.744904+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:04:15.745568+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T03:04:15.747134+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=outlook_extraction, repaired=0)"} 12:04:32 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:04:32.353544+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:04:32 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T03:04:32.355627+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:04:32.368974+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review scene batch 4/5: 10 items, 1 issues"} 12:04:32 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:04:32.371192+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:63346 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:04:48 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:04:48.834087+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:04:48 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T03:04:48.837710+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:04:48.850084+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review scene batch 5/5: 10 items, 0 issues"} {"timestamp": "2026-05-28T03:04:48.850565+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review v1: entity 6 diagnostics, scene 3 diagnostics (mutation=0)"} {"timestamp": "2026-05-28T03:04:48.866100+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step t2i_review completed (completed=1/1, failed=0)"} {"timestamp": "2026-05-28T03:04:48.924383+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:04:48.970534+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:04:48.981566+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:04:48.992774+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:04:49.003849+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:04:49.005638+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:04:49.017963+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:04:49.018820+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:04:49.019530+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T03:04:49.020927+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=t2i_review, repaired=0)"} 12:04:50 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:04:50.972237+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:04:50 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T03:04:50.974462+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:04:50.988513+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L20 (3 shots) — LLM OK"} 12:04:50 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T03:04:50.991739+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 12:04:58 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:04:58.616774+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:04:58 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T03:04:58.619531+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T03:04:58.635913+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L18 (2 shots) — LLM OK"} {"timestamp": "2026-05-28T03:04:58.638330+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: 19/50 linked (LLM-based)"} {"timestamp": "2026-05-28T03:04:58.654153+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step shot_dependency_t2i completed (completed=50/50, failed=0)"} {"timestamp": "2026-05-28T03:04:58.710753+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:04:58.768578+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:04:58.786017+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:04:58.801072+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:04:58.814214+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:04:58.815717+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:04:58.824280+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:04:58.825022+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:04:58.825707+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T03:04:58.826993+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=shot_dependency_t2i, repaired=0)"} INFO: 127.0.0.1:63367 - "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:63387 - "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:63407 - "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:63435 - "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:06:49.082013+00:00", "level": "ERROR", "logger": "app.core.steps.background_render_step", "message": "background_render shot_aware_plan gate failed fp=fp_wheelhouse: shot_aware_plan: plan missing for fp_id='fp_wheelhouse'"} {"timestamp": "2026-05-28T03:06:49.101441+00:00", "level": "INFO", "logger": "app.core.steps.background_render_step", "message": "background_render: registered 2 chain_bg ImageAssets"} {"timestamp": "2026-05-28T03:06:49.113186+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step background_render failed (completed=0/1, failed=10)"} {"timestamp": "2026-05-28T03:06:49.180498+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:06:49.239351+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:06:49.258843+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:06:49.274705+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:06:49.288527+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:06:49.289969+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:06:49.298888+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:06:49.299664+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:06:49.300455+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T03:06:49.301693+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:63461 - "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:63465 - "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:63499 - "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 [77058]