Files
BT411/scratchpad/night6/file_skate.py
T

37 lines
2.5 KiB
Python

"""File the skating-limp-on-peers bug."""
import base64
import json
import subprocess
import urllib.request
REPO = r"C:\git\bt411"
BASE = "https://gitea.mysticmachines.com/api/v1/repos/VWE/BT411"
out = subprocess.run(["git", "credential", "fill"],
input="protocol=https\nhost=gitea.mysticmachines.com\n\n",
capture_output=True, text=True, cwd=REPO)
cred = dict(l.split("=", 1) for l in out.stdout.strip().splitlines() if "=" in l)
AUTH = "Basic " + base64.b64encode(
(cred["username"] + ":" + cred["password"]).encode()).decode()
def call(method, path, payload=None):
data = json.dumps(payload).encode() if payload is not None else None
r = urllib.request.Request(BASE + path, data=data, method=method)
r.add_header("Authorization", AUTH)
r.add_header("Content-Type", "application/json")
return json.load(urllib.request.urlopen(r))
TITLE = "Peers see a limping mech as SKATING (no limp gait on the replicant; first-person limp correct)"
BODY = """**Field report (2026-07-29 night, build 4.11.641, Steam MP):** Elengil took leg damage; in his cockpit the limp animation, speed drop, and the "reverse disabled" voice were all correct (Elengil: "Audio prompt for leg was GREAT"). To every OTHER pod his mech appears to be **skating** -- sliding at limp speed without the limp gait. Full stop + restart does not clear it (SAURON, Elengil confirmed; also visible in 3rd person for peers only).
**Diagnosis direction:** the peer self-simulates gait from replicated speed; its gimp routing gates on the REPLICANT's graphicAlarm being 3/4 (`BTMechGimpLevel` in the mech4 peer branch). The mechanical state (speed) replicates; the ANIMATION routing state apparently does not reach bystander replicants -- either the replicant's leg-threshold evaluation never runs on nodes that receive zone damage via records rather than TakeDamage messages, or the demand/state mismatch parks the replicant machine (Standing while sliding = the skate).
**Repro bench:** `scratchpad/night6/mp_skate.sh` -- two local nodes; A limps while auto-walking, B's log shows what its replicant knows ([gimp-eval] presence, [animind] inst=1 state sequence: 22-27 = limping, walk states or 0 while moving = the skate).
Related: #81 (zombie wreck on respawn -- also a replicant visual-state drop; likely the same family: master-local visual state not re-derived on peers)."""
r = call("POST", "/issues", {"title": TITLE, "body": BODY})
print("filed #%s" % r.get("number"))