fix: recipe scan 503 — three cf-orch config bugs + DocuvisionClient API mismatch #136
Labels
No labels
accessibility
backlog
beta-feedback
bug
duplicate
enhancement
feature-request
help wanted
invalid
needs-design
needs-triage
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Circuit-Forge/kiwi#136
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Root Cause (actual — 3 bugs in cf-orch config + 1 in kiwi client)
1. Wrong model_id in assignments.yaml
kiwi.recipe_scanwas assignedbartowski--qwen2-vl-7b-instruct-ggufwhich resolved to the cf-text service (port 8009). cf-text has no/extractendpoint, causing 404 → 503 fallthrough. Fixed todeepseek-ocr-2(cf-docuvision).2. Wrong module path for cf-docuvision in heimdall.yaml
args_templatereferencedcircuitforge_core.resources.docuvision.app(does not exist). Correct path:circuitforge_orch.docuvision.app. Service crashed with ModuleNotFoundError on every start attempt.3. Hardcoded nonexistent model path
cf-docuvision catalog entry had a hardcoded path to a non-existent GGUF file. Fixed: catalog now uses
deepseek-ocr-2entry pointing at HF-formatavocet/models/deepseek-ai--DeepSeek-OCR-2with{model}template substitution. VRAM updated to 7000 MB (6.4 GB FP16 + overhead).4. DocuvisionClient API field name mismatch
Client sent
{"image": b64}but docuvision ExtractRequest expectsimage_b64. Also readdata.get("text")but response field israw_text. Both fixed inapp/services/ocr/docuvision_client.py.Changes
circuitforge-orch:
profiles/assignments.yaml—kiwi.recipe_scan+kiwi.ocrmodel_id:deepseek-ocr-2profiles/nodes/heimdall.yaml— cf-docuvision: correct module path,{model}substitution, max_mb 7000, deepseek-ocr-2 catalog entrykiwi:
app/services/ocr/docuvision_client.py—image_b64field,raw_textresponse field, timeout 120sapp/services/recipe/recipe_scanner.py— two-step pipeline: docuvision OCR → LLMRouter structuring;progress_cbthreading;_build_ocr_extraction_prompt()helperapp/api/endpoints/recipe_scan.py— addedPOST /recipes/scan/streamSSE endpoint for cold-start progress feedbackfrontend/src/services/api.ts—scanStream()using fetch + ReadableStreamfrontend/src/components/RecipeScanModal.vue— live phase labels during scanNote on original diagnosis
The original ticket cited
cf-visionwith nomanaged:block. The actual failing service wascf-docuvision(distinct fromcf-vision) with three independent config bugs. cf-vision is a separate service not used by kiwi.bug: recipe scan returns 503 — blocked on cf-orch#65 (cf-vision no managed block)to fix: recipe scan 503 — three cf-orch config bugs + DocuvisionClient API mismatch