Files
BT411/players/join.bat
T
Joe DiPrimaandClaude Fable 5 6dd1212e0c #52 campaign close: full transition matrix PASSES at 2 nodes -- field instrument rides
Provocations run under the verified [skate] detector: sustained healthy
walking, 7x respawn-while-moving, gimp onset at speed, ~21s of sustained
GIMPED walking (aimed-leg self-damage: BT_SELF_DAMAGE_ZONE=dz_ldleg),
leg-destruction death (authentic: lvl 1.0 -> leg gone -> fall/death; the
mid-session "died of the gimp edge" reading was a capped-print artifact,
retracted), and respawn.  ZERO skate anywhere.  Peer gimp replication
VERIFIED live: observer reads gl=3 + sim=3 with the gimp bodyStates
cycling for the whole master limp window (#82 remains fixed).  Conclusion:
the field skating does not reproduce at lab scale; the detector + SKATE
matchlog record ship with the next cut and the field names the failing
case.  Bench scripts archived (skatebench3-7; 7 is the clean-room one --
the sed-derived chains dropped envs twice).

Also: BT_LAMP_LOG=1 joins the field bats (#135 -- lamp/annunciator edge
forensics; near-zero noise, answers leak-no-flash reports in one grep).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 13:58:01 -05:00

119 lines
6.0 KiB
Batchfile

@echo off
rem BT411 -- join 107.202.218.169's game (internet). Seat/mech assigned
rem by the operator. Keep this file next to content\ + build\.
cd /d %~dp0
rem ONE unified build (2026-07-21): the exe carries every layer; the GLASS
rem platform env arms the desktop cockpit (clickable MFD buttons, trigger
rem config, bindings.txt keymap).
set BT_PLATFORM=glass
if not exist "build\Release\btl4.exe" goto badpath
if not exist "content\OPERATOR.EGG" goto badpath
set BT_RELAY=107.202.218.169:1500
rem one fresh log per bat run; the menu->game relaunch chain APPENDS
rem so every generation's lines survive (0-byte logs = killed pre-start)
REM keep the PREVIOUS session's log: a crash report died 2026-07-26
REM because re-running this bat deleted the only evidence.
set BT_START_INSIDE=1
set BT_DEV_GAUGES=1
rem LOGGING (2026-07-28): the bat no longer names or rotates the log. With
rem BT_LOG unset the exe names a PER-DAY file itself -- content\join_YYYYMMDD.log
rem -- and always appends, so every session of the day lands in ONE file, each
rem starting with a "===== BT411 SESSION ... =====" header naming the build,
rem machine and pid (so it identifies itself even if the filename is changed
rem in transit). Rotation used to keep only TWO generations: on 2026-07-27 a
rem player crashed twice, kept playing, and his own relaunches deleted both
rem crash sessions before anyone could ask for them.
rem Clear any INHERITED BT_LOG: with it set the exe uses that path verbatim
rem and, with no BT_LOG_APPEND, TRUNCATES it -- the exact evidence loss this
rem change removes. Empty forces the per-day self-named file + append.
set BT_LOG=
rem #108 FORENSICS (night-11): every field session records the match ledger
rem (matchlog also auto-arms on -net; forcing covers menu-relaunch paths) and
rem the score/death chain lines -- the ghost/K-D triage needs them from every
rem player, not just the ones we can reach for env setup.
set BT_MATCHLOG=1
set BT_SCORE_LOG=1
set BT_DEATH_LOG=1
rem #135: lamp/annunciator edges (techstat) -- one line per state change,
rem near-zero noise; would have answered the leak-no-flash report in one grep.
set BT_LAMP_LOG=1
cd content
rem JOIN-GAME menu (2026-07-22): pick your CALLSIGN + MECH, click JOIN --
rem your choice is sent to the operator and lands in the mission roster.
set BT_FE_JOIN=1
rem LAUNCH FORENSICS (#41): bracket the exe from outside -- if it dies
rem before it can write its own log, this report still records when it
rem ran, how it exited, and whether it ever created its log at all.
if exist lastrun_join.txt del lastrun_join.txt
rem ------------------------------------------------------------------
rem OUR GENERATION ONLY (2026-07-27). The wait loop below used to hold
rem this window open for ANY btl4.exe on the machine -- a second client,
rem the operator's own pod, or an orphan left by a crash. The window
rem then never printed the sign-off and looked hung: the reported "it
rem leaves the terminal open". Snapshot the PIDs alive BEFORE we launch;
rem those belong to somebody else and must not hold us here.
rem ------------------------------------------------------------------
setlocal EnableDelayedExpansion
set "BT_PRE=,"
for /f "tokens=1,2" %%P in ('%SystemRoot%\System32\tasklist.exe /FI "IMAGENAME eq btl4.exe" /NH 2^>nul') do (
if /I "%%P"=="btl4.exe" set "BT_PRE=!BT_PRE!%%Q,"
)
..\build\Release\btl4.exe
set BT_EXITCODE=%ERRORLEVEL%
if not exist lastrun_join.txt echo THE EXE NEVER REACHED WinMain: blocked before it could run (loader failure or antivirus) > lastrun_join.txt
echo [%DATE% %TIME%] btl4.exe exited with code %BT_EXITCODE% >> lastrun_join.txt
rem ------------------------------------------------------------------
rem HANDOFF WAIT (2026-07-25). The front end does NOT stay resident: it
rem CreateProcess()es the mission generation and ExitProcess(0)s itself
rem (btl4console.cpp). So OUR child exiting means "the menu handed off",
rem NOT "the game closed" -- without this wait the window announced "The
rem game has exited" while the game was still loading, which reads as a
rem crash to a playtester. Wait for the handed-off generation(s) to go.
rem
rem NO EXTERNAL TOOLS: `find`, `findstr` and `timeout` are all shadowed by
rem Git-Bash / MSYS / GnuWin32 builds of the same names when those are on
rem PATH (a dev box, or a player who installed git). The MSYS `find` is
rem the Unix one and dies with "find: '/I': No such file or directory",
rem and GNU `timeout` takes different arguments. So: parse tasklist with
rem a pure-cmd for/f, and call both helpers by ABSOLUTE System32 path.
rem A genuinely dead exe leaves no process and falls straight through, so
rem the #41 launch forensics above still work. If tasklist is missing
rem entirely the loop degrades to reporting immediately -- the old
rem behaviour, never a hang.
rem ------------------------------------------------------------------
:btwait
set "BT_STILL_RUNNING="
for /f "tokens=1,2" %%P in ('%SystemRoot%\System32\tasklist.exe /FI "IMAGENAME eq btl4.exe" /NH 2^>nul') do (
if /I "%%P"=="btl4.exe" (
rem a PID that was NOT in the pre-launch snapshot is ours
set "BT_STRIP=!BT_PRE:,%%Q,=!"
if "!BT_STRIP!"=="!BT_PRE!" set "BT_STILL_RUNNING=1"
)
)
if defined BT_STILL_RUNNING (
%SystemRoot%\System32\timeout.exe /t 2 /nobreak >nul 2>nul
goto btwait
)
echo.
echo The game has exited. If you did NOT quit on purpose
echo (crash, or it never connected), send the operator BOTH files:
echo content\join_YYYYMMDD.log (today's, newest) and content\lastrun_join.txt
echo Otherwise the session may not be up yet -- try again.
pause
exit /b
:badpath
echo.
echo ==================================================
echo ERROR: this file is not in the right place.
echo.
echo It must sit in the EXTRACTED game folder, next to
echo the 'content' and 'build' folders.
echo.
echo Fix: right-click the .zip - Extract All, open the
echo extracted folder, and run this file from THERE.
echo (Do NOT run it from inside the zip.)
echo ==================================================
echo.
pause