v2.1 task 02: router mode — status loaded only, per-model /props, guard and hosts view use it; given tests

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-09-25 11:22:37 -07:00
co-authored by Claude Fable 5.1
parent 98faa3a57d
commit d596ec8abf
5 changed files with 426 additions and 3 deletions
+5 -3
View File
@@ -9,9 +9,11 @@
the reverse proxy observed. Found 2026-09-25 by the intermittent `Errors:2` in
`TestQueueFullIs503`; verified with a diagnostic build; the given
`internal/proxy/served_test.go` reproduces it on every run.
- **02-props-loaded-only** (to be written after v2 merges) — the poller asks `/props?model=X`
only for models `/v1/models` lists as loaded, because llama-server's router autoloads a model
named in that query (`models_autoload`). See the v2 README's note of 2026-09-25.
- **02-props-loaded-only** — on a router only `status.value == "loaded"` counts as loaded; the
poller asks `/props?model=X` only for those (the router autoloads a model named in that query)
and keeps the answers per model (`Status.Models`, `PerSlotCtxFor`); the guard and the hosts view
use them. Facts verified against straylight's router on 2026-09-25. Given tests:
`health/props_router_test.go`, `proxy/ctxguard_router_test.go`, `admin/admin_models_test.go`.
- ~~03-timing-margins~~ — done by the owner directly (test-only work, no implementer task): the
remaining ordering sleeps in `limiter_test.go`, `proxy_test.go` and `cancel_test.go` now wait on
limiter state (`Queued`/`InFlight`); the one sleep left is a deliberate lower bound. Five clean