diff --git a/crates/solverforge-config/WIREFRAME.md b/crates/solverforge-config/WIREFRAME.md index a81b7c31..361e1269 100644 --- a/crates/solverforge-config/WIREFRAME.md +++ b/crates/solverforge-config/WIREFRAME.md @@ -198,7 +198,9 @@ Derives: `Debug, Clone, Default, Deserialize, Serialize`. `acceptor`, `forager`, and `move_selector`. When `phases` is omitted, the solver runtime uses the canonical model-aware -default profile, including construction and any selected built-in search phases. +default profile: construction, then the default local search when the top-level +`termination` has an effective limit. Without one the profile is construction +only, because that local search would never end. When only `move_selector` is omitted for an explicit `AcceptorForager` local search phase, the canonical runtime resolves model-aware selector defaults from declared runtime capabilities. Nearby scalar diff --git a/crates/solverforge-config/src/solver_config.rs b/crates/solverforge-config/src/solver_config.rs index 65a353f8..5761c37d 100644 --- a/crates/solverforge-config/src/solver_config.rs +++ b/crates/solverforge-config/src/solver_config.rs @@ -40,7 +40,9 @@ pub struct SolverConfig { pub score_director: Option, /// Phases, run in order. Omitted or empty: the model-aware default - /// profile. + /// profile, which is construction followed by the default local search + /// when `termination` has an effective limit, and construction only + /// otherwise, because that local search would never end. #[serde(default)] pub phases: Vec,