Conversation
bin/oss-workspace's FIND_CONSUMER heredoc discarded a crashed probe's exit status via a trailing `|| true`, so a RecursionError out of json.load on a deeply nested registry landed in the same branch a genuine absence lands in -- reporting the confident, plausible "channel consumer was not found" sentence for a crash nobody had reason to doubt. Capture the status on the heredoc's own assignment, the #588 idiom, and give a crashed probe its own third-state sentence distinct from both the not-found and found-but-unverifiable arms already in that block. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wr8bkvu4ac3hpnHcG99fec
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.
Closes #578
What
bin/oss-workspace'sFIND_CONSUMERheredoc -- the block that locates the supertool plugin's channel consumer -- ended in|| truewith no captured exit status, and itsjson.loadwas guarded only byexcept (OSError, ValueError). ARecursionErrorout ofjson.loadon a deeply nested (but validly-formed) registry escaped that guard, the interpreter exited nonzero, and|| trueswallowed the status -- sochannel_scriptcame back empty with no signal anything had crashed, and the launcher reported the SAME confident "the supertool plugin's channel consumer was not found" sentence it gives for a genuine absence.This is the third instance of the class #546 and #573/#588 already fixed once each at the sibling
ASK_CONSUMERcall site. Fix: capture the status on the heredoc's own assignment (&& find_consumer_status=0 || find_consumer_status=$?), the same idiom #588 established, and give a crashed probe its own third-state stderr sentence -- "could not determine whether the supertool plugin's channel consumer is installed ... UNKNOWN rather than absent" -- checked before the existing not-found and registered-but-unverifiable branches, since a crash also leaveschannel_scriptempty.Sweep
Grepped the whole file for
|| trueandexcept (. The only other|| true(claude mcp remove ... || true) is a different shape -- a deliberate best-effort suppression on a value nobody captures, with its own existing comment explaining why removal is allowed to fail -- and was left alone. The other twoexcept (OSError, ValueError)sites (READ_NAME,DERIVE_NAME) already carry their own status-capture idiom from prior fixes. FIND_CONSUMER was the only remaining unguarded instance.Tests
tests/test_find_consumer_578.pyextracts the acquisition block and the decision chain from the shell file at the shell level (not through a python-only extraction, which would strip the very wrapper this issue is about) and runs them under realsh -eu. Red confirmed against the pre-fix code (unbound-variable / missing-guard-marker failures underset -eu); green against the fix. Paired controls: a deeply-nested registry must produce the could-not-look message and not kill the script under errexit; a well-formed absence and a well-formed hit must both still produce their ordinary answers, unaffected by the new branch.shellcheck -x bin/oss-workspaceexits 0. 175 tests across the related launcher/consumer test files pass, plus this lane's guard (tests/test_unwired_scripts_253.py).below-bar
None found in this diff -- see the agent report's
adjacentsurvey (checked, no items) for the full account.Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01Wr8bkvu4ac3hpnHcG99fec