test_shell_lone_copy_reds_on_its_sibling asserted the fixture path it had just built while verify_hermes_setup.sh reports the path it resolved with readlink -f. Under TMPDIR=/root/.hermes/profiles/volt/cache/scratch_link a correct pair read MISSING and the gate went rc 1 (measured before the repair: that cell was the only red, 15 others ok). The fixture root is now canonicalised once in setUp with os.path.realpath; two new cells pin the alias reading instead of assuming it -- a lone copy reached by a directory symlink names the real sibling that is absent (rc 1), and the same alias with the sibling present reads PASS (rc 0). CHECK-env-verifiers now runs the suite twice, ambient TMPDIR and a directory alias it builds, so the shape that produced the flake is graded every run. 16 cells; negative control (raw mkdtemp restored in a scratch copy) reds the alias leg and only that leg, rc 1.
80 lines
3.0 KiB
Bash
Executable File
80 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# CHECK-env-verifiers: grade the lane's two environment verifiers.
|
|
#
|
|
# Q109. The lane's own CHECK grades artifacts under an absolute home path and
|
|
# runs none of the lane's test_*.py (that blindness is a separate item), so this
|
|
# file gives these two verifiers a gate of their own. The cell
|
|
# (test_env_verifiers.py) invokes both verifiers as subprocesses with stub
|
|
# modules on PYTHONPATH and synthetic Hermes trees, so it grades the tree it
|
|
# sits in -- the paths are resolved from the cell's own location.
|
|
#
|
|
# 2026-10-29 repair. The lone-copy cell asserted the path it had built
|
|
# (self.tmp/lone/snippet.py) while verify_hermes_setup.sh reports the path it
|
|
# resolved with `readlink -f`. On any host whose TMPDIR is reached through a
|
|
# symlink those two strings differ, and a correct pair read a false MISSING --
|
|
# the gate went rc 1 on green work. The suite now canonicalises its fixture root
|
|
# with os.path.realpath and pins the alias case with two cells of its own; this
|
|
# gate runs the suite TWICE, under the ambient TMPDIR and under a directory
|
|
# alias it builds, so the host shape that produced the flake is graded on every
|
|
# run instead of remembered.
|
|
#
|
|
# Exit codes follow the repo's tools/ contract:
|
|
# 0 = both verifiers measure what they claim, on both TMPDIR shapes
|
|
# 1 = a verifier regression (a cell failed)
|
|
# 2 = could not grade (no python3, no fixture, or the cell will not collect)
|
|
set -u
|
|
|
|
cd "$(dirname "$(readlink -f "$0")")" || {
|
|
echo "CHECK: cannot cd to the cell's own directory -- cannot grade." >&2
|
|
exit 2
|
|
}
|
|
|
|
if ! command -v python3 >/dev/null 2>&1; then
|
|
echo "CHECK: python3 not on PATH -- cannot grade." >&2
|
|
exit 2
|
|
fi
|
|
|
|
tmpbase=${TMPDIR:-/tmp}
|
|
real_root=$(mktemp -d "$tmpbase/q109-alias-XXXXXX") || {
|
|
echo "CHECK: mktemp failed -- cannot build the alias leg." >&2
|
|
exit 2
|
|
}
|
|
alias_root="$real_root.alias"
|
|
if ! ln -s "$real_root" "$alias_root"; then
|
|
rmdir "$real_root" 2>/dev/null || true
|
|
echo "CHECK: could not build the alias leg." >&2
|
|
exit 2
|
|
fi
|
|
out=$(mktemp "$tmpbase/q109-out-XXXXXX") || {
|
|
rm -f "$alias_root"
|
|
rmdir "$real_root" 2>/dev/null || true
|
|
echo "CHECK: mktemp failed -- cannot capture the cell's output." >&2
|
|
exit 2
|
|
}
|
|
|
|
fault=0
|
|
ungradable=0
|
|
for leg_tmp in "$tmpbase" "$alias_root"; do
|
|
TMPDIR=$leg_tmp python3 -m unittest -q test_env_verifiers >"$out" 2>&1
|
|
leg_rc=$?
|
|
case $leg_rc in
|
|
0) echo "leg TMPDIR=$leg_tmp -> rc 0" ;;
|
|
1) fault=1; echo "leg TMPDIR=$leg_tmp -> rc 1" >&2; tail -n 12 "$out" >&2 ;;
|
|
*) ungradable=1; echo "leg TMPDIR=$leg_tmp -> rc $leg_rc" >&2; tail -n 12 "$out" >&2 ;;
|
|
esac
|
|
done
|
|
|
|
rm -f "$alias_root" "$out"
|
|
rmdir "$real_root" 2>/dev/null || true
|
|
|
|
if [ "$ungradable" -ne 0 ]; then
|
|
echo "CHECK: unittest exited non-zero and non-one -- collection error, could not grade." >&2
|
|
exit 2
|
|
fi
|
|
if [ "$fault" -ne 0 ]; then
|
|
echo "CHECK: verifier contract broken -- a cell failed." >&2
|
|
exit 1
|
|
fi
|
|
echo "CHECK: both environment verifiers measure what they claim (plain and symlinked TMPDIR)."
|
|
exit 0
|