/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 [91042] INFO: Waiting for application startup. {"timestamp": "2026-05-28T03:17:11.648530+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:63990 - "POST /api/v1/auth/login HTTP/1.1" 200 OK {"timestamp": "2026-05-28T03:17:35.675330+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:63992 - "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-28T03:17:35.688119+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-28T03:17:35.690731+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_geometry_readback started (run_id=f282c039-7d16-43ee-9b9c-b3f66d05b9fa, model=gpt)"} 12:17:35 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:17:35.700239+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 12:17:54 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:17:54.732011+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:17:54 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:17:54.742220+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:64010 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64014 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64018 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:18:35 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:18:35.464659+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:18:35 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:18:35.487982+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:64026 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64030 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64034 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:19:03 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:19:03.242202+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:19:03 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:19:03.256035+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:64039 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64043 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64047 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64051 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64055 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64060 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:20:04 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:20:04.795608+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} {"timestamp": "2026-05-28T03:20:04.833680+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step floor_plan_geometry_readback completed (completed=4/1, failed=0)"} {"timestamp": "2026-05-28T03:20:04.901342+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.entity_sync_service", "message": "Synced 41 entities to DB from checkpoint (upsert); removed 0 stale links"} {"timestamp": "2026-05-28T03:20:04.968264+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T03:20:04.985739+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:20:05.000970+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T03:20:05.014437+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T03:20:05.016188+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.outlook_sync_service", "message": "Synced 12 outlooks + 13 character-outlook links (Δ +0 / -0)"} {"timestamp": "2026-05-28T03:20:05.026204+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 28 total short_ids found"} {"timestamp": "2026-05-28T03:20:05.027971+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T03:20:05.028672+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T03:20:05.030279+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:64064 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK {"timestamp": "2026-05-28T03:20:25.117216+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:64068 - "POST /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps/shot_aware_bg_render_plan?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-05-28T03:20:25.122445+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step shot_aware_bg_render_plan started (run_id=abcd0a56-f73b-4059-9706-c0c4a258add4, model=gpt)"} 12:20:25 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:20:25.128203+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:64074 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64079 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64083 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64087 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64090 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64094 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64098 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64104 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64110 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64114 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64116 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64121 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:22:15 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:22:15.458593+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:22:15 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:22:15.470920+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:64125 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64129 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64133 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64144 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64148 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64152 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64157 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64160 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64168 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64172 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:24:00 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:24:00.441010+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:24:00 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:24:00.450724+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:64176 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64180 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64184 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64188 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64192 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:24:52 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:24:52.660282+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 12:24:52 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-05-28T03:24:52.668506+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:64196 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64200 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64204 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64209 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64213 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64217 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:64221 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK 12:25:56 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-05-28T03:25:56.533218+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} {"timestamp": "2026-05-28T03:25:56.547398+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step shot_aware_bg_render_plan partial (completed=3/1, failed=1)"} {"timestamp": "2026-05-28T03:25:56.614828+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.entity_sync_service", "message": "Synced 41 entities to DB from checkpoint (upsert); removed 0 stale links"} {"timestamp": "2026-05-28T03:25:56.682947+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 152 scene_stills (shot-based) to DB"} {"timestamp": "2026-05-28T03:25:56.702428+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-05-28T03:25:56.720122+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced shot_type from scene_cinematography checkpoint (legacy)"} {"timestamp": "2026-05-28T03:25:56.732759+00:00", "level": "WARNING", "logger": "app.core.name_matcher", "message": "name_index collision: key='경찰수사점퍼' kept existing entry, skipped new from raw='경찰수사점퍼'"} {"timestamp": "2026-05-28T03:25:56.734663+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.outlook_sync_service", "message": "Synced 12 outlooks + 13 character-outlook links (Δ +0 / -0)"} {"timestamp": "2026-05-28T03:25:56.746574+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 28 total short_ids found"} {"timestamp": "2026-05-28T03:25:56.747312+00:00", "level": "WARNING", "logger": "app.core.applicability", "message": "_if_planning_doc fallback to False: '_StubRunner' object has no attribute 'db'"} {"timestamp": "2026-05-28T03:25:56.747994+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "Episode dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca analysis_error already set by caller — strict projection preserves it"} {"timestamp": "2026-05-28T03:25:56.749269+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:64225 - "GET /api/v1/projects/4f948193-6809-4ae3-a3c6-2ca4e8af1c1a/episodes/dc70c0b3-5c09-4664-8c0f-9cac38c0c6ca/steps HTTP/1.1" 200 OK INFO: Shutting down INFO: Waiting for application shutdown. INFO: Application shutdown complete. INFO: Finished server process [91042]