Repository navigation
fix(start): print no-terminal refusals on separate lines (#254) - #255
Merged
Merged
Conversation
Without a terminal, bare `start` and `start` without `--task` raised a plain ClickException whose text embedded "\n" before the project steps. The error boundary escapes a ClickException message to one line, so the guidance came out joined by a literal \x0a. Raise _MultilineError with the sentence and each step as separate lines instead; each line is still escaped on its own. The existing test only checked a substring, so it passed on the broken output. Both refusals are now asserted line by line against the exact expected output. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Fixes #254.
What changes
Without a terminal,
syncmill startandsyncmill start -a <agent>(no--task) refuse and list the commands to use instead. Both used to raise a plainClickExceptionwhose text embedded\nbefore_PROJECT_STEPS. The CLI error boundary escapes a ClickException message to one line, so the guidance came out joined by a literal\x0a. Both now raise_MultilineErrorwith the sentence and each step as separate lines. Each line is still escaped on its own, so a value inside a line cannot start another.Tests
tests/test_start.pychecked only"start needs --task" in output, which passed on the broken output. Both refusals are now compared line by line against the exact expected output:Error: <sentence>followed by every_PROJECT_STEPSline, with no\x0aanywhere.startrefusal, which had no text assertion.cli.pychange reverted and pass with it.Verification
suite-runCLEAN on macOS. The helper was tightened afterwards;tests/test_start.pystill passes, 34/34.Not in this PR
start --trialfailures flatten the same way.TrialErrormessages join subprocess output and the "trial folder was kept" note with\n, andcli.pywraps them in a plainClickException. That message carries external output, so each line needs its own escaping; it is filed as a separate issue.🤖 Generated with Claude Code