Summary
The current upload path publishes every MP3 found under voice-tool/audio-cache, regardless of whether that voice was actually approved during review.
Problem
prepareApprovedFiles() in voice-tool/src/services/FileManager.ts treats any cached audio file as uploadable. That bypasses the review state stored in the progress file and allows rejected or exploratory voices to be uploaded.
Impact
This breaks the core human-review workflow. A word can be reviewed and approved with one voice, but the upload step can still publish a different voice.
Relevant code
voice-tool/src/services/FileManager.ts:118-147
Expected behavior
Only files that correspond to a completed review decision should be uploadable.
Suggested direction
- Build the upload list from
voice-generation-progress.json, not from directory contents alone.
- Only include words with
status === "completed".
- Only upload the file referenced by the approved
voiceUsed / localAudioPath.
- Add a test or validation step to prove the upload set matches reviewed selections.
Summary
The current upload path publishes every MP3 found under
voice-tool/audio-cache, regardless of whether that voice was actually approved during review.Problem
prepareApprovedFiles()invoice-tool/src/services/FileManager.tstreats any cached audio file as uploadable. That bypasses the review state stored in the progress file and allows rejected or exploratory voices to be uploaded.Impact
This breaks the core human-review workflow. A word can be reviewed and approved with one voice, but the upload step can still publish a different voice.
Relevant code
voice-tool/src/services/FileManager.ts:118-147Expected behavior
Only files that correspond to a completed review decision should be uploadable.
Suggested direction
voice-generation-progress.json, not from directory contents alone.status === "completed".voiceUsed/localAudioPath.