Skip to content

[Daily #1361] openai-compatible — model discovery stopped registering each served model twice (num_models 248 → 124) #1364

Description

@Victor-w-Madeira

Spun out of daily-failure triage #1361 (run 31163810520, 2026-08-07).

Upstream: not filed

Symptom

the configured provider discovers exactly the models its endpoint serves hard-failed on the doubling assertion. The endpoint served 124 model ids; the spec asserts num_models === ids.length * 2 — the documented contract that /v1/models does not distinguish chat from embedding, so discovery registers every served model once per type. It got 124, not 248.

The assertion immediately above it — llmIds deep-equals the endpoint's own ids — passed, so discovery is running and the llm half is intact. Only the second registration is missing.

Spec (line) Waits for Signature
tests/tests-automations/regression/core-functionality/model-provider/openai-compatible-provider-setup.spec.ts:558 ("the configured provider discovers exactly the models its endpoint serves") providerCatalog(request, PROVIDER_NAME).num_models Error: expect(received).toBe(expected) // Object.is equality

Why these failures are one cause

One test, so no cross-spec grouping is claimed. What is claimed is that this is not a first occurrence: the same test failed on the 2026-08-06 daily as a flake, on the neighbouring assertion (expect(received).toEqual(expected) // deep equality, the llmIds comparison), and 2026-08-05 took :620 in the same file. The dataset therefore reports recurrence.same_signature: false — correctly, since the signature moved — and this issue is filed against that default, because the two days are the same test degrading in the same step, and 2026-08-06 was not a guard-tripped day (3 hard failures, well under the threshold), so this reproduced off a mass-failure day.

Preliminary read (descriptive — NOT a verdict)

This surfaced on a mass-failure day — 8 hard failures against the guard threshold of 5, so daily-stable.yml tripped the mass-failure guard and auto-removed @stable from nothing. The run also carried a confirmed backend outage (108 s on shard 1, 09:07:57→09:09:46 UTC). This failure is unrelated to both: it is deterministic (identical on attempts 0 and 2, exact integers both times), it touches no locator and no browser, and it reads a REST catalog rather than the wedged path.

Descriptively: the count halved to exactly the number of llm ids, and the llm id list itself is unchanged. That is the shape of the embedding registration no longer happening — but which side moved (discovery's behaviour, or the endpoint's /v1/models response) has not been measured, and the spec's own comment ties the doubling to #14199's embedding discovery, which is a place to look rather than an answer.

Investigation directive

Product first. (a) On the current nightly, configure the provider and read GET on the provider catalog directly — confirm whether num_models is now ids.length and whether any entry carries metadata.model_type === "embedding". (b) If embeddings are gone from discovery, establish whether that is intentional upstream (a change to discovery.py / #14199) or a regression — an OpenAI-compatible endpoint whose embedding models silently stop being registered is user-facing. (c) Only after (a) and (b): decide whether the spec's * 2 is still the right contract or whether it encoded a behaviour that upstream deliberately dropped. Do not soften the assertion to make it pass before that verdict exists. (d) Separately, check the 2026-08-06 toEqual failure on this same line — the id list differed that day and matches today, so the endpoint's catalog is not stable across days either, which could confound (a).

Deliverables (Done when)

  • Root cause confirmed per spec (product regression vs. test/wait-strategy vs. environment), with evidence on the current nightly.
  • Each spec passes reliably (multiple clean --retries=0 runs), fixing waits/flow as needed.
  • Quarantine lifted in the fix PR — remove test.fixme and restore @stable, re-validated per CONTRIBUTING.md. (Nothing to lift if nothing was quarantined.)
  • If the root cause is a product (Langflow) regression: recorded as such here, and this issue stays open until the upstream fix lands in langflowai/langflow-nightly:latest (or the release-1.x.x branch), is re-validated there, and @stable is restored — not on a test-side mute.
  • The 2026-08-06 flake on this same line (different assertion) is explained or explicitly ruled unrelated — not left as an unexplained neighbour.
  • If discovery legitimately stopped doubling, the spec's contract comment is rewritten to match, not just the number.

Metadata

Metadata

Labels

area:model-providersProvedores de modelosdaily-failureFailure detected by the daily @stable E2E workflow

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions