The visit pipeline starts with a file. If stop is a lie, there is no file worth transcribing. I wrote recording would not stop cleanly. This is the model I wish I had drawn first.

Four states

Recording, interrupted, stopped, failed. If the button and the plugin disagree, the next tap is wrong. Users will not debug your audio session.

Interruptions are Tuesday

A call, background, another app wants the microphone. Keep, discard, or finish a short file. Pretending nothing happened works in a quiet room.

Then the network

Only a real stopped file goes into transcribe and summary. Pretty waveforms come last.