# ADR-0005: Protocol-Specific Connection Pumps

Status: Accepted

## Context

The existing Connection implementation is M1-specific
(CRLF framing, checksums, opcode correlation).

E27 requires different framing, encryption, and correlation semantics.

## Decision

Each protocol uses its own connection / IO pump.

- M1 continues using its existing connection logic.
- E27 implements a dedicated pump.
- Pumps emit semantic lifecycle events upward.

## Rationale

Attempting to unify transport semantics would weaken correctness
and introduce conditional complexity.

## Consequences

- Shared logic exists only above the pump boundary.
- Liveness and reconnect policies are backend-owned.

## Scope / Non-Goals

- Does not define socket implementation details.
- Does not unify M1 and E27 IO behavior.

## References

- elkm1_lib/connection.py
