#!/bin/bash # Final verification test - RUN THIS AS THE CHECK COMMAND # Exit code 0 = all artifacts verified, non-zero = failure # Check artifacts exist [ -f /root/.hermes/wizard-outputs/spark/env-check.sh ] || exit 1 [ -f /root/.hermes/wizard-outputs/spark/results.txt ] || exit 2 [ -f /root/troupe-standup/wizard-work/spark/env-check.sh ] || exit 3 [ -f /root/troupe-standup/wizard-work/spark/results.txt ] || exit 4 [ -f /root/troupe-standup/wizard-work/spark/INSPECTION_REPORT.md ] || exit 5 # Check OS contains Linux grep -q "Linux" /root/.hermes/wizard-outputs/spark/results.txt || exit 6 # Check CURRENT_USER contains root grep -q "root" /root/.hermes/wizard-outputs/spark/results.txt || exit 7 # Check profile directory exists [ -d /root/.hermes/profiles/spark ] || exit 8 # Check scratch directory exists [ -d /root/.hermes/profiles/spark/cache/scratch ] || exit 9 # Check Python 3 available python3 --version 2>&1 | grep -q "Python" || exit 10 # Check the closed repairs this lane landed are still the bytes that landed: # Q109 (snippet.py, verify_hermes_setup.sh) and Q120 (python-env-check.py). # Q127. The sweep 899ce4d put both pre-repair blobs back and this gate did not # notice, because it ran none of the lane's cells. It runs one now. python3 "$(dirname "$(readlink -f "$0")")/closed_artifact_guard.py" >/dev/null || exit 12 # Q80: json_sha256_validator.py's cells. Before this leg the file was named by # no gate at all, so its two-open digest, NaN acceptance and single exit code # for "invalid" and "unreadable" survived a green run. if ! python3 "$(dirname "$(readlink -f "$0")")/test_json_sha256_validator.py" >/dev/null 2>&1; then echo "CHECK: json_sha256_validator.py cells failed (Q80) -- run test_json_sha256_validator.py" >&2 exit 13 fi # Check git commit pushed git -C /root/troupe-standup rev-parse ed959f0 >/dev/null 2>&1 || exit 11 echo "VERIFIED" exit 0