Skip to content

QVAC-18995 feat[api]: bump transcription-whispercpp to 0.9.0 and surface backend/GPU stats#2488

Merged
ishanvohra2 merged 5 commits into
tetherto:mainfrom
ishanvohra2:chore/update-whisper-sdk
Jun 10, 2026
Merged

QVAC-18995 feat[api]: bump transcription-whispercpp to 0.9.0 and surface backend/GPU stats#2488
ishanvohra2 merged 5 commits into
tetherto:mainfrom
ishanvohra2:chore/update-whisper-sdk

Conversation

@ishanvohra2

@ishanvohra2 ishanvohra2 commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

🎯 What problem does this PR solve?

  • The SDK was pinned to @qvac/transcription-whispercpp@^0.8.0, missing the 0.9.0 release.
  • whisper.cpp 0.9.0 adds backend/GPU runtime stats (active device class, GPU backend family, GPU memory) that the SDK did not expose to consumers.

📝 How does it solve it?

  • Bump @qvac/transcription-whispercpp ^0.8.0^0.9.0.
  • Thread the four new runtimeStats fields — backendDevice, backendId, gpuMemTotalMb, gpuMemFreeMb — through all three stats layers: the addon read shape (addon-responses.ts), the transcribe op mapping, and the public transcribeStatsSchema.
  • All four are optional: CPU runs and the parakeet engine simply omit the ones they don't populate; -1 is the no-accounting sentinel for the GPU memory fields.

🧪 How was it tested?

  • New unit test transcription-stats-schema.test.ts: round-trips the GPU fields, asserts they're optional (CPU/parakeet path), accepts the -1 sentinel, and rejects non-numeric backend values (4/4 tests, 11/11 asserts).
  • bun run typecheck and eslint on changed files pass.
  • bare-sdk parity (check:deps-vs-sdk) verified — whispercpp is an excluded plugin addon, no sync needed.

🔌 API Changes

// transcribe(...) now surfaces whisper backend/GPU info in the final stats frame
for await (const ev of sdk.transcribe({ modelId, audioChunk, metadata: true })) {
  if (ev.done && ev.stats) {
    console.log(ev.stats.backendDevice);  // 0 = CPU, 1 = GPU
    console.log(ev.stats.backendId);      // GPU backend family (BackendId enum)
    console.log(ev.stats.gpuMemTotalMb);  // -1 when no memory accounting
    console.log(ev.stats.gpuMemFreeMb);
  }
}

…/GPU stats

Bump @qvac/transcription-whispercpp ^0.8.0 -> ^0.9.0 and expose the new
runtimeStats backend fields (backendDevice, backendId, gpuMemTotalMb,
gpuMemFreeMb) through transcribeStatsSchema and the addon stats mapping.
@ishanvohra2 ishanvohra2 requested review from a team as code owners June 8, 2026 16:27
GustavoA1604
GustavoA1604 previously approved these changes Jun 8, 2026
simon-iribarren
simon-iribarren previously approved these changes Jun 9, 2026
@ishanvohra2 ishanvohra2 added the verified Authorize secrets / label-gate in PR workflows label Jun 9, 2026
@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

QVAC E2E — windows — ✅ all tests passed (95/95, 586s)

Config: suite=smoke · filter=(none) · exclude=(none)
View run · Artifacts: reports

@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

QVAC E2E — ios — ✅ all tests passed (82/95, 931s)

Config: suite=smoke · filter=(none) · exclude=(none)
View run · Artifacts: reports · Device Farm logs

@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

QVAC E2E — android — ❌ failed

Totals: 0/95 passed · 95 failed · 0.0% · 130s
Config: suite=smoke · filter=(none) · exclude=(none)
View run · Artifacts: reports · Device Farm logs

Results by section

  • addon-logging: 0/2 ❌
  • cancellation: 0/1 ❌
  • completion: 0/8 ❌
  • config: 0/1 ❌
  • config-reload: 0/2 ❌
  • delegated-inference: 0/4 ❌
  • diffusion: 0/3 ❌
  • download: 0/1 ❌
  • embedding: 0/2 ❌
  • error: 0/5 ❌
  • finetune: 0/1 ❌
  • http: 0/2 ❌
  • kv-cache: 0/4 ❌
  • lifecycle: 0/2 ❌
  • model: 0/8 ❌
  • model-info: 0/4 ❌
  • multi-gpu: 0/2 ❌
  • ocr: 0/4 ❌
  • parakeet: 0/4 ❌
  • rag: 0/3 ❌
  • registry: 0/4 ❌
  • sharded-model: 0/3 ❌
  • tools: 0/2 ❌
  • transcription: 0/5 ❌
  • translation-afriquegemma: 0/1 ❌
  • translation-bergamot: 0/3 ❌
  • translation-indictrans: 0/2 ❌
  • translation-llm: 0/2 ❌
  • translation-salamandra: 0/2 ❌
  • tts: 0/2 ❌
  • video: 0/2 ❌
  • vision: 0/3 ❌
  • wrong-model: 0/1 ❌

Failed tests

  • 95 tests: Consumer died before test could be executed
    Affected: model-load-llm, model-load-embedding, model-load-ocr, model-load-invalid, model-unload, and 90 more

@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

QVAC E2E — linux — ✅ all tests passed (95/95, 447s)

Config: suite=smoke · filter=(none) · exclude=(none)
View run · Artifacts: reports

@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

QVAC E2E — macos — ✅ all tests passed (93/95, 268s)

Config: suite=smoke · filter=(none) · exclude=(none)
View run · Artifacts: reports

@simon-iribarren simon-iribarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI Status

Build/validation are green, but the PR-attached QVAC Tests workflow is still not green: Android run-producer failed after the consumer registered but never bootstrapped, and macOS/Windows desktop jobs were still pending when I checked. The Android failure log shows all 95 tests marked failed after the consumer was declared unresponsive.

API Surface & Tagging

This is correctly tagged [api]: it adds optional public transcription stats fields (backendDevice, backendId, gpuMemTotalMb, gpuMemFreeMb) and the PR body includes a usage example.

Code Review

No blocking code issues found. The addon response shape, server stats mapping, public schema, and unit coverage line up with the stated API change and preserve existing CPU/parakeet behavior.

Recommendation

Codewise LGTM, but holding approval until the PR-attached tests are green or the Android consumer failure is rerun/acknowledged as infrastructure.

@simon-iribarren simon-iribarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Codewise LGTM.

@ishanvohra2

Copy link
Copy Markdown
Contributor Author

/review

@github-actions

Copy link
Copy Markdown
Contributor

Tier-based Approval Status

**PR Tier:** TIER1

**Current Status:** ✅ APPROVED

**Requirements:**
- 1 Team Member approval ✅ (2/1)
- 1 Team Lead OR Management approval ✅ (1/1)



---
*This comment is automatically updated when reviews change.*

@ishanvohra2 ishanvohra2 merged commit cbe593f into tetherto:main Jun 10, 2026
12 checks passed
@ishanvohra2 ishanvohra2 deleted the chore/update-whisper-sdk branch June 10, 2026 13:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test-e2e-smoke Triggers smoke e2e test suite [Currently SDK-only] verified Authorize secrets / label-gate in PR workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants