[{"seq":39,"timestamp":"2026-04-29T19:41:23.033288774Z","level":"WARN","target":"coolrust::worker::executor","module":"coolrust::worker::executor","file":"src/worker/executor.rs","line":166,"message":"job permanently failed","fields":{"duration_ms":"1","error":"section 1 (Deriving the Quadratic Formula) did not produce a spec: (no error message)"}},{"seq":38,"timestamp":"2026-04-29T19:41:23.027309255Z","level":"WARN","target":"coolrust::worker::executor","module":"coolrust::worker::executor","file":"src/worker/executor.rs","line":321,"message":"job exhausted retries","fields":{"attempt":"3","error":"typst compile error: typst compile error: error: unknown variable: left","max_attempts":"3"}},{"seq":37,"timestamp":"2026-04-29T19:41:23.027227070Z","level":"WARN","target":"coolrust::pipeline::orchestrator","module":"coolrust::pipeline::orchestrator","file":"src/pipeline/orchestrator.rs","line":696,"message":"section: classifying stage error","fields":{"classification":"retryable","error":"typst compile error: typst compile error: error: unknown variable: left"}},{"seq":36,"timestamp":"2026-04-29T19:41:23.027016091Z","level":"ERROR","target":"coolrust::pipeline::orchestrator","module":"coolrust::pipeline::orchestrator","file":"src/pipeline/orchestrator.rs","line":585,"message":"section: stage failed","fields":{"error":"typst compile error: typst compile error: error: unknown variable: left","lesson_id":"b0e81b5b-f747-43dd-bc68-35f82e94f3d7","section_idx":"1","stage":"compile"}},{"seq":35,"timestamp":"2026-04-29T19:41:23.024745116Z","level":"INFO","target":"coolrust::llm::client","module":"coolrust::llm::client","file":"src/llm/client.rs","line":343,"message":"llm: structured output validated","fields":{"attempt":"2","repairs":"0"}},{"seq":34,"timestamp":"2026-04-29T19:41:07.566454593Z","level":"WARN","target":"coolrust::llm::client","module":"coolrust::llm::client","file":"src/llm/client.rs","line":361,"message":"llm: validation failed; preparing repair turn","fields":{"attempt":"1","sample":"[\"glossary symbol 'quadratic formula' contains whitespace; use one identifier per entry\", \"glossary symbol 'completing the square' contains whitespace; use one identifier per entry\"]","stage":"post-schema semantic check","violations":"2"}},{"seq":33,"timestamp":"2026-04-29T19:40:26.830713952Z","level":"INFO","target":"coolrust::pipeline::orchestrator","module":"coolrust::pipeline::orchestrator","file":"src/pipeline/orchestrator.rs","line":523,"message":"section: starting write_section","fields":{"attempt":"3","lesson_id":"b0e81b5b-f747-43dd-bc68-35f82e94f3d7","max_attempts":"3","section_idx":"1"}},{"seq":32,"timestamp":"2026-04-29T19:40:22.815892167Z","level":"INFO","target":"coolrust::worker::executor","module":"coolrust::worker::executor","file":"src/worker/executor.rs","line":335,"message":"scheduling job retry","fields":{"attempt":"2","error":"typst compile error: typst compile error: error: unknown variable: left","max_attempts":"3","retry_in_ms":"4000"}},{"seq":31,"timestamp":"2026-04-29T19:40:22.815797158Z","level":"WARN","target":"coolrust::pipeline::orchestrator","module":"coolrust::pipeline::orchestrator","file":"src/pipeline/orchestrator.rs","line":696,"message":"section: classifying stage error","fields":{"classification":"retryable","error":"typst compile error: typst compile error: error: unknown variable: left"}},{"seq":30,"timestamp":"2026-04-29T19:40:22.815760819Z","level":"ERROR","target":"coolrust::pipeline::orchestrator","module":"coolrust::pipeline::orchestrator","file":"src/pipeline/orchestrator.rs","line":585,"message":"section: stage failed","fields":{"error":"typst compile error: typst compile error: error: unknown variable: left","lesson_id":"b0e81b5b-f747-43dd-bc68-35f82e94f3d7","section_idx":"1","stage":"compile"}},{"seq":29,"timestamp":"2026-04-29T19:40:22.813853532Z","level":"INFO","target":"coolrust::llm::client","module":"coolrust::llm::client","file":"src/llm/client.rs","line":343,"message":"llm: structured output validated","fields":{"attempt":"2","repairs":"0"}},{"seq":28,"timestamp":"2026-04-29T19:40:00.024055736Z","level":"WARN","target":"coolrust::llm::client","module":"coolrust::llm::client","file":"src/llm/client.rs","line":361,"message":"llm: validation failed; preparing repair turn","fields":{"attempt":"1","sample":"[\"glossary symbol 'quadratic equation' contains whitespace; use one identifier per entry\", \"glossary symbol 'square root' contains whitespace; use one identifier per entry\", \"glossary symbol 'completing the square' contains whitespace; use one identifier per entry\", \"glossary symbol 'quadratic formula' contains whitespace; use one identifier per entry\"]","stage":"post-schema semantic check","violations":"4"}},{"seq":27,"timestamp":"2026-04-29T19:39:14.784746516Z","level":"INFO","target":"coolrust::worker::executor","module":"coolrust::worker::executor","file":"src/worker/executor.rs","line":130,"message":"job completed","fields":{"duration_ms":"59781"}},{"seq":26,"timestamp":"2026-04-29T19:39:14.773933577Z","level":"INFO","target":"coolrust::llm::client","module":"coolrust::llm::client","file":"src/llm/client.rs","line":343,"message":"llm: structured output validated","fields":{"attempt":"2","repairs":"0"}},{"seq":25,"timestamp":"2026-04-29T19:39:12.004894933Z","level":"INFO","target":"coolrust::pipeline::orchestrator","module":"coolrust::pipeline::orchestrator","file":"src/pipeline/orchestrator.rs","line":523,"message":"section: starting write_section","fields":{"attempt":"2","lesson_id":"b0e81b5b-f747-43dd-bc68-35f82e94f3d7","max_attempts":"3","section_idx":"1"}},{"seq":24,"timestamp":"2026-04-29T19:39:09.999460772Z","level":"INFO","target":"coolrust::worker::executor","module":"coolrust::worker::executor","file":"src/worker/executor.rs","line":335,"message":"scheduling job retry","fields":{"attempt":"1","error":"typst compile error: typst compile error: error: unknown variable: left","max_attempts":"3","retry_in_ms":"2000"}},{"seq":23,"timestamp":"2026-04-29T19:39:09.999414454Z","level":"WARN","target":"coolrust::pipeline::orchestrator","module":"coolrust::pipeline::orchestrator","file":"src/pipeline/orchestrator.rs","line":696,"message":"section: classifying stage error","fields":{"classification":"retryable","error":"typst compile error: typst compile error: error: unknown variable: left"}},{"seq":22,"timestamp":"2026-04-29T19:39:09.999349451Z","level":"ERROR","target":"coolrust::pipeline::orchestrator","module":"coolrust::pipeline::orchestrator","file":"src/pipeline/orchestrator.rs","line":585,"message":"section: stage failed","fields":{"error":"typst compile error: typst compile error: error: unknown variable: left","lesson_id":"b0e81b5b-f747-43dd-bc68-35f82e94f3d7","section_idx":"1","stage":"compile"}},{"seq":21,"timestamp":"2026-04-29T19:39:09.997415022Z","level":"INFO","target":"coolrust::llm::client","module":"coolrust::llm::client","file":"src/llm/client.rs","line":343,"message":"llm: structured output validated","fields":{"attempt":"2","repairs":"0"}},{"seq":20,"timestamp":"2026-04-29T19:39:02.430260385Z","level":"WARN","target":"coolrust::llm::client","module":"coolrust::llm::client","file":"src/llm/client.rs","line":361,"message":"llm: validation failed; preparing repair turn","fields":{"attempt":"1","sample":"[\"glossary symbol 'quadratic equation' contains whitespace; use one identifier per entry\"]","stage":"post-schema semantic check","violations":"1"}},{"seq":19,"timestamp":"2026-04-29T19:38:53.818139023Z","level":"INFO","target":"coolrust::worker::executor","module":"coolrust::worker::executor","file":"src/worker/executor.rs","line":130,"message":"job completed","fields":{"duration_ms":"38814"}},{"seq":18,"timestamp":"2026-04-29T19:38:53.804297876Z","level":"INFO","target":"coolrust::llm::client","module":"coolrust::llm::client","file":"src/llm/client.rs","line":343,"message":"llm: structured output validated","fields":{"attempt":"2","repairs":"0"}},{"seq":17,"timestamp":"2026-04-29T19:38:45.597081732Z","level":"WARN","target":"coolrust::llm::client","module":"coolrust::llm::client","file":"src/llm/client.rs","line":361,"message":"llm: validation failed; preparing repair turn","fields":{"attempt":"1","sample":"[\"glossary symbol 'quadratic equation' contains whitespace; use one identifier per entry\", \"glossary symbol 'square root' contains whitespace; use one identifier per entry\", \"glossary symbol 'quadratic formula' contains whitespace; use one identifier per entry\", \"glossary symbol 'completing the square' contains whitespace; use one identifier per entry\"]","stage":"post-schema semantic check","violations":"4"}},{"seq":16,"timestamp":"2026-04-29T19:38:39.022962942Z","level":"INFO","target":"coolrust::worker::executor","module":"coolrust::worker::executor","file":"src/worker/executor.rs","line":130,"message":"job completed","fields":{"duration_ms":"24019"}},{"seq":15,"timestamp":"2026-04-29T19:38:39.008592053Z","level":"INFO","target":"coolrust::llm::client","module":"coolrust::llm::client","file":"src/llm/client.rs","line":343,"message":"llm: structured output validated","fields":{"attempt":"1","repairs":"0"}},{"seq":14,"timestamp":"2026-04-29T19:38:31.759774430Z","level":"WARN","target":"coolrust::llm::client","module":"coolrust::llm::client","file":"src/llm/client.rs","line":361,"message":"llm: validation failed; preparing repair turn","fields":{"attempt":"1","sample":"[\"glossary symbol 'quadratic formula' contains whitespace; use one identifier per entry\", \"glossary symbol 'real root' contains whitespace; use one identifier per entry\", \"glossary symbol 'complex root' contains whitespace; use one identifier per entry\"]","stage":"post-schema semantic check","violations":"3"}},{"seq":13,"timestamp":"2026-04-29T19:38:26.863774436Z","level":"INFO","target":"coolrust::worker::executor","module":"coolrust::worker::executor","file":"src/worker/executor.rs","line":130,"message":"job completed","fields":{"duration_ms":"11860"}},{"seq":12,"timestamp":"2026-04-29T19:38:26.844640227Z","level":"INFO","target":"coolrust::llm::client","module":"coolrust::llm::client","file":"src/llm/client.rs","line":343,"message":"llm: structured output validated","fields":{"attempt":"1","repairs":"0"}},{"seq":11,"timestamp":"2026-04-29T19:38:15.003541437Z","level":"INFO","target":"coolrust::pipeline::orchestrator","module":"coolrust::pipeline::orchestrator","file":"src/pipeline/orchestrator.rs","line":523,"message":"section: starting write_section","fields":{"attempt":"1","lesson_id":"b0e81b5b-f747-43dd-bc68-35f82e94f3d7","max_attempts":"3","section_idx":"3"}},{"seq":10,"timestamp":"2026-04-29T19:38:15.003388608Z","level":"INFO","target":"coolrust::pipeline::orchestrator","module":"coolrust::pipeline::orchestrator","file":"src/pipeline/orchestrator.rs","line":523,"message":"section: starting write_section","fields":{"attempt":"1","lesson_id":"b0e81b5b-f747-43dd-bc68-35f82e94f3d7","max_attempts":"3","section_idx":"2"}},{"seq":9,"timestamp":"2026-04-29T19:38:15.003300451Z","level":"INFO","target":"coolrust::pipeline::orchestrator","module":"coolrust::pipeline::orchestrator","file":"src/pipeline/orchestrator.rs","line":523,"message":"section: starting write_section","fields":{"attempt":"1","lesson_id":"b0e81b5b-f747-43dd-bc68-35f82e94f3d7","max_attempts":"3","section_idx":"1"}},{"seq":8,"timestamp":"2026-04-29T19:38:15.002847615Z","level":"INFO","target":"coolrust::pipeline::orchestrator","module":"coolrust::pipeline::orchestrator","file":"src/pipeline/orchestrator.rs","line":523,"message":"section: starting write_section","fields":{"attempt":"1","lesson_id":"b0e81b5b-f747-43dd-bc68-35f82e94f3d7","max_attempts":"3","section_idx":"4"}},{"seq":7,"timestamp":"2026-04-29T19:38:15.002847625Z","level":"INFO","target":"coolrust::pipeline::orchestrator","module":"coolrust::pipeline::orchestrator","file":"src/pipeline/orchestrator.rs","line":523,"message":"section: starting write_section","fields":{"attempt":"1","lesson_id":"b0e81b5b-f747-43dd-bc68-35f82e94f3d7","max_attempts":"3","section_idx":"0"}},{"seq":6,"timestamp":"2026-04-29T19:38:14.998754063Z","level":"INFO","target":"coolrust::llm::client","module":"coolrust::llm::client","file":"src/llm/client.rs","line":343,"message":"llm: structured output validated","fields":{"attempt":"1","repairs":"0"}},{"seq":5,"timestamp":"2026-04-29T19:37:08.523350851Z","level":"INFO","target":"coolrust","module":"coolrust","file":"src/main.rs","line":76,"message":"http server listening","fields":{"addr":"0.0.0.0:8080"}},{"seq":4,"timestamp":"2026-04-29T19:37:08.522679411Z","level":"INFO","target":"coolrust::worker::runner","module":"coolrust::worker::runner","file":"src/worker/runner.rs","line":140,"message":"worker pool started","fields":{"concurrency":"2","pool":"cpu","queues":"[\"cpu\", \"default\"]","workers":"2"}},{"seq":3,"timestamp":"2026-04-29T19:37:08.522648732Z","level":"INFO","target":"coolrust::worker::runner","module":"coolrust::worker::runner","file":"src/worker/runner.rs","line":140,"message":"worker pool started","fields":{"concurrency":"12","pool":"llm","queues":"[\"llm\"]","workers":"2"}},{"seq":2,"timestamp":"2026-04-29T19:37:08.522261951Z","level":"INFO","target":"coolrust","module":"coolrust","file":"src/main.rs","line":63,"message":"lesson pipeline registered (LLM-backed)"},{"seq":1,"timestamp":"2026-04-29T19:37:08.508323791Z","level":"INFO","target":"coolrust","module":"coolrust","file":"src/main.rs","line":29,"message":"starting coolrust","fields":{"concurrency":"16","db":"sqlite:///opt/coolrust/data/coolrust.db?mode=rwc","host":"0.0.0.0","port":"8080","workers":"3"}}]