microsoft / microsoft/skill-recorder
[Medium] Whisper model cache readiness is existence-only (partial/corrupt model passes)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 4k
- Forks
- 413
- Avg merge
- 3h 16m
- Merged PRs (30d)
- 10
Description
Severity
Medium — a partially-downloaded/corrupt model passes the readiness check.
Location
electron/narration/whisper.ts — model-cache readiness is determined by directory/file existence only, with no completeness verification.
Mechanism
If a model download is interrupted (network drop, crash, disk full), the cache directory exists but is incomplete. An existence-only check reports "ready", so transcription proceeds against a truncated/corrupt model.
Impact
Confusing runtime failures or silently degraded transcription that looks like a model/quality problem rather than a bad cache.
Suggested fix
Verify completeness before marking ready — e.g. check the expected file set and sizes, and ideally a manifest hash (see the related model-pinning low finding) — and re-download if incomplete.
Regression test to add (npm test)
Extend electron/narration/whisper.test.ts: point at a partial model dir (missing/short files) and assert readiness returns false / triggers re-fetch. Deterministic; not an evals/ concern.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in electron/narration/whisper.ts to trace the model-cache readiness check, then read electron/narration/whisper.test.ts. Run npm test and add coverage for a partial model directory with missing or short files; done means readiness is rejected or re-fetching occurs instead of proceeding with the incomplete cache.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, typescript
- Domain
- desktop, testing-qa
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 76/100