Files
BT411/scratchpad/night15/night15_batch.py
T

236 lines
12 KiB
Python

import sys
sys.path.insert(0, r"C:\git\bt411\scratchpad\night7")
import gitea
V = "**Field-verified on 4.11.883, playtest night 15 (2026-08-10, 8-player steam lobbies):** "
# ------------------------- CLOSES (Oracle: Pass) -------------------------
gitea.comment(149, V + "Oracle: **'#149 Pass'** -- and at first touch: *\"quick "
"launch in glass butter smooth frame rate.\"* The dirty-skip fix holds "
"under a full 8-player night. Closing the performance regression.")
gitea.close(149)
gitea.comment(150, V + "Oracle: **'#150 Pass -- We tested with missiles "
"exclusively as well as direct fire.'** Kill credit is now exactly +1 "
"per kill. Closing. ⚠ The DEATH side of the scoreboard failed the same "
"night (multi-counted deaths, no -500 penalty) -- that is a separate "
"defect, filed fresh with tonight's evidence (see the new death-tally "
"ticket).")
gitea.close(150)
gitea.comment(69, V + "Oracle: 'Pass -- Denkou is correct spelling' (era "
"witness). Closing.")
gitea.close(69)
gitea.comment(71, V + "Oracle: Pass. RajelAran at first touch: *\"plasma "
"window looks good, close minimizes and can restore.\"* Closing.")
gitea.close(71)
gitea.comment(39, V + "Oracle: Pass -- no input reaches the sim before the "
"scene presents. Closing.")
gitea.close(39)
gitea.comment(56, V + "Oracle: Pass -- MFD buttons stayed aligned through the "
"night. Closing (#50 was already folded into #155).")
gitea.close(56)
gitea.comment(25, V + "Oracle: Pass -- the Turn binding channel works on "
"pads. Closing.")
gitea.close(25)
gitea.comment(24, V + "Oracle: Pass -- no stuck hat/look views tonight. "
"Closing; reopen if any controller re-latches.")
gitea.close(24)
# ------------------------- FAIL updates (stay open) -----------------------
gitea.comment(27, V + "Oracle: **'#27 Fail -- still spreading damage to "
"multiple panels with both Gauss and AFCs.'** Note the DISTINCTION: the "
"original defect here was damage TYPE (ballistic scored as explosive) -- "
"that fix was verified empirically and stands. What Oracle observed is "
"the SPREAD, which is #112 (AFC rounds shotgun across zones) now "
"confirmed to cover Gauss too. Keeping this open until a retest can "
"separate type from spread cleanly; #112 gets tonight's confirmation.")
gitea.comment(112, V + "Oracle confirms the shotgun spread persists on 883 "
"and extends to **Gauss** as well as AFCs (single slugs spreading "
"damage across multiple panels). Bumping priority -- this now distorts "
"ballistic feel for two weapon families.")
gitea.comment(38, V + "Oracle: **Fail, with the repro finally precise** -- "
"*\"Only host initially spawns with the correct mech, badge and patch "
"color. Everyone else initially spawned with their chosen mech color "
"but a red patch and VGL badge. Host appears correct to others and "
"self. Nothing changed when respawning.\"* So: mech COLOR replicates "
"for everyone; BADGE + PATCH fall back to defaults (lgo6/red) for every "
"non-host player, persistently. That points at the egg/paint codes "
"reaching only the host's instance -- the [paint] lines in tonight's "
"four staged logs should show exactly which codes each node resolved.")
gitea.comment(128, V + "Oracle: **'Fail -- happens every single time I "
"collide with terrain at speed, needs to be at some minimum speed. "
"Confirmed.'** Deterministic above a speed threshold. Stays high on "
"the list.")
gitea.comment(135, V + "Oracle: Fail -- still live. Plus a new edge-staleness "
"detail from tonight: *\"Loop 6 leak indication and alarm stopped after "
"some time, but buttons on loops keep flashing even after alarms went "
"silent. After ~1 minute loop 3 button stopped flashing. Loop 6 NEVER "
"stopped.\"* So the flash state can outlive the condition -- edge "
"consistency between alarm, button flash, and leak state is part of "
"this ticket now.")
gitea.comment(136, "Oracle's 'Clarify' from the sweep got answered by a live "
"case tonight (Rajel, 21:10 ET, Sunder LRM10 loop): leak ALARMED -> "
"loop turned OFF -> re-OPENED: **no alarm despite a 3-triangle leak** "
"-> off and on again -> alarmed. So the re-arm of the leak alarm on "
"loop-reopen is inconsistent -- one cycle silent, next cycle correct. "
"That is the repro to chase.")
gitea.comment(102, "Night-15 note (Lynx): *\"possible issue getting out of "
"reverse -- monitor\"* -- adjacent to this ticket's run/reverse "
"transition; logging it here so the reports accumulate in one place.")
# ------------------------- NEW TICKETS ------------------------------------
r = gitea.call("/issues", "POST", {"title":
"DEATH tally multi-counts (up to +6 at once) and the -500 death penalty "
"is not applied -- 883, 8-player night",
"body":
"**The night-15 headline.** Kill credit is fixed (#150 passed) but the DEATH "
"side of the scoreboard is broken, badly:\n\n"
"- Sauron: *\"getting 2 deaths each time he died\"* -- consistent, every death.\n"
"- Elengil's death count *\"way off\"*; Greywolf captured the moment a single "
"death took the counter to 12 (screenshot in Discord).\n"
"- Oracle's summary: *\"Multiple death behavior is not consistent... even "
"awarded 6 deaths at once.\"*\n"
"- Rajel's scoreboard screenshot: *\"the math, uh, ain't mathing.\"*\n"
"- Oracle + Lynx independently: **\"Deaths did not detract 500 points\"** -- "
"the deathPenalty never applies (it demonstrably worked before: the -499 "
"eject arithmetic on night 14 required it).\n\n"
"**Shape analysis:** +6-at-once in an ~8-player lobby smells like "
"once-per-PEER counting -- each node's copy of the death emitting its own "
"increment, so the count scales with lobby size (2x in small matches, ~6x "
"in the big one).\n\n"
"**Regression flag (honest):** 883 is the first fielded build with the #150 "
"report gates (46ff8dd: report tail master-only + once-per-death latch). "
"Kills went from doubled to exact; deaths went from correct-ish to "
"multi-counted with no penalty. The death/score chain (VehicleDead / "
"PLAYER_DEAD / deathPenalty application) must be audited against the "
"binary's authority model the same way the kill chain was -- including "
"whether the penalty application rode a path the new gate severed.\n\n"
"**Evidence staged (scratchpad/night15/):** four day logs (Dave/SCREECH, "
"rajel/GAMERSLAB, acaci/ZEUS, Michael/XIAOLONG) with SCORE/DEATH receipt "
"lines, plus two matchlogs (Elengil's 21:36 round, Lynx's 22:36 round) -- "
"matchcheck.py reconciliation is the first move. Elengil's and Conn Man's "
"day logs still need re-downloading (their zips did not land).\n\n"
"Priority: NEXT INVESTIGATION."})
n_death = r["number"]
r = gitea.call("/issues", "POST", {"title":
"Mission end leaves players FROZEN in the ended mission; separate "
"hang-on-exit (host and non-host) -- 3 reporters, 883",
"body":
"Three occurrences on night 15:\n"
"- 21:41 ET: Conn Man *\"remained in the game after the mission ended, "
"frozen view of how the game ended.\"*\n"
"- 22:48 ET: same for Greywolf AND Lynx at mission end.\n"
"- Lynx: *\"BTL4 hang on exit, hosting\"* (screenshot); Conn Man also had "
"one exit hang requiring Task Manager.\n\n"
"So two shapes, possibly one root: (a) the round-end transition never "
"fires for some players (left standing in the dead world instead of the "
"exit-to-menu flow), and (b) the process hangs at exit. NOT the old #93 "
"(that was an access-violation crash class, closed as aged out) -- these "
"are hangs/no-transitions under the 8-player steam shape.\n\n"
"Evidence: the staged night-15 logs cover Lynx's hosted round (matchlog "
"22:36) -- the mission-end ladder (StopMission -> RunMissions return -> "
"relaunch) on each machine is the place to diff. Conn Man's log still "
"needs collecting (his zip did not land; note his log rolled to "
"steam_20260810.1.log)."})
n_frozen = r["number"]
r = gitea.call("/issues", "POST", {"title":
"Persistent 'hanging laser beam' attached to own mech's legs, moves "
"with rudder, persists until death (Conn Man, 2 games, 883)",
"body":
"Conn Man, two games: *\"a hanging laser beam. It would persist until I "
"would die. Not sure if it is mine, or from someone else's shot. The beam "
"seemed to be attached to my legs and would move with my rudder inputs.\"* "
"Screenshots in Discord.\n\n"
"A beam visual whose lifetime never expires and whose origin is bound to a "
"mech segment (legs, riding the yaw input) -- beam lifecycle/attachment "
"bug, likely replication-side (he could not tell whose shot it was). "
"Death (entity rebuild) clears it.\n\n"
"His log is still to be collected (zip did not land). Peers' logs from the "
"same rounds are staged."})
n_beam = r["number"]
r = gitea.call("/issues", "POST", {"title":
"X'd-out (destroyed) energy weapons can still FIRE -- animation "
"replicates to peers (Rajel, 883)",
"body":
"Rajel, 23:28 ET, Standard mode: *\"ER PPC, ERS on left arm, ERS on right "
"arm. Weapons could still be fired even though x'd out. The weapon "
"animation is displayed to other players when fired and possibly did no "
"damage to the target mech, we didn't fire enough times.\"*\n\n"
"The destroyed-weapon fire gate was fixed and A/B-verified in 5410371 "
"(#86: both fire gates read the never-written Destroyed cell). Either "
"this regressed, or the X'd-out state he saw is a DIFFERENT condition "
"than the Destroyed cell the gates read (e.g. unpowered/unavailable "
"level-7 -- #30's remainder). Need his log's fire/damage receipts for "
"those weapons to tell which."})
n_xfire = r["number"]
r = gitea.call("/issues", "POST", {"title":
"Weapon-ready desync: MFD full green vs HUD not-ready; LRM10 refused "
"to fire until a round was ejected (Oracle, 883)",
"body":
"Oracle: *\"LRM 10 displayed as ready on the MFD (full green circle). HUD "
"showed weapon not ready and it would not fire. Had to eject a round to "
"get it to fire.\"*\n\n"
"So three state consumers disagreed: MFD said ready, HUD said not-ready, "
"fire gate agreed with the HUD -- and the AMMO-EJECT path cleared the "
"condition (jam semantics: ejecting the chambered round clears a jam). "
"Likely the MFD ready-circle reads a different cell than the HUD/fire "
"gate (the #30 weapon-state presentation remainder, now with a field "
"repro). The eject-clears-it detail says the underlying state was a JAM "
"the MFD failed to show."})
n_ready = r["number"]
r = gitea.call("/issues", "POST", {"title":
"Reticle lock circle absent on ALL target mechs for a stretch "
"(Oracle, 23:32 ET, 883) -- monitor",
"body":
"Oracle: *\"At 10:32PM I had no reticle circle appear on any target "
"mechs.\"* One stretch, one session, after the #131 per-frame lock-ring "
"fix was verified earlier in the night. Distinct from #147 (range caret). "
"Monitor-class until it recurs; his log for that window is staged "
"(Dave/SCREECH-PC)."})
n_ret = r["number"]
r = gitea.call("/issues", "POST", {"title":
"ERA QUESTION + table check: AFC50 lands armor damage beyond LRM "
"range -- authentic 4.10 ranges?",
"body":
"Oracle, 21:14 ET: *\"Firing AFC50 from Avatar scoring confirmed hits with "
"armor damage on Elengil out to beyond LRM range on the range scale.\"*\n\n"
"Question: does the 4.10 weapon table give the AFC50 a max range beyond "
"the LRM's? Verifiable directly from the decomp weapon data (range "
"fields) -- if the table says yes, this is authentic and closes; if not, "
"projectile range enforcement needs a look. Era witnesses' memory of AC "
"vs LRM reach also welcome."})
n_afc = r["number"]
r = gitea.call("/issues", "POST", {"title":
"Lobby screen UI: leave-lobby button clipped at bottom edge; host "
"lobby cluttered at 8 players (Lynx, 883)",
"body":
"Two cosmetic-but-real lobby items from the first 8-player night:\n"
"1. *\"On lobby screen the leave lobby button is cut off at the bottom "
"edge of the window (half shown).\"*\n"
"2. Lynx's screenshot: *\"8 player lobby host clutter\"* -- the host view "
"does not lay out cleanly at 8 members.\n\n"
"The menu window is fixed-size; 8-player rosters need either a taller "
"client rect or tighter row layout."})
n_ui = r["number"]
print("created:", n_death, n_frozen, n_beam, n_xfire, n_ready, n_ret, n_afc, n_ui)