Raised in the local cross-family review of LibreChat-AI#16433 (head f780dcd, finding local:f780dcd:L-002).
mergeConfigOverrides (packages/data-schemas/src/app/resolution.ts) validates each principal override layer, in priority order, on top of the librechat.yaml base plus the lower layers, and drops the nodes that leave that accumulated config invalid, including a required field that is still missing.
What happens: a low-priority layer that is incomplete on its own is dropped even when a higher-priority layer supplies the missing fields. For example, a role override endpoints.azureOpenAI.assistants: true over a base with no Azure endpoint is dropped, although a user override with higher priority supplies endpoints.azureOpenAI.groups. The result is safe (nothing invalid reaches consumers; the value beneath survives), but the lower layer's valid intent is lost.
Expected: completeness (required and related fields) is judged once all layers are composed, and only the nodes that leave the final composition invalid are dropped, while per-layer checks keep rejecting values that are wrong on their own.
Raised in the local cross-family review of LibreChat-AI#16433 (head f780dcd, finding local:f780dcd:L-002).
mergeConfigOverrides(packages/data-schemas/src/app/resolution.ts) validates each principal override layer, in priority order, on top of thelibrechat.yamlbase plus the lower layers, and drops the nodes that leave that accumulated config invalid, including a required field that is still missing.What happens: a low-priority layer that is incomplete on its own is dropped even when a higher-priority layer supplies the missing fields. For example, a role override
endpoints.azureOpenAI.assistants: trueover a base with no Azure endpoint is dropped, although a user override with higher priority suppliesendpoints.azureOpenAI.groups. The result is safe (nothing invalid reaches consumers; the value beneath survives), but the lower layer's valid intent is lost.Expected: completeness (required and related fields) is judged once all layers are composed, and only the nodes that leave the final composition invalid are dropped, while per-layer checks keep rejecting values that are wrong on their own.