Full validation run against QA (medimesh-qa) covering audio analysis, document
analyze, SmartSlide, finalization (screenshots/cut verification), transcription, storage
migration, and the KB onboarding callback. Each failure below was root-caused against the
actual service logs (not just the test's own report) before filing. All tickets are in
Selected for Development.
Failing test cases
Audio analysis pipeline: ActionDetectionOrchestrator can get stuck in a tool-call loop and fail with generic 51006
Suite: audioanalysis · Test: "Translation + Visual" · Session 22d660e5-…
The visual-tool orchestrator (qwen36-27b) looped on the same clip window without ever producing a final JSON, hit the 20-iteration cap, and surfaced as the generic PIPELINE (51006) error rather than a diagnosable failure. qwen itself was healthy throughout.
Core /document/analyze falsely rejects non-en/de languages when caller uses a user JWT
Suite: document_analyze · Test: "language=fr, no silent fallback" · Session f7a8e8b5-…
Core's language-list lookup gets a 403 when called with a user JWT (needs the service API key), and silently falls back to a hardcoded 2-language list (en/de only) — so any non-en/de request from a browser/user session is wrongly rejected as "unsupported". Likely a live production bug, not just a test gap.
SmartSlide analysis: concurrent slide-media downloads fail — ThreadPoolExecutor doesn't propagate contextvars
Suite: debug_smartslide_analysis · Test: "basic run (en, 2 slides)" · Session 7c22ef04-…
Slide-image downloads run inside a bare ThreadPoolExecutor, which doesn't copy the caller's contextvars-based auth context into worker threads — so the DEV-5262 owner-context guard blocks every download as "anonymous", producing zero step data even on a fully authenticated request.
Finalization screenshot quality check produces near-100% false positives on SmartSlide/presentation videos
Suite: finalization · Test: "Finalize SmartSlide — Audio Download" · Session e99afcc8-…
The screenshot quality thresholds (brightness/contrast) are tuned for video/screen-recording footage. A static PPTX slide's plain background legitimately trips both checks, so 69 of 76 screenshots were flagged "overexposed"/"featureless" even though nothing is actually wrong.
VerifyCuts: spurious fade detected + cut-duration mismatch on "Finalize Long Video (1080p)"
Suite: finalization · Test: "Finalize Long Video (1080p)" · Session e99afcc8-…
Every expected cut was detected correctly (0.99 confidence), but one extra "spurious" fade threw off the duration check. Root cause undetermined — the detailed diagnostic log was lost to a mid-run QA redeploy, which is itself flagged as a process gap in the ticket.
Vosk→parakeet retirement coercion silently drops language-detection metadata and mis-keys DB storage
Suite: transcription · Tests: 4 Vosk-labelled cases · Session 7c22ef04-…
Requests for the retired "vosk" method are coerced to "parakeet" before the language-detection and DB-storage-key logic runs — so detected_language/confidence are silently skipped, and results get stored under the "parakeet" key instead of "vosk". Affects any real caller still requesting vosk explicitly.
Storage migration cancel is not honored during the SCANNING phase
Suite: storage_migration · Tests: [2] and [5] · Session 50cb21c9-…
The scan-phase cancellation check increments its counter by whole S3 page sizes and only fires on an exact multiple of 200 — on a bucket with many small prefixes (27k objects / 11.6k prefixes) it can skip every checkpoint for the full ~6-minute scan, so cancel silently does nothing until the scan finishes on its own.
/api/internal/kb/onboarding-callback returns 500 for a malformed Bearer token instead of 401
Suite: kb_callback_auth · Session 50cb21c9-…
FallbackJwtDecoder throws a generic JwtException (not BadJwtException) when every decoder rejects a token, so Spring Security can't translate it into a clean 401 and it escapes as an uncaught 500 instead. One-line fix identified.