From 510c90a8600904d52ec70fb04bf0aef3d7750a7c Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Wed, 7 Oct 2026 20:36:11 +0000 Subject: [PATCH] class v5 harness runner: the box side in a script run by path (main's rule of 21:33 UK: no redirect-truncate inside a shell command string) Co-Authored-By: Claude Fable 5.1 --- tools/class-v5/harness-box.sh | 18 ++++++++++++++++++ tools/class-v5/harness-remote.sh | 4 +++- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100755 tools/class-v5/harness-box.sh diff --git a/tools/class-v5/harness-box.sh b/tools/class-v5/harness-box.sh new file mode 100755 index 00000000..cb1e0491 --- /dev/null +++ b/tools/class-v5/harness-box.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +# The box side of tools/class-v5/harness-remote.sh: runs the class v5 fast-time harness under the worktree on the box and +# keeps its log and summary under the harness log dir. In a file, not an ssh string (main's rule, 7 October 2026, 21:33 +# UK: no inline deletion or redirect-truncate inside a shell -c string). +# harness-box.sh +set -uo pipefail +REMOTE_ROOT="$1"; REMOTE_LOG="$2"; CASE="$3"; BASE="$4"; shift 4 +touch "$REMOTE_ROOT/infra/fast-time/class-v5-signal.mjs" "$REMOTE_ROOT/infra/fast-time/override-60x.json" +mkdir -p "$REMOTE_LOG" +cd "$REMOTE_ROOT" +IGNEUM_V5_BASE="$BASE" IGNEUM_V5_TMP="/tmp/igneum-fast-time-v5s-$CASE" \ +IGNEUM_V5_BIN="$REMOTE_ROOT/vendor/igneum-node-class-v5/target/release" \ +IGNEUM_POW="$REMOTE_ROOT/igneum-pow/target/release/igneum-pow" \ + node infra/fast-time/class-v5-signal.mjs "$@" > "$REMOTE_LOG/$CASE.log" 2>&1 +rc=$? +cp "/tmp/igneum-fast-time-v5s-$CASE/summary.json" "$REMOTE_LOG/$CASE.json" 2>/dev/null || true +echo "harness-remote: rc $rc" +exit $rc diff --git a/tools/class-v5/harness-remote.sh b/tools/class-v5/harness-remote.sh index 56ae80e0..a014f89d 100755 --- a/tools/class-v5/harness-remote.sh +++ b/tools/class-v5/harness-remote.sh @@ -27,6 +27,8 @@ BASE="${BASE:-29760}" echo "harness-remote: case $CASE on $HOST: node $REMOTE_ROOT/infra/fast-time/class-v5-signal.mjs $ARGS" # the harness file travels by rsync (the mirror carries HEAD; an uncommitted change rides along, re-stamped: the copied-sources rule) rsync -a -e "ssh -i $KEY" "$ROOT/infra/fast-time/class-v5-signal.mjs" "$ROOT/infra/fast-time/override-60x.json" "$HOST:$REMOTE_ROOT/infra/fast-time/" -ssh -i "$KEY" "$HOST" "touch $REMOTE_ROOT/infra/fast-time/class-v5-signal.mjs $REMOTE_ROOT/infra/fast-time/override-60x.json; mkdir -p $REMOTE_LOG; cd $REMOTE_ROOT && IGNEUM_V5_BASE=$BASE IGNEUM_V5_TMP=/tmp/igneum-fast-time-v5s-$CASE IGNEUM_V5_BIN=$REMOTE_ROOT/vendor/igneum-node-class-v5/target/release IGNEUM_POW=$REMOTE_ROOT/igneum-pow/target/release/igneum-pow node infra/fast-time/class-v5-signal.mjs $ARGS > $REMOTE_LOG/$CASE.log 2>&1; rc=\$?; cp /tmp/igneum-fast-time-v5s-$CASE/summary.json $REMOTE_LOG/$CASE.json 2>/dev/null || true; echo \"harness-remote: rc \$rc\"; exit \$rc" || true +rsync -a -e "ssh -i $KEY" "$ROOT/tools/class-v5/harness-box.sh" "$HOST:$REMOTE_ROOT/tools/class-v5/" +# the box side is a script run by path (tools/class-v5/harness-box.sh), not an ssh command string +ssh -i "$KEY" "$HOST" "$REMOTE_ROOT/tools/class-v5/harness-box.sh" "$REMOTE_ROOT" "$REMOTE_LOG" "$CASE" "$BASE" $ARGS || true rsync -a -e "ssh -i $KEY" "$HOST:$REMOTE_LOG/$CASE.log" "$HOST:$REMOTE_LOG/$CASE.json" "$OUT/" 2>/dev/null || true grep -E "SUMMARY|FAILED CHECK|PROGRAM ID|CLASS SWITCH" "$OUT/$CASE.log" || tail -20 "$OUT/$CASE.log"