Two rules this lane bends
Spark carries two invariants about speech, and both come from how Dad actually uses it. The interpreter bends both, by Dad's ruling, and only inside this lane. How an exception is fenced matters as much as the exception itself, so this lesson reads the fences.
Invariant 7: chosen, never silently detected
Everywhere else in Spark, a speech language is chosen. Dad's dictation follows his Korean or English pick, the family rule. When he holds out the reply mic for someone's answer, it listens in the scene's language unless he switches it. The reply route will not even accept a recording without a language: a test sends one with none and expects HTTP 422. A detector that guesses wrong without saying so produces confident nonsense, and nobody at the table can tell.
The interpreter cannot work that way. Anyone at the table may speak, in any order, so nobody can pick the language in advance. Dad's ruling allows detection here and only here: Scribe names the language, and the direction that implies is shown before any translation and can be flipped with one tap. The architecture sums it up in three words: detected, never silently.
Each part of "never silently" lives in code:
- Shown first. The engine publishes
exchange.directionbefore the draft starts, so the chip is on the card before any translated word. - Readable by both people. The chip names each language in its own script, through the browser's
Intl.DisplayNames: Español → 한국어. - Accountable. The direction records what decided it: Scribe, the script, or Dad.
- Reversible. One tap posts a flip, and the same words are read the other way.
- Fenced. Spark's transcription binding reserves a missing language for this lane in its contract, the reply route cannot send one, and any code it is given must look like a language code.
Invariant 8: Pippa's voice only on Dad's tap
Normally Pippa's voice plays for a card only when Dad taps it. He prepares cards before calling anyone over, and a voice that starts by itself in a quiet shop speaks to nobody. In a live exchange the person is already there, waiting. So Dad ruled that in the interpreter, a card made from his words plays at once, with a mute toggle.
The kit's speak method, in the first excerpt, shows the fences. It returns at once if Dad muted the card. It plays only when the exchange's speaker was Dad and the card has a recorded voice, so a relay meant for Dad's eyes is never read aloud. And while Pippa speaks, the microphone is deaf, and stays deaf for 400 ms after she stops. Without that tail, the room's echo of her voice would arrive at Scribe as the other person speaking, and the card would start interpreting itself. Dad's mute also survives his Clear: wiping the card does not unmute it.
Where a stranger's voice lives
A recording of the waiter is a stranger's voice, captured without a release form. Here is exactly what happens to it.
- It is kept, privately. The card uploads each utterance's recording beside it, as
recording-dadwhen Scribe heard Korean andrecording-otherotherwise. It becomes media of the sitting in Spark's media store, next to the veiled log, in Dad's private record. - Only two roles pass the door. cwkPippa's recording route accepts those two roles and nothing else, so an interpreter recording cannot be filed as a photo or an attachment.
- Nothing outside Spark reads it. At design time, Beacon, Recall and the mobile video pipeline were checked and have no Spark media reader.
- No voice is embedded. The speaker ear, cwkPippa's check of whether a voice is Dad's, never hears an interpreter recording.
- The audio takes no detour. On a working socket, sound goes from the device straight to ElevenLabs, as voice mode does, through no relay of the family's.
- A private chat gets no Talk. A card opened from a private conversation has no interpreter at all, because a sitting is kept in Spark and a private chat leaves nothing anywhere.
So the stranger's voice is kept, and kept in one place only. The reason to keep it at all is practical. When the phone's socket drops mid-sentence, the card goes on recording, and the engine transcribes the kept file once the link returns, with the batch model naming the language. In that path the recording goes up first and is filed as recording-other, because nobody knows who spoke until Scribe has heard it.
Voice Mode Quest's Whose Voice track teaches the speaker ear itself: how voice mode learned to tell Dad's voice from everyone else's.