FULL THREE-PAIR DOCUMENT STUDY · V1.5
Kingy and native LM Studio: three paired PDF repetitions
document-comparison-v15-20261014.1 · analysis completed 2026-10-14T08:34:36.027744+00:00
Ten independently authored synthetic English PDFs with selectable text, 30 pages, 20 direct factual questions, 10 cross-document questions and 10 unanswerable questions. The recorded Mac has an Apple M4 Pro (14 CPU cores, 20 GPU cores), 24 GiB memory and macOS 26.3 build 25D125. Both complete workflows use identical Qwen3-4B Q4_K_M bytes and seeded generation settings. Kingy 1.5 uses llama.cpp b11429; native LM Studio 0.4.26+4 uses engine 2.56.0 and unmodified stock RAG revision 8 with eight retrieved chunks. Three fresh model sessions per workflow follow the frozen A1, B1, B2, A2, A3, B3 order.
Each pair contains the same 30 answerable and 10 unknown questions. Repetitions measure repeatability on the declared system; these are 40 unique cases, not 120 independent questions or an independent physical reproduction.
Read the method audit before the scores
The frozen native citation scores are not a valid citation-quality comparison. Our frozen resolver required a quote to fit one PDF page. All 132 emitted native citation instances across the three runs quote chunks spanning pages. The automatic zeros below reflect this mapping limitation. Cited UNKNOWN answers and some valid full-sentence or section-heading answers were also undercredited. Original scores and effect files remain downloadable; their apparent source-support advantages cannot be used as product claims.
Kingy 1.5 has not passed the frozen qualification: each run retained 26/30 confirmed supported answers and one unresolved case, below the 90% lower-bound target. The active downloadable recipe remains 1.4.
Supplemental source review, unblinded
The reviewer in this Kingy project checked all 240 originals against the exact PDFs after measurement. This review maps whole native chunks to page ranges, credits supported full sentences and section names, and retains missing facts, wrong citation IDs and semantic uncertainty. It is not blinded, independent validation or replacement qualification. Separate unblinded source review of all 240 originals
| Workflow / repetition | Facts | Complete supported answers | Citations supporting the requested claim | Correct decline |
|---|---|---|---|---|
| Kingy A1 | 27/30 (90.0%)0 unresolved · bounds 90.0%–90.0% | 27/30 (90.0%)0 unresolved · bounds 90.0%–90.0% | 37/38 (97.4%)0 unresolved · bounds 97.4%–97.4% | 10/10 (100.0%)0 unresolved · bounds 100.0%–100.0% |
| Native LM Studio B1 | 28/30 (93.3%)1 unresolved · bounds 93.3%–96.7% | 25/30 (83.3%)1 unresolved · bounds 83.3%–86.7% | 38/44 (86.4%)1 unresolved · bounds 86.4%–88.6% | 10/10 (100.0%)0 unresolved · bounds 100.0%–100.0% |
| Kingy A2 | 27/30 (90.0%)0 unresolved · bounds 90.0%–90.0% | 27/30 (90.0%)0 unresolved · bounds 90.0%–90.0% | 37/38 (97.4%)0 unresolved · bounds 97.4%–97.4% | 10/10 (100.0%)0 unresolved · bounds 100.0%–100.0% |
| Native LM Studio B2 | 28/30 (93.3%)1 unresolved · bounds 93.3%–96.7% | 25/30 (83.3%)1 unresolved · bounds 83.3%–86.7% | 38/44 (86.4%)1 unresolved · bounds 86.4%–88.6% | 10/10 (100.0%)0 unresolved · bounds 100.0%–100.0% |
| Kingy A3 | 27/30 (90.0%)0 unresolved · bounds 90.0%–90.0% | 27/30 (90.0%)0 unresolved · bounds 90.0%–90.0% | 37/38 (97.4%)0 unresolved · bounds 97.4%–97.4% | 10/10 (100.0%)0 unresolved · bounds 100.0%–100.0% |
| Native LM Studio B3 | 28/30 (93.3%)1 unresolved · bounds 93.3%–96.7% | 25/30 (83.3%)1 unresolved · bounds 83.3%–86.7% | 38/44 (86.4%)1 unresolved · bounds 86.4%–88.6% | 10/10 (100.0%)0 unresolved · bounds 100.0%–100.0% |
All native emitted markers resolve to real source ranges. Some markers select the wrong document or a chunk missing the requested fact; source existence alone is not claim support. Factual correctness and complete supported answers are separate outcomes. This review does not establish a general accuracy winner.
Kingy returned sooner on 120/120 recorded paired attempts, including incorrect and unresolved answers. Complete-query time is descriptive on this Mac and corpus. Explicit document/page/quote output is a recorded Kingy format advantage; ease of use and comparative privacy were not tested.
Preserved original automatic scores and effects (method limitation)
Frozen automatic scores, preserved
All A1/B1, A2/B2 and A3/B3 attempts are retained. Confirmed passes form the conservative rate. The upper bound additionally includes unresolved judgments. These bounds are not confidence intervals. Canonical facts and complete supported answers are reported separately. Displayed native retrieval cards count only when claimed in the answer; uniquely quote-mapped citations can receive credit, with page capability retained separately.
| Workflow / repetition | Canonical facts | Supported answers | Emitted citation precision | Correct abstention | Attempt accounting |
|---|---|---|---|---|---|
| Kingy workflow 1.5A1 | 26/30 (86.7%)2 unresolved · bounds 86.7%–93.3% | 26/30 (86.7%)1 unresolved · bounds 86.7%–90.0% | 37/38 (97.4%)0 unresolved · bounds 97.4%–97.4% | 10/10 (100.0%)0 unresolved · bounds 100.0%–100.0% | 40/40 retained0 errors · 0 timeouts |
| Native LM Studio PDF chatB1 | 22/30 (73.3%)8 unresolved · bounds 73.3%–100.0% | 0/30 (0.0%)0 unresolved · bounds 0.0%–0.0% | 0/44 (0.0%)0 unresolved · bounds 0.0%–0.0% | 6/10 (60.0%)0 unresolved · bounds 60.0%–60.0% | 40/40 retained0 errors · 0 timeouts |
| Kingy workflow 1.5A2 | 26/30 (86.7%)2 unresolved · bounds 86.7%–93.3% | 26/30 (86.7%)1 unresolved · bounds 86.7%–90.0% | 37/38 (97.4%)0 unresolved · bounds 97.4%–97.4% | 10/10 (100.0%)0 unresolved · bounds 100.0%–100.0% | 40/40 retained0 errors · 0 timeouts |
| Native LM Studio PDF chatB2 | 22/30 (73.3%)8 unresolved · bounds 73.3%–100.0% | 0/30 (0.0%)0 unresolved · bounds 0.0%–0.0% | 0/44 (0.0%)0 unresolved · bounds 0.0%–0.0% | 6/10 (60.0%)0 unresolved · bounds 60.0%–60.0% | 40/40 retained0 errors · 0 timeouts |
| Kingy workflow 1.5A3 | 26/30 (86.7%)2 unresolved · bounds 86.7%–93.3% | 26/30 (86.7%)1 unresolved · bounds 86.7%–90.0% | 37/38 (97.4%)0 unresolved · bounds 97.4%–97.4% | 10/10 (100.0%)0 unresolved · bounds 100.0%–100.0% | 40/40 retained0 errors · 0 timeouts |
| Native LM Studio PDF chatB3 | 22/30 (73.3%)8 unresolved · bounds 73.3%–100.0% | 0/30 (0.0%)0 unresolved · bounds 0.0%–0.0% | 0/44 (0.0%)0 unresolved · bounds 0.0%–0.0% | 6/10 (60.0%)0 unresolved · bounds 60.0%–60.0% | 40/40 retained0 errors · 0 timeouts |
Errors and timeouts can overlap and are not added together. Both remain failed attempts. Citation denominators include emitted partial or unresolved citations. Original frozen common scoring rules · Original frozen paired protocol
Qualification and unresolved judgments
The declared thresholds are at least 90% supported-answer success, 95% emitted-citation precision and 90% correct abstention in every repetition, using conservative lower bounds.
- Kingy: A1 does not meet all thresholds; A2 does not meet all thresholds; A3 does not meet all thresholds.
- Native LM Studio: B1 does not meet all thresholds; B2 does not meet all thresholds; B3 does not meet all thresholds.
Unresolved semantic or citation judgments remain. Their possible outcomes remain in the displayed bounds; an unreviewed ambiguity does not establish a comparative winner. Qualification is an absolute threshold for this workflow and test scope. A relative score does not automatically qualify a buying recommendation.
Paired effects and uncertainty
The effects below retain the original automatic calculation. The citation-mapping limitation invalidates comparative source-support, citation and cited-abstention interpretations. These apparent effects cannot be cited as product advantages; use the separate source review with its limits.
Effects below are Kingy minus native LM Studio. The 10,000-draw sensitivity analysis resamples whole unique-question clusters and keeps the three repetitions together. The envelope describes case-resampling sensitivity on this fixed corpus. It is not a population confidence interval, p-value or market-wide ranking.
| Outcome / clusters | Effect bounds | 95% case-resampling sensitivity envelope |
|---|---|---|
| complete question success40 unique clusters | 75.0 pp to 77.5 pp | 62.5 pp to 90.0 pp |
| supported answer success30 unique clusters | 86.7 pp to 90.0 pp | 73.3 pp to 100.0 pp |
| canonical fact correctness30 unique clusters | -13.3 pp to 20.0 pp | -26.7 pp to 36.7 pp |
| correct abstention10 unique clusters | 40.0 pp to 40.0 pp | 10.0 pp to 70.0 pp |
| emitted citation precision40 unique clusters | 97.4 pp to 97.4 pp | 90.9 pp to 100.0 pp |
No automatic winner is declared. Original frozen paired calculations; method limitation disclosed
Complete-answer latency
Descriptive time includes each workflow's full answer pipeline. Native timing includes native preprocessing, embedding/retrieval and inference. Kingy timing includes retrieval, selection, source resolution and sufficiency checks. Import, cold start and neutral warmup are recorded separately. Median and nearest-rank p95 include retained measured failures; unavailable observations remain visible. These measurements do not establish model throughput, novice setup speed or a population speed advantage.
| Session | Measured / unavailable | Median | p95 | Maximum |
|---|---|---|---|---|
| A1 | 40 / 0 | 2.618 | 3.934 | 4.096 |
| A2 | 40 / 0 | 2.618 | 3.987 | 4.003 |
| A3 | 40 / 0 | 2.615 | 3.958 | 3.988 |
| B1 | 40 / 0 | 8.790 | 15.110 | 37.187 |
| B2 | 40 / 0 | 8.536 | 9.725 | 9.861 |
| B3 | 40 / 0 | 7.345 | 8.910 | 11.747 |
Actual timing boundaries
- A1: runner.ask entry through its complete returned answer, source resolution and sufficiency check; excludes prior PDF import/index, cold start, warmup and later grading.
- A2: runner.ask entry through its complete returned answer, source resolution and sufficiency check; excludes prior PDF import/index, cold start, warmup and later grading.
- A3: runner.ask entry through its complete returned answer, source resolution and sufficiency check; excludes prior PDF import/index, cold start, warmup and later grading.
- B1: Native app submission to documented logger final-answer event; includes native preprocessing/retrieval/embedding/inference; excludes later title generation and automation/export.
- B2: Native app submission to documented logger final-answer event; includes native preprocessing/retrieval/embedding/inference; excludes later title generation and automation/export.
- B3: Native app submission to documented logger final-answer event; includes native preprocessing/retrieval/embedding/inference; excludes later title generation and automation/export.
Control provenance and instrumentation amendment
Instrumentation changed after Kingy A1 and before native B1. The amendment occurred before the first native held-out question. The candidate, corpus, frozen prompts and common scorer remained unchanged. This change limits what can be attributed to native app reliability; it is retained as control provenance rather than hidden or treated as a model result.
Curtis explicitly authorized AppleScript/System Events. PID/window-guarded native activation and file-picker control plus observed CUA chat controls were disclosed after Kingy A1 and before the first native heldout question. Blank-draft preparation interruptions were preserved and recovered before any prompt submission; no answer was retried. During B3, selecting the original empty template through native search restored a sidebar viewport precondition before calling the unchanged frozen clone, submit and capture helpers. That later metadata-only navigation is separately retained. Candidate, corpus, prompts, scorer, native stock RAG, effective settings and scheduled order remained unchanged. No competitor reliability claim follows from these control interruptions.
Disclosed original control amendment after A1 and before native B1 · Actual native control recovery and instrumentation provenance · Audit bundle: candidate, corpus, original records/logs and controls; not a qualified recipe
Exact configurations and failures
Kingy settings
{
"configuration": {
"machine": {
"platform": "apple-silicon",
"chip": "M4 Pro",
"model": "Mac16,7",
"cpuCores": 14,
"gpuCores": 20,
"memoryGiB": 24,
"osFamily": "macOS",
"osVersion": "26.3",
"osBuild": "25D125"
},
"runtime": {
"name": "llama.cpp",
"version": "b11429",
"commit": "d81235049",
"binarySha256": "51afbf4ea6485b9ada19e99af97181f12baca42ef704b1e291c26a9ac0644eae"
},
"python": "3.12.14",
"pypdf": "6.10.0",
"model": {
"id": "Qwen3-4B",
"quantization": "Q4_K_M",
"repository": "Qwen/Qwen3-4B-GGUF",
"revision": "bc640142c66e1fdd12af0bd68f40445458f3869b",
"file": "Qwen3-4B-Q4_K_M.gguf",
"bytes": 2497280256,
"sha256": "7485fe6f11af29433bc51cab58009521f205840f5b4ae3a32fa7f92e8534fdf5",
"license": "Apache-2.0"
}
},
"workflowVersion": "1.5.0",
"runnerSha256": "d5e3c68878af3926c8844e7406a5f9f2666c133eabe624bc34836a85161f17b2",
"generationSeed": 271828,
"context": 8192,
"temperature": 0,
"maxOutputTokens": 512,
"thinking": false,
"cpuThreads": 10,
"gpuOffload": "full Metal",
"parallel": 1,
"flashAttention": true,
"kv": "F16",
"retrieval": "Local BM25 pages and generic field/clause selection; source-ID selection then local sufficiency inference",
"answerModelRequests": [
79,
79,
79
],
"warmupRequests": 3,
"cachePolicy": "cache_prompt false; no claim that OS file caches were flushed.",
"timingBoundary": "runner.ask entry through its complete returned answer, source resolution and sufficiency check; excludes prior PDF import/index, cold start, warmup and later grading.",
"nativeEgressComparison": "unverified; no comparative privacy claim"
}
Actual pinned Kingy configuration and full-answer timing boundary
Native LM Studio settings
{
"load_config": {
"fields": [
{
"key": "llm.load.llama.autoFit",
"value": false
},
{
"key": "llm.load.mlx.autoFit",
"value": false
},
{
"key": "llm.load.llama.cpuThreadPoolSize",
"value": 10
},
{
"key": "llm.load.contextLength",
"value": 8192
},
{
"key": "llm.load.llama.flashAttention",
"value": true
},
{
"key": "llm.load.promptTemplate",
"value": {
"type": "jinja",
"jinjaPromptTemplate": {
"template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {{- messages[0].content + '\\n\\n' }}\n {%- endif %}\n {{- \"# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within <tools></tools> XML tags:\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\\n\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\n<tool_call>\\n{\\\"name\\\": <function-name>, \\\"arguments\\\": <args-json-object>}\\n</tool_call><|im_end|>\\n\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' + messages[0].content + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for index in range(ns.last_query_index, -1, -1) %}\n {%- set message = messages[index] %}\n {%- if ns.multi_step_tool and message.role == \"user\" and not('<tool_response>' in message.content and '</tool_response>' in message.content) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n{%- endfor %}\n{%- for message in messages %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) %}\n {{- '<|im_start|>' + message.role + '\\n' + message.content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set content = message.content %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is defined and message.reasoning_content is not none %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '</think>' in message.content %}\n {%- set content = message.content.split('</think>')[-1].lstrip('\\n') %}\n {%- set reasoning_content = message.content.split('</think>')[0].rstrip('\\n').split('<think>')[-1].lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- if loop.index0 > ns.last_query_index %}\n {%- if loop.last or (not loop.last and reasoning_content) %}\n {{- '<|im_start|>' + message.role + '\\n<think>\\n' + reasoning_content.strip('\\n') + '\\n</think>\\n\\n' + content.lstrip('\\n') }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '<tool_call>\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {{- message.content }}\n {{- '\\n</tool_response>' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking is defined and enable_thinking is false %}\n {{- '<think>\\n\\n</think>\\n\\n' }}\n {%- endif %}\n{%- endif %}"
}
}
},
{
"key": "llm.load.llama.tryDirectIO",
"value": false
},
{
"key": "llm.load.llama.acceleration.offloadRatio",
"value": 1
},
{
"key": "llm.load.numParallelSessions",
"value": 1
},
{
"key": "llm.load.seed",
"value": {
"checked": true,
"value": 271828
}
}
]
},
"prediction_config": {
"fields": [
{
"key": "llm.prediction.promptTemplate",
"value": {
"type": "jinja",
"jinjaPromptTemplate": {
"template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {{- messages[0].content + '\\n\\n' }}\n {%- endif %}\n {{- \"# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within <tools></tools> XML tags:\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\\n\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\n<tool_call>\\n{\\\"name\\\": <function-name>, \\\"arguments\\\": <args-json-object>}\\n</tool_call><|im_end|>\\n\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' + messages[0].content + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for index in range(ns.last_query_index, -1, -1) %}\n {%- set message = messages[index] %}\n {%- if ns.multi_step_tool and message.role == \"user\" and not('<tool_response>' in message.content and '</tool_response>' in message.content) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n{%- endfor %}\n{%- for message in messages %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) %}\n {{- '<|im_start|>' + message.role + '\\n' + message.content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set content = message.content %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is defined and message.reasoning_content is not none %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '</think>' in message.content %}\n {%- set content = message.content.split('</think>')[-1].lstrip('\\n') %}\n {%- set reasoning_content = message.content.split('</think>')[0].rstrip('\\n').split('<think>')[-1].lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- if loop.index0 > ns.last_query_index %}\n {%- if loop.last or (not loop.last and reasoning_content) %}\n {{- '<|im_start|>' + message.role + '\\n<think>\\n' + reasoning_content.strip('\\n') + '\\n</think>\\n\\n' + content.lstrip('\\n') }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '<tool_call>\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {{- message.content }}\n {{- '\\n</tool_response>' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking is defined and enable_thinking is false %}\n {{- '<think>\\n\\n</think>\\n\\n' }}\n {%- endif %}\n{%- endif %}"
},
"stopStrings": []
}
},
{
"key": "llm.prediction.llama.cpuThreads",
"value": 10
},
{
"key": "llm.prediction.repeatPenalty",
"value": {
"checked": true,
"value": 1
}
},
{
"key": "llm.prediction.topPSampling",
"value": {
"checked": true,
"value": 1
}
},
{
"key": "llm.prediction.minPSampling",
"value": {
"checked": true,
"value": 0
}
},
{
"key": "llm.prediction.temperature",
"value": 0
},
{
"key": "llm.prediction.maxPredictedTokens",
"value": {
"checked": true,
"value": 512
}
},
{
"key": "llm.prediction.reasoning.enableThinking",
"value": false
},
{
"key": "llm.prediction.contextOverflowPolicy",
"value": "stopAtLimit"
},
{
"key": "llm.prediction.tools",
"value": {
"type": "none"
}
}
]
},
"plugins": [
"lmstudio/rag-v1"
],
"plugin_configs": {
"lmstudio/rag-v1": {
"preset": "",
"config": {
"fields": [
{
"key": "retrievalLimit",
"value": 8
}
]
}
}
},
"system_prompt": ""
}
Frozen native effective settings verified on every measured answer
Installed native engine and embedding artifact hashes · Installed unmodified stock RAG source hashes · Before-measurement complete study freeze · All six original-session integrity checks
The retained attempt records contain no runtime errors or timeouts. Quality failures and unresolved judgments remain in the score denominators and full raw evidence.
All 120 original Kingy responses and frozen grades · All 120 original native responses and frozen grades
Limits and history
- Kingy 1.5 did not pass the frozen supported-answer lower bound. Supplemental review cannot activate or qualify that candidate; the existing recipe 1.4 remains available with its original evidence.
- Frozen automatic native citation/support/cited-abstention effects are limited by a source-resolver failure on cross-page chunks. Automatic zeros do not mean the native citations lack sources.
- Supplemental source review is post-output, unblinded and from the same Kingy project; it preserves every original response and original score. One native completed-stage condition remains unresolved.
- The source audit credits more factually correct native answers. The retained Kingy outputs more consistently attach supporting passages for their requested claims; this is narrow synthetic-corpus evidence, not a general accuracy winner.
- One physical shared Mac, at most 30 pages and two explicit fields; no OCR, handwriting, long-corpus synthesis, arithmetic or concurrent-serving result. Conditions and swap are retained; OS caches were not flushed.
- Different native runtimes and complete retrieval pipelines. Native question time includes preprocessing/embedding/retrieval. Import and neutral warmups are separate; native cold-start duration was not reliably measured.
- No independent hardware reproduction, novice installation, comparative privacy, energy, cloud-cost or GPU-upgrade result. Native egress enforcement remains unverified.
- Control recovery is disclosed. It does not establish LM Studio reliability. Original v1.4 pilot, incomplete native runs, earlier failures and immutable release files remain separate evidence.
The original immutable v1.4 paired pilot remains separate historical evidence, including its incomplete native repetitions and post-output source review. Its scores and files are preserved. This v1.5 report uses its own frozen rubric and fresh study; it does not rewrite that earlier comparison. Original immutable v1.4 manifest
Inspect and reproduce
Report data · File hashes and sizes · Completed frozen analysis and output hashes
- Original frozen paired calculations; method limitation disclosedSHA-256 04a75d372d365808b6437ef48ea8a95c0d41e14beafc3500ecfa64d7c2e91a4b · 97888 bytes
- Original automatic summaries for all six sessionsSHA-256 c877d8e31769d22591ba877b9d43755bd2147df5c8dae87e68cb89d453bb8c63 · 53960 bytes
- Completed frozen analysis and output hashesSHA-256 34e8a336118aab528a6b5b93e7c343dd14b5058414d5235e558cf3e544fb7761 · 1131 bytes
- All six original-session integrity checksSHA-256 9cb5331525a640ba7292dc115f0941d8c2298ac3fede7889a5fce340fa80d058 · 42443 bytes
- All 120 original Kingy responses and frozen gradesSHA-256 6b0a0907ef5cb53614a8684b206ca2670ed66fe10220dd200515103af65dc71a · 1277112 bytes
- All 120 original native responses and frozen gradesSHA-256 39995ba54b09f6be82cb7b7e0a5c87a242c505f8fd055f153dd09f51bea733df · 21036970 bytes
- Original frozen paired protocolSHA-256 0dc0bd1e0533a73fc279cca744889a41df9591d6fd4c24d6ddf7a76dd42ec32b · 7081 bytes
- Original frozen common scoring rulesSHA-256 4f64b8eaf4744cc714c90b5bf562e6ffbe37a5ddc121f85a2cb3f6d48939901a · 8686 bytes
- Before-measurement complete study freezeSHA-256 c4c2e30f72178f693a471db74abfc1806e42dd4fab5f6c68d68f6327c4b30d28 · 5364 bytes
- Separate unblinded source review of all 240 originalsSHA-256 b84204892f04a376b12dafc8f244652b5801010cbab7ab9770881b44bb9c5211 · 887966 bytes
- Source-review provenance and unchanged original-result hashesSHA-256 6185c9b34f42a660581e402cb1c1718e4eeaf24b6ff05d10dea2214f2ebb5634 · 509 bytes
- Executed post-output source-review code; not a new primary scorerSHA-256 fc5408c57dc64d0d97e747afa8808573afdff91df85415f2a09070ab4b64f6ce · 9722 bytes
- Negative candidate qualification and packaging decisionSHA-256 5ca7a6b53f0e99e4a3d9215451fba52698a5fa0c498f288da332972bca648261 · 457 bytes
- Frozen native effective settings verified on every measured answerSHA-256 6c5c1df8f2412149991ccbff5206a90f5dd3f70e54ad15ec43ce2f453992c2ff · 11178 bytes
- Installed native engine and embedding artifact hashesSHA-256 d2f3a8e469022f4a1dd2b78a7ac685d21baa53afa8b6c334e9b190455a354d76 · 3121 bytes
- Installed unmodified stock RAG source hashesSHA-256 c46211b91224f40b122b8140db0d2dd1b12f164ffbbe6047050d4da9f850a0dc · 1268 bytes
- Post-measurement 34 installed artifact hash checksSHA-256 8be94e4fb7ab5b8396ce8ede5dc1e6a7548207157083b7bab3acb1b01f9d6d52 · 1158 bytes
- Original immutable v1.4 manifestSHA-256 fc28d7f64e75a37768586ded40807195f55aac7d1337d27ecf7a700fbd63a4e6 · 3822 bytes
- All original native snapshots and 39 frozen-input checks before reference accessSHA-256 41af8d96b45617e1c6975d0be70c6e3161e547ab925874acbf949c205e39267b · 1355 bytes
- Disclosed original control amendment after A1 and before native B1SHA-256 054f5960092d2a72bb94d460b99e57f6c38e483ebf408359674e97e43d4f6a67 · 2777 bytes
- Consumed-case repair controls; separate from unseen evaluationSHA-256 0b44ade3c1dcd246c7072a10a366699b1108ab343fbd4ec6fb3edc9b8d2d0c1d · 5008 bytes
- Actual pinned Kingy configuration and full-answer timing boundarySHA-256 1db05507bc7484f5ee1c148b14357d03682ad0940aaf2122ef60fa000f10a0ee · 1774 bytes
- Actual native control recovery and instrumentation provenanceSHA-256 dfc662653c41014a87c253da12ef0fd49e199b90a11c6c291daa2576dd8b7eda · 7985 bytes
- Actual shared-Mac conditions and neutral warmupsSHA-256 070372dba6aab33a2307a3a68b3f711f93e16e4113e09f68f4ab3f5ec89b8b4f · 82049 bytes
- Audit bundle: candidate, corpus, original records/logs and controls; not a qualified recipeSHA-256 2c3919ab0f7d4d3b8dffcbdf596cb541b8fc6376968b590ec2ad88cac6b06cd5 · 9575526 bytes