Goal
Capability negotiation + heartbeat + ack — foundation v1.1 features that everything else negotiates against.
Scope
enum Feature: string (9 cases)
CapabilitySet value object with intersect() and supports()
AgentInventory + AgentEntry with fromFlat() v1.0 compat path
- Hello/welcome carry
features and rich agents shape
session.ping / session.pong
HeartbeatLoop via Revolt\EventLoop::repeat(), 2× silence → HeartbeatLostException
session.ack { last_processed_seq }; EventLog::evictUpTo($seq)
UnnegotiatedFeatureException (library-internal)
CapabilityNegotiationTest, HeartbeatTest, AckTest
- Samples:
samples/heartbeat/, samples/ack-backpressure/
- Diagrams:
capability-negotiation.dot, heartbeat-flow.dot, ack-flow.dot
docs/concepts/heartbeats.md, docs/reference/capabilities.md
MIGRATION-v1.1.md first cut
Spec §
§6.2, §6.4, §6.5
Gate
Phase 07 §3.1, §3.2, §3.9 tests pass. composer conformance adds rows for §6.2, §6.4, §6.5; all pass.
Goal
Capability negotiation + heartbeat + ack — foundation v1.1 features that everything else negotiates against.
Scope
enum Feature: string(9 cases)CapabilitySetvalue object withintersect()andsupports()AgentInventory+AgentEntrywithfromFlat()v1.0 compat pathfeaturesand richagentsshapesession.ping/session.pongHeartbeatLoopviaRevolt\EventLoop::repeat(), 2× silence →HeartbeatLostExceptionsession.ack { last_processed_seq };EventLog::evictUpTo($seq)UnnegotiatedFeatureException(library-internal)CapabilityNegotiationTest,HeartbeatTest,AckTestsamples/heartbeat/,samples/ack-backpressure/capability-negotiation.dot,heartbeat-flow.dot,ack-flow.dotdocs/concepts/heartbeats.md,docs/reference/capabilities.mdMIGRATION-v1.1.mdfirst cutSpec §
§6.2, §6.4, §6.5
Gate
Phase 07 §3.1, §3.2, §3.9 tests pass.
composer conformanceadds rows for §6.2, §6.4, §6.5; all pass.