Skip to content

Kingy / AI Fix Finder

← All fixes

Native llama.cpp completion ignores a Chat API schema envelope

On native /completion, putting this schema in response_format left the required wrapper unenforced. The same schema in native json_schema restored the exact contract.

kingy tested

What happened

Symptom

A completed JSON response contains id and text but omits the required kingy_record wrapper when Chat API response_format is sent to the native /completion route.

Conditions

Qualified 2026-10-16 Pacific on llama.cpp 0.6.0 build 11429 (d81235049), Qwen3-4B Q4_K_M; exact artifact SHA-256 in the package.

Apple M4 Pro, 24 GiB unified memory, macOS 26.3; CPU only, two threads, one slot, 2048-token context; loopback/offline.

For each repair, the same agent completed two seven-trial sequences in fresh server processes on the same Mac. Unchanged passing case runs were reused; the evidence index identifies them.

Correction

For native POST /completion, pass the unchanged schema in top-level json_schema. Use the documented Chat API response_format shape only with its corresponding chat endpoint.

Result

In each of two fresh-process runs: 0/3 baseline task passes, 3/3 corrected passes and 0/1 reverted passes. All original task checks and scoped completion checks passed. The offline audit recomputed acceptance from raw responses and rejected six damaged corrected-response controls.

What did not work

The misplaced envelope produced completed JSON with correct inner facts but the wrong original contract. Treating any parseable JSON as success would miss the failure.

  1. Record the actual endpoint and serialized request body. The frozen example uses native /completion, not /v1/chat/completions.
  2. Move the identical schema from the misplaced Chat API response_format envelope to native top-level json_schema. Keep the rendered prompt, seed, temperature and output cap unchanged.
  3. Validate the original contract: {"kingy_record":{"id":17,"text":"ALPHA"}}. Do not weaken it to accept the unwrapped baseline.
  4. Require complete EOS termination without truncation. Preserve the raw response so well-formed JSON is not mistaken for schema compliance.
Sources & limits

Repair 010: full current qualification report and limits

Download repairs 005-010 evidence ZIP (412,621 bytes; SHA-256 8a3e0d0b0f217f30e583450c7073dd1558ce75b9bb8f0e3e8f348e6260a28b93)

Record checked 2026-10-16.

Same-agent repeatability checks on one Mac; no independent operator, second machine or human acceptance test.

Fixed synthetic tasks selected after exploration. The repeat counts do not establish a general reliability rate or support for other models and builds.

Runtime binaries and model weights are excluded. Exploratory failures, the failed first qualification fixture and all final trial responses are retained.

Client demonstrations identify owned reference integrations and injected inputs explicitly; they are not claims of a repaired Open WebUI release or a general llama.cpp bug fix.

This is a current identified endpoint/configuration mismatch on the pinned build. It does not settle the contradictory historical reports about schema enforcement.

Only this simple schema and route pair were qualified. No general Draft 7 compatibility or silently ignored-field behavior is guaranteed for other builds.

This differs from repair 004: the schema itself is unchanged; only the request envelope changes.

This still happens?

Send the smallest example that reproduces it. Use a public, non-sensitive example; leave out account details, keys and private files.

Help improve this tool

Did this help you finish?

About AI Fix Finder. Your feedback goes to Kingy’s private review queue.

Your experience with AI Fix Finder
What happened?