autonomous_loop: stop clobbering applier model/provider defaults

Found by running: the loop was setting LH_APPLIER_MODEL=qwen3-coder:480b
explicitly via env, which clobbered the applier's NEW default of
x-ai/grok-4.1-fast on openrouter. Result: applier kept hitting the
throttled ollama_cloud account and producing zero patches every iter.

Now LOOP_APPLIER_MODEL and LOOP_APPLIER_PROVIDER are optional overrides;
when unset, scrum_applier.ts uses its own defaults.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
root 2026-04-25 17:54:54 -05:00
parent 4ac56564c0
commit 6432465e2c

View File

@ -22,7 +22,12 @@ const BRANCH = process.env.LOOP_BRANCH ?? "scrum/auto-apply-19814";
const MAX_ITERS = Number(process.env.LOOP_MAX_ITERS ?? 3); const MAX_ITERS = Number(process.env.LOOP_MAX_ITERS ?? 3);
const PUSH = process.env.LOOP_PUSH === "1"; const PUSH = process.env.LOOP_PUSH === "1";
const MIN_CONF = process.env.LOOP_MIN_CONF ?? "85"; const MIN_CONF = process.env.LOOP_MIN_CONF ?? "85";
const APPLIER_MODEL = process.env.LOOP_APPLIER_MODEL ?? "qwen3-coder:480b"; // Optional override — when unset, let scrum_applier.ts use ITS default
// (currently x-ai/grok-4.1-fast on openrouter). The prior hardcoded
// qwen3-coder:480b default was clobbering the applier's own default
// and forcing every iter to hit the throttled ollama_cloud account.
const APPLIER_MODEL = process.env.LOOP_APPLIER_MODEL;
const APPLIER_PROVIDER = process.env.LOOP_APPLIER_PROVIDER;
const TARGETS = (process.env.LOOP_TARGETS ?? "crates/queryd/src/service.rs,crates/gateway/src/main.rs,crates/gateway/src/v1/mod.rs") const TARGETS = (process.env.LOOP_TARGETS ?? "crates/queryd/src/service.rs,crates/gateway/src/main.rs,crates/gateway/src/v1/mod.rs")
.split(",").map(s => s.trim()).filter(Boolean); .split(",").map(s => s.trim()).filter(Boolean);
@ -108,16 +113,20 @@ async function runIter(iter: number, baseSha: string): Promise<IterResult> {
}); });
log(`scrum_applier.ts COMMIT=1 MIN_CONF=${MIN_CONF} files=${TARGETS.length}`); log(`scrum_applier.ts COMMIT=1 MIN_CONF=${MIN_CONF} files=${TARGETS.length}`);
await runCmd("bun", ["run", "tests/real-world/scrum_applier.ts"], { // Only forward model/provider when explicitly overridden — otherwise
// let scrum_applier.ts use its own defaults (Grok 4.1 fast on openrouter).
const applierEnv: Record<string, string> = {
LH_APPLIER_COMMIT: "1", LH_APPLIER_COMMIT: "1",
LH_APPLIER_MIN_CONF: MIN_CONF, LH_APPLIER_MIN_CONF: MIN_CONF,
LH_APPLIER_MAX_FILES: String(TARGETS.length), LH_APPLIER_MAX_FILES: String(TARGETS.length),
LH_APPLIER_MODEL: APPLIER_MODEL,
LH_APPLIER_BRANCH: BRANCH, LH_APPLIER_BRANCH: BRANCH,
// Constrain applier to THIS iter's targets so it patches what we // Constrain applier to THIS iter's targets so it patches what we
// just reviewed instead of the highest-confidence file from history. // just reviewed instead of the highest-confidence file from history.
LH_APPLIER_FILES: TARGETS.join(","), LH_APPLIER_FILES: TARGETS.join(","),
}); };
if (APPLIER_MODEL) applierEnv.LH_APPLIER_MODEL = APPLIER_MODEL;
if (APPLIER_PROVIDER) applierEnv.LH_APPLIER_PROVIDER = APPLIER_PROVIDER;
await runCmd("bun", ["run", "tests/real-world/scrum_applier.ts"], applierEnv);
const reviewsAfter = await countLines(`${REPO}/data/_kb/scrum_reviews.jsonl`); const reviewsAfter = await countLines(`${REPO}/data/_kb/scrum_reviews.jsonl`);
const applyAfterText = existsSync(`${REPO}/data/_kb/auto_apply.jsonl`) const applyAfterText = existsSync(`${REPO}/data/_kb/auto_apply.jsonl`)