wireframe 0.3.0

Simplify building servers and clients for custom binary protocols.
Documentation
Feature: Client message API with correlation identifiers
  The client provides async send, receive, and call APIs that encode Message
  implementers, forward correlation identifiers, and deserialize typed responses.

  Background:
    Given an envelope echo server

  Scenario: Client auto-generates correlation ID when sending envelope
    Given an envelope without a correlation ID
    When the client sends the envelope
    Then the envelope is stamped with an auto-generated correlation ID

  Scenario: Client preserves explicit correlation ID when sending envelope
    Given an envelope with correlation ID 42
    When the client sends the envelope
    Then the returned correlation ID is 42

  Scenario: Client call_correlated validates response correlation ID
    Given an envelope without a correlation ID
    When the client calls the server with call_correlated
    Then the response has a matching correlation ID
    And no correlation mismatch error occurs

  Scenario: Client detects correlation ID mismatch
    Given an envelope without a correlation ID
    And a server that returns mismatched correlation IDs
    When the client calls the server with call_correlated
    Then a CorrelationMismatch error is returned

  Scenario: Client generates unique correlation IDs for sequential requests
    When the client sends 5 sequential envelopes
    Then each envelope has a unique correlation ID

  Scenario: Client round-trips multiple message types
    Given an envelope with message ID 1 and payload "hello"
    When the client calls the server with call_correlated
    Then the response contains the same message ID and payload