diff --git a/infra/build-server/hands/move-hand.sh b/infra/build-server/hands/move-hand.sh index 87f4ac57b..81316861f 100755 --- a/infra/build-server/hands/move-hand.sh +++ b/infra/build-server/hands/move-hand.sh @@ -36,6 +36,13 @@ while [ $# -gt 0 ]; do case "$1" in --go) GO=1; shift ;; --node) NODE_WT="$2"; s say() { bs_log "$*"; } run() { if [ "$GO" = 1 ]; then "$@"; else say "DRY RUN: $*"; fi; } rssh() { "${ROOT_SSH[@]}" "$@"; } +# the digest readback (main, 6 Oct 2026 23:xx UK): the box hand's "Consensus params digest" against the Mac hand's last one +mac_digest() { grep 'Consensus params digest' "$HOME/Library/Logs/Igneum/$1.out" 2>/dev/null | tail -1 | grep -oE '[0-9a-f]{64}' | head -1; } +box_digest() { rssh "journalctl -u $1 --no-pager -o cat --since '10 min ago' | grep 'Consensus params digest' | tail -1" 2>/dev/null | grep -oE '[0-9a-f]{64}' | head -1; } +digest_readback() { # + local b m; b=$(box_digest "$1"); m=$(mac_digest "$2") + if [ -n "$b" ] && [ "$b" = "$m" ]; then say "$1 digest ${b:0:16}... MATCHES the Mac's $2 hand"; else say "$1 digest ${b:-none} against the Mac's ${m:-none}: DIFFER (stop and read the override before moving the next hand)"; return 1; fi +} first_exec_line() { # : wait up to 180 s for the node's exec line, print it (the proof main wants) and the chain tip local u="$1" line="" for _ in $(seq 1 36); do @@ -58,7 +65,13 @@ mac_stop_agent() { #