v1.27.23 — Medicate
[1.27.23] — 2026-08-18
Server-only release (server Cargo.toml/lock 1.27.22 → 1.27.23; client +
plugin unchanged). "Medicate" — the three security findings the adversarial
pass surfaced as still-open, delivered as small, behavior-gated hardening: no
new schema, no new endpoints, no wire change, no telemetry. Two landed here
(health surface reduction + fail-closed embed errors); the third (the bounded
outbound client) was already shipped in v1.27.21 (M9: 5 s connect / 15 s total
egress bound) and is re-verified, not re-built.
Security fixes
- Public
/healthis now the minimal probe shape (A-02). The load-balancer
probe (status+version) stays public; every deployment-fingerprinting
field —model,otel.endpoint,pool,backup,webhook,hardening,
compliance.dpo_contact,integrity— moved behind the existing Read gate on
/health/db. An unauthenticated network probe can no longer fingerprint a
regulated BPO deployment. Intentional surface reduction (same class as the
v1.20.2 F2 carve-out): an operator monitor reading the detailed fields must
switch to the gated/health/db. - Dependency hardening: h2 0.4.15 → 0.4.16 (RUSTSEC-2026-0258). The HTTP/2
dependency (reached via the reqwest/hyper client) was bumped to clear the
"unbounded empty DATA frames" advisory.cargo auditreturns exit 0 on both
the server and client trees; the two remaining findings areunmaintained
warnings (paste, number_prefix) deep in the HF tokenizers/model2vec stack —
not vulnerabilities, and not clearable without a major bump.
Bug fixes
- Embed failures are no longer silent (A-03). The feature-gated neural
embedders (bge-m3/gte-base-en-v1.5) logged nothing when the model
failed, returning an empty vector the callers silently skipped. Every failure
branch now emits awarn!(the D-1 "never certify silence" invariant the repo
enforces on the audit settle, quarantine flag, and purge residues). Behavior
is otherwise unchanged: callers already skip the row on an empty vector, so no
corrupt zero-length embedding was ever written — this closes only the missing
signal, not the guard.