Written for picking the work back up on a laptop. Facts verified rather than recalled: the parked relay is NOT running (no listener on 1500/1501/1507), RDP is up, Tailscale is not installed, and the tracker splits 24 genuinely-open / 26 awaiting-verification. Also commits the tracker snapshot script so the issue split can be re-derived from the road instead of trusting the numbers frozen in the doc. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
6.0 KiB
Road Handoff — where the work stands
Snapshot: 2026-07-27 morning, at commit 39cb864. This is a living file; update it or delete it
when the picture changes. Everything below was checked against the machine/tracker, not memory.
0. Operational state RIGHT NOW (read this first if you want to host)
| Thing | State |
|---|---|
| Parked relay | NOT RUNNING. Ports 1500 / 1501 / 1507 have no listener. |
| Orphan pod | one btl4.exe (OPERATOR.EGG -net 1501) left over from last night, connected to nothing. Safe to close. |
| RDP into the home machine | enabled, 3389 listening, rules in place |
| Mesh VPN (Tailscale) | not installed — the control port is not tunnelled |
Release 4.11.600 |
cut, verified, not yet posted |
To host from the road you must first get the relay up on the home machine — a remote console
attaches, it cannot start one. Either RDP in and double-click tools\park_relay.cmd, or put it in
shell:startup so it survives a reboot. Full runbook (what a remote console can and cannot do, the
control-port table, the secret's working-directory trap): context/operator-console.md §Parked
relay + remote console.
⚠️ Forwarding 1507 to the open internet puts the operator secret on the wire in cleartext. Leave the player ports (1500/1501) as they are and carry the control link over a tunnel.
1. The release
dist\BT411_4.11.600.zip (47.0 MB) + dist\RELEASE_NOTES_4.11.600_discord.md (1,915 chars).
Verified on the final artifact: doc audit 35/35, bats byte-identical to players/, exe identical to
the build at 39cb864, clean-extract boot with 0 faults, bindings.txt generated with the
# bindings-board 2 marker, and log rotation proven inside the shipped zip (solo run rotates
solo.log, leaves a seeded join.log untouched).
Notes cover 584 → 600, since 584 is the build everyone actually installed. 599 was cut but never posted; its fixes are folded in. Nothing left to do but post it.
2. Live investigations (the real work)
24 issues are genuinely open; 26 more carry awaiting-verification — fix landed, no human has
seen it work live. Snapshot script: scratchpad/tracker_snapshot.py (hits the Gitea API with your
stored git credential; re-run it rather than trusting this list).
Blocked on someone else
- #35 — Owens laser crash. Waiting on Conn Man's
join.log. His last one was overwritten, which is exactly what 600's log rotation fixes, so the next occurrence should survive. Repro rig is committed:scratchpad/rig_killstorm.ps1+ theBT_MP_FORCE_DMG=<n>hook ingame/reconstructed/mech4.cpp. Result so far is an honest negative — the kill-storm does not reproduce it; notes inscratchpad/crash_20260726_2316_notes.md. Best current lead: firing at a mech rather than a truck.
Ready to pick up
- #52 — replicant legs "ski" (slide without walking). The natural sibling to the #67 torso work
just finished: same replication path, same dead-reckoning clock. Start from
torso.cpp'sGetLastUpdateTime()fix and look for the equivalent on the leg/gait side. - #49 — radar/map does not draw the arena WALL geometry. Audited: there is no wall path at all, so this is a build-it, not a fix-it.
- #43, #50, #56 — MFD/roster behaviour reported live but never reproduced on the bench.
Deferred with a stated reason (don't re-derive)
- #55 remaining steps — the
mechsub.cpprename pair, deletingHeatableSubsystem::ResetToInitialState, deletingRespawnRepair. All three need aHeatableSubsystemvtable slot-10 pre-flight, and there is no binary image in the repo to dump it from. Steps 0/1/2/4 landed inef8e449.
Two calls that are yours, not mine
- #54 (David's three energy weapons dead) — probably superseded by #57; close it or say why not.
- #66 (joyconfig.bat hangs after the wizard) — may be invalid; people report using it fine.
3. What landed in the last 24h and is unverified
#67 (both halves), #55, #62, close-means-quit, four lifecycle-window null-deref guards, the
phantom-map filter, seat identity, console + launcher log rotation, console re-arm.
The gate is a live games night. House rule: nothing moves off awaiting-verification until a
human confirms it in a real session — a passing bench test is not verification.
4. Recent findings worth remembering
- The allocator was the bug.
Memory::Allocateused plainoperator new; the pod'sMemoryBlockarenas carve OS-zeroed pages. Every 1995 field the constructor never stored read as zero on the pod and as garbage here. That is #67's root cause, and the same class will bite again — suspect it whenever a value is wrong only for remote entities. (mechrecon.hpp) artrucksis an art sub-node, not a mission. Offering it in the operator's map list hung every pod at "mission starting" for a whole evening. Map anatomy:arena1 → {arenall → cavern, artrucks}.- The operator secret follows the relay's cwd. Two files with different values existed in this
repo; a mismatch shows up as a dropped control connection on timeout, not a "wrong password".
Always park from
content\.
5. Picking up on the laptop
git pull— everything above is committed, includingscratchpad/(the repro rigs and crash notes travel with the repo).- The launcher bats only work from an extracted zip — they
cd /d %~dp0and needbuild\andcontent\beside them. Running them from the repo silently hitsbadpath. This has burned two verification attempts; extractdist\BT411_4.11.600.zipsomewhere and test there. - Uncommitted and intentionally left dirty:
content/LAST.EGG,content/OPERATOR.EGG(session state),scratchpad/sim3.py. - Orientation:
CLAUDE.md(router) →context/*.md. For last night specifically:scratchpad/crash_20260726_2316_notes.mdis the full incident ledger, andcontext/steam-networking.mdhas the first real multi-player field verification.