courtmanr@gmail.com
eb665b2a0d
fix(ai): make Patrol readiness probes representative of the Patrol runtime
...
The readiness advisor failed capable local models for adapter and probe
defects rather than model incapability (#1624 Ollama, #1614 llama.cpp):
- Send num_ctx sized to the haystack fixtures (clamped to the model's
trained window) so Ollama no longer truncates ~25KB prompts at its
4096-token server default; the trained-window guard alone passed while
the runtime request was being truncated.
- Forward an explicitly pinned temperature 0 instead of dropping it to
Ollama's 0.8 default against a nonce-exact validator (ChatRequest gains
TemperatureSet; Ollama options temperature is now a pointer).
- Raise the probe generation cap from 256 to 2048 tokens so qwen3-style
<think> reasoning cannot exhaust the budget before the tool call, and
surface the provider done_reason when validation fails.
- Synthesise tool-call IDs in the OpenAI-compatible adapter (streaming
finalizer and buffered path) when the server omits them, as llama.cpp
commonly does, mirroring the Ollama adapter instead of failing tool
protocol 0/3 on transport shape.
- Probe with the Patrol loop's 60s stream stall allowance instead of the
12s chat default (chat.PatrolProviderStreamIdleTimeout is now exported).
- Stop discarding probe and validator errors: log them, carry them in a
new PatrolModelReadinessResult.Details field surfaced through the API
snapshot and Settings UI, and keep a transport-level probe failure's
specific diagnosis instead of overwriting it with the generic
capability wording.
Builds on 4a2335ce7 , which already reclassifies protocol failure as
"provider connected; Patrol capability not verified".
Fixes #1624
Fixes #1614
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-26 12:49:24 +01:00
..
2026-06-23 17:26:15 +01:00
2026-07-25 00:21:35 +01:00
2026-03-18 16:06:30 +00:00
2026-07-26 12:49:24 +01:00
2026-03-18 16:06:30 +00:00
2026-05-21 15:15:23 +01:00
2026-07-25 00:21:35 +01:00
2026-07-23 16:42:08 +01:00
2026-05-15 12:22:52 +01:00
2026-06-03 12:29:37 +01:00
2026-05-25 18:02:28 +01:00
2026-03-29 14:18:20 +01:00
2026-03-18 16:06:30 +00:00
2026-07-23 16:42:08 +01:00
2026-06-09 09:43:21 +01:00
2026-07-16 15:17:45 +01:00
2026-03-18 16:06:30 +00:00
2026-07-26 12:49:24 +01:00
2026-04-01 14:47:58 +01:00
2026-07-23 06:59:05 +01:00
2026-07-16 13:40:38 +01:00
2026-07-25 00:21:35 +01:00
2026-06-27 14:43:09 +01:00
2026-05-01 20:28:11 +01:00
2026-07-16 15:17:45 +01:00
2026-03-30 13:34:08 +01:00
2026-03-30 13:34:08 +01:00
2026-01-25 21:08:44 +00:00
2026-05-07 01:24:57 +01:00
2026-05-07 01:24:57 +01:00
2025-12-29 13:49:04 +00:00
2026-03-18 16:06:30 +00:00
2026-07-19 15:11:01 +01:00
2026-07-19 15:11:01 +01:00
2026-07-19 15:11:01 +01:00
2026-07-19 15:11:01 +01:00
2026-07-19 15:11:01 +01:00
2025-12-29 13:49:04 +00:00
2026-01-01 22:29:15 +00:00
2025-12-12 11:29:47 +00:00
2026-03-18 16:06:30 +00:00
2025-12-12 14:26:10 +00:00
2026-06-23 17:26:15 +01:00
2026-06-23 17:26:15 +01:00
2026-05-10 21:57:39 +01:00
2026-06-03 12:29:37 +01:00
2026-07-25 00:21:35 +01:00
2026-07-11 11:25:52 +01:00
2026-07-20 16:03:29 +01:00
2026-05-17 21:59:39 +01:00
2026-06-03 12:29:37 +01:00
2026-04-09 20:15:17 +01:00
2026-01-25 21:08:44 +00:00
2026-07-12 05:23:02 +01:00
2026-07-13 21:51:33 +01:00
2026-05-12 22:23:55 +01:00
2026-05-12 22:23:55 +01:00
2026-01-30 19:02:14 +00:00
2026-05-11 11:40:07 +01:00
2026-01-30 19:02:14 +00:00
2026-01-30 19:02:14 +00:00
2026-06-23 17:26:15 +01:00
2026-06-10 09:38:52 +01:00
2026-06-09 21:42:21 +01:00
2026-05-13 11:35:24 +01:00
2026-05-13 05:42:25 +01:00
2026-05-13 11:35:24 +01:00
2026-05-13 11:35:24 +01:00
2026-06-30 10:37:54 +01:00
2026-07-11 11:25:52 +01:00
2026-07-13 16:05:44 +01:00
2026-07-17 17:29:22 +01:00
2026-06-09 21:42:21 +01:00
2026-05-13 01:13:38 +01:00
2026-03-30 13:34:08 +01:00
2026-05-13 02:41:45 +01:00
2026-05-13 02:41:45 +01:00
2026-05-13 02:41:45 +01:00
2026-03-18 16:06:30 +00:00
2026-06-30 10:37:54 +01:00
2026-02-01 10:12:23 +00:00
2026-06-23 17:26:15 +01:00
2026-06-23 17:26:15 +01:00
2026-06-09 21:42:21 +01:00
2026-05-13 04:18:27 +01:00
2026-05-13 04:18:27 +01:00
2026-06-30 10:37:54 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-06-23 17:26:15 +01:00
2026-03-19 04:15:26 +00:00
2026-06-23 17:26:15 +01:00
2026-07-10 21:22:06 +01:00
2026-07-10 21:22:06 +01:00
2026-07-23 22:19:35 +01:00
2026-07-26 12:49:24 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 17:22:24 +00:00
2026-07-20 20:45:39 +01:00
2025-12-12 13:49:37 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2025-12-29 13:49:04 +00:00
2025-12-12 09:45:57 +00:00
2026-03-18 16:06:30 +00:00
2026-06-08 07:21:38 +01:00
2026-07-10 00:14:01 +01:00
2026-07-24 12:35:31 +01:00
2026-07-06 10:08:36 +01:00
2026-07-14 17:31:05 +01:00
2026-07-16 06:40:17 +01:00
2026-07-14 15:35:48 +01:00
2026-07-23 22:05:09 +01:00
2026-02-01 18:07:41 +00:00
2026-07-23 22:19:35 +01:00
2026-07-17 23:23:38 +01:00
2026-07-22 21:09:23 +01:00
2026-06-23 17:26:15 +01:00
2026-06-23 17:26:15 +01:00
2026-07-14 19:23:36 +01:00
2026-05-07 18:24:47 +01:00
2026-07-18 11:59:05 +01:00
2026-07-21 15:13:43 +01:00
2026-06-27 22:18:09 +01:00
2026-07-14 22:33:40 +01:00
2026-07-21 15:13:43 +01:00
2026-02-04 19:56:12 +00:00
2026-05-08 11:08:53 +01:00
2026-05-08 11:08:53 +01:00
2026-07-15 10:49:16 +01:00
2026-07-18 11:59:05 +01:00
2026-07-16 14:06:01 +01:00
2026-05-01 20:28:11 +01:00
2026-06-10 09:38:52 +01:00
2026-02-01 16:27:25 +00:00
2026-07-20 16:03:29 +01:00
2026-07-19 15:11:02 +01:00
2026-07-19 15:11:02 +01:00
2026-07-24 12:35:31 +01:00
2026-07-26 12:49:24 +01:00
2026-07-24 12:35:31 +01:00
2026-07-24 12:35:31 +01:00
2026-05-01 20:28:11 +01:00
2026-05-01 20:28:11 +01:00
2026-07-22 16:29:44 +01:00
2026-07-17 23:20:44 +01:00
2026-07-20 20:45:39 +01:00
2026-06-23 19:38:22 +01:00
2026-03-30 13:34:08 +01:00
2026-07-17 23:23:38 +01:00
2026-07-14 22:33:40 +01:00
2026-07-17 23:23:38 +01:00
2026-07-22 12:08:37 +01:00
2026-07-14 23:23:14 +01:00
2026-07-14 16:34:19 +01:00
2026-07-10 12:04:03 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-06-29 18:17:24 +01:00
2026-03-18 16:06:30 +00:00
2026-06-29 18:17:24 +01:00
2026-07-14 15:35:48 +01:00
2026-03-18 16:06:30 +00:00
2026-06-09 21:47:14 +01:00
2026-01-24 22:41:43 +00:00
2026-07-14 19:23:36 +01:00
2026-07-15 20:42:17 +01:00
2026-07-15 20:42:17 +01:00
2026-05-13 00:28:24 +01:00
2026-06-15 10:08:54 +01:00
2026-07-14 15:35:48 +01:00
2026-07-20 16:03:29 +01:00
2025-12-12 14:11:28 +00:00
2026-05-10 19:30:54 +01:00
2026-05-10 19:30:54 +01:00
2026-05-10 21:23:12 +01:00
2026-05-10 22:02:10 +01:00
2026-05-10 21:08:51 +01:00
2026-05-10 22:02:10 +01:00
2026-06-09 09:43:21 +01:00
2026-06-09 09:43:21 +01:00
2026-06-08 15:21:51 +01:00
2026-06-09 09:43:21 +01:00
2026-03-19 04:07:47 +00:00
2026-03-19 04:07:47 +00:00
2026-03-18 16:06:30 +00:00
2026-03-30 13:34:08 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2025-12-10 08:35:24 +00:00
2026-07-22 16:29:44 +01:00
2026-06-08 03:48:33 +01:00
2026-07-17 17:29:22 +01:00
2026-05-15 16:28:17 +01:00
2026-07-13 21:51:33 +01:00
2026-07-12 13:29:21 +01:00
2026-07-12 13:29:21 +01:00
2026-03-18 16:06:30 +00:00
2026-07-20 20:45:39 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00