Repository navigation
Setup asks for the Harness, Model and Effort (#393) - #403
Merged
Merged
Conversation
Setup's first questions choose the Harness, listing both and refusing one sessions can't run on here, then the Model and Effort for it, a Claude Model checked with the test call a Run makes. The User config gains [harness], [harness.claude] and [harness.codex] with every key, and completing an existing one now recurses into subsections. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Harness question defaults to the first Harness sessions can run on, claude when both can, as the issue says, rather than the User config's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 5, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Setup's first questions now choose the Harness, then the Model and Effort for it.
Harness::unavailable()is the one place that says why sessions can't run on a Harness (not supported yet,not installed).Choice::checkand Setup both use it.DEFAULTSgains[harness],[harness.claude]and[harness.codex]with every key.completenow recurses into subsections, so an existing User config keeps its values and comments and gains the keys it lacks. That includes dotted, inline and header-less[harness]forms.default = "claude"and blank Models and Efforts.Evidence
setupon a terminal asked nothing about the Harness and wrote no[harness]sections.tests/setup.rspass:claudeclaudenot onPATH, the harness settings are left as they were-clears onecompleting_adds_each_harness_key_a_user_config_lacks(unit) passes, and the existing Setup and Setup-offer tests pass with the new questions.cargo test,cargo clippy --all-targetsandcargo fmt --checkare clean.Merge Danger
Door: two-way
Blast Radius: Setup
Every terminal Setup, including the first Run's offer, now asks three more questions first. Rerunning Setup over an existing User config adds the
[harness]sections.harness.default = "claude"means a Run's failure messages name the User config, not the default, as what chose the Harness. Sessions run the same either way.Unaddressed findings
Standards
matchonUnavailable(Choice::checkandask_harness): skipped. The condition is already shared throughHarness::unavailable(). The sentences differ on purpose: a Run names the setting that chose the Harness and what to change, while Setup only says why it refuses.Option<(Harness, ModelAndEffort)>tuple instead of a named type: skipped. It is used in three nearby places, and a new type would add more than it explains.chosen_by: ChosenBy::UserConfigin Setup's test call: skipped.test_callnever readschosen_by, and Setup is choosing what the User config will say.model/effortkey list inwith_answers, and the README copy ofDEFAULTS(Shotgun Surgery): skipped. Each has two keys and matches the existing style of the email settings.Spec
-clears it: kept. The spec asks for both "the current value as its default answer" and "a blank answer means the Harness's own default", which conflict when a value is set. With no current value, a blank answer does mean the Harness's own default.-is documented in the README.claudenot installed, codex not supported yet), Setup lists both, says so, and asks nothing: kept. Asking would loop forever. Setup leaves the harness settings as they are, and a fresh file still saysclaude, the default.Closes #393
🤖 Generated with Claude Code