# Validation record

Prepared 2026-10-14 on Linux ARM64. These checks describe the shipped sample code and fictional data, not performance on arbitrary workloads.

- 15 offline tests passed: dispatcher validation, tool-result message ordering, bounded loops, retrieval metrics, narrow fact matching, image upload handling, HTML escaping, and request limits.
- The real local inventory-agent run called `lookup_inventory` for a monitor, received price EUR 199 and stock 7, and returned those facts. Its wording included extra reasoning text in this installed model/server configuration.
- The real local Qwen3-VL 2B image request returned EUR 199 and stock 7 from `product-label.png`.
- Five real PDF evaluation cases passed the expected-behaviour checks. Four supported facts had their labelled page ranked first and matching quoted evidence; the missing revenue case abstained. Semantic claim review is deliberately not marked automatic/pass.
- A 24-step real CPU LoRA run used `distilbert/distilgpt2`, PyTorch 2.14.1+cpu, Transformers 5.19.0, PEFT 0.21.2, and Accelerate 1.15.0. Frozen base parameters stayed unchanged. Held-out predictions matched two of three labels; the shipping request was misclassified as refund. See `lora-training-report.json`.
- The saved adapter was reloaded separately and returned refund for the held-out reimbursement request.
- Reasoning experiment rerun on 2026-10-20 with Ollama 0.40.5 on an NVIDIA GB10 GPU, temperature 0, one run per setting. `qwen3:4b` (359d7dd4bcda), recorded in `reasoning-results.json`: thinking-off content held the full reasoning trace and passed 0/4 exact checks (3/4 ended with `</think>` and the correct integer; 17 x 23 stopped at the 1,024-token limit). Thinking-on passed 3/4; 17 x 23 hit the limit with empty content. Generated-token counts were identical between modes for every question. `qwen3:4b-instruct` (0edcdef34593), recorded in `reasoning-results-instruct.json`: 2/4 exact, 4/4 arithmetically correct, 4 to 30 tokens, no thinking field in either mode.
- Terminal chat retested on 2026-10-20 with `qwen3:4b-instruct` at Ollama 0.40.5: it recalled an invented project name on the follow-up and said it did not know after `/reset`. With `qwen3:4b` and `think: false`, replies contained reasoning text ending in `</think>`, which is why the chat defaults to the instruct tag. A request against a closed port printed an error and left the history unchanged.
- The Mac MPS LoRA path and GPU QLoRA training path were not exercised. No claim about their training time, GPU memory use, or compatibility on a particular Mac/NVIDIA installation is made.

The live Ollama calls used CPU settings to avoid interrupting other GPU work. See the README for optional environment variables. Version and model tag changes can affect outputs; recorded text is evidence of one run, not a promise of identical future answers.
