# Audio Session Ingress
`kcode-audio-session-ingress` coordinates the application-level handoff from
durable completed `kcode-audio-ingress` transcripts into
`kcode-session-history`.
`kcode-audio-ingress` remains the sole owner of original audio, transcription
processing, retries, and completed transcripts. `kcode-session-history` remains
the sole owner of session lifecycle and persistence. This library owns no
persistence and contains no HTTP behavior.
The cloneable `Coordinator`:
- submits and exposes recordings only for its configured application user;
- projects recording and transcript-piece state across the two owners;
- splits completed transcripts into pieces bounded to one quarter of the
configured effective ingress context window;
- assigns deterministic `audio:<recording-id>:<piece-index>` idempotency
identities;
- binds every identity to versioned segmentation metadata, the effective
context configuration, and a piece fingerprint;
- submits missing pieces to Session History without duplicating existing work;
- retries failed audio processing only for configured-user recordings; and
- retries memory ingress only for a currently correlated audio piece, retaining
its current Session History state.
A completed transcript reports its expected piece count before synchronization.
Its combined status becomes `complete` only when every expected piece is
present and complete. Missing or pending pieces remain `ready_for_ingress`;
claimed and failed pieces are reported as `ingressing` and `ingress_failed`.
Piece identities cannot be silently reinterpreted. If existing Session History
records for a recording do not match the current transcript segmentation or
effective-context configuration, reads, synchronization, and retry validation
return a conflict. Applications must therefore keep this configuration stable
for admitted recordings and resolve such conflicts explicitly rather than
creating a second interpretation under the same identities.
The library exposes transport-neutral typed outcomes and sanitized error
categories. It does not define a serialized wire format; HTTP and other
adapters own their response DTOs and status-code mapping. The public API is an
initial `0.1.0` contract and intentionally omits mutable replacement state from
memory-ingress retry requests.