# kcode-speaker-system 0.2.0
Small, thread-safe in-process speaker classifier backed by one SQLite database.
## Public API
`SpeechClassifier::open(path)` opens the store. The classifier then owns exactly three model-facing operations:
- `identify(key, cohort, row, threshold)` scores a 24-value row and atomically retains it when accepted.
- `train(key, cohort, row, speaker_id)` adds labelled data, reports an unchanged retry, or corrects the existing row.
- `delete(key)` idempotently removes an observation.
`SpeakerSystem` is an alias for `SpeechClassifier`. `FeatureRow` is the validated `[u8; 24]` feature vector from `kcode-speaker-types`.
## Successor Ktools
`KTOOLS` contains exactly:
- `kcode-speaker-system/identify`
- `kcode-speaker-system/train`
- `kcode-speaker-system/delete`
The library decodes each operation's strict camel-case JSON and renders its result. Kennedy only schedules and authorizes the call. Training accepts any nonblank caller-supplied speaker name.
## Managed dependencies
The classifier uses `kcode-speaker-model` for deterministic GMM/LLR scoring and `kcode-speaker-types` for the frozen feature vector. The caller does not manage snapshots, samples, attempts, source objects, recording quality, datasets, or evaluation artifacts.
Fitted cohort models are a private in-process cache. A successful mutation invalidates the cache; callers never load, activate, or version a model.
## Boundaries
This package performs no provider, audio, App, registry, publication, or deployment work. It stores only the current observation rows needed by its three operations; it has no event-log replay or externally visible model lifecycle.