From 184121c59770c8b59c1529df7e1fa4237c656fa1 Mon Sep 17 00:00:00 2001 From: arcattack Date: Mon, 27 Jul 2026 00:57:23 -0500 Subject: [PATCH] kill-storm repro rig for #35 (owens laser crash): parameterized damage hook + honest NEGATIVE BT_MP_FORCE_DMG= now sets the per-tick probe damage (plain =1 keeps the original amount) -- kill-storm rigs need lethal ticks. rig_killstorm.ps1: offset-port relay + owens shooter under BT_AUTOFIRE vs a respawning victim. Result: NEGATIVE, twice. The respawn cycle (death anim + warp + handshake) caps the harvest at 1-2 kill-teardown windows per 4-minute round, and none crashed. With July's 254-volley negative the conclusion firms up: the window needs the reporter's slow-machine timing, not more attempts here. The field net (crash self-report + join.old.log rotation + the sweep guards) means the next real occurrence names its own site. Refined theory recorded in the ledger: six-beam volley vs a target dying mid-volley, 515-class teardown race. Co-Authored-By: Claude Opus 5 (1M context) --- game/reconstructed/mech4.cpp | 9 ++++- scratchpad/crash_20260726_2316_notes.md | 15 ++++++++ scratchpad/rig_killstorm.ps1 | 48 +++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 scratchpad/rig_killstorm.ps1 diff --git a/game/reconstructed/mech4.cpp b/game/reconstructed/mech4.cpp index 0c7f560..0600ee4 100644 --- a/game/reconstructed/mech4.cpp +++ b/game/reconstructed/mech4.cpp @@ -4853,7 +4853,14 @@ void continue; Damage dmg; dmg.damageType = Damage::ExplosiveDamageType; - dmg.damageAmount = kShotDamage; + // BT_MP_FORCE_DMG= sets the per-tick damage (>1 -- + // kill-storm repro rigs, #35: hundreds of victim-death + // teardown windows per mission); plain =1 keeps the + // original probe amount. + { + float forced = (float)atof(getenv("BT_MP_FORCE_DMG")); + dmg.damageAmount = (forced > 1.0f) ? forced : kShotDamage; + } dmg.burstCount = 1; dmg.impactPoint = m->localOrigin.linearPosition; Entity::TakeDamageMessage td( diff --git a/scratchpad/crash_20260726_2316_notes.md b/scratchpad/crash_20260726_2316_notes.md index d708f88..c260603 100644 --- a/scratchpad/crash_20260726_2316_notes.md +++ b/scratchpad/crash_20260726_2316_notes.md @@ -130,3 +130,18 @@ or at the moment of a KILL? - Gitea #35 updated twice (occurrence + trucks-vs-opponents discriminator). STILL OWED: Conn Man's join.log (the laser-crash stack); live games-night verification of tonight's five fixes. + +## #35 kill-storm repro attempts (2026-07-27 00:45-01:05) -- NEGATIVE, insurance armed +- Theory refined: the six-beam volley vs a target dying MID-VOLLEY (owens = + the biggest simultaneous event burst; trucks never die/tear down; the 515 + class in the beam-hit/interest-teardown neighborhood). +- BT_MP_FORCE_DMG parameterized (= sets per-tick damage) + rig_killstorm.ps1 + (owens autofire vs a respawning victim). TWO 4-minute storms: the respawn + cycle limits the harvest to 1-2 kill windows per run -- zero crashes, zero + guard fires. Combined with July's 254-volley negative: the window needs a + slow machine's timing (the Surface), not more volleys on this box. +- FIELD NET now armed on three layers: the crash self-report (584+), join.bat + keeping join.old.log, and the sweep guards self-identifying. The next field + occurrence CANNOT be lost. +- BEST NEXT MOVE: hand the reporter the storm rig -- his machine has the + right timing profile. A one-bat package of rig_killstorm is feasible. diff --git a/scratchpad/rig_killstorm.ps1 b/scratchpad/rig_killstorm.ps1 new file mode 100644 index 0000000..282b23a --- /dev/null +++ b/scratchpad/rig_killstorm.ps1 @@ -0,0 +1,48 @@ +# KILL-STORM repro rig (#35 owens-laser crash): offset ports (1520), owens +# shooter under BT_AUTOFIRE with BT_MP_FORCE_DMG killing the victim replicant +# every ~1s -- hundreds of mid-volley-kill teardown windows per mission. +$repo = 'C:\git\bt411' +$content = Join-Path $repo 'content' +$scratch = 'C:\Users\EPILECTRIK\AppData\Local\Temp\claude\C--git-bt411\89ab96e9-6cf0-4555-939d-05bf3708745a\scratchpad' +$exe = Join-Path $repo 'build\Release\btl4.exe' +$relaylog = Join-Path $scratch 'ks_relay.log' +$pidfile = Join-Path $scratch 'ks_pids.txt' + +if (@(Get-NetTCPConnection -State Listen -LocalPort 1520 -ErrorAction SilentlyContinue).Count -gt 0) { + "ABORT: port 1520 in use"; exit 1 +} +Remove-Item $relaylog -ErrorAction SilentlyContinue +$pids = @() + +$relay = Start-Process -FilePath 'python' ` + -ArgumentList '-u', (Join-Path $repo 'tools\btconsole.py'), '--relay', '1520', + (Join-Path $content '_KILLSTORM.EGG'), '--bind', '127.0.0.1', '--manual-launch' ` + -WorkingDirectory $content -PassThru ` + -RedirectStandardOutput $relaylog ` + -RedirectStandardError (Join-Path $scratch 'ks.err') +$pids += $relay.Id +Start-Sleep -Seconds 3 +"relay pid=$($relay.Id)" + +$env:BT_START_INSIDE = '1' +$env:BT_DEV_GAUGES = '1' +$env:BT_RELAY = '127.0.0.1:1520' +$env:BT_MATCHLOG = '0' +$env:BT_LOG_APPEND = '1' + +# SHOOTER: owens, autofire held, force-kill the victim replicant every ~1s +$env:BT_LOG = 'ks_shooter.log'; $env:BT_SELF = '127.0.0.1:1502' +$env:BT_AUTOFIRE = '1'; $env:BT_MP_FORCE_DMG = '400' +$a = Start-Process -FilePath $exe -ArgumentList '-egg','_KILLSTORM.EGG','-net','1502' ` + -WorkingDirectory $content -PassThru +$pids += $a.Id +Start-Sleep -Seconds 2 +# VICTIM: plain +Remove-Item Env:\BT_AUTOFIRE, Env:\BT_MP_FORCE_DMG -ErrorAction SilentlyContinue +$env:BT_LOG = 'ks_victim.log'; $env:BT_SELF = '127.0.0.1:1602' +$b = Start-Process -FilePath $exe -ArgumentList '-egg','_KILLSTORM.EGG','-net','1602' ` + -WorkingDirectory $content -PassThru +$pids += $b.Id + +Set-Content -Path $pidfile -Value $pids +"shooter=$($a.Id) victim=$($b.Id)"