Summary
Add a SPEC_LOOP_EFFORT setting to the spec loop that takes low,
medium or high, and translate that level into whichever equivalent flag
the selected agent CLI understands. Unset means unset: no flag is added.
Background
tools/spec-loop/loop.sh drives a headless agent CLI through repeated
build, plan, update and consolidate passes. Several of those CLIs expose a
per-invocation control over how hard the model thinks, under different flag
names and different level vocabularies. The loop cannot express that today,
so a mechanical consolidate pass and a hard build pass run at the same
setting.
The framework never binds to one vendor's flag ([PRINCIPLES.md §9](https://github.com/apache/airflow-steward/blob/main/PRINCIPLES.md)),
so low/medium/high is the framework-facing vocabulary and each
harness maps it to its own flag. Where a CLI offers more levels, map high
to its highest sensible value and record that choice in the spec table.
spec_loop_launch_agent already does exactly this kind of translation for
output format, turning one request into --output-format, --format json,
--json, or nothing depending on the harness.
Where to look
tools/spec-loop/lib.sh — spec_loop_launch_agent. The output-format
handling inside each per-harness branch is the pattern to copy.
tools/spec-loop/loop.sh — the SPEC_LOOP_MODEL block shows how a
setting is read, printed in the startup banner and documented.
- Related:
tools/spec-loop/tests/test_runner_fixtures.sh — asserts on the
argv the runner builds, including a kiro case asserting --model is
absent. New assertions go here.
Acceptance criteria
Estimated effort
~2-3 hours for someone new to the codebase. Most of it is reading each
agent CLI's --help to fill in the mapping; the shell change is small and
has a pattern to copy in the same two files.
Getting started
[How to contribute](https://github.com/apache/airflow-steward/blob/main/CONTRIBUTING.md#your-first-contribution)
This issue was drafted with the help of an AI-assisted tool and reviewed by a Magpie maintainer before posting. If anything here is unclear or looks wrong, say so on the issue: a real person is reading.
Summary
Add a
SPEC_LOOP_EFFORTsetting to the spec loop that takeslow,mediumorhigh, and translate that level into whichever equivalent flagthe selected agent CLI understands. Unset means unset: no flag is added.
Background
tools/spec-loop/loop.shdrives a headless agent CLI through repeatedbuild, plan, update and consolidate passes. Several of those CLIs expose a
per-invocation control over how hard the model thinks, under different flag
names and different level vocabularies. The loop cannot express that today,
so a mechanical consolidate pass and a hard build pass run at the same
setting.
The framework never binds to one vendor's flag ([PRINCIPLES.md §9](https://github.com/apache/airflow-steward/blob/main/PRINCIPLES.md)),
so
low/medium/highis the framework-facing vocabulary and eachharness maps it to its own flag. Where a CLI offers more levels, map
highto its highest sensible value and record that choice in the spec table.
spec_loop_launch_agentalready does exactly this kind of translation foroutput format, turning one request into
--output-format,--format json,--json, or nothing depending on the harness.Where to look
tools/spec-loop/lib.sh—spec_loop_launch_agent. The output-formathandling inside each per-harness branch is the pattern to copy.
tools/spec-loop/loop.sh— theSPEC_LOOP_MODELblock shows how asetting is read, printed in the startup banner and documented.
tools/spec-loop/tests/test_runner_fixtures.sh— asserts on theargv the runner builds, including a
kirocase asserting--modelisabsent. New assertions go here.
Acceptance criteria
SPEC_LOOP_EFFORT=low|medium|highreachesspec_loop_launch_agentand is mapped to the right flag for each harness whose CLI has one,
taking the flag name from that CLI's own
--help.treatment
kiroalready gets for--model.values, before the first iteration launches.
test_runner_fixtures.shcovers set-and-mapped,set-but-unsupported-harness, and unset, and passes.
README.mdand the harness table inspecs/spec-loop-runner.mddocument the setting and the per-harness mapping.
Estimated effort
~2-3 hours for someone new to the codebase. Most of it is reading each
agent CLI's
--helpto fill in the mapping; the shell change is small andhas a pattern to copy in the same two files.
Getting started
[How to contribute](https://github.com/apache/airflow-steward/blob/main/CONTRIBUTING.md#your-first-contribution)
This issue was drafted with the help of an AI-assisted tool and reviewed by a Magpie maintainer before posting. If anything here is unclear or looks wrong, say so on the issue: a real person is reading.