/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 [59149] INFO: Waiting for application startup. {"timestamp": "2026-05-28T01:14:24.717024+00:00", "level": "WARNING", "logger": "app.main", "message": "SECURITY: insecure default credentials in use — DEFAULT_ADMIN_PASSWORD, DEFAULT_CREATOR_PASSWORD. Override via env vars before exposing this server."} INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8015 (Press CTRL+C to quit) INFO: 127.0.0.1:59947 - "POST /api/v1/auth/login HTTP/1.1" 200 OK INFO: 127.0.0.1:59950 - "GET /api/v1/auth/me HTTP/1.1" 200 OK {"timestamp": "2026-05-28T01:14:43.623058+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:base_location_dossier (Step base_location_dossier for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:59954 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/base_location_dossier?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T01:14:43.643352+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 2 downstream steps from base_location_dossier (delete_cp=True): ['floor_plan_geometry_readback', 'shot_aware_bg_render_plan']"} {"timestamp": "2026-05-28T01:14:43.645847+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step base_location_dossier started (run_id=9dbe979f-aacb-420c-b08d-f43113e43389, model=gpt)"} {"timestamp": "2026-05-28T01:14:43.654784+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step base_location_dossier completed (completed=1/1, failed=0)"} {"timestamp": "2026-05-28T01:14:43.682510+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-28T01:14:43.688141+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T01:14:43.696152+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T01:14:43.697769+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-28T01:14:43.702655+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T01:14:43.704360+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T01:14:43.704977+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T01:14:43.706425+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=base_location_dossier, repaired=0)"} INFO: 127.0.0.1:59959 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:59965 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/shot_aware_bg_render_plan?mode=force HTTP/1.1" 400 Bad Request INFO: 127.0.0.1:59971 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T01:15:49.358224+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:floor_plan_geometry_readback (Step floor_plan_geometry_readback for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:59975 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/floor_plan_geometry_readback?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T01:15:49.364827+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Invalidated 1 downstream steps from floor_plan_geometry_readback (delete_cp=True): ['shot_aware_bg_render_plan']"} {"timestamp": "2026-05-28T01:15:49.366499+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_geometry_readback started (run_id=28525f32-765e-443c-bc84-ca25ed9b2892, model=gpt)"} 10:15:49 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:15:49.376262+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:59981 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:59985 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:59992 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:16:25 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:16:25.370973+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:16:25 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:16:25.384161+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:59999 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:16:34 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:16:34.814075+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:16:34 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:16:34.828177+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60005 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60016 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60019 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:17:02 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:17:02.862741+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:17:02 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:17:02.885859+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60025 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60042 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60046 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60050 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60057 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:17:47 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:17:47.708869+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} {"timestamp": "2026-05-28T01:17:47.709486+00:00", "level": "ERROR", "logger": "app.core.steps.floor_plan_geometry_readback_step", "message": "floor_plan_geometry_readback fp_id=fp_l12_main unexpected: response.choices[0].message.content is empty", "exception": "Traceback (most recent call last):\n File \"/Users/manta/Documents/Projects/TheRoad-I1/backend/app/core/steps/floor_plan_geometry_readback_step.py\", line 226, in _execute\n readback = compute_readback(\n ^^^^^^^^^^^^^^^^^\n File \"/Users/manta/Documents/Projects/TheRoad-I1/backend/app/modules/pipeline/floor_plan_geometry_readback.py\", line 235, in compute_readback\n out = vlm_provider(\n ^^^^^^^^^^^^^\n File \"/Users/manta/Documents/Projects/TheRoad-I1/backend/app/core/steps/floor_plan_geometry_readback_step.py\", line 223, in counted\n return base_provider(**kw)\n ^^^^^^^^^^^^^^^^^^^\n File \"/Users/manta/Documents/Projects/TheRoad-I1/backend/app/modules/pipeline/floor_plan_vlm_provider.py\", line 798, in litellm_vlm_provider\n raise VlmProviderError(\napp.modules.pipeline.floor_plan_vlm_provider.VlmProviderError: response.choices[0].message.content is empty"} 10:17:47 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:17:47.723090+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60059 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60063 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60067 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60071 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:18:26 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:18:26.054015+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:18:26 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:18:26.074599+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60075 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60081 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:18:42 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:18:42.567300+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:18:42 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:18:42.588290+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60085 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:18:58 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:18:58.068517+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:18:58 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:18:58.082045+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60090 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60096 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:19:13 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:19:13.154240+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:19:13 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:19:13.171863+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60103 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:19:25 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:19:25.859007+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:19:25 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:19:25.878674+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60109 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60117 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:19:40 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:19:40.380818+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:19:40 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:19:40.395353+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60121 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:19:55 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:19:55.650591+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} {"timestamp": "2026-05-28T01:19:55.692099+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_geometry_readback partial (completed=10/1, failed=1)"} {"timestamp": "2026-05-28T01:19:55.746253+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-28T01:19:55.754319+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T01:19:55.765946+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T01:19:55.768552+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-28T01:19:55.775146+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T01:19:55.776395+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T01:19:55.777489+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T01:19:55.780176+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=floor_plan_geometry_readback, repaired=0)"} INFO: 127.0.0.1:60125 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T01:20:07.754386+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:4f948193-6809-4ae3-a3c6-2ca4e8af1c1a:dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca:shot_aware_bg_render_plan (Step shot_aware_bg_render_plan for dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca)"} INFO: 127.0.0.1:60131 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/shot_aware_bg_render_plan?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T01:20:07.762622+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step shot_aware_bg_render_plan started (run_id=9c2718c1-7950-4c35-9c9a-d71e9379062e, model=gpt)"} 10:20:07 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:20:07.770421+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60137 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60141 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60149 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60156 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60160 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60164 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60171 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60176 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:21:33 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:21:33.776240+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:21:33 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:21:33.779715+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60181 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60185 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60196 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60200 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60205 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60208 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60212 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60223 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:22:51 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:22:51.160380+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:22:51 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:22:51.170941+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60228 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60232 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60236 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60240 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60245 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60249 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60253 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60257 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60261 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60264 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:24:37 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:24:37.883361+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:24:37 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:24:37.889800+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60268 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60272 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60276 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60280 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60283 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60287 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60291 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60295 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60300 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60305 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60312 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:26:23 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:26:23.719214+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:26:23 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:26:23.721863+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60316 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60321 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60325 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60337 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60341 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60354 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:27:28 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:27:28.285375+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:27:28 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:27:28.292409+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60358 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60362 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60370 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60374 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60377 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60381 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60385 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60390 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:28:44 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:28:44.893591+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:28:44 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:28:44.902427+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60394 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60398 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60402 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60406 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:29:22 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:29:22.152832+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:29:22 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:29:22.160979+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60410 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60414 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60418 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60422 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:30:11 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:30:11.186433+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 10:30:11 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T01:30:11.194572+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:60425 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60429 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60433 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60437 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60442 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60445 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60449 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:60453 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 10:31:28 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T01:31:28.826024+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} {"timestamp": "2026-05-28T01:31:28.840158+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step shot_aware_bg_render_plan partial (completed=5/1, failed=4)"} {"timestamp": "2026-05-28T01:31:28.895690+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-28T01:31:28.906650+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_sync_service", "message": "Skipping scene_still sync: scene_detail 데이터 없음 (cascade or pre-analysis). Existing rows preserved."} {"timestamp": "2026-05-28T01:31:28.919766+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T01:31:28.922167+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-28T01:31:28.928784+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 0 total short_ids found"} {"timestamp": "2026-05-28T01:31:28.930527+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T01:31:28.931745+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T01:31:28.933820+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode dc70c0b3, step=shot_aware_bg_render_plan, repaired=0)"} INFO: 127.0.0.1:60457 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK