feat(spec-loop): add harness-neutral SPEC_LOOP_EFFORT setting#958
feat(spec-loop): add harness-neutral SPEC_LOOP_EFFORT setting#958Shaurya2k06 wants to merge 3 commits into
Conversation
Map low/medium/high onto each agent CLI's own effort flag so mechanical and hard passes can run at different reasoning levels without binding the framework to one vendor's vocabulary. Generated-by: Cursor Grok 4.5 Signed-off-by: shaurya2k06 <shaurya2k06@gmail.com>
|
Thanks for the contribution - it mostly good but needs a couple of improvements, I think: What is good
FindingsMajor — mapped
|
Cover OpenCode low→minimal and a medium mapping, pin Gemini's silent omit path, attribute effort flags to CLI --help sources, and update the add-a-harness checklist so new harnesses decide effort wiring explicitly. Signed-off-by: shaurya2k06 <shaurya2k06@gmail.com>
justinmclean
left a comment
There was a problem hiding this comment.
This covers everything from the last pass. The assert_not_contains "" on the OpenCode case is better than what I asked for: it pins that the framework band name never leaks into argv, which is the failure that mapping would actually produce. Good call recording the untestable loop.sh startup gate as a comment rather than dropping it.
Summary
SPEC_LOOP_EFFORT=low|medium|highso the spec loop can set per-invocationreasoning effort without binding to one vendor's flag vocabulary
(PRINCIPLES.md §9).
--effort,-c model_reasoning_effort=…,--variant); Cursor/Gemini omit silently.Framework
highmaps to each CLI's top value (max/xhigh).first iteration.
Assisted by Cursor Grok 4.5
Type of change
tools/<system>/*.md)docs/,README.md,CONTRIBUTING.md)prek, workflows, validators)uv.lockmetadata refresh triggered by the vendor-neutralityhook when
tools/spec-loop/README.mdchanged (mypy specifier sync)Test plan
bash tools/spec-loop/tests/test_runner_fixtures.shpasses(set-and-mapped, unsupported harness, unset)
uv run --project tools/spec-validator spec-validate tools/spec-loop/specs/prek run --fileson touched paths passesSPEC_LOOP_EFFORT=nonsenseexits 1 with accepted-values messageSPEC_LOOP_EFFORT=highprintsEffort: highin the startup bannerRFC-AI-0004 compliance
low|medium|high;each harness maps to its own flag (no Claude-only binding)
Linked issues
Closes #925
Notes for reviewers
tools/spec-loop/specs/spec-loop-runner.md(follow-on effort table under the harness contract).
--effortwhen set (CLI has that flag) but still never gets--model(unchanged).