What
POST /v1/systemone bodies on the dgemma door (model "dgemma" named, or images present) that also carry audio, audios, video or videos are now refused with 400 dgemma_input and a message naming the medium. The developer guide, the OpenAPI description and request schema, and AGENTS.md now state that images are dgemma's only media and why.
Why
The pod's structured-read interposer silently drops keys it does not read. Verified against the live pod through production: audio: 42 and video: [wav data URL] both answered HTTP 200 with the text-only input token count — a confident answer about media the model never looked at, with no signal to the caller.
The capability reality, checked at each layer:
| Layer | image | video | audio |
|---|---|---|---|
DiffusionGemma 26B-A4B in vLLM (diffusion_gemma.py) | yes | yes | no — no audio input path |
Pod interposer (structured_server.py, vllm-project/vllm#57250) | images only | dropped | dropped |
Beam hosted jev/diffusiongemma | 1 image max | 422 | 422 |
| classifier.dev gateway (before this PR) | validated | forwarded + silently ignored | forwarded + silently ignored |
Audio can never work on this model. Video can — the model declares the video modality and vllm-project/vllm#57589 fixed its multimodal path — but enabling it is a pod-side interposer change (build video_url parts), not a Worker one; until then refusing is the honest answer.
Tests
New unit cases: all four media keys refused on both doors with nothing called upstream; audio without images and without naming dgemma still goes to TypeSafe to validate. npm run typecheck clean, bun test 823 pass / 0 fail.
🤖 Generated with Claude Code
Summary by CodeRabbit
- Behavior Changes
- DiffusionGemma requests containing audio or video are now rejected with a
400 dgemma_inputresponse instead of being silently ignored. Image inputs remain supported; audio-only requests routed to other models are unaffected.
- DiffusionGemma requests containing audio or video are now rejected with a
- Documentation
- Updated API documentation to clarify audio and video support and the conditions for these refusals.
Navigate logical layers of code changes, visualize relationships, and explore their blast radius.
No actionable comments were generated in the recent review. 🎉
ℹ️ Recent review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Advanced
Run ID:
9089a71c-f78b-45f2-a6bd-53e8b532cb46📥 Commits
Reviewing files that changed from the base of the PR and between 43818f818af44b5db6ea81ec9489f427138a35f6 and 34e829b45314d305ee30659e1210ead3acf434e5.
📒 Files selected for processing (5)
AGENTS.mdsrc/dgemma.tssrc/docs.tssrc/openapi.tstest/dgemma.test.tsIncluded review availability: This review used your included allowance. Your plan provides up to 2 included reviews per hour; 1 remain after this review.
📝 Walkthrough
Walkthrough
The DiffusionGemma route now refuses requests with non-null audio or video fields. Tests cover these refusals and confirm that an audio-only request without
dgemmaor images is routed to TypeSafe. Documentation describes the supported media and refusal responses.Changes
DiffusionGemma media input
src/dgemma.ts,test/dgemma.test.ts,AGENTS.md,src/docs.ts,src/openapi.tsdgemma_inputfor non-nullaudio,audios,video, orvideosfields. Tests cover rejection and TypeSafe routing. Documentation states that images are the only supported DiffusionGemma media and describes audio and video refusals.Priority: ⬇️ Low
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Bug fix
Suggested reviewers:
myxamediyarMerge Risk: ⚪ Minimal · up to
34e82The change rejects unsupported media for DiffusionGemma while preserving the described TypeSafe routing path; no merge-blocking risk is identified.
Security Architecture Review
Security architecture risk: 🔵 Low · up to
34e82The new refusal reduces the chance of a successful-looking answer to media the image-capable service did not process. It changes a public API response, but the reviewed path does not show expanded access or privileges.
Retained concerns No architecture-level concerns identified.
Security review details
Security Blast Radius
Trust Boundaries and Controls
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
✨ Finishing Touches
📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
❤️ Share
Comment
@coderabbitai helpto get the list of available commands.