Commit Graph
1 Commits
Author SHA1 Message Date
arcattackandClaude Opus 5 05f1ffb194 verify the parked-relay/remote-console path END TO END (it works; 15/15)
The operator asked whether the console is actually set for the parked-relay
deployment or whether I was just vouching for earlier work.  Honest answer was
that prior verification was unit-level (relay log lines fed to an offscreen
widget) plus LOCAL-relay rig cycles -- the remote path had never been driven for
real.  Now it has:

  parked relay (standalone btconsole.py, cwd=content, all interfaces)
    + 2 real pods dialling in
    + the REAL operator GUI in REMOTE mode over a real TCP control socket

15/15, twice, with clean teardown.  Proven: AUTH; the relay REGISTERS both pods;
the GUI adopts the roster and lights the seats; LAUNCH / END MISSION / Re-arm all
ENABLE over the remote link (the exact things that were broken before today);
LAUNCH really reaches the pods (RunMission pair) and END MISSION really stops
them; mission settings cross the wire and rewrite the relay's OWN egg
(map=cavern time=night weather=soup verified in the relay log); and the parked
relay SURVIVES the operator disconnecting -- the property the whole deployment
depends on.

A LAN address is used deliberately, not loopback: btoperator treats
localhost/127.0.0.1 in the relay-host field as LOCAL mode, so a loopback test
would have silently exercised the wrong code path and proved nothing.

Three defects found in my own harness on the way, all fixed here (none in the
product):
  1. Pods announced BT_SELF on the LAN address while FOGDAY.EGG's roster lists
     127.0.0.1:1502/1602 -- seat identity mismatch, so they took the egg and
     closed.  The relay was RIGHT to refuse: "LAUNCH pressed but NO players are
     seated yet".  Pods now announce the address the egg's roster lists.
  2. The roster assertion counted EGG-CONFIGURED callsigns (always present) and
     would have passed with zero live players.  It now counts the relay's own
     REGISTERED lines.
  3. The relay's `set` really rewrites its egg -- pointed at a TRACKED file it
     dirtied content\FOGDAY.EGG (caught by git status, restored with git
     checkout).  The test now runs on a throwaway copy and deletes it.
  Also: cleanup now walks the PROCESS TREE, because btl4's front-end relaunches
  itself for the mission, so the surviving pod is a CHILD of the spawned PID --
  killing only our own handles left a live pod holding its log open.  Still
  PID-only, never by image name.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-26 18:31:27 -05:00