# ECP-0057: Direct-Publish Session Reconnect + Busy Listing Semantics

Status: Draft

## Problem

`ec-node direct-publish` (direct WebRTC + CMAF over DataChannel) is currently a 1:1 stream.

Two concrete issues hurt reliability:

1. Directory entries can remain visible while a session is already connected, causing new viewers to
   click "Watch" and silently fail.
2. If a viewer disconnects (reload, laptop sleeps, etc), the publisher has no way to accept a new
   viewer without restarting the process.

## Proposal

- Make `direct-publish` a session loop:
  - Create a fresh PeerConnection offer.
  - Announce it to the directory.
  - Wait for one answer.
  - Stream until send fails / ffmpeg ends.
  - Restart with a new offer.
- Once a session is connected, stop refreshing announcements and quickly expire the directory entry
  (so the directory reflects joinable streams only).

This preserves the current 1:1 nature while making reconnection and "send a link" behavior much
more robust.

## Non-Goals (For Now)

- True 1:many fanout / relaying for direct streams.
- Multi-viewer, simultaneous subscriptions to the same publisher connection.

