launcher logs: rotate, never delete -- and solo/joyconfig must stop destroying the MULTIPLAYER log

Prompted by "does the steam path still generate our logs?".  Answer: yes --
play_steam.bat sets BT_LOG=steam.log with append, and matchlogs arm because both
Steam launch paths pass -net (the default trigger).  But the audit found two
evidence-destroying bugs on the way:

1. play_steam.bat DELETED the previous steam.log at every launch -- the same
   pattern fixed in join.bat/join_lan.bat last night.  A Steam player who
   crashes and relaunches loses the stack.  Now rotates to steam.old.log.

2. WORSE: play_solo.bat and joyconfig.bat deleted content\join.log -- the
   MULTIPLAYER log, not theirs.  A player who crashed in MP and then ran solo
   to investigate (or ran the joystick wizard) DESTROYED THEIR OWN CRASH
   EVIDENCE.  That is a very plausible part of how Conn Man's owens-laser stack
   vanished (#35) -- he had every reason to poke around after crashing.  Each
   bat now writes its OWN log (solo.log / joyconfig.log), rotates it, and never
   touches join.log.  Their launch-forensics + "send the operator" lines are
   repointed to match.

VERIFIED in the zip layout (the bats need build\ + content\ beside them, so a
repo-relative test is meaningless -- my first two attempts hit the badpath
guard and proved nothing):
  solo.log     = [boot] btl4 4.11.599 ... (the NEW run)
  solo.old.log = OLD-SOLO-CONTENT        (rotated, not deleted)
  join.log     = SEEDED-MP-EVIDENCE      (untouched by the solo run)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
arcattack
2026-07-27 09:18:37 -05:00
co-authored by Claude Opus 5
parent e26f4e6285
commit 39cb8647c7
3 changed files with 24 additions and 10 deletions
+9 -4
View File
@@ -15,8 +15,13 @@ set BT_START_INSIDE=1
set BT_DEV_GAUGES=1
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)
if exist content\join.log del content\join.log
set BT_LOG=join.log
rem KEEP the previous run's log (a crash report died 2026-07-26 because a
rem re-run deleted the only evidence). Rotate, never delete.
rem ...and do NOT touch join.log (the MULTIPLAYER log) -- the wizard used to
rem delete a player's MP crash evidence. The wizard writes joyconfig.log.
if exist content\joyconfig.old.log del content\joyconfig.old.log
if exist content\joyconfig.log ren content\joyconfig.log joyconfig.old.log
set BT_LOG=joyconfig.log
set BT_LOG_APPEND=1
set BT_FE_SOLO=1
cd content
@@ -27,8 +32,8 @@ echo [%DATE% %TIME%] launching btl4.exe > launch_report.txt
..\build\Release\btl4.exe
set BT_EXITCODE=%ERRORLEVEL%
echo [%DATE% %TIME%] btl4.exe exited with code %BT_EXITCODE% >> launch_report.txt
if not exist join.log echo join.log WAS NEVER CREATED: the exe was blocked before it could run (loader failure or antivirus) >> launch_report.txt
if exist join.log for %%A in (join.log) do echo join.log size: %%~zA bytes >> launch_report.txt
if not exist joyconfig.log echo joyconfig.log WAS NEVER CREATED: the exe was blocked before it could run (loader failure or antivirus) >> launch_report.txt
if exist joyconfig.log for %%A in (joyconfig.log) do echo joyconfig.log size: %%~zA bytes >> launch_report.txt
exit /b
:badpath
echo.
+11 -5
View File
@@ -14,8 +14,14 @@ set BT_START_INSIDE=1
set BT_DEV_GAUGES=1
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)
if exist content\join.log del content\join.log
set BT_LOG=join.log
rem KEEP the previous run's log (a crash report died 2026-07-26 because a
rem re-run deleted the only evidence). Rotate, never delete.
rem ...and do NOT touch join.log: that is the MULTIPLAYER log. A player who
rem crashed in MP and then ran solo to investigate used to destroy their own
rem crash evidence. Solo writes solo.log.
if exist content\solo.old.log del content\solo.old.log
if exist content\solo.log ren content\solo.log solo.old.log
set BT_LOG=solo.log
set BT_LOG_APPEND=1
set BT_FE_SOLO=1
cd content
@@ -26,8 +32,8 @@ echo [%DATE% %TIME%] launching btl4.exe > launch_report.txt
..\build\Release\btl4.exe
set BT_EXITCODE=%ERRORLEVEL%
echo [%DATE% %TIME%] btl4.exe exited with code %BT_EXITCODE% >> launch_report.txt
if not exist join.log echo join.log WAS NEVER CREATED: the exe was blocked before it could run (loader failure or antivirus) >> launch_report.txt
if exist join.log for %%A in (join.log) do echo join.log size: %%~zA bytes >> launch_report.txt
if not exist solo.log echo solo.log WAS NEVER CREATED: the exe was blocked before it could run (loader failure or antivirus) >> launch_report.txt
if exist solo.log for %%A in (solo.log) do echo solo.log size: %%~zA bytes >> launch_report.txt
rem ------------------------------------------------------------------
rem HANDOFF WAIT (2026-07-25). The front end does NOT stay resident: it
@@ -59,7 +65,7 @@ if defined BT_STILL_RUNNING (
)
echo.
echo The game has exited. If it closed unexpectedly,
echo send the operator content\join.log.
echo send the operator content\solo.log.
pause
exit /b
:badpath
+4 -1
View File
@@ -9,7 +9,10 @@ if not exist "build\Release\btl4.exe" goto badpath
if not exist "content\BTL4.RES" goto badpath
set BT_PLATFORM=glass
set BT_STEAM_NET=1
if exist content\steam.log del content\steam.log
rem KEEP the previous run's log (a crash report died 2026-07-26 because a
rem re-run deleted the only evidence). Rotate, never delete.
if exist content\steam.old.log del content\steam.old.log
if exist content\steam.log ren content\steam.log steam.old.log
set BT_LOG=steam.log
set BT_LOG_APPEND=1
rem Cockpit view + MFD gauges -- the same client flags the join bats set