Extract handleAuthEndpoint, routeOrError, writeModelValidationError, authenticateV1,
enforceBodyLimit, setupCAGProxy. No behavior change. All tests pass with -race.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Three issues in one PR. Implements Cache-Augmented Generation (CAG) support in the api-gw.
#44 — Memory ServiceAdapter: standing-context resource
memoryadapter withstanding-contextresource (POST /memory/standing-context)Auth.Capabilityoverride now respected (was always using verb-derived capability)memory:readrequired via method-level override;memory:writefor ingestMEMORY_UPSTREAM_URLenv configures upstream#45 — Continuous batching: warmup deprioritisation + per-backend semaphore
VLLM_MAX_QUEUE_DEPTHslots (default 20)VLLM_MAX_NUM_SEQSslots (default 4)X-Poimen-Warmup: true→ sleepWARMUP_DELAY_MS(default 500ms) before queue entry, strip header, addX-Priority: lowwarmup_requests_delayed_total,queue_full_requests_totalat/metrics#46 — Cache-aware routing: rendezvous hash + prefix cache hit logging
addresses: [...]YAML field for multi-backend models (backward-compat withaddress)X-Poimen-Cache-Keyheader → rendezvous-hash backend selection (same key = same GPU)vllm-num-cached-tokensresponse header captured →vllm_prefix_cache_hit_tokens_totalcounter + structured logVerification
Reviewer verdicts
Non-blocking findings (🟡🔵 only)
getOrCreateTransportnot goroutine-safe by design; pre-population invariant documentedtime.Sleep(warmupDelay)holds goroutine; context-cancel alternative left as TODOCloses #44 Closes #45 Closes #46
- transportsMu (sync.RWMutex): guard getOrCreateTransport reads/writes; double-checked locking pattern; safe for dynamic backends - applyWarmup: replace time.Sleep with select{time.After, ctx.Done} so cancelled warmup requests release the goroutine immediately - Retry-After: 5 header on queue-full 503 (client backoff hint) - OTel trace_id skipped: collector in tracing ns, not monitoring ns