Kshitij Kapoor
f556edc10d
fix(model_metadata): address Phase-2 review findings on probe caches
...
Structured review (2a/2b/2c) findings, all fixed:
- MAJOR: detect_local_server_type memo was process-lifetime with no
invalidation, permanently pinning a URL's server type. Now a bounded
1h TTL ((type, monotonic) tuples) so a backend swap on the same port
is re-detected. Test covers ollama->lm-studio swap after expiry.
- MAJOR: legacy disk-row compat was one-way. get_cached_context_length
and _invalidate_cached_context_length now consult the same key-shape
set {canonical, literal, canonical+slash} in both directions, so an
old slashed row is found (and cleared) when the runtime passes the
normalized URL. Tests pin both migration directions.
- MINOR: _localhost_to_ipv4 did whole-string replacement, which could
corrupt a proxy URL embedding http://localhost in its query. Now a
scheme-anchored host-only regex; localhost.example.com and embedded
substrings pass through. Tests added.
- MINOR: _invalidate_cached_context_length now also drops the
in-memory TTL probe rows for the pair, so a resolution inside the
TTL window can't re-persist the value just declared stale.
- Test gaps closed: detect-type cache hit + TTL-expiry re-detection,
ollama-show TTL expiry re-probe, reverse legacy-row lookups.
- Attribution gate: added zhchl@hermes-agent.local -> 8294 (PR #50572
author) to AUTHOR_MAP; the strict CI grep needs bare non-plus emails
literal in release.py.
Gates: ruff clean; targeted suites 202 passed / 0 failed; full
tests/agent 5426 passed with 17 failures identical on clean
upstream/main (pre-existing env-dependent anthropic/bedrock/credpool
tests); mypy delta vs base: 0 new errors; live smoke 6/6 PASS.
2026-07-09 14:08:44 +05:30
..
2026-06-30 16:22:18 -07:00
2026-07-07 02:39:54 -07:00
2026-07-07 12:01:33 +05:30
2026-07-04 15:16:13 +05:30
2026-07-01 01:36:34 -07:00
2026-06-27 19:14:43 -07:00
2026-06-08 09:36:38 -07:00
2026-06-17 13:20:29 +05:30
2026-06-23 23:59:40 -07:00
2026-07-04 15:16:13 +05:30
2026-06-10 20:45:16 -07:00
2026-06-10 20:45:16 -07:00
2026-07-06 12:46:20 -07:00
2026-06-26 19:15:18 -07:00
2026-07-04 15:44:50 -07:00
2026-04-19 22:43:09 -07:00
2026-05-28 22:26:25 -07:00
2026-06-26 11:21:05 +05:30
2026-06-27 21:22:49 -07:00
2026-07-01 17:00:30 +05:30
2026-07-02 04:51:56 +05:30
2026-05-29 00:28:02 -07:00
2026-07-06 18:12:24 -07:00
2026-07-06 12:44:10 -07:00
2026-06-29 01:27:10 -07:00
2026-07-06 12:46:20 -07:00
2026-07-05 19:23:26 -07:00
2026-07-02 01:09:37 -07:00
2026-06-14 02:09:16 -07:00
2026-06-07 02:02:40 -07:00
2026-05-28 22:26:25 -07:00
2026-05-18 10:14:38 -07:00
2026-06-15 05:25:17 -07:00
2026-07-08 01:51:05 +05:30
2026-07-07 14:54:50 +05:30
2026-06-19 01:53:32 +05:30
2026-07-05 14:00:20 -07:00
2026-06-08 02:19:13 -07:00
2026-06-27 11:43:08 -07:00
2026-06-25 12:24:34 -05:00
2026-07-01 17:08:59 +05:30
2026-05-28 22:26:25 -07:00
2026-07-06 12:46:20 -07:00
2026-06-17 17:33:32 -07:00
2026-07-02 17:05:05 +05:30
2026-06-30 00:59:59 -05:00
2026-06-11 23:03:52 -07:00
2026-06-12 16:47:15 -07:00
2026-07-04 21:04:27 +05:30
2026-06-21 11:34:47 -07:00
2026-06-20 21:32:30 -07:00
2026-06-25 12:56:05 -07:00
2026-06-22 15:51:52 +05:30
2026-06-25 12:56:05 -07:00
2026-07-08 11:56:17 -07:00
2026-07-01 18:23:01 +05:30
2026-05-16 17:18:25 -07:00
2026-05-28 22:26:25 -07:00
2026-06-12 01:14:28 -07:00
2026-06-22 16:26:56 +05:30
2026-07-05 21:42:19 +05:30
2026-06-29 09:18:10 -04:00
2026-06-07 22:09:45 -07:00
2026-07-01 02:48:32 -07:00
2026-05-27 22:14:53 -07:00
2026-06-11 13:57:13 -07:00
2026-07-08 11:56:17 -07:00
2026-06-30 13:36:29 +05:30
2026-07-01 13:36:50 +05:30
2026-07-01 02:43:49 -07:00
2026-06-30 00:19:49 -07:00
2026-06-28 22:52:51 -07:00
2026-05-16 02:24:48 -07:00
2026-07-01 02:45:07 -07:00
2026-07-07 14:54:50 +05:30
2026-07-02 13:17:41 -07:00
2026-06-12 01:06:46 -07:00
2026-06-06 13:18:18 +05:30
2026-06-12 08:51:10 +00:00
2026-06-06 13:18:18 +05:30
2026-06-12 08:51:10 +00:00
2026-05-28 22:26:25 -07:00
2026-04-30 10:31:47 -07:00
2026-06-17 05:40:05 -07:00
2026-07-05 13:42:46 -07:00
2026-05-28 22:26:25 -07:00
2026-06-28 15:10:21 -07:00
2026-06-13 02:01:09 -07:00
2026-06-25 00:17:17 -07:00
2026-06-07 21:50:57 -07:00
2026-05-17 02:29:41 -07:00
2026-04-20 22:14:29 -07:00
2026-05-28 22:26:25 -07:00
2026-05-28 22:26:25 -07:00
2026-06-29 20:31:17 -07:00
2026-06-17 17:32:14 -07:00
2026-07-06 01:56:09 -07:00
2026-05-28 22:26:25 -07:00
2026-05-28 22:26:25 -07:00
2026-06-20 10:46:01 -07:00
2026-06-02 14:03:37 +10:00
2026-07-01 01:02:35 -07:00
2026-05-28 22:26:25 -07:00
2026-06-02 11:29:24 +10:00
2026-07-01 01:02:35 -07:00
2026-07-05 13:44:33 -07:00
2026-05-28 22:26:25 -07:00
2026-06-30 11:51:22 -07:00
2026-04-24 03:40:00 -07:00
2026-06-03 12:00:27 -07:00
2026-04-21 21:30:10 -07:00
2026-07-05 03:15:03 -07:00
2026-06-07 18:33:20 -07:00
2026-06-30 03:20:11 -07:00
2026-05-28 00:20:11 -07:00
2026-04-29 06:35:42 -07:00
2026-05-23 17:38:19 -07:00
2026-06-30 16:56:01 -07:00
2026-06-30 11:54:16 -05:00
2026-07-01 16:25:48 -05:00
2026-06-30 15:16:25 -05:00
2026-06-05 10:18:10 +10:00
2026-07-05 13:42:46 -07:00
2026-06-08 02:18:59 -07:00
2026-07-09 03:21:54 +05:30
2026-06-25 02:17:29 +05:30
2026-06-08 02:18:59 -07:00
2026-06-16 10:37:37 -07:00
2026-05-28 22:26:25 -07:00
2026-06-22 07:00:42 -07:00
2026-06-19 15:23:41 +08:00
2026-04-07 22:23:28 -07:00
2026-06-04 05:53:35 -07:00
2026-07-04 20:59:02 +05:30
2026-07-01 06:02:33 -07:00
2026-06-30 03:39:50 -07:00
2026-06-30 03:39:50 -07:00
2026-07-01 04:07:46 -07:00
2026-06-30 03:27:12 -07:00
2026-07-09 14:08:44 +05:30
2026-04-24 03:00:33 -07:00
2026-07-09 12:34:11 +05:30
2026-05-29 23:45:05 -07:00
2026-06-13 05:51:41 -07:00
2026-07-02 17:05:05 +05:30
2026-06-06 13:18:18 +05:30
2026-06-12 08:51:10 +00:00
2026-06-04 01:19:28 +05:30
2026-04-26 04:53:42 -07:00
2026-06-07 08:36:48 -07:00
2026-06-23 08:01:50 +00:00
2026-05-05 10:13:34 -07:00
2026-06-30 15:41:44 -05:00
2026-06-25 00:44:53 -05:00
2026-07-08 06:18:18 -07:00
2026-06-18 14:28:01 -07:00
2026-05-28 22:26:25 -07:00
2026-05-12 20:49:20 -07:00
2026-06-25 01:20:23 +05:30
2026-07-09 14:08:44 +05:30
2026-06-28 20:46:32 -07:00
2026-07-04 13:54:27 +05:30
2026-04-21 05:52:46 -07:00
2026-05-28 22:26:25 -07:00
2026-06-29 02:42:54 -07:00
2026-07-05 13:58:19 -07:00
2026-06-27 20:56:49 -07:00
2026-06-27 20:04:45 -07:00
2026-06-11 13:57:13 -07:00
2026-06-02 20:23:09 +00:00
2026-05-24 18:10:47 -07:00
2026-06-19 07:34:15 -07:00
2026-05-30 02:38:59 -07:00
2026-05-28 22:26:25 -07:00
2026-06-30 00:59:29 -05:00
2026-07-05 14:48:11 -07:00
2026-06-26 19:15:18 -07:00
2026-07-06 02:43:37 -07:00
2026-07-09 02:41:24 +05:30
2026-06-13 21:14:32 -07:00
2026-07-02 04:51:56 +05:30
2026-06-10 20:21:38 -05:00
2026-05-18 10:53:08 -07:00
2026-05-28 22:26:25 -07:00
2026-04-20 20:53:51 -07:00
2026-07-01 04:55:15 -07:00
2026-05-28 22:26:25 -07:00
2026-06-11 13:57:13 -07:00
2026-06-16 09:50:17 -05:00
2026-06-25 16:40:27 -05:00
2026-05-05 04:33:38 -07:00
2026-06-25 19:00:48 -07:00
2026-06-30 17:28:33 -07:00
2026-07-01 04:18:48 -07:00
2026-06-28 02:44:06 -07:00
2026-07-01 02:44:09 -07:00
2026-05-19 00:12:12 -07:00
2026-05-13 06:46:23 -07:00
2026-07-07 15:12:49 -07:00
2026-05-25 01:41:19 -07:00
2026-05-24 18:04:54 -07:00
2026-06-30 13:36:29 +05:30
2026-06-22 13:57:59 -07:00
2026-07-01 03:34:49 -07:00
2026-06-23 23:52:28 -07:00
2026-07-01 05:25:33 -07:00
2026-05-08 14:55:40 -07:00
2026-05-29 17:24:30 -07:00
2026-06-21 11:48:43 -07:00
2026-06-24 23:03:45 -05:00
2026-07-01 02:26:06 -07:00
2026-06-30 01:43:08 -05:00
2026-06-30 00:59:29 -05:00
2026-07-02 06:07:56 +05:30
2026-05-13 16:39:41 -07:00
2026-05-04 05:05:43 -07:00
2026-05-24 15:01:28 -07:00