More Reliable Heartbeats, Run Activity, and Site Pushes

Heartbeat retries no longer deadlock, active runs recover from empty states more gracefully, and heavier site pushes are handled more reliably.

This release tightened three places where users could lose confidence for the wrong reason: recurring work that looked healthy when it was not, run views that looked empty when work was active, and site pushes that could stall on heavier publishes.

Heartbeats Recover More Honestly

Recurring agents are now better at recovering from failure instead of getting trapped in a state that looked healthy from the outside.

  • Failed heartbeat work can retry without deadlocking the whole cadence
  • Agents that have never actually succeeded are surfaced more honestly, instead of looking healthy just because the next expected time kept moving
  • Silent notification failure paths were tightened up, so follow-up alerts are less likely to disappear quietly

Live Runs Are Less Likely To Look Blank

Run inspection is steadier when you return to work that is already in motion.

  • Active runs no longer get stuck on a permanent "No output yet" state after an unlucky empty fetch
  • Latest-output anchoring is stronger, which makes long logs easier to rejoin near the part that matters
  • Realtime reconnect behavior is more forgiving, so activity streams feel less fragile during longer sessions

Larger Site Pushes Land More Reliably

Publishing larger agent-built sites is now less likely to fail for reasons unrelated to the actual site content.

  • Slow pushes are handled off the request path, which reduces timeout risk on heavier publishes
  • Repeated pushes to the same site are serialized more safely, which cuts down on collision-driven flakiness
  • Site publishing feels steadier overall, especially when a push needs more backend work before it can be committed cleanly