{
  "protocolVersion": "v1",
  "fixtureSet": "version",
  "fixture": "field-registry",
  "description": "The frozen v1 negotiation envelope. Registration and heartbeat both carry it. Any top-level field not listed here is unknown and is discarded after acceptance.",
  "envelope": "AgentProtocolNegotiation",
  "supportedMajorVersions": [1],
  "protocolVersionPattern": "^v[1-9][0-9]{0,3}$",
  "unknownFieldPolicy": "accept-and-discard",
  "unknownCapabilityPolicy": "discard",
  "fields": [
    {
      "name": "protocolVersion",
      "requiredness": "required",
      "type": "string",
      "default": null,
      "note": "Major version only. The minor and patch level of an agent is not negotiated."
    },
    {
      "name": "agentVersion",
      "requiredness": "optional",
      "type": "string",
      "default": null,
      "note": "Informational. Connect never compares it for equality with its own version and never gates behavior on it."
    },
    {
      "name": "capabilities",
      "requiredness": "optional",
      "type": "array",
      "default": [],
      "note": "Unordered token set. A capability an operation requires but the device did not report fails that operation with a structured result, not the connection."
    }
  ]
}
