Skip to content

[Medium] Whisper model cache readiness is existence-only (partial/corrupt model passes) #16

Description

@adilei

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions