From 6dd1212e0c3651cae231404c0303df41f264cbba Mon Sep 17 00:00:00 2001 From: Joe DiPrima Date: Wed, 5 Aug 2026 13:58:01 -0500 Subject: [PATCH] #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 --- players/join.bat | 3 +++ players/join_lan.bat | 3 +++ players/play_steam.bat | 3 +++ scratchpad/night12/skatebench3.sh | 43 +++++++++++++++++++++++++++++++ scratchpad/night12/skatebench4.sh | 43 +++++++++++++++++++++++++++++++ scratchpad/night12/skatebench5.sh | 43 +++++++++++++++++++++++++++++++ scratchpad/night12/skatebench6.sh | 43 +++++++++++++++++++++++++++++++ scratchpad/night12/skatebench7.sh | 40 ++++++++++++++++++++++++++++ 8 files changed, 221 insertions(+) create mode 100644 scratchpad/night12/skatebench3.sh create mode 100644 scratchpad/night12/skatebench4.sh create mode 100644 scratchpad/night12/skatebench5.sh create mode 100644 scratchpad/night12/skatebench6.sh create mode 100644 scratchpad/night12/skatebench7.sh diff --git a/players/join.bat b/players/join.bat index 7a657e7..344d1e3 100644 --- a/players/join.bat +++ b/players/join.bat @@ -34,6 +34,9 @@ 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. diff --git a/players/join_lan.bat b/players/join_lan.bat index d65c9b6..02079a6 100644 --- a/players/join_lan.bat +++ b/players/join_lan.bat @@ -37,6 +37,9 @@ 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. diff --git a/players/play_steam.bat b/players/play_steam.bat index 46648cf..6dc2f65 100644 --- a/players/play_steam.bat +++ b/players/play_steam.bat @@ -36,6 +36,9 @@ 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 ------------------------------------------------------------------ rem OUR GENERATION ONLY (2026-07-27). The wait loop below used to hold diff --git a/scratchpad/night12/skatebench3.sh b/scratchpad/night12/skatebench3.sh new file mode 100644 index 0000000..eebaec3 --- /dev/null +++ b/scratchpad/night12/skatebench3.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# #52 SKATE PROVOCATION 3 -- the LEG-GIMP transition family (#82 history: +# where replicant legs break). A walks on autodrive; B CHASES (goto stop 60) +# and servo-shoots A's SIX LEG ZONES (zone-walk, leg filter) until the gimp +# engages -- master gait swaps normal->gimp (and back on respawn), the +# transitions the light bench never exercised. [skate] watches on both; +# BT_GIMPFEED on B prints the replicant's gimp level + demand 1 Hz. +# NOVICE egg: crits off -- sustained leg-zone damage without subsystem kills. +set -x +. /c/git/bt411/scratchpad/night6/bench_common.sh +cd /c/git/bt411/content || exit 1 +taskkill //F //IM btl4.exe > /dev/null 2>&1 +sleep 2 +rm -f sg_a.log sg_b.log +bt_novice_egg MP.EGG SG.EGG +sed -i "s/^map=.*/map=grass/; s/^time=.*/time=day/; s/^vehicle=.*/vehicle=madcat/" SG.EGG + +# A = wandering victim (walks, gets leg-shot, gimps, keeps walking) +BT_AUTODRIVE=0.6 BT_DEATH_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 \ + bt_launch sg_a.log SG.EGG 0x0C -net 1601 +sleep 2 +# B = chasing leg-shooter + observer of A's replicant +BT_GOTO=enemy BT_GOTO_STOP=60 BT_ZONE_WALK=5 BT_WALK_ZONES="uleg,dleg,foot" \ +BT_GIMPFEED=1 BT_PICK_LOG=1 BT_KEY_NOFOCUS=1 \ +BT_DEATH_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 \ + bt_launch sg_b.log SG.EGG 0x03 -net 1501 +sleep 5 +python ../tools/btconsole.py SG.EGG 127.0.0.1:1501 127.0.0.1:1601 > sg_relay.log 2>&1 & +RELAY=$! +sleep 360 +kill $RELAY 2>/dev/null +taskkill //F //IM btl4.exe > /dev/null 2>&1 +sleep 3 +echo "=== A leg damage (its own master view):" +grep -a "dmghit" sg_a.log | grep -coE "zone=(2|3|7|9|10|18)" ; true +echo "=== A gimp state changes:" +grep -aiE "gimp" sg_a.log | grep -va gimpfeed | head -8 +echo "=== B replicant gimp feed (last 6):" +grep -a "replgimp" sg_b.log | tail -6 +echo "=== SKATE hits (B watching A):" +grep -a "\[skate\]" sg_b.log | head -10 +echo "=== SKATE count A-side:" +grep -ac "\[skate\]" sg_a.log diff --git a/scratchpad/night12/skatebench4.sh b/scratchpad/night12/skatebench4.sh new file mode 100644 index 0000000..2ac196b --- /dev/null +++ b/scratchpad/night12/skatebench4.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# #52 SKATE PROVOCATION 3 -- the LEG-GIMP transition family (#82 history: +# where replicant legs break). A walks on autodrive; B CHASES (goto stop 60) +# and servo-shoots A's SIX LEG ZONES (zone-walk, leg filter) until the gimp +# engages -- master gait swaps normal->gimp (and back on respawn), the +# transitions the light bench never exercised. [skate] watches on both; +# BT_GIMPFEED on B prints the replicant's gimp level + demand 1 Hz. +# NOVICE egg: crits off -- sustained leg-zone damage without subsystem kills. +set -x +. /c/git/bt411/scratchpad/night6/bench_common.sh +cd /c/git/bt411/content || exit 1 +taskkill //F //IM btl4.exe > /dev/null 2>&1 +sleep 2 +rm -f sg2_a.log sg2_b.log +bt_novice_egg MP.EGG SG2.EGG +sed -i "s/^map=.*/map=grass/; s/^time=.*/time=day/; s/^vehicle=.*/vehicle=madcat/" SG2.EGG + +# A = wandering victim (walks, gets leg-shot, gimps, keeps walking) +BT_AUTODRIVE=0.5 BT_SELF_DAMAGE=8 BT_DEATH_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 \ + bt_launch sg2_a.log SG2.EGG 0x0C -net 1601 +sleep 2 +# B = chasing leg-shooter + observer of A's replicant +BT_GIMPFEED=1 \ + +BT_DEATH_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 \ + bt_launch sg2_b.log SG2.EGG 0x03 -net 1501 +sleep 5 +python ../tools/btconsole.py SG2.EGG 127.0.0.1:1501 127.0.0.1:1601 > sg2_relay.log 2>&1 & +RELAY=$! +sleep 330 +kill $RELAY 2>/dev/null +taskkill //F //IM btl4.exe > /dev/null 2>&1 +sleep 3 +echo "=== A leg damage (its own master view):" +grep -a "dmghit" sg2_a.log | grep -coE "zone=(2|3|7|9|10|18)" ; true +echo "=== A gimp state changes:" +grep -aiE "gimp" sg2_a.log | grep -va gimpfeed | head -8 +echo "=== B replicant gimp feed (last 6):" +grep -a "replgimp" sg2_b.log | tail -6 +echo "=== SKATE hits (B watching A):" +grep -a "\[skate\]" sg2_b.log | head -10 +echo "=== SKATE count A-side:" +grep -ac "\[skate\]" sg2_a.log diff --git a/scratchpad/night12/skatebench5.sh b/scratchpad/night12/skatebench5.sh new file mode 100644 index 0000000..95c2040 --- /dev/null +++ b/scratchpad/night12/skatebench5.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# #52 SKATE PROVOCATION 3 -- the LEG-GIMP transition family (#82 history: +# where replicant legs break). A walks on autodrive; B CHASES (goto stop 60) +# and servo-shoots A's SIX LEG ZONES (zone-walk, leg filter) until the gimp +# engages -- master gait swaps normal->gimp (and back on respawn), the +# transitions the light bench never exercised. [skate] watches on both; +# BT_GIMPFEED on B prints the replicant's gimp level + demand 1 Hz. +# NOVICE egg: crits off -- sustained leg-zone damage without subsystem kills. +set -x +. /c/git/bt411/scratchpad/night6/bench_common.sh +cd /c/git/bt411/content || exit 1 +taskkill //F //IM btl4.exe > /dev/null 2>&1 +sleep 2 +rm -f sg3_a.log sg3_b.log +bt_novice_egg MP.EGG SG3.EGG +sed -i "s/^map=.*/map=grass/; s/^time=.*/time=day/; s/^vehicle=.*/vehicle=madcat/" SG3.EGG + +# A = wandering victim (walks, gets leg-shot, gimps, keeps walking) +BT_AUTODRIVE=0.5 BT_SELF_DAMAGE=4 BT_SELF_DAMAGE_ZONE=dz_ldleg BT_DMG_LOG=1 BT_DEATH_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 \ + bt_launch sg3_a.log SG3.EGG 0x0C -net 1601 +sleep 2 +# B = chasing leg-shooter + observer of A's replicant +BT_GIMPFEED=1 \ + +BT_DEATH_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 \ + bt_launch sg3_b.log SG3.EGG 0x03 -net 1501 +sleep 5 +python ../tools/btconsole.py SG3.EGG 127.0.0.1:1501 127.0.0.1:1601 > sg3_relay.log 2>&1 & +RELAY=$! +sleep 330 +kill $RELAY 2>/dev/null +taskkill //F //IM btl4.exe > /dev/null 2>&1 +sleep 3 +echo "=== A leg damage (its own master view):" +grep -a "dmghit" sg3_a.log | grep -coE "zone=(2|3|7|9|10|18)" ; true +echo "=== A gimp state changes:" +grep -aiE "gimp" sg3_a.log | grep -va gimpfeed | head -8 +echo "=== B replicant gimp feed (last 6):" +grep -a "replgimp" sg3_b.log | tail -6 +echo "=== SKATE hits (B watching A):" +grep -a "\[skate\]" sg3_b.log | head -10 +echo "=== SKATE count A-side:" +grep -ac "\[skate\]" sg3_a.log diff --git a/scratchpad/night12/skatebench6.sh b/scratchpad/night12/skatebench6.sh new file mode 100644 index 0000000..36cc543 --- /dev/null +++ b/scratchpad/night12/skatebench6.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# #52 SKATE PROVOCATION 3 -- the LEG-GIMP transition family (#82 history: +# where replicant legs break). A walks on autodrive; B CHASES (goto stop 60) +# and servo-shoots A's SIX LEG ZONES (zone-walk, leg filter) until the gimp +# engages -- master gait swaps normal->gimp (and back on respawn), the +# transitions the light bench never exercised. [skate] watches on both; +# BT_GIMPFEED on B prints the replicant's gimp level + demand 1 Hz. +# NOVICE egg: crits off -- sustained leg-zone damage without subsystem kills. +set -x +. /c/git/bt411/scratchpad/night6/bench_common.sh +cd /c/git/bt411/content || exit 1 +taskkill //F //IM btl4.exe > /dev/null 2>&1 +sleep 2 +rm -f sg4_a.log sg4_b.log +bt_novice_egg MP.EGG SG4.EGG +sed -i "s/^map=.*/map=grass/; s/^time=.*/time=day/; s/^vehicle=.*/vehicle=madcat/" SG4.EGG + +# A = wandering victim (walks, gets leg-shot, gimps, keeps walking) +BT_AUTODRIVE=0.5 BT_SELF_DAMAGE=4 BT_SELF_DAMAGE_ZONE=dz_ldleg BT_DMG_LOG=1 BT_DEATH_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 \ + bt_launch sg4_a.log SG4.EGG 0x0C -net 1601 +sleep 2 +# B = chasing leg-shooter + observer of A's replicant +BT_REPL_LOG=1 \ + +BT_DEATH_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 \ + bt_launch sg4_b.log SG4.EGG 0x03 -net 1501 +sleep 5 +python ../tools/btconsole.py SG4.EGG 127.0.0.1:1501 127.0.0.1:1601 > sg4_relay.log 2>&1 & +RELAY=$! +sleep 330 +kill $RELAY 2>/dev/null +taskkill //F //IM btl4.exe > /dev/null 2>&1 +sleep 3 +echo "=== A leg damage (its own master view):" +grep -a "dmghit" sg4_a.log | grep -coE "zone=(2|3|7|9|10|18)" ; true +echo "=== A gimp state changes:" +grep -aiE "gimp" sg4_a.log | grep -va gimpfeed | head -8 +echo "=== B replicant gimp feed (last 6):" +grep -a "replgimp" sg4_b.log | tail -6 +echo "=== SKATE hits (B watching A):" +grep -a "\[skate\]" sg4_b.log | head -10 +echo "=== SKATE count A-side:" +grep -ac "\[skate\]" sg4_a.log diff --git a/scratchpad/night12/skatebench7.sh b/scratchpad/night12/skatebench7.sh new file mode 100644 index 0000000..190e236 --- /dev/null +++ b/scratchpad/night12/skatebench7.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +# #52 FINAL gimp-replication check (clean-room script -- the sed-derived +# chain dropped envs). A: walks + aimed leg self-damage -> ~22s of REAL +# gimped walking before the leg dies. B: observer with the replicant probes +# ([replgimp] 1 Hz: the peer's view of the gimp level) + [skate] + captures. +# QUESTION: does the PEER limp while the master limps (gl=3 on B)? +set -x +. /c/git/bt411/scratchpad/night6/bench_common.sh +cd /c/git/bt411/content || exit 1 +taskkill //F //IM btl4.exe > /dev/null 2>&1 +sleep 2 +rm -f sg5_a.log sg5_b.log sg5B_*.png +bt_novice_egg MP.EGG SG5.EGG +sed -i "s/^map=.*/map=grass/; s/^time=.*/time=day/; s/^vehicle=.*/vehicle=madcat/" SG5.EGG + +( + export BT_AUTODRIVE=0.5 BT_SELF_DAMAGE=4 BT_SELF_DAMAGE_ZONE=dz_ldleg + export BT_DMG_LOG=1 BT_DEATH_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 + bt_launch sg5_a.log SG5.EGG 0x0C -net 1601 +) +sleep 2 +( + export BT_REPL_LOG=1 BT_JIT=1 BT_SHOT_EVERY=90 BT_SHOT_PREFIX=sg5B + export BT_DEATH_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 + bt_launch sg5_b.log SG5.EGG 0x03 -net 1501 +) +sleep 5 +python ../tools/btconsole.py SG5.EGG 127.0.0.1:1501 127.0.0.1:1601 > sg5_relay.log 2>&1 & +RELAY=$! +sleep 200 +kill $RELAY 2>/dev/null +taskkill //F //IM btl4.exe > /dev/null 2>&1 +sleep 3 +echo "=== A gimp window (master):" +grep -a "gaitSM" sg5_a.log | grep -oaE "state=[0-9]+" | sort | uniq -c +echo "=== B peer gimp view (replgimp gl values):" +grep -a "replgimp" sg5_b.log | grep -oaE "gl=[0-9]+" | sort | uniq -c +grep -a "replgimp" sg5_b.log | grep -v "gl=0" | head -6 +echo "=== SKATE:" +grep -ac "\[skate\]" sg5_b.log