a fresh clone gets the whole project, and the maintainer's tooling moves out
What a clone lacked: the gates went green with a thousand skipped tests and said nothing, every login script assumed a worktree-pool slot and its probe account, the client defaulted to the maintainer's account, a docker path and a home directory were in the code, the temp files broke on GNU coreutils, and two generators could only run against a sibling repo. Now the test gates print how many data-gated tests skipped and why; a scripted run logs in as the account its checkout declares in `.probe-identity` or as the three variables name, never a default, and the client refuses a scripted login on any other account; the event and message tables regenerate from vendored inputs, byte for byte; the docs state the real prerequisites. Out of the tree, into the maintainer's own tooling: the worktree pool, its hooks, the perf leg runner, the cross-platform compile and the Vulkan container leg — a way of working, and setups not every machine has. One hook stays: no writes into the install. Two tests that could never run are gone with their subject: the quest-timer geometry diff compared a copy of the window that no longer exists (and joined a chain path onto a folder, so it always skipped), and the FrameXML flag gate now reads the stock files off the player's own patch chain instead of an extracted folder only one machine had. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
+22
-36
@@ -9,7 +9,7 @@
|
||||
# be asked by somebody else, and the whole seam behind it (apply → feed → VM → drain → wire) is
|
||||
# exactly the part unit tests cannot reach.
|
||||
#
|
||||
# What it does: a summoner client on an unowned probe account invites this slot's probe character
|
||||
# What it does: a summoner client on a second account invites this checkout's probe character
|
||||
# into a group and runs `.group summon`; the receiver reads its own CONFIRM_SUMMON dialog back
|
||||
# through `ProbeLog`, presses Accept, and re-reads its zone once the teleport has landed. The
|
||||
# receiver also writes the `summon` trace tag, so all three links report:
|
||||
@@ -18,13 +18,12 @@
|
||||
# summon fire CONFIRM_SUMMON summoner=… zone=…
|
||||
# summon SEND CMSG_SUMMON_RESPONSE summoner=… n=1
|
||||
#
|
||||
# **Why PROBE9, and why the account guard is waved.** The worktree pool is a hard eight slots
|
||||
# (0..7, decision 1037), and the probe accounts run 0..9 — so PROBE8 and PROBE9 are keyed to no
|
||||
# session by construction and logging in as one cannot kick anybody. That is the ONLY thing that
|
||||
# makes `WOW_ALLOW_ACCOUNT=1` legitimate here, so this script checks it rather than asserting it:
|
||||
# if a pool-9 slot ever exists, it refuses instead of kicking that session out of the world.
|
||||
# **The summoner is a second account the shell names** — `SUMMON_USER`, `SUMMON_PASS`,
|
||||
# `SUMMON_CHAR`, a GM-level test account whose login kicks nobody. The summoner's run carries
|
||||
# `WOW_ALLOW_ACCOUNT=1`, because it is not the account this checkout declares; that the shell
|
||||
# named it is what makes the override legitimate.
|
||||
#
|
||||
# scripts/summon-live.sh # ~90 s, opens two small cornered windows
|
||||
# SUMMON_USER=… SUMMON_PASS=… SUMMON_CHAR=… scripts/summon-live.sh # ~90 s, two small windows
|
||||
set -uo pipefail
|
||||
|
||||
root="$(git -C "$PWD" rev-parse --show-toplevel 2>/dev/null || true)"
|
||||
@@ -32,42 +31,29 @@ root="$(git -C "$PWD" rev-parse --show-toplevel 2>/dev/null || true)"
|
||||
cd "$root" || exit 1
|
||||
echo "summon-live: $root"
|
||||
|
||||
# The receiver is THIS SLOT's probe identity — smoke.sh's rule, and for its reason: a vmangos login
|
||||
# kicks whoever holds the account, and the slot claim is already the session mutex.
|
||||
slot="$(basename "$root" | sed -n 's/^pool-\([0-9]\)$/\1/p')"
|
||||
if [ -z "$slot" ]; then
|
||||
echo "summon-live: REFUSING — not in a pool worktree (\`$root\`)."
|
||||
echo " Claim one: scripts/wt.sh claim <name>"
|
||||
exit 1
|
||||
fi
|
||||
names=(zero one two three four five six seven eight nine)
|
||||
rx_user="probe$slot"; rx_pass="pprobe$slot"; rx_char="Probe${names[$slot]}"
|
||||
# The receiver is this run's own identity — smoke.sh's rule (scripts/probe-identity.sh), for its
|
||||
# reason: a login kicks whoever holds the account.
|
||||
. "$root/scripts/probe-identity.sh"
|
||||
probe_identity summon-live "$root" || exit 1
|
||||
rx_user="$PROBE_USER"; rx_pass="$PROBE_PASS"; rx_char="$PROBE_CHAR"
|
||||
|
||||
# The summoner rides a probe account NO slot can claim (see the header). Verified, not assumed.
|
||||
tx_slot=9
|
||||
if [ -d "$(dirname "$root")/pool-$tx_slot" ]; then
|
||||
echo "summon-live: REFUSING — pool-$tx_slot exists, so probe$tx_slot is a live session's account"
|
||||
echo " and logging in on it would kick that session out of the world. The pool grew"
|
||||
echo " past this script's assumption; pick a higher unowned probe account."
|
||||
# The summoner is the shell's to name (see the header).
|
||||
if [ -z "${SUMMON_USER:-}" ] || [ -z "${SUMMON_PASS:-}" ] || [ -z "${SUMMON_CHAR:-}" ]; then
|
||||
echo "summon-live: REFUSING — the summoner needs a second account: SUMMON_USER, SUMMON_PASS"
|
||||
echo " and SUMMON_CHAR, a GM-level test account whose login kicks nobody."
|
||||
exit 1
|
||||
fi
|
||||
tx_user="probe$tx_slot"; tx_pass="pprobe$tx_slot"; tx_char="Probe${names[$tx_slot]}"
|
||||
tx_user="$SUMMON_USER"; tx_pass="$SUMMON_PASS"; tx_char="$SUMMON_CHAR"
|
||||
echo "summon-live: $tx_char ($tx_user) summons $rx_char ($rx_user)"
|
||||
|
||||
for port in 3724 8085; do
|
||||
if ! (exec 3<>/dev/tcp/127.0.0.1/$port) 2>/dev/null; then
|
||||
echo "summon-live: SKIPPED — nothing listening on 127.0.0.1:$port (realmd 3724 / mangosd 8085)."
|
||||
echo " The local vmangos lives at /Users/sam/dev/vmangos-deploy — \`docker compose up -d\`."
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
probe_server_or_skip summon-live || exit 0
|
||||
|
||||
# Build once, so the two `cargo run`s below start together instead of one waiting on the other's
|
||||
# build lock — the timings are wall-clock from process start (smoke.sh's build-then-time rule).
|
||||
echo "summon-live: building…"
|
||||
cargo build -q -p benilla || { echo "summon-live: the client did not build"; exit 1; }
|
||||
|
||||
work="$(mktemp -d -t benilla-summon)"
|
||||
work="$(mktemp -d "${TMPDIR:-/tmp}/benilla-summon.XXXXXX")"
|
||||
trap '[ -n "${SUMMON_LIVE_KEEP:-}" ] || rm -rf "$work"' EXIT
|
||||
|
||||
# The receiver's chunk. `tostring` on every getter on purpose: a missing dialog must REPORT rather
|
||||
@@ -99,7 +85,7 @@ echo "summon-live: running (~90 s, opens two windows)…"
|
||||
# wherever the last run left it — which, after one green run, is the destination — so a
|
||||
# before/after zone compare silently stops discriminating on the second run. It did exactly that.
|
||||
# Parking in Stormwind makes "before" the same on every run, whatever the previous one did.
|
||||
WOW_UNATTENDED=1 WOW_USER="$rx_user" WOW_PASS="$rx_pass" WOW_CHAR="$rx_char" \
|
||||
WOW_UNATTENDED=1 WOW_NOSOUND=1 WOW_USER="$rx_user" WOW_PASS="$rx_pass" WOW_CHAR="$rx_char" \
|
||||
WOW_PROBE=partner \
|
||||
WOW_PROBE_CHAT=".go xyz -8913 554 94" WOW_PROBE_CHAT_AT=10 \
|
||||
WOW_PROBE_LUA="$chunk" WOW_PROBE_LUA_AT=34 \
|
||||
@@ -108,9 +94,9 @@ WOW_UNATTENDED=1 WOW_USER="$rx_user" WOW_PASS="$rx_pass" WOW_CHAR="$rx_char" \
|
||||
timeout 150 cargo run -q -p benilla >"$work/rx.log" 2>&1 &
|
||||
rx=$!
|
||||
|
||||
# `WOW_ALLOW_ACCOUNT=1` is the account guard's own escape hatch, and the pool-9 check above is what
|
||||
# earns it. `.group summon` rather than `.summon`: the latter teleports without ever asking.
|
||||
WOW_UNATTENDED=1 WOW_USER="$tx_user" WOW_PASS="$tx_pass" WOW_CHAR="$tx_char" WOW_ALLOW_ACCOUNT=1 \
|
||||
# `WOW_ALLOW_ACCOUNT=1` is the account guard's own escape hatch, and the shell naming the account
|
||||
# is what earns it. `.group summon` rather than `.summon`: the latter teleports without ever asking.
|
||||
WOW_UNATTENDED=1 WOW_NOSOUND=1 WOW_USER="$tx_user" WOW_PASS="$tx_pass" WOW_CHAR="$tx_char" WOW_ALLOW_ACCOUNT=1 \
|
||||
WOW_PROBE_CHAT="/invite $rx_char;.group summon" \
|
||||
WOW_PROBE_CHAT_AT=18 WOW_PROBE_CHAT_EVERY=10 \
|
||||
WOW_PROBE_EXIT_AT=62 \
|
||||
|
||||
Reference in New Issue
Block a user