From b01dcdbc321777846c614cf62cc3b474a06623c9 Mon Sep 17 00:00:00 2001 From: pyrex41 Date: Mon, 28 Sep 2026 22:46:23 -0500 Subject: [PATCH] feat: default xAI models to grok-4.7 Replaces grok-4.3 as the smart/standard default across Rho, LLM, and swarm tiers, and updates heavy ensemble fallbacks to grok-4.7. --- internal/config/config.go | 22 +++++++++++----------- internal/config/config_test.go | 12 +++++++++--- pkg/heavy/council.go | 2 +- pkg/heavy/ensemble.go | 2 +- pkg/heavy/heavy_bench_test.go | 2 +- pkg/heavy/squad.go | 2 +- 6 files changed, 24 insertions(+), 18 deletions(-) diff --git a/internal/config/config.go b/internal/config/config.go index 274ebc8..189fe02 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -74,15 +74,15 @@ type BackpressureCfg struct { func Default() *Config { return &Config{ Rho: RhoConfig{ - Model: "grok-4.3", + Model: "grok-4.7", FastModel: "grok-build-0.1", - SmartModel: "grok-4.3", + SmartModel: "grok-4.7", }, LLM: LLMConfig{ Provider: "xai", Model: "grok-4.20-multi-agent-0309", SmartProvider: "xai", - SmartModel: "grok-4.3", + SmartModel: "grok-4.7", FastProvider: "xai", FastModel: "grok-build-0.1", MultiAgentModel: "grok-4.20-multi-agent-0309", @@ -99,8 +99,8 @@ func Default() *Config { TaskTimeoutSecs: 600, Tiers: TierConfig{ Fast: "grok-build-0.1", - Standard: "grok-4.3", - Smart: "grok-4.3", + Standard: "grok-4.7", + Smart: "grok-4.7", }, Backpressure: BackpressureCfg{ StopOnFailure: true, @@ -213,9 +213,9 @@ func (c *Config) Save(scudDir string) error { // DefaultTOML returns the default config as TOML string. func DefaultTOML() string { return `[rho] -model = "grok-4.3" +model = "grok-4.7" fast_model = "grok-build-0.1" -smart_model = "grok-4.3" +smart_model = "grok-4.7" [heavy] # model = "" # override-all fallback @@ -227,7 +227,7 @@ timeout_secs = 300 # [heavy.models] # routing = "grok-build-0.1" # agents = "grok-build-0.1" -# synthesis = "grok-4.3" +# synthesis = "grok-4.7" # debate = "grok-build-0.1" # native = "grok-4.20-multi-agent-0309" @@ -238,8 +238,8 @@ task_timeout_secs = 600 [swarm.tiers] fast = "grok-build-0.1" -standard = "grok-4.3" -smart = "grok-4.3" +standard = "grok-4.7" +smart = "grok-4.7" [swarm.backpressure] commands = [] @@ -281,7 +281,7 @@ func (c *Config) HeavyModel(role string) string { if c.Rho.SmartModel != "" { return c.Rho.SmartModel } - return "grok-4.20-reasoning" + return "grok-4.7" } // ModelForTier resolves a model tier to an actual model name. diff --git a/internal/config/config_test.go b/internal/config/config_test.go index fbf7f6d..d23976c 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -8,8 +8,14 @@ import ( func TestDefaultValues(t *testing.T) { cfg := Default() - if cfg.Rho.Model == "" { - t.Error("default Rho.Model is empty") + if cfg.Rho.Model != "grok-4.7" { + t.Errorf("default Rho.Model = %q, want grok-4.7", cfg.Rho.Model) + } + if cfg.Rho.SmartModel != "grok-4.7" { + t.Errorf("default Rho.SmartModel = %q, want grok-4.7", cfg.Rho.SmartModel) + } + if cfg.Swarm.Tiers.Standard != "grok-4.7" { + t.Errorf("default Swarm.Tiers.Standard = %q, want grok-4.7", cfg.Swarm.Tiers.Standard) } if cfg.LLM.Provider != "xai" { t.Errorf("LLM.Provider = %q, want %q", cfg.LLM.Provider, "xai") @@ -191,7 +197,7 @@ func TestHeavyModel(t *testing.T) { name: "ultimate default", cfg: Config{}, role: "debate", - want: "grok-4.20-reasoning", + want: "grok-4.7", }, { name: "native per-role", diff --git a/pkg/heavy/council.go b/pkg/heavy/council.go index 5e12802..8ef7c11 100644 --- a/pkg/heavy/council.go +++ b/pkg/heavy/council.go @@ -36,7 +36,7 @@ func RunCouncil(ctx context.Context, cfg *config.Config, opts CouncilOpts) (*Res opts.CaptainModel = cfg.HeavyModel("synthesis") } if opts.CaptainModel == "" { - opts.CaptainModel = "grok-4.20-reasoning" + opts.CaptainModel = "grok-4.7" } } diff --git a/pkg/heavy/ensemble.go b/pkg/heavy/ensemble.go index 45a77e8..15b031a 100644 --- a/pkg/heavy/ensemble.go +++ b/pkg/heavy/ensemble.go @@ -66,7 +66,7 @@ func resolveModels(opts RunOpts, cfg *config.Config) resolvedModels { if cfg != nil { return cfg.HeavyModel(role) } - return "grok-4.20-reasoning" + return "grok-4.7" } return resolvedModels{ routing: resolve("routing", opts.ModelRouting), diff --git a/pkg/heavy/heavy_bench_test.go b/pkg/heavy/heavy_bench_test.go index 12d0594..700ea7c 100644 --- a/pkg/heavy/heavy_bench_test.go +++ b/pkg/heavy/heavy_bench_test.go @@ -75,7 +75,7 @@ func TestResolveModelsPrecedence(t *testing.T) { opts: RunOpts{}, cfg: nil, role: "agents", - want: "grok-4.20-reasoning", + want: "grok-4.7", }, { name: "native role uses LLM config", diff --git a/pkg/heavy/squad.go b/pkg/heavy/squad.go index 5500045..78822f6 100644 --- a/pkg/heavy/squad.go +++ b/pkg/heavy/squad.go @@ -43,7 +43,7 @@ func RunSquad(ctx context.Context, cfg *config.Config, opts SquadOpts) (*Result, opts.CaptainModel = cfg.HeavyModel("synthesis") } if opts.CaptainModel == "" { - opts.CaptainModel = "grok-4.20-reasoning" + opts.CaptainModel = "grok-4.7" } }