/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 [83022] INFO: Waiting for application startup. {"timestamp": "2026-07-02T09:30:07.332816+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:8000 (Press CTRL+C to quit) INFO: 127.0.0.1:50304 - "GET /docs HTTP/1.1" 404 Not Found INFO: 127.0.0.1:50308 - "POST /api/v1/auth/login HTTP/1.1" 200 OK {"timestamp": "2026-07-02T09:30:49.257462+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:b0ad5c18-5140-4022-a2b0-805de0e5a385:0d30302a-51c8-4ac9-98e2-6cd9180512bf:outdoor_site_layout (Step outdoor_site_layout for 0d30302a-51c8-4ac9-98e2-6cd9180512bf)"} INFO: 127.0.0.1:50314 - "POST /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps/outdoor_site_layout?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-07-02T09:30:49.277923+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step outdoor_site_layout started (run_id=41faf4a6-1714-4d96-9a4e-8329638d1ec2, model=gpt)"} {"timestamp": "2026-07-02T09:30:49.295975+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "Opik callback enabled (project: theroad-scene-lab)"} 18:30:49 - LiteLLM Router:INFO: router.py:812 - Routing strategy: simple-shuffle {"timestamp": "2026-07-02T09:30:49.314380+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "Routing strategy: simple-shuffle"} {"timestamp": "2026-07-02T09:30:49.314731+00:00", "level": "INFO", "logger": "app.modules.llm.llm_client", "message": "LiteLLM Router initialized: 8 deployments (1 Gemini keys, OpenAI=True)"} 18:30:49 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T09:30:49.329575+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:50330 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50336 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50341 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 18:31:52 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T09:31:52.287284+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 18:31:52 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK OPIK: Started logging traces to the "theroad-scene-lab" project at https://www.comet.com/opik/api/v1/session/redirect/projects/?trace_id=06a46300-849c-7cd9-8000-eda601ea7f2e&path=aHR0cHM6Ly93d3cuY29tZXQuY29tL29waWsvYXBpLw==. {"timestamp": "2026-07-02T09:31:52.288818+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-07-02T09:31:52.290446+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "call_structured[outdoor_site_layout] Tier 1 failed (LLM returned empty response for step=outdoor_site_layout, model=gpt), trying sanitized input"} 18:31:52 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T09:31:52.293190+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:50349 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50359 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50365 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 18:33:01 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T09:33:01.968759+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 18:33:01 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T09:33:01.970206+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-07-02T09:33:01.972332+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "call_structured[outdoor_site_layout] Tier 2 sanitized failed (LLM returned empty response for step=outdoor_site_layout, model=gpt), trying GPT fallback"} 18:33:01 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T09:33:01.974847+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:50372 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50378 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 18:33:37 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T09:33:37.090087+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 18:33:37 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T09:33:37.091826+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 18:33:37 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T09:33:37.107761+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:50386 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 18:34:00 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T09:34:00.963451+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 18:34:00 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T09:34:00.965439+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 18:34:00 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T09:34:00.972496+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:50396 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 18:34:13 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T09:34:13.515056+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 18:34:13 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T09:34:13.516870+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 18:34:13 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T09:34:13.525148+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:50402 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 18:34:24 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T09:34:24.994345+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 18:34:24 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T09:34:24.995717+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-07-02T09:34:25.005021+00:00", "level": "INFO", "logger": "app.modules.llm.gemini_key_pool", "message": "Gemini key pool: 1 key(s) loaded"} INFO: 127.0.0.1:50410 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50417 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50423 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50433 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50449 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50459 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50469 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50476 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50488 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50494 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50501 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50509 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50517 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50523 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50530 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50540 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50547 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50556 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50565 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50579 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50588 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50594 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50600 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50611 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50620 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50631 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50641 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50648 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50656 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50663 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50670 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50676 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50682 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50692 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50699 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50712 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50718 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50725 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50735 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50740 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50746 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50755 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50762 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50769 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50775 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50785 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50794 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50800 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50804 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50808 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50810 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/pipeline-graph HTTP/1.1" 200 OK INFO: 127.0.0.1:50812 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/images/4b21a64b-8627-4993-aa3f-59226530f2c3/file?thumb=1 HTTP/1.1" 200 OK INFO: 127.0.0.1:50834 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50857 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50872 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:50887 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 18:54:49 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T09:54:49.616742+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 18:55:10 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T09:55:10.064493+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 18:55:10 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T09:55:10.066130+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 18:55:10 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T09:55:10.082773+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 18:55:14 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T09:55:14.564472+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 18:55:14 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T09:55:14.566014+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 18:55:14 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T09:55:14.574491+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 18:55:34 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T09:55:34.398378+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 18:55:34 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T09:55:34.399588+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:50912 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 18:55:52 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T09:55:52.878387+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:50940 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 18:57:04 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T09:57:04.873087+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 18:57:04 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T09:57:04.874401+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-07-02T09:57:04.876403+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "call_structured[outdoor_site_layout] Tier 1 failed (LLM returned empty response for step=outdoor_site_layout, model=gpt), trying sanitized input"} 18:57:04 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T09:57:04.883327+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:50959 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 18:58:07 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T09:58:07.967086+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 18:58:07 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T09:58:07.968812+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-07-02T09:58:07.970232+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "call_structured[outdoor_site_layout] Tier 2 sanitized failed (LLM returned empty response for step=outdoor_site_layout, model=gpt), trying GPT fallback"} 18:58:07 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T09:58:07.972353+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:50977 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 18:59:13 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T09:59:13.907272+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 18:59:13 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T09:59:13.908726+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-07-02T09:59:13.910927+00:00", "level": "WARNING", "logger": "app.core.steps.outdoor_site_layout_step", "message": "outdoor_site_layout: L03 layout 추출 실패: LLM returned empty response for step=outdoor_site_layout, model=gpt"} 18:59:13 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T09:59:13.913110+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:50994 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:00:10 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:00:10.904465+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:00:10 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:00:10.905661+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:00:10 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:00:10.922709+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:00:25 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:00:25.213446+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:00:25 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:00:25.215089+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:00:25 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:00:25.231828+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:00:33 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:00:33.884626+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:00:33 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:00:33.886332+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:51013 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:00:45 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:00:45.457431+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:01:29 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:01:29.936982+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:01:29 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:01:29.938567+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:01:29 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:01:29.955390+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:01:40 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:01:40.062500+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:01:40 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:01:40.064150+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:01:40 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:01:40.072653+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:51039 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:01:51 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:01:51.480791+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:01:51 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:01:51.483903+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:01:51 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:01:51.491575+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:01:59 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:01:59.017301+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:01:59 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:01:59.019506+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:51053 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/pipeline-graph HTTP/1.1" 200 OK INFO: 127.0.0.1:51055 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/images/5ede86d6-6cc2-4a0b-adee-256f134d60a6/file?thumb=1 HTTP/1.1" 200 OK INFO: 127.0.0.1:51063 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/exports HTTP/1.1" 200 OK INFO: 127.0.0.1:51062 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/ HTTP/1.1" 200 OK INFO: 127.0.0.1:51065 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/exports HTTP/1.1" 200 OK INFO: 127.0.0.1:51067 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/ HTTP/1.1" 200 OK INFO: 127.0.0.1:51069 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/ HTTP/1.1" 200 OK {"timestamp": "2026-07-02T10:02:32.905810+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "_resolve_model: unknown step 'image_placement' — falling back to 'gemini-pro'. If intentional, register in STEP_MANIFEST or _PIPELINE_STEP_EXTENSIONS."} 19:02:32 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini {"timestamp": "2026-07-02T10:02:32.908021+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gemini-3.1-pro-preview; provider = gemini"} INFO: 127.0.0.1:51076 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:02:46 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:02:46.407645+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:02:46 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=gemini/gemini-3.1-pro-preview) 200 OK {"timestamp": "2026-07-02T10:02:46.409151+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=gemini/gemini-3.1-pro-preview)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:51072 - "POST /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/export-html-zip?original=true HTTP/1.1" 200 OK INFO: 127.0.0.1:51081 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/exports HTTP/1.1" 200 OK INFO: 127.0.0.1:51091 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/exports/Geumwoldo_E2E_20260702b_PNG_20260702_1902.zip HTTP/1.1" 200 OK INFO: 127.0.0.1:51096 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51112 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51127 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51149 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51170 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51185 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51200 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:09:56 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:09:56.249328+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:10:08 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:10:08.013661+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:10:08 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:10:08.014985+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:10:08 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:10:08.032165+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:10:13 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:10:13.144419+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:10:13 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:10:13.146235+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:10:25 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:10:25.181375+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:10:37 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:10:37.517133+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:10:37 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:10:37.518713+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:10:37 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:10:37.535347+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:51225 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:10:47 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:10:47.258241+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:10:47 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:10:47.259557+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:51248 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51266 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51290 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51305 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51320 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51343 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51361 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51382 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK {"timestamp": "2026-07-02T10:19:34.745997+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step outdoor_site_layout completed (completed=7/8, failed=0)"} {"timestamp": "2026-07-02T10:19:34.791376+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.entity_sync_service", "message": "Synced 38 entities to DB from checkpoint (upsert); removed 0 stale links"} {"timestamp": "2026-07-02T10:19:34.843579+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 186 scene_stills (shot-based) to DB"} {"timestamp": "2026-07-02T10:19:34.861101+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-07-02T10:19:34.881192+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.outlook_sync_service", "message": "Synced 13 outlooks + 14 character-outlook links (Δ +0 / -0)"} {"timestamp": "2026-07-02T10:19:34.895797+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 24 total short_ids found"} {"timestamp": "2026-07-02T10:19:34.905761+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode 0d30302a, step=outdoor_site_layout, repaired=0)"} INFO: 127.0.0.1:51399 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK {"timestamp": "2026-07-02T10:21:40.131096+00:00", "level": "ERROR", "logger": "asyncio", "message": "Task was destroyed but it is pending!\ntask: wait_for=>"} INFO: 127.0.0.1:51457 - "POST /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps/outdoor_site_layout?mode=resume HTTP/1.1" 200 OK {"timestamp": "2026-07-02T10:23:36.424405+00:00", "level": "INFO", "logger": "app.core.job_manager", "message": "Starting background job: step:b0ad5c18-5140-4022-a2b0-805de0e5a385:0d30302a-51c8-4ac9-98e2-6cd9180512bf:outdoor_site_layout (Step outdoor_site_layout for 0d30302a-51c8-4ac9-98e2-6cd9180512bf)"} INFO: 127.0.0.1:51467 - "POST /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps/outdoor_site_layout?mode=force HTTP/1.1" 200 OK {"timestamp": "2026-07-02T10:23:36.436639+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step outdoor_site_layout started (run_id=e2d88fb4-8b12-46ad-8916-68b9971401c6, model=gpt)"} 19:23:36 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:23:36.454516+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:51469 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51488 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:24:39 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:24:39.600205+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:24:39 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:24:39.601338+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-07-02T10:24:39.602928+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "call_structured[outdoor_site_layout] Tier 1 failed (LLM returned empty response for step=outdoor_site_layout, model=gpt), trying sanitized input"} 19:24:39 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:24:39.607841+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:25:32 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:25:32.043028+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:25:32 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:25:32.044219+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:25:32 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:25:32.057703+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:51515 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:25:52 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:25:52.373678+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:25:52 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:25:52.375468+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:25:52 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:25:52.383510+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:26:25 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:26:25.697428+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:26:25 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:26:25.699954+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:26:25 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:26:25.708269+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:51546 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:27:04 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:27:04.299156+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:27:04 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:27:04.300813+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:51564 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51588 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51605 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51624 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51645 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51661 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51680 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51695 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51710 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51733 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51751 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51770 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51784 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51802 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51824 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51840 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51860 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51879 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:51894 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:46:07 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:46:07.881598+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:46:27 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:46:27.746428+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:46:27 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:46:27.747690+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:46:27 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:46:27.762479+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:46:32 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:46:32.129281+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:46:32 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:46:32.130388+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:46:32 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:46:32.140504+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:51920 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:46:59 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:46:59.765137+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:46:59 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:46:59.766933+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:47:28 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:47:28.663000+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:51937 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:48:35 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:48:35.052651+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:48:35 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:48:35.054293+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} {"timestamp": "2026-07-02T10:48:35.056211+00:00", "level": "WARNING", "logger": "app.modules.llm.llm_client", "message": "call_structured[outdoor_site_layout] Tier 1 failed (LLM returned empty response for step=outdoor_site_layout, model=gpt), trying sanitized input"} 19:48:35 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:48:35.062862+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:51959 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:49:23 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:49:23.800676+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:49:23 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:49:23.802429+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:49:23 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:49:23.820520+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:49:29 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:49:29.799565+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:49:29 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:49:29.801477+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:49:29 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:49:29.810161+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:51975 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:49:55 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:49:55.278146+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:49:55 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:49:55.279399+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:49:55 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:49:55.288406+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:50:00 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:50:00.114266+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:50:00 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:50:00.115063+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:50:00 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:50:00.124331+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:50:10 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:50:10.938614+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:50:10 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:50:10.940379+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:51996 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:51:06 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:51:06.984640+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:52022 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:52:06 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:52:06.934653+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:52:06 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:52:06.936737+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:52:06 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:52:06.949504+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:52:19 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:52:19.540635+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:52:19 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:52:19.542251+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:52:19 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:52:19.558566+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:52:24 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:52:24.559618+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:52:24 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:52:24.560899+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:52039 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:52:38 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:52:38.739697+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:53:23 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:53:23.669575+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:53:23 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:53:23.671332+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:53:23 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:53:23.687621+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:53:31 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:53:31.930175+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:53:31 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:53:31.931561+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:53:31 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:53:31.941376+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:52063 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 19:53:49 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:53:49.538479+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:53:49 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:53:49.540138+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 19:53:49 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T10:53:49.548751+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 19:53:59 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T10:53:59.868031+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 19:53:59 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T10:53:59.869150+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:52081 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52102 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52125 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52140 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52162 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52177 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52193 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52209 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 20:02:01 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T11:02:01.434556+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 20:02:23 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T11:02:23.363043+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 20:02:23 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T11:02:23.364610+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 20:02:23 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T11:02:23.380492+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 20:02:28 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T11:02:28.345095+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 20:02:28 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T11:02:28.346975+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:52234 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52253 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52269 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52287 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52303 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52326 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52344 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52359 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 20:10:07 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T11:10:07.412044+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} 20:10:31 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T11:10:31.430010+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 20:10:31 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T11:10:31.432369+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} 20:10:31 - LiteLLM:INFO: utils.py:4011 - LiteLLM completion() model= gpt-5.5; provider = openai {"timestamp": "2026-07-02T11:10:31.447172+00:00", "level": "INFO", "logger": "LiteLLM", "message": "\nLiteLLM completion() model= gpt-5.5; provider = openai"} INFO: 127.0.0.1:52379 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK 20:10:42 - LiteLLM:INFO: utils.py:1653 - Wrapper: Completed Call, calling success_handler {"timestamp": "2026-07-02T11:10:42.302186+00:00", "level": "INFO", "logger": "LiteLLM", "message": "Wrapper: Completed Call, calling success_handler"} 20:10:42 - LiteLLM Router:INFO: router.py:1543 - litellm.completion(model=openai/gpt-5.5) 200 OK {"timestamp": "2026-07-02T11:10:42.303559+00:00", "level": "INFO", "logger": "LiteLLM Router", "message": "litellm.completion(model=openai/gpt-5.5)\u001b[32m 200 OK\u001b[0m"} INFO: 127.0.0.1:52395 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52417 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52436 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52452 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52467 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52485 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52507 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52525 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: 127.0.0.1:52541 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK {"timestamp": "2026-07-02T11:20:32.997992+00:00", "level": "INFO", "logger": "app.core.step_runner", "message": "Step outdoor_site_layout completed (completed=8/8, failed=0)"} {"timestamp": "2026-07-02T11:20:33.042501+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.entity_sync_service", "message": "Synced 38 entities to DB from checkpoint (upsert); removed 0 stale links"} {"timestamp": "2026-07-02T11:20:33.098185+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced 186 scene_stills (shot-based) to DB"} {"timestamp": "2026-07-02T11:20:33.116669+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.scene_still_writer", "message": "Synced scene_summary from checkpoint"} {"timestamp": "2026-07-02T11:20:33.137896+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.outlook_sync_service", "message": "Synced 13 outlooks + 14 character-outlook links (Δ +0 / -0)"} {"timestamp": "2026-07-02T11:20:33.150318+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.episode_projection_service", "message": "T2I appearance counts: 0 entities updated, 24 total short_ids found"} {"timestamp": "2026-07-02T11:20:33.159191+00:00", "level": "INFO", "logger": "app.services.checkpoint_sync.orchestrator", "message": "orchestrate_full_sync: all changes committed atomically (episode 0d30302a, step=outdoor_site_layout, repaired=0)"} INFO: 127.0.0.1:52559 - "GET /api/v1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf/steps HTTP/1.1" 200 OK INFO: Shutting down INFO: Waiting for application shutdown. INFO: Application shutdown complete. INFO: Finished server process [83022]