diff --git a/docs/use-cases/audio_upload.feature b/docs/use-cases/audio_upload.feature index 87c31cc..16fcc83 100644 --- a/docs/use-cases/audio_upload.feature +++ b/docs/use-cases/audio_upload.feature @@ -156,3 +156,61 @@ Feature: Upload an audio recording, get a private Swedish transcript, discuss it Scenario: A single-engine transcript claims no second opinion When only one engine was configured Then the page does not mention reconciliation + + # ADR-035: progress, the log, and the judged spots + + Scenario: I can see which phase my upload is in + Given a recording is being transcribed + When I open its page + Then it lists every phase in order, the finished ones with how long each took + And the running phase is marked, with how long it has run + And the page updates in place every two seconds until the job ends + + Scenario: A bar appears only where the count is real + When the deciding phase has decided 142 of 282 differences + Then the page shows a bar with "142 of 282" + And an engine call, which is one request with nothing to count, never gets a bar or a percentage + + Scenario: A slow engine call is not mistaken for a dead service + When an engine call has run for 25 minutes and the service is still reporting + Then the page shows the elapsed time and says nothing is wrong + + Scenario: A service that stopped reporting is called lost + When nothing has been heard from the service for longer than the heartbeat allows + Then the page says the service stopped reporting and may have restarted or crashed + And the running phase carries a warning mark and no spinner + And the page keeps checking + + Scenario: A model that stops advancing is called quiet + When the deciding phase has not advanced for five minutes and the service is still reporting + Then the page says nothing new has happened for that long and that the service is still running + And it does not say the service is lost + + Scenario: A failed job shows where it stopped + When a job fails + Then the failed phase is marked and what never started stays pending + And the page stops checking + + Scenario: A finished job keeps its record of what was done + When a job is done + Then the page keeps a collapsed list of the phases with how long each took + + Scenario: The heartbeat runs on its own while an engine call is stuck + When an engine call does not return + Then the row is still stamped alive every few seconds + And no heartbeat outlives its job + + Scenario: The log names every phase and never the transcript + When a job runs + Then the log has a line per phase in the order it ran, each naming the upload + And no line contains transcript text or the spool path + + Scenario: Every judged spot is stored but only the ones to check are listed + When the model has changed, kept and been unsure about spots + Then every one is stored with its verdict and the words before it + And the page lists only the changed and uncertain ones, with the words before each + + Scenario: The saved segments carry the merged words + When the model changes a word + Then the segment containing it carries the reconciled word + And the segment's timing is unchanged