# 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`:
- attributes new submissions to its configured application user and exposes
the same complete recording set as AudioIngress;
- projects recording and transcript-piece state across the two owners;
- exposes AudioIngress's correction packet and applies exact human speaker
confirmations through its typed API;
- 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;
- submits missing pieces to Session History without duplicating existing work,
but only after every classifier-aware observation has a human-confirmed full
name;
- retries failed audio processing; and
- retries memory ingress while retaining the current Session History state
unless the caller supplies the replacement accepted by the original
Kennedy endpoint.
A completed classifier-aware transcript remains in `speaker_review` until its
packet is fully confirmed. Confirmation immediately attempts the idempotent
Session History handoff and includes a compact authoritative chunk-local
speaker mapping with every transcript piece. Legacy recordings without packets
retain their established immediate handoff. A recording with authorized labels
and no represented pieces is `ready_for_ingress`; claimed, failed, and complete
pieces are reported as `ingressing`, `ingress_failed`, and `complete`. An exact
retry of an accepted confirmation is idempotent; a different confirmation is
rejected once any deterministic piece has entered Session History.
New recordings are segmented from the current effective context. Each created
piece persists the segmentation version, effective context, derived character
limit, whole-transcript identity, and exact piece and prepared-ingress text
fingerprints in Session History metadata. Once any piece exists, one complete
consistent set of that metadata is authoritative: later context changes reuse
the original parameters, projection preserves the original piece count and
text identities, and partial synchronization creates missing pieces under the
same segmentation. A changed transcript, inconsistent metadata, or an existing
piece without sufficient authoritative segmentation identity returns
`Conflict` rather than remapping, relabeling, or overwriting deterministic
piece IDs.
The library exposes transport-neutral typed outcomes and error categories. It
does not define a serialized wire format; HTTP and other adapters own their
response DTOs and status-code mapping. Its outcomes retain the fields and retry
inputs needed to preserve Kennedy's pre-extraction HTTP behavior.