/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 [38973] INFO: Waiting for application startup. {"timestamp": "2026-05-28T06:06:02.671717+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) {"timestamp": "2026-05-28T06:06:15.647215+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:52318 - "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=120 HTTP/1.1" 200 OK {"timestamp": "2026-05-28T06:06:15.653624+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step planning_doc_analysis: skipped"} {"timestamp": "2026-05-28T06:06:15.654891+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step text_cleanup: skipped"} {"timestamp": "2026-05-28T06:06:15.656807+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_segmentation: skipped"} {"timestamp": "2026-05-28T06:06:15.657791+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step episode_summary: skipped"} {"timestamp": "2026-05-28T06:06:15.659535+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step visual_world_rules: skipped"} {"timestamp": "2026-05-28T06:06:15.661597+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_save: skipped"} {"timestamp": "2026-05-28T06:06:15.663986+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_character_list: skipped"} {"timestamp": "2026-05-28T06:06:15.666957+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_summary: skipped"} {"timestamp": "2026-05-28T06:06:15.669494+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step beat_extract: skipped"} {"timestamp": "2026-05-28T06:06:15.672441+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_extract: skipped"} {"timestamp": "2026-05-28T06:06:15.674345+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_validator: skipped"} {"timestamp": "2026-05-28T06:06:15.676757+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_character: skipped"} {"timestamp": "2026-05-28T06:06:15.677993+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_character: skipped"} {"timestamp": "2026-05-28T06:06:15.680319+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_location: skipped"} {"timestamp": "2026-05-28T06:06:15.681747+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_location: skipped"} {"timestamp": "2026-05-28T06:06:15.683952+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_prop: skipped"} {"timestamp": "2026-05-28T06:06:15.685311+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_prop: skipped"} {"timestamp": "2026-05-28T06:06:15.688548+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_merge: skipped"} {"timestamp": "2026-05-28T06:06:15.689735+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_relation: skipped"} {"timestamp": "2026-05-28T06:06:15.691026+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_filter: skipped"} {"timestamp": "2026-05-28T06:06:15.692366+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_detail: skipped"} {"timestamp": "2026-05-28T06:06:15.694105+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_t2i: skipped"} {"timestamp": "2026-05-28T06:06:15.695423+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_selection: skipped"} {"timestamp": "2026-05-28T06:06:15.729538+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-28T06:06:15.762732+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:06:15.776365+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:06:15.790306+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:06:15.802235+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:06:15.803886+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-28T06:06:15.812540+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:06:15.813509+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:06:15.815102+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-28T06:06:15.816669+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_director: skipped"} {"timestamp": "2026-05-28T06:06:15.818172+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_director: skipped"} {"timestamp": "2026-05-28T06:06:15.820289+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_camera_flow: skipped"} {"timestamp": "2026-05-28T06:06:15.821225+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_dependency: skipped"} {"timestamp": "2026-05-28T06:06:15.842001+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-28T06:06:15.871336+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:06:15.884207+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:06:15.898000+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:06:15.907404+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:06:15.908566+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-28T06:06:15.915802+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:06:15.916444+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:06:15.918070+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-28T06:06:15.919625+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase1: skipped"} {"timestamp": "2026-05-28T06:06:15.940872+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-28T06:06:15.969625+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:06:15.982841+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:06:15.995372+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:06:16.005557+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:06:16.006748+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-28T06:06:16.014065+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:06:16.014655+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:06:16.016044+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-28T06:06:16.017518+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase2: skipped"} {"timestamp": "2026-05-28T06:06:16.038825+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-28T06:06:16.066949+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:06:16.081190+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:06:16.094977+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:06:16.105411+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:06:16.106546+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-28T06:06:16.113248+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:06:16.113793+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:06:16.115053+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-28T06:06:16.116418+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase3: skipped"} {"timestamp": "2026-05-28T06:06:16.119683+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_staging: skipped"} {"timestamp": "2026-05-28T06:06:16.121917+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step background_classify: skipped"} {"timestamp": "2026-05-28T06:06:16.124030+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step background_master_plan: skipped"} {"timestamp": "2026-05-28T06:06:16.126148+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step floor_plan_prompt: skipped"} {"timestamp": "2026-05-28T06:06:16.128773+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_essence_extraction: not_applicable"} {"timestamp": "2026-05-28T06:06:16.132294+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_consistency: skipped"} {"timestamp": "2026-05-28T06:06:16.136632+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step floor_plan_render: skipped"} {"timestamp": "2026-05-28T06:06:16.138158+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step floor_plan_overlay_payload: skipped"} {"timestamp": "2026-05-28T06:06:16.140103+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step base_location_dossier: skipped"} {"timestamp": "2026-05-28T06:06:16.142224+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step floor_plan_geometry_readback: skipped"} {"timestamp": "2026-05-28T06:06:16.144339+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_aware_bg_render_plan: skipped"} {"timestamp": "2026-05-28T06:06:16.146908+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step background_prompt: skipped"} {"timestamp": "2026-05-28T06:06:16.148902+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step episode_reference_policy: skipped"} {"timestamp": "2026-05-28T06:06:16.169356+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-28T06:06:16.198772+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:06:16.214654+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:06:16.229206+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:06:16.239214+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:06:16.240313+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-28T06:06:16.247140+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:06:16.247737+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:06:16.249029+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-28T06:06:16.267390+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-28T06:06:16.268033+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 50 shot_staging entries loaded"} {"timestamp": "2026-05-28T06:06:16.273463+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 50 shot_staging entries loaded"} {"timestamp": "2026-05-28T06:06:16.273794+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 18 scenes with fixed elements loaded"} {"timestamp": "2026-05-28T06:06:16.280272+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "_load_chain_bg_guide_by_shot: 22 shot guides loaded (0 skipped warnings)"} {"timestamp": "2026-05-28T06:06:16.281585+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "_load_chain_bg_camera_meta_by_shot: 22 shots with camera meta loaded (0 skipped warnings)"} {"timestamp": "2026-05-28T06:06:16.282019+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-28T06:06:16.282375+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-28T06:06:16.285079+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-28T06:06:16.322027+00:00", "level": "INFO", "logger": "app.core.steps.detail_steps", "message": "verify_completion: s5_sh1 card hash drift resolved by upstream shot_dependency recompute (downstream shot_dependency_t2i false-positive)"} {"timestamp": "2026-05-28T06:06:16.354130+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-28T06:06:16.354158+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-28T06:06:16.399472+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-28T06:06:16.402945+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-28T06:06:16.419483+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-28T06:06:16.422679+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-28T06:06:16.422719+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-28T06:06:16.426232+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-28T06:06:16.426269+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-28T06:06:16.508187+00:00", "level": "ERROR", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_detail error: scene_detail invariant drift detected — invariant drift detected by verify (1차 정책): [\"16 render_prompt_card drift/missing: [(1, 3, 'hash'), (2, 1, 'hash'), (5, 7, 'hash'), (10, 1, 'hash'), (11, 1, 'hash')]\"]. force 재실행 또는 수동 진단 필요."} {"timestamp": "2026-05-28T06:09:41.452102+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:52411 - "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-28T06:09:41.492563+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-28T06:09:41.522500+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:09:41.534045+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:09:41.545348+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:09:41.555742+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:09:41.557286+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-28T06:09:41.565239+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:09:41.565977+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:09:41.567523+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-28T06:09:41.573634+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-28T06:09:41.575866+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-28T06:09:41.578050+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step scene_detail started (run_id=314c818f-5b2c-4416-8d83-7914183c2304, model=gemini-pro)"} {"timestamp": "2026-05-28T06:09:41.579312+00:00", "level": "WARNING", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: shot_dependency_t2i checkpoint is STALE — 이전 scene_detail 기반 ref_usage를 사용 중. drift 방지를 위해 scene_detail 완료 후 shot_dependency_t2i도 force 재실행 권장."} {"timestamp": "2026-05-28T06:09:41.580645+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 50 shot_staging entries loaded"} {"timestamp": "2026-05-28T06:09:41.580987+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 18 scenes with fixed elements loaded"} {"timestamp": "2026-05-28T06:09:41.585800+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "_load_chain_bg_guide_by_shot: 22 shot guides loaded (0 skipped warnings)"} {"timestamp": "2026-05-28T06:09:41.586963+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "_load_chain_bg_camera_meta_by_shot: 22 shots with camera meta loaded (0 skipped warnings)"} {"timestamp": "2026-05-28T06:09:41.587403+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-28T06:09:41.587745+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-28T06:09:41.590083+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-28T06:09:41.592446+00:00", "level": "INFO", "logger": "app.core.steps.detail_steps", "message": "scene_detail: 30 segments → 50 tasks (shot-based, 0 edited skipped)"} {"timestamp": "2026-05-28T06:09:41.600014+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "Opik callback enabled (project: theroad-scene-lab)"} 15:09:41 - LiteLLM Router:INFO: router.py:784 - Routing strategy: simple-shuffle {"timestamp": "2026-05-28T06:09:41.622347+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "Routing strategy: simple-shuffle"} {"timestamp": "2026-05-28T06:09:41.623688+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "LiteLLM Router initialized: 8 deployments (1 Gemini keys, OpenAI=True)"} 15:09:41 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:09:41.629030+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:09:41 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:09:41.631000+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:09:41 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:09:41.631924+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:09:41 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:09:41.632801+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:09:41 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:09:41.634090+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:10:14 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:10:14.651858+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:10:14 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:10:14.657473+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-28T06:10:14.674208+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}"} 15:10:14 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:10:14.692967+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} {"timestamp": "2026-05-28T06:10:16.233256+00:00", "level": "ERROR", "logger": "asyncio", "message": "Task was destroyed but it is pending!\ntask: wait_for=>"} 15:10:16 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:10:16.234307+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:10:16 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:10:16.235076+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:10:16 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:10:16.248416+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:10:17 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:10:17.151694+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:10:17 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:10:17.154091+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:10:17 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:10:17.192965+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:10:26 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:10:26.261649+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:10:26 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:10:26.263910+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-28T06:10:26.279737+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 2: 제거할 ID: L01 — retry"} 15:10:26 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:10:26.281709+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:10:35 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:10:35.422060+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:10:35 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:10:35.427078+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:10:35 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:10:35.453097+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:10:47 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:10:47.926460+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:10:47 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:10:47.932248+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:10:47 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:10:47.968322+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:10:58 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:10:58.356011+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:10:58 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:10:58.357760+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:10:58 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:10:58.382647+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:10:58 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:10:58.385041+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}"} {"timestamp": "2026-05-28T06:10:58.395008+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-28T06:10:58.405012+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S5 shot1 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} 15:10:58 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:10:58.413723+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:10:58 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:10:58.414324+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:11:07 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:11:07.121802+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:11:07 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:11:07.125271+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:11:07 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:11:07.151785+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:11:08 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:11:08.159860+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:11:08 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:11:08.164356+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:11:08 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:11:08.187413+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:11:08 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:11:08.591816+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:11:08 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:11:08.593727+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-28T06:11:08.618209+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 2: retry 후에도 위반 {'L02'} — 강제 제거"} 15:11:08 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:11:08.636148+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:11:10 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:11:10.033416+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:11:10 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:11:10.036000+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-28T06:11:10.057303+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}"} 15:11:10 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:11:10.074085+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:11:15 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:11:15.133358+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:11:15 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:11:15.136062+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:11:15 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:11:15.175133+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:11:41 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:11:41.971951+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:11:41 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:11:41.974738+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-28T06:11:42.004947+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-28T06:11:42.005100+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"} 15:11:42 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:11:42.013673+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:11:42 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:11:42.499795+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:11:42 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:11:42.501637+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:11:42 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:11:42.542143+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:11:44 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:11:44.799305+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:11:44 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:11:44.802239+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:11:44 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:11:44.844000+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:11:47 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:11:47.598690+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:11:47 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:11:47.604886+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:11:47 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:11:47.636227+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:11:53 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:11:53.350674+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:11:53 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:11:53.352654+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:11:53 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:11:53.378169+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:12:04 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:04.244113+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:04 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:12:04.245870+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-28T06:12:04.263073+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "씬 10: C09 유효하지 않은 아웃룩 → O09로 교체"} 15:12:04 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:12:04.279062+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:12:15 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:15.848539+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:15 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:12:15.851418+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-28T06:12:15.868396+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}"} 15:12:15 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:12:15.885899+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:12:21 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:21.276757+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:21 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:12:21.282049+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-28T06:12:21.302813+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': False, 'zone_missing': False, 'depth_missing': True}"} {"timestamp": "2026-05-28T06:12:21.302964+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}"} 15:12:21 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:12:21.313796+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:12:27 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:27.976441+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:27 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:12:27.977997+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:12:27 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:12:27.993004+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:12:29 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:29.888546+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:29 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:12:29.890849+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:12:29 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:12:29.924880+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:12:34 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:34.482922+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:34 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:12:34.485897+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:12:34 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:12:34.499874+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:12:35 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:35.673931+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:35 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:12:35.680110+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-28T06:12:35.701361+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-28T06:12:35.701594+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"} 15:12:35 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:12:35.719216+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:12:37 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:37.929245+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:37 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:12:37.931590+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:12:37 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:12:37.947331+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:12:43 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:43.367043+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:43 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:12:43.368818+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-28T06:12:43.373475+00:00", "level": "INFO", "logger": "app.core.steps.detail_steps", "message": "scene_detail owned_repair S12_Shot5: owned redraw repair 성공 — 2 redraw_violation 해소"} 15:12:43 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:12:43.387260+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:12:43 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:43.917520+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:43 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:12:43.922654+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-28T06:12:43.942142+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "씬 12: C05 유효하지 않은 아웃룩 → O05로 교체"} 15:12:43 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:12:43.954271+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:12:45 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:45.062295+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:45 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:12:45.066551+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:12:45 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:12:45.079030+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:12:52 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:52.795702+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:52 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:12:52.799690+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-28T06:12:52.807456+00:00", "level": "INFO", "logger": "app.core.steps.detail_steps", "message": "scene_detail owned_repair S12_Shot7: owned redraw repair 성공 — 2 redraw_violation 해소"} 15:12:52 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:12:52.822416+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:12:55 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:55.211739+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:55 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:12:55.213690+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:12:55 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:12:55.244798+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:12:56 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:12:56.980659+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:12:56 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:12:56.983248+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-28T06:12:56.993838+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'])"} 15:12:57 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:12:57.008435+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:13:03 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:13:03.748452+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:13:03 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:13:03.753391+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-28T06:13:03.773111+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 13: 제거할 ID: L01 — retry"} 15:13:03 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:13:03.775788+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:13:15 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:13:15.104008+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:13:15 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:13:15.106699+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:13:15 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:13:15.142663+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:13:22 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:13:22.143323+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:13:22 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:13:22.146776+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:13:22 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:13:22.168753+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:13:27 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:13:27.237266+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:13:27 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:13:27.239015+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:13:27 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:13:27.271116+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:13:28 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:13:28.539069+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:13:28 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:13:28.545140+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:13:28 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:13:28.579065+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:13:35 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:13:35.990990+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:13:35 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:13:35.996101+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-28T06:13:36.014597+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}"} 15:13:36 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:13:36.032281+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:13:37 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:13:37.428308+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:13:37 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:13:37.430462+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-28T06:13:37.435173+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'])"} 15:13:37 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:13:37.444560+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:13:41 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:13:41.799090+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:13:41 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:13:41.805193+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-28T06:13:41.826047+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S15 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-28T06:13:41.826451+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-28T06:13:41.835081+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-28T06:13:41.835244+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"} 15:13:41 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:13:41.843897+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:13:55 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:13:55.851182+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:13:55 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:13:55.853374+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:13:55 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:13:55.892405+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:14:06 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:14:06.540191+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:14:06 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:14:06.542973+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-28T06:14:06.554385+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}"} 15:14:06 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:14:06.563091+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:14:17 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:14:17.417860+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:14:17 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:14:17.420886+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-28T06:14:17.432475+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-28T06:14:17.432708+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-28T06:14:17.432801+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"} 15:14:17 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:14:17.440748+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:14:18 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:14:18.319180+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:14:18 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:14:18.320571+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:14:18 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:14:18.335383+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:14:23 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:14:23.411482+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:14:23 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:14:23.414294+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-28T06:14:23.432126+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 18: 제거할 ID: L01 — retry"} 15:14:23 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:14:23.434202+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:14:25 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:14:25.979184+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:14:25 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:14:25.983337+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:14:26 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:14:26.006221+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:14:27 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:14:27.714958+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:14:27 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:14:27.716908+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-28T06:14:27.733902+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 19: 제거할 ID: L19 — retry"} 15:14:27 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:14:27.736002+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:14:39 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:14:39.915917+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:14:39 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:14:39.917915+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-28T06:14:39.940976+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-28T06:14:39.941189+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}"} 15:14:39 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:14:39.952068+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:14:48 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:14:48.763444+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:14:48 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:14:48.767460+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:14:48 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:14:48.791439+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:14:49 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:14:49.403163+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:14:49 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:14:49.405848+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-28T06:14:49.429561+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 20: 제거할 ID: L01 — retry"} 15:14:49 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:14:49.431892+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:14:58 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:14:58.814555+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:14:58 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:14:58.820904+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-28T06:14:58.839294+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 21: 제거할 ID: L01 — retry"} 15:14:58 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:14:58.842168+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:15:00 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:15:00.791893+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:15:00 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:15:00.794133+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-28T06:15:00.814596+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 19: retry 후에도 위반 {'L01'} — 강제 제거"} 15:15:00 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:15:00.827054+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:15:12 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:15:12.256230+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:15:12 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:15:12.261424+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-28T06:15:12.281164+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 18: retry 후에도 위반 {'L05'} — 강제 제거"} {"timestamp": "2026-05-28T06:15:12.281402+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'])"} 15:15:12 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:15:12.299019+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:15:14 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:15:14.935320+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:15:14 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:15:14.937936+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:15:14 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:15:14.980992+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:15:33 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:15:33.429409+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:15:33 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:15:33.434158+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:15:33 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:15:33.465749+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:15:33 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:15:33.944177+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:15:33 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:15:33.946772+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-28T06:15:33.969366+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 21: retry 후에도 위반 {'L13'} — 강제 제거"} 15:15:33 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:15:33.987708+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:15:39 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:15:39.427230+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:15:39 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:15:39.428902+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:15:39 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:15:39.470785+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:15:42 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:15:42.544761+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:15:42 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:15:42.545836+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:15:42 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:15:42.557017+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:15:47 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:15:47.632816+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:15:47 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:15:47.638608+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-28T06:15:47.659543+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 24: 제거할 ID: L01 — retry"} 15:15:47 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:15:47.662043+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:15:48 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:15:48.560163+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:15:48 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:15:48.561459+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-28T06:15:48.584227+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "씬 23: C01 유효하지 않은 아웃룩 → O01로 교체"} 15:15:48 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:15:48.603296+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:15:51 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:15:51.641513+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:15:51 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:15:51.643759+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:15:51 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:15:51.656231+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:16:01 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:16:01.990421+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:16:01 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:16:01.994411+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-28T06:16:02.004291+00:00", "level": "INFO", "logger": "app.core.steps.detail_steps", "message": "scene_detail owned_repair S21_Shot8: owned redraw repair 성공 — 1 redraw_violation 해소"} 15:16:02 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:16:02.019607+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:16:06 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:16:06.142232+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:16:06 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:16:06.146928+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-28T06:16:06.166860+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "scene_detail S25 shot3 variation var_1 frame_spatial_contract phrase diagnostic: {'constraint_id': 'fsc_001', 'label_missing': True, 'zone_missing': False, 'depth_missing': False}"} 15:16:06 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:16:06.184951+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:16:18 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:16:18.181083+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:16:18 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:16:18.183300+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-28T06:16:18.203551+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 24: retry 후에도 위반 {'L02'} — 강제 제거"} 15:16:18 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:16:18.219546+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:16:21 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:16:21.137990+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:16:21 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:16:21.143868+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-28T06:16:21.163530+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}"} 15:16:21 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:16:21.175514+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:16:25 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:16:25.880856+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:16:25 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:16:25.884980+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:16:25 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:16:25.907479+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:16:32 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:16:32.919401+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:16:32 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:16:32.921653+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-28T06:16:32.940994+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 26: 제거할 ID: L01 — retry"} 15:16:32 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:16:32.943395+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:16:33 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:16:33.354417+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:16:33 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:16:33.357535+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-28T06:16:33.379793+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-28T06:16:33.380032+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-28T06:16:33.380138+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}"} 15:16:33 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:16:33.397333+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:16:40 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:16:40.747456+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:16:40 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:16:40.751705+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:16:40 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:16:40.789259+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:16:41 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:16:41.885393+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:16:41 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:16:41.886670+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-28T06:16:41.890323+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"} 15:16:41 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:16:41.903538+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:16:42 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:16:42.918866+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:16:42 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:16:42.920642+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-28T06:16:42.923382+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"} 15:16:42 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T06:16:42.927621+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 15:16:52 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:16:52.793234+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:16:52 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:16:52.796875+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:16:52 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:16:52.835359+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:16:58 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:16:58.049875+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:16:58 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:16:58.054064+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:16:58 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:16:58.076140+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:17:07 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:17:07.755723+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:17:07 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:17:07.757970+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-28T06:17:07.773452+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 26: retry 후에도 위반 {'L02'} — 강제 제거"} 15:17:07 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:17:07.790653+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:17:08 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:17:08.060158+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:17:08 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:17:08.062091+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-28T06:17:08.084985+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 28: 제거할 ID: L01 — retry"} 15:17:08 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:17:08.087348+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:17:21 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:17:21.950286+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:17:21 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:17:21.956822+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-28T06:17:21.977605+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-28T06:17:21.977846+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}"} 15:17:21 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:17:21.989314+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:17:28 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:17:28.800002+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:17:28 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:17:28.801569+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:17:28 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:17:28.838557+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:17:32 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:17:32.157760+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:17:32 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:17:32.161623+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.5-flash)\u001b[32m 200 OK\u001b[0m"} 15:17:34 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:17:34.662913+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:17:34 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:17:34.668184+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-28T06:17:34.689011+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 29: 제거할 ID: L01 — retry"} 15:17:34 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:17:34.691695+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:17:41 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:17:41.646009+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:17:41 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:17:41.652005+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-28T06:17:41.673469+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 28: retry 후에도 위반 {'L02'} — 강제 제거"} {"timestamp": "2026-05-28T06:17:41.683176+00:00", "level": "WARNING", "logger": "app.core.visible_entities_validator", "message": "validate_visible_entities_contract audit: S28_Shot5 entity_canon.name='인우' base=C03 — no specific ID (candidates=['C03', 'C03O03']) within ±60 window (Source 2 downgraded to audit, see W20F2)."} 15:17:59 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:17:59.208362+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:17:59 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:17:59.209662+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} 15:18:00 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:18:00.867823+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:18:00 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T06:18:00.872042+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T06:18:00.884596+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 29: 제거할 ID: L20 — retry"} 15:18:00 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-05-28T06:18:00.886207+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} 15:18:22 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:18:22.045836+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:18:22 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:18:22.047652+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-28T06:18:22.066637+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 29: retry 후에도 위반 {'L20'} — 강제 제거"} {"timestamp": "2026-05-28T06:18:22.066933+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-28T06:18:22.067056+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}"} 15:18:57 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:18:57.290482+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:18:57 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-05-28T06:18:57.293171+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-28T06:18:57.318843+00:00", "level": "WARNING", "logger": "app.core.steps.detail_steps", "message": "Scene 29: retry 후에도 위반 {'L01'} — 강제 제거"} {"timestamp": "2026-05-28T06:18:57.319149+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-28T06:18:57.319243+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-28T06:18:57.330777+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-28T06:18:57.331986+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 50 shot_staging entries loaded"} {"timestamp": "2026-05-28T06:18:57.337819+00:00", "level": "WARNING", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: shot_dependency_t2i checkpoint is STALE — 이전 scene_detail 기반 ref_usage를 사용 중. drift 방지를 위해 scene_detail 완료 후 shot_dependency_t2i도 force 재실행 권장."} {"timestamp": "2026-05-28T06:18:57.340733+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 50 shot_staging entries loaded"} {"timestamp": "2026-05-28T06:18:57.341429+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 18 scenes with fixed elements loaded"} {"timestamp": "2026-05-28T06:18:57.353887+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "_load_chain_bg_guide_by_shot: 22 shot guides loaded (0 skipped warnings)"} {"timestamp": "2026-05-28T06:18:57.356111+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "_load_chain_bg_camera_meta_by_shot: 22 shots with camera meta loaded (0 skipped warnings)"} {"timestamp": "2026-05-28T06:18:57.356903+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-28T06:18:57.357550+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-28T06:18:57.364979+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-28T06:18:57.431107+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-28T06:18:57.431136+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-28T06:18:57.462784+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-28T06:18:57.475489+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-28T06:18:57.478635+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-28T06:18:57.478672+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-28T06:18:57.567506+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step scene_detail completed (completed=50/50, failed=0)"} {"timestamp": "2026-05-28T06:18:57.596794+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-28T06:18:57.638637+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:18:57.650483+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:18:57.662361+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:18:57.670767+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:18:57.671861+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-28T06:18:57.679801+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 6 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:18:57.682081+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:18:57.682624+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']"} {"timestamp": "2026-05-28T06:18:57.684008+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)"} {"timestamp": "2026-05-28T06:19:23.261558+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:52805 - "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=120 HTTP/1.1" 200 OK {"timestamp": "2026-05-28T06:19:23.266075+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step planning_doc_analysis: skipped"} {"timestamp": "2026-05-28T06:19:23.266725+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step text_cleanup: skipped"} {"timestamp": "2026-05-28T06:19:23.267695+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_segmentation: skipped"} {"timestamp": "2026-05-28T06:19:23.268381+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step episode_summary: skipped"} {"timestamp": "2026-05-28T06:19:23.269687+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step visual_world_rules: skipped"} {"timestamp": "2026-05-28T06:19:23.270926+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_save: skipped"} {"timestamp": "2026-05-28T06:19:23.272358+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_character_list: skipped"} {"timestamp": "2026-05-28T06:19:23.274438+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_summary: skipped"} {"timestamp": "2026-05-28T06:19:23.276508+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step beat_extract: skipped"} {"timestamp": "2026-05-28T06:19:23.278720+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_extract: skipped"} {"timestamp": "2026-05-28T06:19:23.280158+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_validator: skipped"} {"timestamp": "2026-05-28T06:19:23.282339+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_character: skipped"} {"timestamp": "2026-05-28T06:19:23.283478+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_character: skipped"} {"timestamp": "2026-05-28T06:19:23.285492+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_location: skipped"} {"timestamp": "2026-05-28T06:19:23.286597+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_location: skipped"} {"timestamp": "2026-05-28T06:19:23.288812+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_all_prop: skipped"} {"timestamp": "2026-05-28T06:19:23.289958+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_extract_prop: skipped"} {"timestamp": "2026-05-28T06:19:23.292948+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_merge: skipped"} {"timestamp": "2026-05-28T06:19:23.294068+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_relation: skipped"} {"timestamp": "2026-05-28T06:19:23.295322+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_filter: skipped"} {"timestamp": "2026-05-28T06:19:23.296581+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_detail: skipped"} {"timestamp": "2026-05-28T06:19:23.298065+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step entity_t2i: skipped"} {"timestamp": "2026-05-28T06:19:23.299146+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_selection: skipped"} {"timestamp": "2026-05-28T06:19:23.329266+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-28T06:19:23.362706+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:19:23.376056+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:19:23.389941+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:19:23.399544+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:19:23.400679+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-28T06:19:23.408331+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:19:23.408916+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:19:23.409456+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']"} {"timestamp": "2026-05-28T06:19:23.410227+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-28T06:19:23.411659+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_director: skipped"} {"timestamp": "2026-05-28T06:19:23.413100+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_director: skipped"} {"timestamp": "2026-05-28T06:19:23.414956+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_camera_flow: skipped"} {"timestamp": "2026-05-28T06:19:23.415893+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_dependency: skipped"} {"timestamp": "2026-05-28T06:19:23.435903+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-28T06:19:23.464758+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:19:23.478715+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:19:23.493585+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:19:23.505163+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:19:23.506511+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-28T06:19:23.514051+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:19:23.514734+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:19:23.515331+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']"} {"timestamp": "2026-05-28T06:19:23.516426+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-28T06:19:23.517857+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase1: skipped"} {"timestamp": "2026-05-28T06:19:23.539276+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-28T06:19:23.567992+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:19:23.582582+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:19:23.596790+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:19:23.608003+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:19:23.609208+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-28T06:19:23.617264+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:19:23.617932+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:19:23.618485+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']"} {"timestamp": "2026-05-28T06:19:23.619512+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-28T06:19:23.620893+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase2: skipped"} {"timestamp": "2026-05-28T06:19:23.640886+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-28T06:19:23.670236+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:19:23.684770+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:19:23.699157+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:19:23.710573+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:19:23.711816+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-28T06:19:23.719308+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:19:23.719950+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:19:23.720520+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']"} {"timestamp": "2026-05-28T06:19:23.721627+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-28T06:19:23.723057+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step outlook_phase3: skipped"} {"timestamp": "2026-05-28T06:19:23.725288+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_staging: skipped"} {"timestamp": "2026-05-28T06:19:23.727230+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step background_classify: skipped"} {"timestamp": "2026-05-28T06:19:23.728887+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step background_master_plan: skipped"} {"timestamp": "2026-05-28T06:19:23.730598+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step floor_plan_prompt: skipped"} {"timestamp": "2026-05-28T06:19:23.734752+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_essence_extraction: not_applicable"} {"timestamp": "2026-05-28T06:19:23.737972+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_consistency: skipped"} {"timestamp": "2026-05-28T06:19:23.740872+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step floor_plan_render: skipped"} {"timestamp": "2026-05-28T06:19:23.742357+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step floor_plan_overlay_payload: skipped"} {"timestamp": "2026-05-28T06:19:23.744283+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step base_location_dossier: skipped"} {"timestamp": "2026-05-28T06:19:23.746087+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step floor_plan_geometry_readback: skipped"} {"timestamp": "2026-05-28T06:19:23.748131+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_aware_bg_render_plan: skipped"} {"timestamp": "2026-05-28T06:19:23.750836+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step background_prompt: skipped"} {"timestamp": "2026-05-28T06:19:23.752780+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step episode_reference_policy: skipped"} {"timestamp": "2026-05-28T06:19:23.774420+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-28T06:19:23.803589+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:19:23.818749+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:19:23.833386+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:19:23.843957+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:19:23.845099+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-28T06:19:23.852600+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:19:23.853256+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:19:23.853853+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']"} {"timestamp": "2026-05-28T06:19:23.854778+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-28T06:19:23.874053+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-28T06:19:23.874645+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 50 shot_staging entries loaded"} {"timestamp": "2026-05-28T06:19:23.875649+00:00", "level": "WARNING", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: shot_dependency_t2i checkpoint is STALE — 이전 scene_detail 기반 ref_usage를 사용 중. drift 방지를 위해 scene_detail 완료 후 shot_dependency_t2i도 force 재실행 권장."} {"timestamp": "2026-05-28T06:19:23.876764+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 50 shot_staging entries loaded"} {"timestamp": "2026-05-28T06:19:23.877785+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "scene_detail: 18 scenes with fixed elements loaded"} {"timestamp": "2026-05-28T06:19:23.882403+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "_load_chain_bg_guide_by_shot: 22 shot guides loaded (0 skipped warnings)"} {"timestamp": "2026-05-28T06:19:23.883543+00:00", "level": "INFO", "logger": "app.core.steps.scene_context_loader", "message": "_load_chain_bg_camera_meta_by_shot: 22 shots with camera meta loaded (0 skipped warnings)"} {"timestamp": "2026-05-28T06:19:23.883962+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-28T06:19:23.884300+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-28T06:19:23.886227+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-28T06:19:23.936501+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-28T06:19:23.936556+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-28T06:19:23.968763+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-28T06:19:23.982140+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-28T06:19:23.985502+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-28T06:19:23.985555+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-28T06:19:24.051854+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_detail: skipped"} {"timestamp": "2026-05-28T06:19:24.057622+00:00", "level": "WARNING", "logger": "app.core.step_runner", "message": "[RECOVERY] step=shot_dependency_t2i status=running → force-like"} {"timestamp": "2026-05-28T06:19:24.058923+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step shot_dependency_t2i started (run_id=1910beac-40a9-4861-a6ec-114a68c5a340, model=gpt-mini)"} 15:19:24 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:19:24.069368+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:19:32 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:19:32.491028+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:19:32 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:19:32.495570+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-28T06:19:32.509710+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L01 (2 shots) — LLM OK"} 15:19:32 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:19:32.512397+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:19:40 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:19:40.158174+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:19:40 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:19:40.160127+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-28T06:19:40.176567+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L02 (2 shots) — LLM OK"} 15:19:40 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:19:40.178870+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:19:57 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:19:57.029143+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:19:57 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:19:57.031713+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-28T06:19:57.048731+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L04 (7 shots) — LLM OK"} 15:19:57 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:19:57.051496+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:20:24 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:20:24.304457+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:20:24 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:20:24.308119+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-28T06:20:24.324129+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L05 (12 shots) — LLM OK"} 15:20:24 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:20:24.325970+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:20:37 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:20:37.711773+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:20:37 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:20:37.713170+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-28T06:20:37.716647+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L06 (3 shots) — LLM OK"} 15:20:37 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:20:37.717669+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:20:44 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:20:44.791820+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:20:44 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:20:44.792480+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-28T06:20:44.802563+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L07 (2 shots) — LLM OK"} 15:20:44 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:20:44.804424+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:20:55 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:20:55.280941+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:20:55 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:20:55.285038+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-28T06:20:55.298288+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L09 (4 shots) — LLM OK"} 15:20:55 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:20:55.301183+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:21:04 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:21:04.640272+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:21:04 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:21:04.644840+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-28T06:21:04.659487+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L11 (2 shots) — LLM OK"} 15:21:04 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:21:04.662405+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:21:14 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:21:14.961424+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:21:14 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:21:14.965443+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-28T06:21:14.979244+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L13 (3 shots) — LLM OK"} 15:21:14 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:21:14.981994+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:21:24 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:21:24.873453+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:21:24 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:21:24.876176+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-28T06:21:24.886306+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L17 (2 shots) — LLM OK"} 15:21:24 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:21:24.889542+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:21:32 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:21:32.566849+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:21:32 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:21:32.572400+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-28T06:21:32.585905+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L19 (2 shots) — LLM OK"} 15:21:32 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:21:32.588775+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:21:46 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:21:46.838881+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:21:46 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:21:46.843557+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-28T06:21:46.857882+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L20 (3 shots) — LLM OK"} 15:21:46 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:21:46.860884+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:21:53 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:21:53.697399+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:21:53 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:21:53.700612+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-28T06:21:53.711063+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: L18 (2 shots) — LLM OK"} {"timestamp": "2026-05-28T06:21:53.713787+00:00", "level": "INFO", "logger": "app.core.steps.shot_dependency_t2i_step", "message": "shot_dependency_t2i: 22/50 linked (LLM-based)"} {"timestamp": "2026-05-28T06:21:53.730089+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step shot_dependency_t2i completed (completed=50/50, failed=0)"} {"timestamp": "2026-05-28T06:21:53.730174+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step shot_dependency_t2i: completed"} {"timestamp": "2026-05-28T06:21:53.740283+00:00", "level": "WARNING", "logger": "app.core.step_runner", "message": "[RECOVERY] step=t2i_review status=running → force-like"} {"timestamp": "2026-05-28T06:21:53.742129+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step t2i_review started (run_id=5eaf7904-6d12-41b4-90d6-61b1f509c6b4, model=gpt)"} 15:21:53 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T06:21:53.769406+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 15:23:00 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:23:00.276052+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:23:00 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T06:23:00.280846+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T06:23:00.294232+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review entity C13 [missing_ethnicity]: 보통명사 인물인 12세 여자아이에 원문 증거인 Korean 국적/민족 descriptor가 T2I 프롬프트에서 누락되었습니다. Regen 시 해"} {"timestamp": "2026-05-28T06:23:00.294458+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review entity L16 [awkward_translation]: 한국어 원문에서 자연스러운 문화적 장소명인 PC방이 영어의 internet cafe로 옮겨져 한국 현지 업태와 공간 뉘앙스가 약해졌습니다. Re"} {"timestamp": "2026-05-28T06:23:00.294539+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review entity L04 [awkward_translation]: 한국어 원문의 다세대 빌라가 영어의 multi-family villa로 직역되어 서구식 고급 villa처럼 오해될 수 있는 어색한 표현입니다. "} {"timestamp": "2026-05-28T06:23:00.294595+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review entity L12 [awkward_translation]: 한국어 원문의 다세대 빌라가 영어의 multi-family villa로 직역되어 서구식 villa와 혼동될 수 있는 어색한 표현입니다. Rege"} {"timestamp": "2026-05-28T06:23:00.294655+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review entity P09 [missing_ethnicity]: 사진 속 훼손된 피해자 신체가 원문에서는 Korean으로 보인다고 명시되어 있으나 T2I 프롬프트에서는 human으로만 표현되어 국적/민족 de"} 15:23:00 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T06:23:00.301117+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 15:23:54 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:23:54.385862+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:23:54 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T06:23:54.389078+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T06:23:54.403113+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review scene batch 1/5: 10 items, 1 issues"} 15:23:54 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T06:23:54.406425+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 15:24:26 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:24:26.232109+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:24:26 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T06:24:26.233670+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T06:24:26.243720+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review scene batch 2/5: 10 items, 1 issues"} 15:24:26 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T06:24:26.245917+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 15:24:45 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:24:45.496504+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:24:45 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T06:24:45.500530+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T06:24:45.513095+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review scene batch 3/5: 10 items, 0 issues"} 15:24:45 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T06:24:45.516320+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 15:25:29 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:25:29.993179+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:25:29 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T06:25:29.997186+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T06:25:30.009728+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review scene batch 4/5: 10 items, 1 issues"} 15:25:30 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T06:25:30.012834+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 15:25:48 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:25:48.207294+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:25:48 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-05-28T06:25:48.209314+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-05-28T06:25:48.221168+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review scene batch 5/5: 10 items, 0 issues"} {"timestamp": "2026-05-28T06:25:48.221485+00:00", "level": "INFO", "logger": "app.modules.pipeline.t2i_review", "message": "t2i_review v1: entity 5 diagnostics, scene 3 diagnostics (mutation=0)"} {"timestamp": "2026-05-28T06:25:48.235952+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step t2i_review completed (completed=1/1, failed=0)"} {"timestamp": "2026-05-28T06:25:48.236098+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step t2i_review: completed"} {"timestamp": "2026-05-28T06:25:48.241729+00:00", "level": "WARNING", "logger": "app.core.step_runner", "message": "[RECOVERY] step=world_guide status=running → force-like"} {"timestamp": "2026-05-28T06:25:48.243783+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step world_guide started (run_id=facb721c-450d-46de-8fd1-c7fe4ec11757, model=gpt)"} {"timestamp": "2026-05-28T06:25:48.271649+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step world_guide completed (completed=1/1, failed=0)"} {"timestamp": "2026-05-28T06:25:48.271735+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step world_guide: completed"} {"timestamp": "2026-05-28T06:25:48.282730+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step ref_image_gen: skipped"} {"timestamp": "2026-05-28T06:25:48.306212+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step composite_image_gen: skipped"} {"timestamp": "2026-05-28T06:25:48.314780+00:00", "level": "WARNING", "logger": "app.core.step_runner", "message": "[RECOVERY] step=character_state_variant status=running → force-like"} {"timestamp": "2026-05-28T06:25:48.317481+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step character_state_variant started (run_id=d27460b0-913b-4542-9c47-7a23c5c301d4, model=gemini-image)"} {"timestamp": "2026-05-28T06:25:48.322214+00:00", "level": "INFO", "logger": "app.core.steps.image_steps", "message": "character_state_variant: 5 characters with state variants: ['한국인 남자', '겁에 질린 남자', '한국인 여자', '민숙', '수리영']"} {"timestamp": "2026-05-28T06:25:48.392390+00:00", "level": "INFO", "logger": "app.core.steps.image_steps", "message": "character_state_variant: 한국인 남자 (severely_injured) — skipped (exists)"} {"timestamp": "2026-05-28T06:25:48.403601+00:00", "level": "WARNING", "logger": "app.core.steps.image_steps", "message": "character_state_variant: no ref image for 겁에 질린 남자 — skipping"} {"timestamp": "2026-05-28T06:25:48.406530+00:00", "level": "INFO", "logger": "app.core.steps.image_steps", "message": "character_state_variant: 한국인 여자 (severely_injured) — skipped (exists)"} {"timestamp": "2026-05-28T06:25:48.409593+00:00", "level": "INFO", "logger": "app.core.steps.image_steps", "message": "character_state_variant: 민숙 (severely_injured) — skipped (exists)"} {"timestamp": "2026-05-28T06:25:48.412774+00:00", "level": "INFO", "logger": "app.core.steps.image_steps", "message": "character_state_variant: 민숙 (dead) — skipped (exists)"} {"timestamp": "2026-05-28T06:25:48.416320+00:00", "level": "INFO", "logger": "app.core.steps.image_steps", "message": "character_state_variant: 수리영 (unconscious) — skipped (exists)"} {"timestamp": "2026-05-28T06:25:48.426125+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step character_state_variant partial (completed=5/6, failed=1)"} {"timestamp": "2026-05-28T06:25:48.426282+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step character_state_variant: partial"} {"timestamp": "2026-05-28T06:25:48.426386+00:00", "level": "WARNING", "logger": "app.services.analysis_dispatch_service", "message": "Step character_state_variant partial — continuing (downstream may use partial results)"} {"timestamp": "2026-05-28T06:25:48.450515+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step background_render: skipped"} {"timestamp": "2026-05-28T06:25:48.461263+00:00", "level": "WARNING", "logger": "app.core.step_runner", "message": "[RECOVERY] step=scene_image_pipeline status=running → force-like"} {"timestamp": "2026-05-28T06:25:48.464762+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step scene_image_pipeline started (run_id=80865ad4-aeda-42c8-afd1-784b2a6afb53, model=mixed)"} {"timestamp": "2026-05-28T06:25:48.522522+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-28T06:25:48.587130+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:25:48.605310+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:25:48.621686+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:25:48.640816+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:25:48.642806+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-28T06:25:48.656625+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:25:48.657990+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:25:48.660572+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-28T06:25:48.711285+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-28T06:25:48.747653+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:25:48.762340+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:25:48.775924+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:25:48.787067+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:25:48.788353+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-28T06:25:48.796027+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:25:48.796849+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:25:48.798134+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-28T06:25:48.826071+00:00", "level": "INFO", "logger": "app.core.asset_readiness", "message": "AssetReadiness OK: AssetReadiness episode=dc70c0b3: expected=30 registered=30 disk=30 missing=0"} {"timestamp": "2026-05-28T06:25:48.827366+00:00", "level": "INFO", "logger": "app.modules.image_checkpoint", "message": "Checkpoint loaded: scene — 33 completed, 17 failed"} {"timestamp": "2026-05-28T06:25:48.945032+00:00", "level": "INFO", "logger": "app.services.scene_reference_service", "message": "Loaded 25 existing reference images for 53 entities"} {"timestamp": "2026-05-28T06:25:48.945412+00:00", "level": "INFO", "logger": "app.services.scene_validation_service", "message": "Skipping legacy scene image validation — scene_lvm_validation_mode=off (LVM 2 disabled by cost policy; only mode='full' enables it)."} {"timestamp": "2026-05-28T06:25:49.009364+00:00", "level": "INFO", "logger": "app.services.scene_reference_service", "message": "Loaded outfit + composite + state_variant refs into scene_ref_image_map"} {"timestamp": "2026-05-28T06:25:49.023746+00:00", "level": "INFO", "logger": "app.services.scene_checkpoint_loaders", "message": "background_render: loaded 22 shot background mappings"} {"timestamp": "2026-05-28T06:25:49.072459+00:00", "level": "INFO", "logger": "app.services.scene_image_service", "message": "Scene generation: 50 scenes in 9 batches (max_concurrent=15)"} {"timestamp": "2026-05-28T06:25:49.090657+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 12 Shot 7: state_variant=['C05']"} {"timestamp": "2026-05-28T06:25:49.123038+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 12 Shot 7: background_chain ref injected"} {"timestamp": "2026-05-28T06:25:49.134483+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 19 Shot 3: background_chain ref injected"} {"timestamp": "2026-05-28T06:25:49.134701+00:00", "level": "INFO", "logger": "app.services.scene_reference_service", "message": "Scene 30 Shot 3: prev-shot background ref injected (remove: none, loc_id: L18, role: previous_shot_continuity)"} {"timestamp": "2026-05-28T06:25:49.134760+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 18: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:25:49.144196+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 30: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:25:49.144383+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 30 Shot 3: prev_shot_ref injected (no chain bg for this shot, role=previous_shot_continuity)"} {"timestamp": "2026-05-28T06:25:49.144623+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 21 Shot 8: background_chain ref injected"} {"timestamp": "2026-05-28T06:25:49.144727+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 49: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:25:49.144830+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 34: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:25:49.147350+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: CCTV 위치 확인과 추적의 단서"} {"timestamp": "2026-05-28T06:25:49.151688+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: Discovering the mutilated corpse"} {"timestamp": "2026-05-28T06:25:49.155907+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 안개 속으로 사라지는 배"} {"timestamp": "2026-05-28T06:25:49.157840+00:00", "level": "INFO", "logger": "app.modules.llm.gemini_key_pool", "message": "Gemini key pool: 1 key(s) loaded"} 15:25:49 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:25:49.180633+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:25:58 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:25:58.563086+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:25:58 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:25:58.566991+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-28T06:25:58.568500+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 충격적인 좌표 확인과 긴급한 기록"} {"timestamp": "2026-05-28T06:26:08.097145+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=19 shot=3"} {"timestamp": "2026-05-28T06:26:12.533661+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=30 shot=3"} {"timestamp": "2026-05-28T06:26:26.284187+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=21 shot=8"} {"timestamp": "2026-05-28T06:26:29.172950+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=12 shot=7"} {"timestamp": "2026-05-28T06:26:29.536782+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 12 Shot 11: state_variant=['C05']"} {"timestamp": "2026-05-28T06:26:29.545066+00:00", "level": "INFO", "logger": "app.services.scene_reference_service", "message": "Scene 11 Shot 1: prev-shot background ref injected (remove: none, loc_id: L04, role: previous_shot_continuity)"} {"timestamp": "2026-05-28T06:26:29.568236+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 12 Shot 11: background_chain ref injected"} {"timestamp": "2026-05-28T06:26:29.568339+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 19 Shot 4: chain_bg ref SKIPPED — close framing detected (framing_scale='close')"} {"timestamp": "2026-05-28T06:26:29.568392+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 11 Shot 1: prev_shot_ref injected (no chain bg for this shot, role=previous_shot_continuity)"} {"timestamp": "2026-05-28T06:26:29.568456+00:00", "level": "INFO", "logger": "app.services.scene_reference_service", "message": "Scene 13 Shot 5: prev-shot background ref injected (remove: none, loc_id: L04, role: previous_shot_same_frame_zoomed)"} {"timestamp": "2026-05-28T06:26:29.568492+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 19: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:26:29.568582+00:00", "level": "INFO", "logger": "app.services.scene_reference_service", "message": "Scene 19 Shot 4: prev-shot background ref injected (remove: none, loc_id: L10, role: previous_shot_same_frame_zoomed)"} {"timestamp": "2026-05-28T06:26:29.568750+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 16: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:26:29.568830+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 13 Shot 5: prev_shot_ref injected (no chain bg for this shot, role=previous_shot_same_frame_zoomed)"} {"timestamp": "2026-05-28T06:26:29.569156+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 19 Shot 4: prev_shot_ref injected (no chain bg for this shot, role=previous_shot_same_frame_zoomed)"} {"timestamp": "2026-05-28T06:26:29.569333+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 21: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:26:29.569509+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 31: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:26:29.569764+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 악취를 맡고 불길함을 느끼는 수리영"} {"timestamp": "2026-05-28T06:26:29.577747+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 충격적인 소식을 듣고 경악하는 혜수"} {"timestamp": "2026-05-28T06:26:29.587905+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: CCTV 위치 확인 후 혜수에게 전화"} 15:26:29 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:26:29.596218+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:26:40 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:26:40.914796+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:26:40 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:26:40.919030+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-28T06:26:40.920284+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 시신의 굳은 손아귀에 쥐어진 낡은 사진"} {"timestamp": "2026-05-28T06:26:48.852519+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=11 shot=1"} {"timestamp": "2026-05-28T06:26:54.476327+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=19 shot=4"} {"timestamp": "2026-05-28T06:27:01.698041+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=13 shot=5"} {"timestamp": "2026-05-28T06:27:08.925553+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=12 shot=11"} {"timestamp": "2026-05-28T06:27:09.296971+00:00", "level": "INFO", "logger": "app.services.scene_reference_service", "message": "Scene 13 Shot 4: prev-shot background ref injected (remove: none, loc_id: L04, role: previous_shot_same_room)"} {"timestamp": "2026-05-28T06:27:09.297041+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 13 Shot 4: prev_shot_ref injected (no chain bg for this shot, role=previous_shot_same_room)"} {"timestamp": "2026-05-28T06:27:09.297164+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 20: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:27:09.304787+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 14 Shot 3: background_chain ref injected"} {"timestamp": "2026-05-28T06:27:09.304902+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 충격적인 소식"} {"timestamp": "2026-05-28T06:27:09.315849+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 22: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:27:09.316339+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 흔적 없이 치워진 시신과 정돈된 방"} {"timestamp": "2026-05-28T06:27:38.342255+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=13 shot=4"} {"timestamp": "2026-05-28T06:27:38.908423+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=14 shot=3"} {"timestamp": "2026-05-28T06:27:39.099971+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 14 Shot 7: background_chain ref injected"} {"timestamp": "2026-05-28T06:27:39.100118+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 23: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:27:39.107602+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 18 Shot 8: background_chain ref injected"} {"timestamp": "2026-05-28T06:27:39.107767+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 혼란스러운 수리영과 위로하는 혜수"} {"timestamp": "2026-05-28T06:27:39.127642+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 28: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:27:39.128491+00:00", "level": "INFO", "logger": "app.services.scene_reference_service", "message": "Scene 17 Shot 1: prev-shot background ref injected (remove: none, loc_id: L04, role: previous_shot_continuity)"} {"timestamp": "2026-05-28T06:27:39.128585+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 17 Shot 1: prev_shot_ref injected (no chain bg for this shot, role=previous_shot_continuity)"} {"timestamp": "2026-05-28T06:27:39.128621+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 27: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:27:39.128835+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 새벽 담장 위 고양이 실루엣"} 15:27:39 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:27:39.135885+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:27:47 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:27:47.157252+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:27:47 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:27:47.161187+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-28T06:27:47.162543+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 거울 속의 환영"} {"timestamp": "2026-05-28T06:27:54.152900+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=17 shot=1"} {"timestamp": "2026-05-28T06:27:55.339017+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=14 shot=7"} {"timestamp": "2026-05-28T06:28:10.133533+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=18 shot=8"} {"timestamp": "2026-05-28T06:28:10.425281+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 18 Shot 11: chain_bg ref SKIPPED — close framing detected (framing_scale='close')"} {"timestamp": "2026-05-28T06:28:10.425391+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 29: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:28:10.433674+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 25 Shot 3: chain_bg ref SKIPPED — close framing detected (framing_scale='close')"} {"timestamp": "2026-05-28T06:28:10.433858+00:00", "level": "INFO", "logger": "app.services.scene_reference_service", "message": "Scene 25 Shot 3: prev-shot background ref injected (remove: none, loc_id: L05, role: previous_shot_same_frame_zoomed)"} {"timestamp": "2026-05-28T06:28:10.433934+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 사진 속 엄마의 얼굴 왜곡 환각"} {"timestamp": "2026-05-28T06:28:10.434050+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 25 Shot 3: prev_shot_ref injected (no chain bg for this shot, role=previous_shot_same_frame_zoomed)"} {"timestamp": "2026-05-28T06:28:10.434139+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 38: 1 prompts total, generating last 1 T2I + 1 angle"} 15:28:10 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:28:10.435249+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:28:20 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:28:20.362256+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:28:20 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:28:20.363757+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-28T06:28:20.365609+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 벽에 그려진 붉은 원과 피 묻은 사진"} {"timestamp": "2026-05-28T06:28:40.530826+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=25 shot=3"} {"timestamp": "2026-05-28T06:28:44.538444+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=18 shot=11"} {"timestamp": "2026-05-28T06:28:44.730393+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 25 Shot 7: background_chain ref injected"} {"timestamp": "2026-05-28T06:28:44.730493+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 39: 1 prompts total, generating last 1 T2I + 1 angle"} 15:28:44 - LiteLLM:INFO: utils.py:3995 - LiteLLM completion() model= gemini-3.5-flash; provider = gemini {"timestamp": "2026-05-28T06:28:44.731618+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.5-flash; provider = gemini"} 15:28:54 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T06:28:54.073634+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 15:28:54 - LiteLLM Router:INFO: router.py:1515 - litellm.completion(model=gemini/gemini-3.5-flash) 200 OK {"timestamp": "2026-05-28T06:28:54.077445+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-28T06:28:54.078775+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 혼미한 상태에서 단서를 쥐고 집을 나서는 수리영"} {"timestamp": "2026-05-28T06:29:15.208735+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=25 shot=7"} {"timestamp": "2026-05-28T06:29:15.318423+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 27 Shot 1: background_chain ref injected"} {"timestamp": "2026-05-28T06:29:15.318512+00:00", "level": "INFO", "logger": "app.services.scene_generation_coordinator", "message": "Scene 42: 1 prompts total, generating last 1 T2I + 1 angle"} {"timestamp": "2026-05-28T06:29:15.318741+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Generating scene image: 단서를 깨닫고 굳어버린 혜수"} {"timestamp": "2026-05-28T06:30:04.379990+00:00", "level": "INFO", "logger": "app.modules.pipeline.scene_image_pipeline", "message": "Scene LVM skipped: reason=off mode=off scene=27 shot=1"} {"timestamp": "2026-05-28T06:30:04.502674+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step scene_image_pipeline completed (completed=50/50, failed=0)"} {"timestamp": "2026-05-28T06:30:04.502715+00:00", "level": "INFO", "logger": "app.services.analysis_dispatch_service", "message": "Step scene_image_pipeline: completed"} {"timestamp": "2026-05-28T06:30:04.531505+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-28T06:30:04.560100+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T06:30:04.570726+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T06:30:04.582148+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T06:30:04.591845+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T06:30:04.593057+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-28T06:30:04.601161+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 29 total short_ids found"} {"timestamp": "2026-05-28T06:30:04.602040+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T06:30:04.603825+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=-, repaired=0)"}