37 lines
2.5 KiB
Python
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"))
|