igneum/tools/class-v5/harness-remote.sh
igneum-labs 8f305b24be class v5 harness: the 0.3.23 bytes (7 = class v4 sub-version 3, 6 = class v5 counted exactly)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 17:55:09 +00:00

32 lines
2.6 KiB
Bash
Executable file

#!/usr/bin/env bash
# The class v5 fast-time gate on igneum-build-1 (docs/design/class-v5-stored-state.md section 10): runs one case of
# infra/fast-time/class-v5-signal.mjs on the box from this worktree's mirror there (the fork's Linux binaries in
# vendor/igneum-node-class-v5/target/release and igneum-pow's in igneum-pow/target/release, both built by
# tools/build-remote.sh), under its own data dir, and copies the summary and log back under
# docs/design/class-v5-harness/<case>.{json,log}. A functional run (counts, ids, locks), not a measurement: it takes
# no build slot and no measure hold (the Mac rule's `run` kind).
#
# tools/class-v5/harness-remote.sh <case-name> -- <class-v5-signal.mjs arguments>
# tools/class-v5/harness-remote.sh failed-case -- --signal 6,6,7 --expect flip
# BASE=29830 tools/class-v5/harness-remote.sh flip-stale -- --signal 6,6,6 --expect flip --stale 2 (another port base per
# case, so two cases never share ports; the harness kills the previous run's pids of its own data dir first)
set -euo pipefail
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT="$(cd "$HERE/../.." && pwd)"
CASE="${1:?case name}"; shift
[ "${1:-}" = "--" ] && shift
WT="$(basename "$ROOT")"
HOST=build@188.40.146.49
KEY="$HOME/.ssh/igneum_ed25519"
REMOTE_ROOT="/srv/builds/$WT"
REMOTE_LOG="/srv/builds/_log/v5-class/harness"
OUT="$ROOT/docs/design/class-v5-harness"
mkdir -p "$OUT"
ARGS="$*"
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" "$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"