kcode-audio-ingress 0.1.1

Durable automatic audio transcription with restart recovery
Documentation
# kcode-audio-ingress

`kcode-audio-ingress` provides durable, automatic audio transcription. It
retains complete caller-owned WAV bytes, runs the transcription and
reconciliation pipeline, durably stores each completed audio-piece transcript,
persists progress and the canonical transcript, and recovers interrupted work
after restart.

```rust,no_run
use chrono::Utc;
use kcode_audio_ingress::{AudioIngress, AudioInput, AudioTranscriber};

async fn accept(
    transcriber: AudioTranscriber,
    wav_bytes: Vec<u8>,
) -> Result<(), kcode_audio_ingress::Error> {
    let ingress = AudioIngress::open("./audio-ingress", transcriber).await?;
    let submission = ingress
        .submit(AudioInput {
            bytes: wav_bytes,
            recorded_at: Utc::now(),
            original_filename: Some("recording.wav".into()),
        })
        .await?;
    println!("{}", submission.recording_id);
    Ok(())
}
```

The ingress boundary remains deliberately small: `open`, `submit`, `status`,
and manual `retry`. Processing starts automatically. Retry policy is fixed at
five full-job attempts, and the library imposes no configurable storage or
input size limit. `AudioTranscriber` and its status types are included in the
same crate so callers only need this library.

The library owns every path beneath its configured persistence root. It does
not provide HTTP routes, multipart parsing, streaming submission, transcript
delivery, or application-specific memory ingress.

See [Documentation.md](Documentation.md) for the complete API and
[Specification.md](Specification.md) for behavioral guarantees.