← Kingy Local AI

INCOMPLETE PAIRED DOCUMENT PILOT · V1.4

Kingy and native LM Studio: one completed paired repetition

Measured 2026-10-14T00:40:47.967298+00:00 · document-comparison-v14-20261014.1

40 unique questions × 1 completed paired repetition. Three repetitions were planned.

Ten independently authored synthetic English PDFs,30 pages;20 direct factual,10 cross-document and10 unanswerable questions. Corpus and method frozen before first question access; no post-test source tuning.

30 answerable and 10 unanswerable questions per completed workflow. The three-repetition native comparison was not completed. No missing native repetition is fabricated or scored as a quality failure.

Why the planned comparison is incomplete

The computer-control service crashed during B2 and later returned inconsistent accessibility and screenshot states. Seven B2 responses are retained. A replacement run stopped after neutral warmup, before any document question. B3 was not executed. Causation and LM Studio product reliability remain unknown. Native stop and publication scope were recorded before answer-key access.

The stop decision was recorded before answer-key access. Before-grading native stop and scope decision. The Original frozen three-pair comparison plan preserves the original three-repetition plan; this pilot does not fulfill that plan.

Seven interrupted native attempts, reported separately

All seven completed original outputs and supplemental grades are downloadable.33planned questions were not executed. These seven are not pooled into A1/B1, and the unrun questions are not scored as native quality failures.

Native B2 retained 7 attempts before instrumentation interruption. They are excluded from paired quality metrics and are not counted as quality failures. No B2/B3 score is inferred. All seven interrupted native responses and grades, excluded from paired comparison

What this pilot supports

The two consumed v1.3 failure cases passed all six targeted development attempts after the repair.

Scope: These are repair regressions, not fresh held-out accuracy evidence. Two different cross-document failures remain in the new corpus.

Six targeted repair passes and retained development audit · Kingy A1/A2/A3 complete raw responses and common grades

The source-based review found 28/30 fully supported Kingy answers and 25–26/30 native answers in this completed pair.

Scope: A descriptive result on this fixed corpus with a supplementary, unblinded review. The automatic16 vs 28gap materially overstates the difference. This does not prove general or repeatable accuracy superiority.

Supplementary source-based audit, all 17 case judgments and matcher false negatives · A1 complete Kingy responses and frozen grades · B1 complete native responses and frozen grades

Kingy returned complete answers sooner on all 40questions in the completed A1/B1 pair: median 4.50 seconds versus 13.70 seconds.

Scope: Descriptive post-submission workflow time on this shared Mac and exact configurations. Includes incorrect/unresolved answers. Native time includes its preprocessing/embedding; no model-throughput, novice speed or repeatability advantage is established.

All40 paired answer-time observations and boundaries · Recorded machine, session setup and environment conditions

Kingy returned explicit document/page/quote citations. Native citations were credited by mapping their source quotes to PDFs.

Scope: The frozen common rubric recorded 37 supported explicit-page citations for Kingy and 35 supported quote-mapped native citations, plus one unresolved native citation. This establishes the recorded output format, not general citation superiority.

A1 complete Kingy responses and frozen grades · B1 complete native responses and frozen grades · All retained run summaries

The fresh ZIP passed four installation smoke tests and denied tested outbound IPv4, IPv6 and wrong-loopback-port connections; local health and authentication behaved as declared.

Scope: Owned Mac, declared prerequisites already installed, existing model reused after byte verification. No novice-user or comparative privacy claim.

Fresh ZIP installation, four self-tests and offline checks · Workflow1.4, public corpus, references and installation smoke tests

Supplementary source review

This review was not blinded and was conducted after seeing the outputs. It is a separate, post-output source review; the frozen automatic scores below remain unchanged. Descriptive counts and ranges are supplied by the reviewer, not calculated by this report, and do not automatically establish a winner.

Reason: The frozen literal canonical matcher undercredited seven semantically correct concise native answers and two unresolved native supported answers. The frozen scores remain unchanged below. The supplementary review resolves an explanatory native absence correctly, and identifies Kingy's fact-unresolved exposure-dose answer as a definite wrong date. One native scope-amendment citation remains ambiguous.

Method: Separate evidence review of all 17 A1/B1 non-pass or unresolved cases against source PDFs and required facts. Conducted after outputs, not blinded to system, by a review agent in the same project. It is not independent hardware reproduction or a replacement frozen scorer.

Supplementary review; separate from the frozen automatic scores
WorkflowSupported answersFactual answersAbstentionCitations
Kingy A128/3028/3010/1037/38
Native LM Studio B125–26/30 (one source-support ambiguity)26/3010/1036–37/40 (one source-support ambiguity)

Supplementary source-based audit, all 17 case judgments and matcher false negatives

Frozen automatic scores, including matcher limitations

These measurements describe the recorded workflows and settings. Frozen automatic matching can miss valid answers or source support; the linked method and any supplementary source review describe those limitations. This incomplete pilot does not automatically name a winner, qualify a new buying recommendation, or establish superiority in privacy, ease of use or hardware performance.

Completed A1 / B1 only; the incomplete native repetitions are excluded
Workflow / repetitionFact correctnessSupport correctnessCitation correctnessCorrect abstentionAttempt accounting
Kingy workflow 1.4A1Conservative 28/30 (93.3%)1 unresolved · Unresolved bounds 93.3%–96.7%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 28/30 (93.3%)0 unresolved · Unresolved bounds 93.3%–93.3%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 37/38 (97.4%)0 unresolved · Unresolved bounds 97.4%–97.4%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 10/10 (100.0%)0 unresolved · Unresolved bounds 100.0%–100.0%; possible upper bound includes all unresolved cases.Confidence interval not supplied40/40 recorded0 missing · 0 errors · 0 timeouts
Native LM Studio PDF chatB1Conservative 16/30 (53.3%)6 unresolved · Unresolved bounds 53.3%–73.3%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 16/30 (53.3%)2 unresolved · Unresolved bounds 53.3%–60.0%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 35/40 (87.5%)1 unresolved · Unresolved bounds 87.5%–90.0%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 9/10 (90.0%)1 unresolved · Unresolved bounds 90.0%–100.0%; possible upper bound includes all unresolved cases.Confidence interval not supplied40/40 recorded0 missing · 0 errors · 0 timeouts

Errors and timeouts within a completed repetition may overlap; they are not added to each other. A zero denominator is unavailable. Instrumentation interruption is disclosed above rather than converted into a score.

What the metrics mean

Conservative rates count confirmed passes only. Unresolved cases remain unresolved; they are not relabeled as failures. Unresolved bounds run from confirmed passes divided by the denominator to confirmed passes plus unresolved cases divided by the same denominator. They are not 95% confidence intervals; any supplied confidence interval is displayed separately.

Fact correctness
Canonical required-value checks across30 answerable questions, separately from citations. The frozen matcher can undercredit semantically correct concise native answers; supplementary source review must be consulted. Unresolved cases remain in denominator with explicit bounds.
Support correctness
Complete required facts plus actually emitted citations across30 answerable questions. Every requested field must be covered. Errors, missing essential fields, unsupported assertions and timeouts within complete runs fail; unresolved cases retain their denominator. Literal-wording limitations are disclosed.
Citation correctness
Grounded emitted citation instances that support the associated required claim divided by all emitted citations, including unsupported or unresolved claims. Displayed native source cards count only when claimed in answer text. A uniquely quote-mapped native citation can earn full credit; an explicit page label is separately reported.
Correct abstention
Correctly declining each of10 unanswerable questions, with no invented facts. Valid native prose is allowed; exact labelledUNKNOWN is not the only possible decline. Supplementary source review addresses explanatory prose and unresolved assertions.

Original frozen three-pair comparison plan · Frozen common scoring rules

Uncertainty and the comparison unit

Method: Frozen 10,000-draw whole-question paired case-resampling sensitivity with arithmetic unresolved lower/upper bounds.

Unit: 40 matched unique questions;3 repetitions planned, one native pair complete. A2/A3 are Kingy repeatability checks only.

Supplied paired-effect estimates
{
  "complete_question_success": {
    "unique_questions": 40,
    "effect_bounds_A_minus_B": [
      0.25,
      0.325
    ],
    "cluster_bootstrap_95pct_sensitivity_envelope": [
      0.125,
      0.475
    ],
    "bootstrap_draws": 10000,
    "usable_bootstrap_draws": 10000,
    "interpretation": "Paired whole-question case-resampling sensitivity on this fixed corpus; not a p-value, population confidence claim or independent-repeat sample."
  },
  "supported_answer_success": {
    "unique_questions": 30,
    "effect_bounds_A_minus_B": [
      0.3333333333333333,
      0.4
    ],
    "cluster_bootstrap_95pct_sensitivity_envelope": [
      0.16666666666666666,
      0.5666666666666667
    ],
    "bootstrap_draws": 10000,
    "usable_bootstrap_draws": 10000,
    "interpretation": "Paired whole-question case-resampling sensitivity on this fixed corpus; not a p-value, population confidence claim or independent-repeat sample."
  },
  "canonical_fact_correctness": {
    "unique_questions": 30,
    "effect_bounds_A_minus_B": [
      0.2,
      0.43333333333333335
    ],
    "cluster_bootstrap_95pct_sensitivity_envelope": [
      0,
      0.6
    ],
    "bootstrap_draws": 10000,
    "usable_bootstrap_draws": 10000,
    "interpretation": "Paired whole-question case-resampling sensitivity on this fixed corpus; not a p-value, population confidence claim or independent-repeat sample."
  },
  "correct_abstention": {
    "unique_questions": 10,
    "effect_bounds_A_minus_B": [
      0,
      0.1
    ],
    "cluster_bootstrap_95pct_sensitivity_envelope": [
      0,
      0.3
    ],
    "bootstrap_draws": 10000,
    "usable_bootstrap_draws": 10000,
    "interpretation": "Paired whole-question case-resampling sensitivity on this fixed corpus; not a p-value, population confidence claim or independent-repeat sample."
  },
  "emitted_citation_precision": {
    "unique_questions": 40,
    "effect_bounds_A_minus_B": [
      0.0736842105263158,
      0.09868421052631582
    ],
    "cluster_bootstrap_95pct_sensitivity_envelope": [
      0,
      0.18928841991341988
    ],
    "bootstrap_draws": 10000,
    "usable_bootstrap_draws": 10000,
    "interpretation": "Paired whole-question case-resampling sensitivity on this fixed corpus; not a p-value, population confidence claim or independent-repeat sample."
  }
}

Separate Kingy recipe qualification runs

These are three Kingy repetitions, presented separately from the one completed native pair. A1 is the same run shown in the paired pilot, not additional independent evidence. A2 and A3 have no completed native counterparts and do not extend the paired comparison. Repeated attempts are repeatability observations, not 120 independent questions or an independent reproduction.

Kingy-only qualification accounting; excluded from paired metrics
Workflow / repetitionFact correctnessSupport correctnessCitation correctnessCorrect abstentionAttempt accounting
Kingy workflow 1.4A1Conservative 28/30 (93.3%)1 unresolved · Unresolved bounds 93.3%–96.7%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 28/30 (93.3%)0 unresolved · Unresolved bounds 93.3%–93.3%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 37/38 (97.4%)0 unresolved · Unresolved bounds 97.4%–97.4%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 10/10 (100.0%)0 unresolved · Unresolved bounds 100.0%–100.0%; possible upper bound includes all unresolved cases.Confidence interval not supplied40/40 recorded0 missing · 0 errors · 0 timeouts
Kingy workflow 1.4A2Conservative 28/30 (93.3%)1 unresolved · Unresolved bounds 93.3%–96.7%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 28/30 (93.3%)0 unresolved · Unresolved bounds 93.3%–93.3%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 37/38 (97.4%)0 unresolved · Unresolved bounds 97.4%–97.4%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 10/10 (100.0%)0 unresolved · Unresolved bounds 100.0%–100.0%; possible upper bound includes all unresolved cases.Confidence interval not supplied40/40 recorded0 missing · 0 errors · 0 timeouts
Kingy workflow 1.4A3Conservative 28/30 (93.3%)1 unresolved · Unresolved bounds 93.3%–96.7%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 28/30 (93.3%)0 unresolved · Unresolved bounds 93.3%–93.3%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 37/38 (97.4%)0 unresolved · Unresolved bounds 97.4%–97.4%; possible upper bound includes all unresolved cases.Confidence interval not suppliedConservative 10/10 (100.0%)0 unresolved · Unresolved bounds 100.0%–100.0%; possible upper bound includes all unresolved cases.Confidence interval not supplied40/40 recorded0 missing · 0 errors · 0 timeouts

Frozen common scoring rules · Kingy A1/A2/A3 complete raw responses and common grades · All retained run summaries. This report does not calculate qualification or change the buying recommendation.

Exact settings and retained failures

Kingy workflow 1.4

Recorded machine, session setup and environment conditions · A1 complete Kingy responses and frozen grades

Model, runtime, retrieval and generation settings
{
  "machine": {
    "chip": "M4 Pro",
    "cpuCores": 14,
    "gpuCores": 20,
    "memoryGiB": 24,
    "os": "macOS 26.3 build 25D125",
    "power": "AC, automatic power mode",
    "environment": "Shared machine; conditions and swap retained. Other active jobs were not stopped."
  },
  "model": {
    "id": "Qwen3-4B",
    "quantization": "Q4_K_M",
    "bytes": 2497280256,
    "sha256": "7485fe6f11af29433bc51cab58009521f205840f5b4ae3a32fa7f92e8534fdf5"
  },
  "context": 8192,
  "maxOutputTokens": 512,
  "temperature": 0,
  "generationSeed": 271828,
  "completeQueryDeadlineSeconds": 90,
  "thinking": false,
  "PDFs": "same ten byte-identical PDFs,30 pages",
  "firstMessageOnly": true,
  "workflow": "1.4.0",
  "runtime": "llama.cpp0.6.0b11429 d81235049",
  "retrieval": "BM25 pages plus generic field/clause scoring; source-ID selection then source-sufficiency inference; no embedding service",
  "requestsPerQuestion": 2,
  "runnerSha256": "00d0f68dfa240c7ce937be94ade50172c5051cb243ad50b2740e1b292ea5f65c",
  "load": "CPU threads 10, fullMetal, flashattention, F16 KV, parallel 1",
  "timer": {
    "n": 40,
    "p50": 4.496676228998695,
    "p95": 6.2484013339853846,
    "max": 8.307981291989563,
    "boundary": "Kingy ask entry through complete returned answer including retrieval, selection and sufficiency check; excludes prior PDF import/index, cold start and warmup."
  },
  "warmup": "Neutral READY, no documents/questions before measurement",
  "coldStartAndPDFIndex": "Recorded separately, excluded from answer timer"
}

Native LM Studio PDF chat

Actual native effective load, prediction and retrieval settings · B1 complete native responses and frozen grades

Model, runtime, retrieval and generation settings
{
  "machine": {
    "chip": "M4 Pro",
    "cpuCores": 14,
    "gpuCores": 20,
    "memoryGiB": 24,
    "os": "macOS 26.3 build 25D125",
    "power": "AC, automatic power mode",
    "environment": "Shared machine; conditions and swap retained. Other active jobs were not stopped."
  },
  "model": {
    "id": "Qwen3-4B",
    "quantization": "Q4_K_M",
    "bytes": 2497280256,
    "sha256": "7485fe6f11af29433bc51cab58009521f205840f5b4ae3a32fa7f92e8534fdf5"
  },
  "context": 8192,
  "maxOutputTokens": 512,
  "temperature": 0,
  "generationSeed": 271828,
  "completeQueryDeadlineSeconds": 90,
  "thinking": false,
  "PDFs": "same ten byte-identical PDFs,30 pages",
  "firstMessageOnly": true,
  "app": "LM Studio 0.4.26+4 official notarized installer",
  "engine": "llama.cpp-mac-arm64-apple-metal-advsimd2.56.0;0.6.0-dev1commit8bb3cf0",
  "retrieval": "native PDF attachments and unmodified installed rag-v1 revision 8",
  "retrievalLimit": 8,
  "affinityThreshold": 0.5,
  "embedding": "bundled Nomic Embed Textv1.5Q4_K_M,84,106,624bytes",
  "requestsPerAnswer": 1,
  "actualEffectiveSettings": {
    "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.yuzu.autoFit",
          "value": false
        },
        {
          "key": "llm.load.vllm.autoFit",
          "value": false
        },
        {
          "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"
          }
        }
      ]
    },
    "plugin_configs": {
      "lmstudio/rag-v1": {
        "preset": "",
        "config": {
          "fields": [
            {
              "key": "retrievalLimit",
              "value": 8
            }
          ]
        }
      }
    },
    "plugins": [
      "lmstudio/rag-v1"
    ],
    "system_prompt": ""
  },
  "load": "CPU threads 10, fullMetal, flashattention, F16 KV, parallel 1, seeded GUIreload",
  "timer": {
    "n": 40,
    "p50": 13.6965,
    "p95": 20.771,
    "max": 26.497,
    "boundary": "Native app submission to documented logger final-answer event; includes native preprocessing/retrieval/embedding/inference; excludes later title generation and automation/export."
  },
  "warmup": "Neutral READY through official SDK before document questions",
  "extraTitleOutputs": "Retained separately; no best-response selection",
  "runtimeEgressEnforcement": "unverified; no comparative privacy claim"
}

Limits of this study

Immutable v1.3 evidence remains available with its recorded qualification and disclosed failures. Active buying qualification is independently controlled by the versioned recipe receipt. A v1.4 comparison is separate evidence; qualification is not granted by this report or by a relative score.

Reproduce and inspect

Download the report data · File hashes and sizes