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.