fix: preserve unbounded heartbeat compatibility

Merged
KH
2mo ago
+19-7

Summary

  • keep nullable node.heartbeat.load decoding in place for the coordinated Relaycast rollout
  • temporarily emit legacy numeric load: 0 when max_agents == 0, so deployed Relaycast engines accept the whole heartbeat
  • add a producer serialization regression test covering load and active_agents
  • correct the changelog: remove the unshipped claim from 11.4.2 and describe the compatibility fix under Unreleased

Root cause

Relay #1445 began omitting load for unbounded providers. Fleet E2E pins Relaycast v6.0.1, which rejects heartbeats without a numeric load. Spawn and brief delivery still complete, but the entire heartbeat is discarded, so active_agents and load never update. This is the same wire-contract boundary addressed by Relaycast PR #307; it is a product compatibility defect, not a stale harness assertion.

The decisive comparison used the same local Node 22.14.0, Relaycast commit 58a9342, and release broker build:

  • 1ae49812 (post-#1464, pre-#1445): Fleet E2E exit 0, 14/14 passed
  • 0b43dbe3 (post-both): Fleet E2E exit 1, 12/14 passed; five-agent heartbeat and least-loaded placement both timed out with last=null

Validation

  • patched Fleet E2E against pinned Relaycast v6.0.1: 3 consecutive passes / 0 failures, exit codes 0, 0, 0, 14/14 each
  • full broker suite: exit 0; 868 unit tests passed, 4 ignored; all broker integration tests passed
  • focused heartbeat tests: exit 0; 5 passed
  • cargo fmt --all -- --check: exit 0
  • git diff --check: exit 0

Release sequencing

Relaycast PR #307 must merge and deploy before Relay can safely switch unbounded heartbeat load back to omitted/null. Until then, numeric emission preserves active-agent and liveness updates across currently deployed engines without weakening Fleet E2E.