From cb50a1d4911bc89bcee3eab756f7a172a658c8ea Mon Sep 17 00:00:00 2001 From: arcattack Date: Sat, 25 Jul 2026 08:22:08 -0500 Subject: [PATCH] Gitea #48: add BT_NO_PILOTLIST=1 -- make the operator's comms hypothesis decidable The operator reports consistently, across two sessions, that the MFD artifacts began the night the Comm pilot list was enabled (#43) and were never seen before. Four static theories of mine died -- plane masks (all 7 primitives invert correctly), L4GraphicLamp (never instantiated, dead code), the sec-port lamps (wrong plane AND wrong colour, operator confirmed on sight from the decoded art), vertBar/VertTwoPartBar (clamps every value, sets its cursor per draw). And no rig reproduces it: not 2 pilots, not 5 pilots on last night's exact roster, not autofire + repeated valve moves. So stop theorising and make the field observation decidable: BT_NO_PILOTLIST=1 makes PilotList::Execute draw nothing, everything else untouched. artifacts gone with it / present without => confirmed, and it is the workaround artifacts either way => not the pilot list Diagnostic only, default OFF. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_0166KTsC7ADm7VXEi1HF1jNg --- game/reconstructed/btl4gau3.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/game/reconstructed/btl4gau3.cpp b/game/reconstructed/btl4gau3.cpp index f5bf3b0..10fea2e 100644 --- a/game/reconstructed/btl4gau3.cpp +++ b/game/reconstructed/btl4gau3.cpp @@ -454,6 +454,38 @@ void void PilotList::Execute() { + // + // FIELD A/B SWITCH for Gitea #48 (`BT_NO_PILOTLIST=1`). The operator reports + // -- consistently, across two sessions -- that the MFD artifacts began the + // night the Comm pilot list was enabled (#43) and were never seen before it. + // Four static theories of mine died (plane masks, L4GraphicLamp = dead code, + // the sec-port lamps = wrong plane/colour, vertBar = properly clamped), and + // no rig has reproduced the artifact: not 2 pilots, not 5 pilots, not + // autofire + valve moves. So stop theorising and make the operator's own + // hypothesis DECIDABLE in the field: set this and the pilot list draws + // nothing at all, while everything else is untouched. + // + // artifacts GONE with it set, PRESENT without => this widget, confirmed, + // and this is the workaround + // artifacts appear EITHER WAY => not the pilot list; the + // correlation was timing + // + // Diagnostic only, default OFF -- nothing changes unless the gate is set. + // + { + static int s_off = -1; + if (s_off < 0) + { + const char *e = getenv("BT_NO_PILOTLIST"); + s_off = (e != NULL && *e != '0') ? 1 : 0; + if (s_off) + DEBUG_STREAM << "[score] BT_NO_PILOTLIST=1 -- the Comm pilot " + "list is DISABLED (Gitea #48 A/B)\n" << std::flush; + } + if (s_off) + return; + } + void *local = BTResolveRosterPilot(0); // slot-0 (local) pilot gates the body { static int s_pl = 0;