{
  "protocol": "AMT_CLIENT_V2",
  "version": 2,
  "extension_version": "0.8.0.17-037-VEH-RUNTIME-REV-V1",
  "status": "samp037-vehicle-runtime-revision-rebind-session-capability-character-weapon-vehicle-multi-instance",
  "client_modes": {
    "legacy": "Normal samp.exe; no AMTClient injection; GTA fallback models.",
    "full": "GTA AMT Launcher injects managed SA-MP 0.3.7 R1/R3-1 and AMTClient.asi for this process only."
  },
  "hello": {
    "fields": [
      "session_protocol",
      "session_nonce"
    ],
    "transport": "AUTO_VERSIONED_SESSION_CAPABILITY_VIA_SAMP_CINPUT_SEND_WITH_HS_ACK; MANUAL_/lpoc_hello_DEBUG_FALLBACK",
    "behavior": {
      "client_send": "AMTClient sends /lpoc hello <protocol> <session_nonce> automatically after local SA-MP session becomes valid",
      "server_ack": "@AMT|HS|<protocol>|<echoed_nonce>|<server_token>",
      "ack_validation": "client accepts only matching protocol + current session nonce; stale/mismatched HS is ignored",
      "bridge_reset": "@AMT|RS|<server_token> resets Launcher assignment snapshots after handshake ACK",
      "server_effect": "mark viewer FULL + replay current Weapon/Character/Vehicle assignments",
      "reconnect": "new/invalidated player-pool session generates a new nonce and re-arms handshake automatically",
      "manual_debug": "exact /lpoc hello remains available as visible debug fallback"
    }
  },
  "capabilities": {
    "bit_0": "custom_character",
    "bit_1": "vehicle_visual_per_instance",
    "bit_2": "weapon_visual_per_instance",
    "bit_3": "vehicle_handling_profile"
  },
  "messages": {
    "vehicle_visual_assign": [
      "vehicle_runtime_id",
      "base_model",
      "visual_id",
      "stat_id"
    ],
    "vehicle_visual_clear": [
      "vehicle_runtime_id"
    ],
    "weapon_visual_assign": [
      "player_id",
      "weapon_id",
      "visual_id",
      "stat_id"
    ],
    "weapon_visual_clear": [
      "player_id",
      "weapon_id"
    ],
    "character_visual_assign": [
      "player_id",
      "base_skin",
      "visual_id"
    ],
    "character_visual_clear": [
      "player_id",
      "base_skin"
    ]
  },
  "authority": {
    "ownership": "server",
    "visual_assignment": "server logical state",
    "stats": "server",
    "rendering": "AMTClient extension",
    "legacy_fallback": "base GTA model"
  },
  "samp_037_compatibility": {
    "supported_builds": [
      "0.3.7-R1",
      "0.3.7-R3-1"
    ],
    "selection": "PE entrypoint profile; unsupported builds disable visual hooks safely"
  },
  "vehicle_assignment_v1": {
    "transport": "@AMT|VP|... captured in-process by AMTClient -> PID-scoped ingress pipe -> Launcher state -> PID-scoped Direct IPC VP; chatlog + atomic file fallback",
    "key": "SA-MP vehicle runtime ID",
    "base_model": 411,
    "visual_id": 1001,
    "stat_id": 2001,
    "multi_vehicle": true,
    "late_join": "replayed automatically after production session capability handshake",
    "legacy": "stock clients keep model 411",
    "runtime_revision": "the existing per-viewer assignment seq is treated as an entity-binding revision; seq change while active forces client remap/reset of cached node bindings",
    "coalesced_clear_safety": "if a clear followed by reassign is collapsed to only the latest snapshot, the newer seq still forces a rebind"
  },
  "transport_v1": {
    "phase": "production-session-capability-plus-server-ingress-direct-plus-launcher-to-amtclient-direct-ipc",
    "primary_ingress": "SA-MP CChat::AddMessage direct-call hook forwards only @AMT control lines to PID-scoped local named pipe",
    "ingress_pipe": "\\\\.\\pipe\\GTA_AMT_IN_{game_pid}",
    "primary_egress": "Launcher worker serves PID-scoped Windows named pipes",
    "pipe_names": {
      "weapon": "\\\\.\\pipe\\GTA_AMT_WP_{game_pid}",
      "character": "\\\\.\\pipe\\GTA_AMT_CP_{game_pid}",
      "vehicle": "\\\\.\\pipe\\GTA_AMT_VP_{game_pid}"
    },
    "fallback": "SA-MP chatlog ingress and atomic runtime snapshot files remain enabled; sequence de-duplication prevents double-apply",
    "security_scope": "local machine, PID-scoped endpoint names; no network listener/port"
  }
}
