fix(test): acceptance-uds-delivery.sh still installed the relay the removed way - #365
Merged
Merged
Conversation
…emoved way Integration §25 failed all three cases at "daemon container is running", in 5s, with no cause anywhere in the log. The harness sets the relay by writing SANDY_HANDOFF_RELAY into the isolated host config -- a hard error since 2.2.0 (#354), so every --start refused before docker run and no container ever appeared. This is #362 again in a different file. That fix swept acceptance-handoff-dirs.sh and stopped there; the retired mechanism has to be grepped for in BOTH roles -- what ASSERTS it and what SETS IT UP -- across every harness, including the ones CI never runs. CI runs neither of these. Three changes: - Install the relay as a feature manifest `entry` under $SANDY_HOME, the same shape acceptance-handoff-dirs.sh now uses. No config key is involved, and a manifest under $SANDY_HOME is privileged by location so no approval prompt appears -- which is what the surrounding `env -u SANDY_AUTO_APPROVE_PRIVILEGED` exists to prove. - Move the three in-container paths off ~/.handoff/relay/, removed in 2.2.0 (#353/#355), onto /opt/sandy/relay-state/ -- the rw mount that replaced it. The sentinel, the injector log and Claude Code's --debug-file all write there, so even a launch that had succeeded would have had nowhere to put them. - KEEP THE --start OUTPUT. It was redirected to /dev/null, which is the whole reason a launch that refused in one line on stderr surfaced as three identical container-missing failures with the cause discarded. It now prints the tail of that output, and the exit code, when no container appears. Not run here: this harness needs Docker, which Claude Code inside sandy cannot reach. It needs a host run. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Integration §25 failed all three cases at
[label] daemon container is running, in 5 seconds, with no cause anywhere in the log.Cause
test/acceptance-uds-delivery.sh:138wroteSANDY_HANDOFF_RELAY=.sandy/relay.shinto the isolated host config. That key was removed as a configuration key in 2.2.0 (#354) and setting it from any config file is a hard error (sandy:11831), so every--startrefused beforedocker runand no container ever appeared.This is #362 again, in a different file. That fix swept
acceptance-handoff-dirs.shand stopped there. The lesson it was supposed to bank is that a retired mechanism has to be grepped for in both roles — what asserts it and what sets it up — across every harness, including the ones CI never runs. CI runs neither of these.Three changes
Install the relay as a feature manifest
entry, the same shapeacceptance-handoff-dirs.shnow uses. No config key is involved, and a manifest under$SANDY_HOMEis privileged by location so no approval prompt appears — which is exactly what the surroundingenv -u SANDY_AUTO_APPROVE_PRIVILEGEDexists to prove. Ordering is already correct for this: #321 moved the manifest pass ahead of the relay block precisely so anentryis visible to the four decisions gated onSANDY_HANDOFF_RELAY, including the conditionalcrossSessionInbounddefault this harness measures.Move three in-container paths off
~/.handoff/relay/, removed in 2.2.0 (#353/#355), onto/opt/sandy/relay-state/— the rw mount that replaced it. The sentinel, the injector log and Claude Code's--debug-fileall write there, so even a launch that had succeeded would have had nowhere to put them; this was a second, independent break hiding behind the first. Verified in a live container:~/.handoffdoes not exist,/opt/sandy/relay-stateis mountedrw,SANDY_RELAY_STATEpoints at it, andsandy-handoff-sessionsis still on PATH.Keep the
--startoutput. It was>/dev/null 2>&1, which is the whole reason a launch that refused in one line on stderr surfaced as three identical container-missing failures with the cause thrown away. The harness now prints the exit code and the tail of that output when no container appears.Sweep
grepacross every harness forSANDY_HANDOFF_RELAY=,.handoff/,handoff/relayandrelay-binnow returns only negative controls and comments — assertions that the removed mechanisms are absent, which is what should remain.Not run here
This harness needs Docker, which Claude Code inside sandy cannot reach.
bash -nandtest/lint-bash32.share clean; the harness itself needs a host run.Unrelated to #364 — separate branch off
mainso either can land first.🤖 Generated with Claude Code