#!/usr/bin/env bash
# doyle isolated gate for PR 231 head 712c987f (STEP 3). Legs mirror gate-231-a593ece0 + mapper regression.
set -u
W=/c/Users/decid/Documents/projects/spt-core/.worktrees/gate-302-712c987f
OUT=/c/Users/decid/Documents/projects/spt-core/.spt/preserved/302/gate-231-712c987f
cd "$W" || exit 90
export CARGO_TARGET_DIR="$W/../302-meet-offload/target"
unset OWL_SESSION_ID SPT_SESSION_NAME SPT_ADAPTER SPT_HOST_PID SPT_INJECT_VERIFY_ECHO
env | grep -E '^(OWL_|SPT_|CARGO_TARGET_DIR)' > "$OUT/env-scrub-check.txt"
git rev-parse HEAD > "$OUT/head.txt"; git status --porcelain >> "$OUT/head.txt"
S="$OUT/status.txt"; echo "start $(date -u +%FT%TZ)" > "$S"
leg() { local n=$1; shift; "$@" > "$OUT/$n.log" 2>&1; local rc=$?; echo "$n exit $rc" >> "$S"; grep -hE '^ *Summary \[' "$OUT/$n.log" | sed "s/^/$n: /" >> "$OUT/summaries.txt"; return $rc; }
NX=(cargo nextest run --locked --profile ci-windows --test-threads 2 --retries 0 --no-fail-fast --success-output immediate)
MEET='test(=pairhost::meet_runtime_tests::three_subnet_rotation_keeps_lifecycle_off_broker_workers)'
MAPPER='test(=net::endpoint::tests::all_bind_scopes_exchange_without_portmapper_activity)'
GUARDS='package(spt-net) | (package(spt-daemon) & (test(/^nethost::tests::/) | test(/^pairhost::tests::/) | binary(/^(netbroker|netstream|pairjoin)$/)))'
leg build   cargo build --locked -p spt-net -p spt-daemon -p mock-adapter --bin mock-session
leg mapper  "${NX[@]}" -p spt-net --lib -E "$MAPPER"
leg meet    "${NX[@]}" -p spt-daemon --lib -E "$MEET"
leg guards  "${NX[@]}" -p spt-net -p spt-daemon --lib --test netbroker --test netstream --test pairjoin -E "$GUARDS"
leg starve  "${NX[@]}" -p spt-daemon --test net_worker_starve -E 'all()'
leg attach  "${NX[@]}" -p spt-daemon --test attach -p spt --test attach_wedge_e2e -E 'all()'
leg mesh    "${NX[@]}" -p spt-daemon --test mesh_recovery -E 'all()'
leg clippy  cargo clippy --locked --workspace --all-targets -- -D warnings
leg trace   traceable-reqs check
leg docs    cargo run --locked -p xtask -- check
leg pool-release cargo run -q -p xtask -- pool-release --pool "$CARGO_TARGET_DIR" --label gate-302-712c987f
echo "end $(date -u +%FT%TZ)" >> "$S"
