Merge pull request #710 from jeremymcs/fix/707-execute-task-verification-budget

fix: pass verificationBudget to execute-task prompt template
This commit is contained in:
TÂCHES 2026-03-16 15:17:31 -06:00 committed by GitHub
commit 915112ca1f
2 changed files with 20 additions and 0 deletions

View file

@ -716,6 +716,12 @@ export async function buildExecuteTaskPrompt(
const activeOverrides = await loadActiveOverrides(base);
const overridesSection = formatOverridesSection(activeOverrides);
// Compute verification budget for the executor's context window (issue #707)
const prefs = loadEffectiveGSDPreferences();
const contextWindow = resolveExecutorContextWindow(undefined, prefs?.preferences);
const budgets = computeBudgets(contextWindow);
const verificationBudget = `~${Math.round(budgets.verificationBudgetChars / 1000)}K chars`;
return loadPrompt("execute-task", {
overridesSection,
workingDirectory: base,
@ -730,6 +736,7 @@ export async function buildExecuteTaskPrompt(
priorTaskLines: priorLines,
taskSummaryPath,
inlinedTemplates,
verificationBudget,
});
}

View file

@ -74,6 +74,19 @@ test("compression: buildExecuteTaskPrompt minimal truncates prior summaries", ()
);
});
test("compression: buildExecuteTaskPrompt passes verificationBudget to loadPrompt (#707)", () => {
// The execute-task template declares {{verificationBudget}} — the builder must supply it
assert.ok(
promptsSrc.includes("verificationBudget"),
"buildExecuteTaskPrompt should pass verificationBudget in the loadPrompt vars object",
);
// Verify it computes the budget from computeBudgets
assert.ok(
promptsSrc.includes("computeBudgets(contextWindow)"),
"buildExecuteTaskPrompt should compute budgets from the executor context window",
);
});
test("compression: buildPlanMilestonePrompt minimal drops project/requirements/decisions files", () => {
// The plan-milestone builder should gate root file inlining on inlineLevel
assert.ok(