fix(auto): set solver iteration default to 25

This commit is contained in:
Mikael Hugo 2026-05-15 20:35:10 +02:00
parent 8e85a6e673
commit 03f6d4990f
6 changed files with 6 additions and 6 deletions

View file

@ -159,7 +159,7 @@ export function sampleAutonomousSolverEvalCases() {
"const fs=require('node:fs');",
"fs.mkdirSync('.sf/runtime/autonomous-solver',{recursive:true});",
"fs.writeFileSync('target.txt','expected-value');",
"const state={unitType:'execute-task',unitId:'M000/S00/T00',iteration:1,maxIterations:12,latestCheckpoint:{outcome:'complete',summary:'Wrote target artifact',remainingItems:[],pdd:{purpose:'prove solver eval',consumer:'operator',contract:'target artifact exists',failureBoundary:'assertion fails',evidence:'target.txt',nonGoals:'no model call',invariants:'same fixture',assumptions:'node works'}}};",
"const state={unitType:'execute-task',unitId:'M000/S00/T00',iteration:1,maxIterations:25,latestCheckpoint:{outcome:'complete',summary:'Wrote target artifact',remainingItems:[],pdd:{purpose:'prove solver eval',consumer:'operator',contract:'target artifact exists',failureBoundary:'assertion fails',evidence:'target.txt',nonGoals:'no model call',invariants:'same fixture',assumptions:'node works'}}};",
"fs.writeFileSync('.sf/runtime/autonomous-solver/active.json',JSON.stringify(state,null,2));",
"fs.writeFileSync('.sf/runtime/autonomous-solver/iterations.jsonl',JSON.stringify(state.latestCheckpoint)+'\\n');",
].join(""),

View file

@ -29,7 +29,7 @@ export const AUTONOMOUS_SOLVER_OUTCOMES = [
];
const MAX_RENDERED_ITEMS = 12;
const DEFAULT_SOLVER_MAX_ITERATIONS = 12;
const DEFAULT_SOLVER_MAX_ITERATIONS = 25;
const MIN_SOLVER_MAX_ITERATIONS = 1;
const MAX_SOLVER_MAX_ITERATIONS = 100000;
const DEFAULT_MISSING_CHECKPOINT_REPAIR_ATTEMPTS = 4;

View file

@ -125,7 +125,7 @@ Setting `prefer_skills: []` does **not** disable skill discovery — it just mea
- `soft_timeout_minutes`: minutes before the supervisor issues a soft warning (default: 20).
- `idle_timeout_minutes`: minutes of inactivity before the supervisor intervenes (default: 10).
- `hard_timeout_minutes`: minutes before the supervisor forces termination (default: 30).
- `solver_max_iterations`: maximum autonomous solver iterations for one unit before pausing (default: `12`, min: `1`, max: `100000`).
- `solver_max_iterations`: maximum autonomous solver iterations for one unit before pausing (default: `25`, min: `1`, max: `100000`).
- `solver_eval_on_autonomous_exit`: automatically run and record the built-in solver eval when `/autonomous` exits (default: `true`; set `false` only to disable lifecycle eval evidence).
- `completion_nudge_after`: tool calls in a complete-slice unit before nudging the agent to call `complete_slice` (default: 10; set `0` to disable).
- `runaway_guard_enabled`: enable active-loop diagnosis for long-running units (default: `true`).

View file

@ -746,7 +746,7 @@ export function resolveAutoSupervisorConfig() {
Number(configured.solver_max_iterations),
)
? Math.max(1, Math.min(100000, Number(configured.solver_max_iterations)))
: 12,
: 25,
solver_eval_on_autonomous_exit:
configured.solver_eval_on_autonomous_exit !== false,
completion_nudge_after: configured.completion_nudge_after ?? 10,

View file

@ -14,7 +14,7 @@ test("resolveAutoSupervisorConfig provides safe timeout defaults", () => {
assert.equal(supervisor.soft_timeout_minutes, 20);
assert.equal(supervisor.idle_timeout_minutes, 10);
assert.equal(supervisor.hard_timeout_minutes, 30);
assert.equal(supervisor.solver_max_iterations, 12);
assert.equal(supervisor.solver_max_iterations, 25);
});
test("writeUnitRuntimeRecord persists progress and recovery metadata defaults", () => {

View file

@ -480,7 +480,7 @@ describe("autonomous solver", () => {
});
test("getConfiguredAutonomousSolverMaxIterations_clamps_preference", () => {
expect(getConfiguredAutonomousSolverMaxIterations()).toBe(12);
expect(getConfiguredAutonomousSolverMaxIterations()).toBe(25);
expect(
getConfiguredAutonomousSolverMaxIterations({
auto_supervisor: { solver_max_iterations: 0 },