From d64d75fcf777739bd9637292bdca2bfff7de14c7 Mon Sep 17 00:00:00 2001 From: arcattack Date: Mon, 27 Jul 2026 16:08:10 -0500 Subject: [PATCH] handoff: fold in the orphan investigation, the launcher fix, and what it means for the release The tracker split moves to 26 open (adds #71/#72 filed today). Flags the one decision left for the road: the :btwait fix is at HEAD but NOT in the 600 zip, so it ships only if the zip is re-cut -- and names the single manual check that would close out the fix's verification. Co-Authored-By: Claude Opus 5 --- docs/HANDOFF.md | 53 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md index 0e374e2..2678fcf 100644 --- a/docs/HANDOFF.md +++ b/docs/HANDOFF.md @@ -1,6 +1,6 @@ # Road Handoff — where the work stands -*Snapshot: 2026-07-27 morning, at commit `39cb864`. This is a living file; update it or delete it +*Snapshot: 2026-07-27 midday, at commit `7afbda9`. This is a living file; update it or delete it when the picture changes. Everything below was checked against the machine/tracker, not memory.* --- @@ -10,10 +10,11 @@ when the picture changes. Everything below was checked against the machine/track | 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. | +| Stray pods | none — the leftover `OPERATOR.EGG -net 1501` process exited on its own. Machine is clean. | | 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** | +| Launcher fix at HEAD | **not in the 600 zip** — needs a re-cut to reach players (§6) | **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 @@ -42,9 +43,10 @@ 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). +**26 issues are genuinely open** (24 plus #71/#72 filed today); **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, @@ -72,6 +74,11 @@ stored git credential; re-run it rather than trusting this list). - **#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. +### Filed today, from the orphan investigation (§6) +- **#71** — closing the Plasma window (or a glass panel) hides it with no way to get it back. +- **#72** — `BTLoadPump` swallows `WM_QUIT` during mission load. Latent, does not hang today; filed + so nobody re-derives it. + --- ## 3. What landed in the last 24h and is unverified @@ -111,3 +118,39 @@ human confirms it in a real session — a passing bench test is not verification 4. Orientation: `CLAUDE.md` (router) → `context/*.md`. For last night specifically: `scratchpad/crash_20260726_2316_notes.md` is the full incident ledger, and `context/steam-networking.md` has the first real multi-player field verification. + +--- + +## 6. Orphaned processes — investigated 2026-07-27 (commit `7afbda9`) + +Answering *"X-closing the game leaves the terminal open and leaves orphaned processes; I think it's +a major contributor to MP hiccups."* Full write-up: **`phases/phase-12-orphan-processes.md`**. + +**The terminal half was real, and is fixed.** Every launcher's `:btwait` loop polled +`tasklist /FI "IMAGENAME eq btl4.exe"` — **machine-wide**. Proved on the rig: a bat that launched +*nothing* keeps spinning while an unrelated instance lives. So a second client, your own operator +pod, or any orphan hangs every join window, it never prints its sign-off, and it reads as "the game +didn't exit" — which is what makes people start killing processes and creating real ghosts. Fixed +by snapshotting the PIDs alive before the launch and waiting only on ones absent from it. + +**The orphan half did NOT reproduce on 600.** Closing the main window exits cleanly in ~1 s during +solo model-load, in the relay join wait, and after a real console launch — relay logs the seat +freed, nothing relaunches. The orphans the playtesters saw match 584 and earlier, where every close +relaunched. That fix is already in 600 and still needs a live night. + +**On the MP-hiccup theory:** the mechanism is real *if* an orphan exists — it keeps both relay TCP +connections `Established`, so the relay counts a pilot who never readies and the seat-left grace +never starts, which looks exactly like "waiting for mission assignment" forever. Since no orphan +could be produced from a close on 600, the live contributor is more likely the `:btwait` bug above. + +### ⚠️ What this means for the release +The launcher fix is **at HEAD but not in `dist\BT411_4.11.600.zip`**. To ship it: rebuild, re-run +`python tools/mkdist.py`, re-verify, and bump the version in the release notes. Otherwise post 600 +as-is — the fix rides the next cut. **Your call; I did not re-cut.** + +### One thing still unverified +The `:btwait` logic is verified 4/4 (including the regression guard: nothing running must still +sign off, or it would spin forever with nothing to wait for), and the patched bat still launches. +But the **full handoff E2E was never exercised** — the bat blocks on the FE menu, which waits for a +human, so automation never reaches the loop. One manual run closes this: run `join.bat`, play, +close the game, and confirm the window prints "The game has exited" while another btl4 is running.