librechat.yaml: modelSpecs.enforce false — unblock pre-spec conversations

With enforce: true (in place since at least Oct 23), every send whose body
carries no `spec` is rejected by api/server/middleware/buildEndpointOption.js
with "No model spec selected", surfaced to members as "Inference Co-op could
not complete this request."

400 of 547 conversations across 37 users had no `spec` — all created before
the spec system (newest Oct 20). They fail on the members' first send;
new chats were fine because the softDefault spec pre-selects.

enforce: false lets those conversations send with their own stored model
exactly as before Oct 20. prioritize stays true, so the spec picker is still
the primary chooser — it is just no longer mandatory. Verified: the change is
read at boot (no watcher in the image), so the app was restarted; the served
stylesheet md5 is unchanged by the restart; the mirror is byte-identical to
the deployed file (sha256 219dbdf2ca0b64f8…). Backup of the previous config
stays on the volume as /app/data/librechat.yaml.bak-20261027T221149Z.

If enforcement is ever restored, backfill `spec` on those conversations first,
mapping by each conversation's own `model` (only exact matches — a mismatch
triggers "Model spec mismatch" instead).
This commit is contained in:
inference-bot committed 2026-10-27 22:15:32 +00:00
1 parent 1b9b971c6e
commit ac8c10c1f0
1 file changed
+1 -1
+1 -1
View File
@@ -28,7 +28,7 @@ endpoints:
# Emoji-ified model picker (same convention as models.md / OWUI): # Emoji-ified model picker (same convention as models.md / OWUI):
# 🌱 = renewable (GreenPT + Regolo), 🔒 = TEE-private (Tinfoil). # 🌱 = renewable (GreenPT + Regolo), 🔒 = TEE-private (Tinfoil).
modelSpecs: modelSpecs:
enforce: true enforce: false
prioritize: true prioritize: true
list: list:
- name: tinfoil-deepseek-v4-1-flash - name: tinfoil-deepseek-v4-1-flash