From 22c0b42e966d1c5d6c14e068e9471b6c99248879 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 3 May 2026 02:54:10 -0500 Subject: [PATCH] config: mark unwired ModelsConfig tier fields as scaffolding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Surfaced during today's local-only audit. The ModelsConfig struct parses 11 tier fields from lakehouse.toml (LocalFast/LocalEmbed/ LocalJudge/LocalReview/CloudJudge/CloudReview/CloudStrong/ FrontierReview/FrontierArch/FrontierStrong/FrontierFree) and exposes Resolve(tier) → model. As of 2026-05-03, NO code calls Resolve(). Operators setting these in lakehouse.toml see no runtime effect — silent config drift. Not removing the fields (would silently swallow operator's existing TOML and make it harder to wire later). Adding a clear UNWIRED warning comment instead. WeakModels IS live (consumed by internal/workflow/modes.go + internal/matrix/downgrade.go) — split out with its own comment so it's not lumped with the dead fields. If a future commit wires up Resolve() consumers, replace the UNWIRED comment with the consumer reference. Co-Authored-By: Claude Opus 4.7 (1M context) --- internal/shared/config.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/internal/shared/config.go b/internal/shared/config.go index 234e4fa..1730d8c 100644 --- a/internal/shared/config.go +++ b/internal/shared/config.go @@ -246,6 +246,13 @@ type LogConfig struct { // the corpus-downgrade rule: it's already weak, no need to downgrade // further. Strong (paid / cloud / frontier) models trigger the gate. type ModelsConfig struct { + // ⚠ UNWIRED scaffolding — these tier fields parse from TOML and + // Resolve() reads them, but as of 2026-05-03 NO OTHER CODE calls + // Resolve(). Setting these in lakehouse.toml has no runtime effect + // on routing. Customer hot path uses local Ollama via direct model + // name per PRD line 70 (everything runs locally). If you wire up + // Resolve() consumers, document them here so the next person knows + // the field is live, not dead scaffolding. LocalFast string `toml:"local_fast"` LocalEmbed string `toml:"local_embed"` LocalJudge string `toml:"local_judge"` @@ -260,6 +267,9 @@ type ModelsConfig struct { FrontierStrong string `toml:"frontier_strong"` FrontierFree string `toml:"frontier_free"` + // WeakModels IS live — internal/workflow/modes.go reads it at + // startup, internal/matrix/downgrade.go uses the list for the + // strong-model auto-downgrade gate. Don't lump with unwired fields. WeakModels []string `toml:"weak_models"` }