# Mode router config — task_class → mode mapping # # `preferred_mode` is the first choice for a task class; `fallback_modes` # get tried in order if the preferred one isn't available (LLM Team can # return Unknown mode for some, OR the matrix has stronger signal for a # fallback). `default_model` seeds the mode runner's model field if the # caller doesn't override. # # Modes are dispatched against LLM Team UI (localhost:5000/api/run) for # now; future Rust-native runners will short-circuit before the proxy. # See crates/gateway/src/v1/mode.rs for the dispatch path. [[task_class]] name = "scrum_review" preferred_mode = "codereview" fallback_modes = ["consensus", "ladder"] default_model = "qwen3-coder:480b" matrix_corpus = "distilled_procedural_v20260423102847" [[task_class]] name = "contract_analysis" preferred_mode = "deep_analysis" fallback_modes = ["research", "extract"] default_model = "kimi-k2:1t" matrix_corpus = "chicago_permits_v1" [[task_class]] name = "staffing_inference" preferred_mode = "ladder" fallback_modes = ["consensus", "pipeline"] default_model = "gpt-oss:120b" matrix_corpus = "workers_500k_v8" [[task_class]] name = "fact_extract" preferred_mode = "extract" fallback_modes = ["distill"] default_model = "qwen2.5" matrix_corpus = "kb_team_runs_v1" [[task_class]] name = "doc_drift_check" preferred_mode = "drift" fallback_modes = ["validator"] default_model = "gpt-oss:120b" matrix_corpus = "distilled_factual_v20260423095819" # Fallback when task_class isn't in the table — useful for ad-hoc calls # during development that don't yet have a mapped mode. [default] preferred_mode = "pipeline" fallback_modes = ["consensus", "ladder"] default_model = "qwen3.5:latest"