|
Some checks are pending
CI Benchmark - Fusion Loop Timing / Fusion Loop Timing Benchmark (push) Waiting to run
spaxel-sim computed good corner/perimeter geometry in createVirtualNodes but the hello message sent on WebSocket connect did not include position, so the mothership never learned the sim node's location and the fleet registry/DB row was left at the nodes-table schema default (0,0,1) — co-located with every other node. Both sim CLIs (cmd/sim and mothership/cmd/sim) now announce pos_x/pos_y/pos_z in the hello handshake, sourced from createVirtualNodes. HelloMessage gains PosX/PosY/PosZ as *float64 (not plain float64) so an absent position is distinguishable from a genuine (0,0,0): a real ESP32 omits these in hello (its position is user-placed in the dashboard), whereas spaxel-sim announces its computed geometry. The connect/register path (server.HandleNodeWS -> FleetNotifier.OnNodeConnected -> fleet.Manager) now carries the announced position through. The Manager persists it via registry.SetNodePosition only when all three axes are present, so a nil/partial announcement preserves any existing user-placed position rather than clobbering it. The position then flows onward to the fusion engine through the bf-3p6g connect/register sink (ForwardNodePosition -> nodePositionSink -> fusionEngine.SetNodePosition), so a freshly connected sim node is seeded at its announced location instead of (0,0,1). The FleetNotifier interface change (OnNodeConnected gains three *float64 params) is propagated to every implementer — Manager (persists), FleetHealer and SelfHealManager (read geometry from the registry, ignore), the guided- troubleshoot notifier (tracks connect/disconnect only), and the cmd/mothership multiFleetNotifier fan-out. Tests: existing OnNodeConnected call sites updated to the new signature. TestManagerOnNodeConnectedPersistsHelloPosition asserts a node connecting with an announced position yields a registry row whose pos differs from (0,0,1) and matches the sent coordinates, and that the same coordinates reach the fusion engine. TestManagerOnNodeConnectedWithoutHelloPositionPreservesExisting asserts the real-ESP32 case (nil announce) and partial-announce both leave an existing user-placed position untouched. Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| go.mod | ||
| go.sum | ||
| main.go | ||