config: mark unwired ModelsConfig tier fields as scaffolding

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) <noreply@anthropic.com>
This commit is contained in:
root 2026-05-03 02:54:10 -05:00
parent 5d3996b51d
commit 22c0b42e96

View File

@ -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"`
}