ygg-verify.sh: local mode for the Yggdrasil seat, executable modes #65

Merged
eureka merged 1 commit from yv-local-mode into main 2026-11-11 16:30:03 +00:00
Owner

Fixes follow-up eureka-substrate:follow_up:chat-mind-20261111T150417226Z-t35.

  • Modes: ygg-verify.sh, cargo-mutants.sh, mutation-table.sh, context-pack.py, test-tools.sh committed 100755 (testparse.sh, wait-on.sh, dotnet-self* already were). The runners now call ygg-verify.sh and its own SUMMARY re-exec through bash, which a noexec skill mount needs; this also fixes the cargo-mutants cases in test-tools.sh that failed with Permission denied on Linux.
  • Local mode, one code path with a transport switch (xsh/run_half): local iff YGG_VERIFY_LOCAL=1, or unset/auto with hostname (case-blind) = yggdrasil, yggdrasil-* or yggdrasil.* and YGG_HOST unset. YGG_VERIFY_LOCAL=0 forces ssh. State under $YGG_VERIFY_ROOT (default $HOME/eureka-verify). The remote heredoc takes the root as an optional 14th argument (empty over ssh), so the ssh path is behaviourally unchanged.
  • Tests: bash tools/test-tools.sh passes (519 ok). New cases: local branch (status, output, RUN_ON_HOST env, SUMMARY and wait, slot wait), detection rule, and the remote branch under a mock ssh with a fake remote HOME. Real local smoke: SUMMARY and wait in rust@sha256:4c2fd73e... against a repo revision, GREEN.
  • Not exercised: the real ssh/scp path to ygg (mock ssh only).

🤖 Generated with Claude Code

Fixes follow-up eureka-substrate:follow_up:chat-mind-20261111T150417226Z-t35. - Modes: ygg-verify.sh, cargo-mutants.sh, mutation-table.sh, context-pack.py, test-tools.sh committed 100755 (testparse.sh, wait-on.sh, dotnet-self* already were). The runners now call ygg-verify.sh and its own SUMMARY re-exec through `bash`, which a noexec skill mount needs; this also fixes the cargo-mutants cases in test-tools.sh that failed with Permission denied on Linux. - Local mode, one code path with a transport switch (xsh/run_half): local iff YGG_VERIFY_LOCAL=1, or unset/auto with `hostname` (case-blind) = yggdrasil, yggdrasil-* or yggdrasil.* and YGG_HOST unset. YGG_VERIFY_LOCAL=0 forces ssh. State under $YGG_VERIFY_ROOT (default $HOME/eureka-verify). The remote heredoc takes the root as an optional 14th argument (empty over ssh), so the ssh path is behaviourally unchanged. - Tests: bash tools/test-tools.sh passes (519 ok). New cases: local branch (status, output, RUN_ON_HOST env, SUMMARY and wait, slot wait), detection rule, and the remote branch under a mock ssh with a fake remote HOME. Real local smoke: SUMMARY and wait in rust@sha256:4c2fd73e... against a repo revision, GREEN. - Not exercised: the real ssh/scp path to ygg (mock ssh only). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
One code path with a transport switch: on a host named yggdrasil[-*] (or
YGG_VERIFY_LOCAL=1) the remote half runs through local bash with cp and a local
git push instead of ssh/scp; the ssh path is unchanged. Scripts meant to be run
directly are committed 100755, and the scripts that call ygg-verify.sh do so
through bash (noexec skill mount). test-tools.sh covers the local branch and,
under a mock ssh, the remote branch and the detection rule.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
eureka merged commit f225919b53 into main 2026-11-11 16:30:03 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/Eureka!65
No description provided.