Skip to content

[Bug] Cursor Muse Spark 1.3 missing from catalog despite successful live discovery #4820

Closed

Description

@makeavish

Client or integration

OpenCodex dashboard

Area

Catalog / models

Summary

Muse Spark 1.3 is absent from the Cursor model list in OpenCodex 2.56.0 even though Cursor's live GetUsableModels response for the configured account includes six Muse Spark 1.3 reasoning variants.

Expected: preserve models returned by successful live discovery, including model names absent from the static catalog. Muse Spark 1.3 should appear under Cursor with its supported reasoning-effort mappings.

Actual: the dashboard and /api/models have no Cursor Muse row. Live discovery succeeds, but the configured/static Cursor catalog has no Muse entry, and discovery only filters that existing catalog.

Reproduction

  1. Use OpenCodex 2.56.0 with an authenticated Cursor provider (adapter: "cursor", authMode: "oauth", baseUrl: "https://api2.cursor.sh"). Cursor model discovery is enabled.
  2. Open http://localhost:10100/#models, select Cursor, and search for Muse.
  3. Observe no Muse entry; /api/models likewise contains no Cursor Muse model.
  4. Call the installed adapter's fetchCursorUsableModels using the configured account's resolved credential, without printing the credential. The discovery call succeeds and returns the Muse variants below.

Version

@bitkyc08/opencodex 2.56.0; bundled Bun 1.4.2.

Operating system

macOS 27.0 (26A428), arm64.

Provider and model

Cursor / Muse Spark 1.3 (muse-spark-1.3-*).

Logs or error output

Sanitized results from a direct discovery check on 2026-09-16:

{
  "ok": true,
  "count": 223,
  "muse": [
    "muse-spark-1.3-minimal",
    "muse-spark-1.3-low",
    "muse-spark-1.3-medium",
    "muse-spark-1.3-high",
    "muse-spark-1.3-xhigh",
    "muse-spark-1.3-max"
  ]
}

The running gateway's /api/selected-models reports liveModelCounts.cursor: 223, but its available Cursor list contains 40 rows and no Muse. Both the provider's configured models and CURSOR_STATIC_MODELS contain no Muse entry. The difference between 223 wire variants and 40 base rows is not itself the bug; Muse's omission is.

Screenshots and supporting files

Source trace for v2.56.0:

Requested behavior: treat successful live discovery as the source of available model names, rather than intersecting it with a static allowlist. The static catalog can enrich known models with capabilities, display names, and reasoning mappings, but an unfamiliar name alone should not cause a live-discovered model to disappear.

Grouping known reasoning variants into a base-model row is useful and should remain. For unfamiliar families, preserve the exact upstream IDs until their grouping and capabilities can be resolved, without inventing unsupported metadata. Any deliberate exclusion for a known incompatibility should be explicit and diagnosable.

Adding Muse Spark 1.3 and its wire-effort mappings would address the immediate omission, but a Muse-only catalog patch would leave the same failure mode for the next new model. Please add regression coverage showing that an unknown model returned by successful live discovery remains visible, alongside coverage for the Muse variants above.

This report verifies discovery and catalog omission only. No Muse inference request was made, so successful generation through the Cursor adapter is not claimed.

Redacted configuration

Relevant provider fields only; credentials omitted:

{
  "providers": {
    "cursor": {
      "adapter": "cursor",
      "authMode": "oauth",
      "baseUrl": "https://api2.cursor.sh"
    }
  }
}

Checks

  • I searched existing issues and documentation/source comments.
  • I removed secrets, tokens, account details, request credentials, and personal data.

Activity

  1. added
    bugSomething isn't working
    account-poolOAuth, credentials, Codex pool, quota, failover, plans
    catalogModel catalog, slugs, visibility, routed entries
    on Sep 16, 2026
  2. lidge-jun commented on Sep 16, 2026

    @lidge-jun
    Owner

    리뷰 · 우선순위 68 / 80

    이 이슈는 Cursor 계정에서 live GetUsableModels가 Muse Spark 1.3 reasoning variant 여섯 개를 돌려주는데, OpenCodex 카탈로그/대시보드에는 Cursor Muse 행이 전혀 없다는 보고다. 기대는 "성공한 live discovery가 돌려준 모델은 정적 카탈로그에 없어도 보존"이고, 실제는 "정적/설정 카탈로그에 없는 id는 live에 있어도 안 나타남"이다. 2.56.0에서 관측했고, 지금 dev HEAD 8c5917448e971f8bbfb7595252932f678b486a35(2.58.0) 코드 경로와도 맞는지 대조했다.

    핵심은 Cursor gather가 live roster로 새 행을 추가하지 않고, 이미 구성된 행만 live 가용성으로 걸러 낸다는 점이다. src/codex/catalog/provider-models.ts(대략 375행)는 filterCursorConfiguredModelsByLiveDiscovery(configured, liveResult.models)를 호출한다. 구현은 src/adapters/cursor/discovery.ts 241–252행: configured.filter(...)만 한다. router id와 ultra base 예외를 빼면, 설정에 없는 Muse Spark id는 live 배열에 있어도 결과 집합에 들어올 구멍이 없다. 그리고 정적 시드 쪽을 보면 src/adapters/cursor/catalog.ts의 CURSOR_CAPABILITIES와 discovery.ts의 CURSOR_PRODUCT_MODELS / CURSOR_STATIC_MODELS 조립물에 Muse Spark / muse-spark 문자열이 없다. 즉 live가 신제품을 광고해도, 우리 쪽 umbrella catalog에 base capability가 없으면 picker에 영원히 안 뜬다.

    참고로 Muse Spark 자체는 다른 프로바이더에는 이미 있다. opencode-go의 modelWireDefaults·context window·input modalities에 muse-spark-1.3-contributor 등이 있고, Command Code effort 표에도 Meta Muse Spark 행이 있다. 문제는 "Muse를 모른다"가 아니라 Cursor 어댑터 카탈로그에 Cursor wire id로 안 심어졌다는 것이다. 보고자가 말한 six reasoning variants는 Cursor effort/variant 문법(thinking/fast 등)으로 capability 한 줄 + ladder로 표현하는 편이 CURSOR_CAPABILITIES 설계와 맞다. types/config 분리와 무관하고, 단순 중복으로 닫을 이슈는 아니다.

    경로/심볼 - src/codex/catalog/provider-models.ts ~375 — live 성공 시 configured ∩ live만 채택. live-only id 미추가.
    경로/심볼 - src/adapters/cursor/discovery.ts filterCursorConfiguredModelsByLiveDiscovery — filter only; union/merge 없음.
    경로/심볼 - src/adapters/cursor/catalog.ts CURSOR_CAPABILITIES — Muse Spark base 없음.
    경로/심볼 - src/adapters/cursor/discovery.ts CURSOR_PRODUCT_MODELS — 제품형 예외 목록에도 Muse 없음.
    경로/심볼 - src/adapters/cursor/live-models.ts GetUsableModels — live는 성공한다고 가정해도 catalog merge 정책이 병목.
    정책 주석 - discovery.ts 127행 근처 "live-discovered new … stay … until curated" 취지와 일치. 즉 의도된 curation gate일 수 있어, 버그라기보다 시드 누락일 가능성이 크다.

    메인테이너의 판단이 필요한 지점

    • Muse Spark 1.3을 Cursor umbrella capability로 추가할지(권장), 아니면 live-only id를 자동 입학시키는 정책 변경을 할지(범위 큼, 미검증 wire 위험)
    • 보고된 six variant의 정확한 Cursor wire id·effort ladder를 redacted GetUsableModels dump로 고정할지
    • Max Mode / context window를 Meta 문서(1M)와 Cursor live maxModeModels 중 어디에 맞출지

    너의 추천
    이슈를 열린 채로 두고, 자동 merge 정책 변경보다 커레이션 PR을 받아라. CURSOR_CAPABILITIES에 Muse Spark 1.3 base(및 필요한 variant/effort)를 추가하고, live dump와 맞는 alias/wire id 회귀 테스트를 붙여라. "live에 있으면 무조건 catalog에 넣기"는 Cursor not_found 격리(CURSOR_KNOWN_UNCALLABLE_MODEL_IDS / quarantine) 철학과 충돌하므로 기본값으로 쓰지 마라. 증거로 GetUsableModels id 목록만 이슈에 붙여 주면 시드 PR이 바로 시작된다.

    이 댓글은 grok-bot이 작성했습니다

  3. lidge-jun commented on Sep 17, 2026

    @lidge-jun
    Owner

    Landed via #4924 at 1c7ab30.

    Cursor now seeds muse-spark-1.3 (capability + effort ladder through xhigh) so live discovery can surface the advertised Muse Spark 1.3 variants. The seed deliberately omits max (Meta + independent probe evidence); a Codex request at max clamps to xhigh.

    Out of scope on purpose: discovery still filters the configured roster and does not union arbitrary live ids into the catalog. If that policy change is still wanted, open a follow-up — this issue's reported missing Muse row is fixed on dev.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    account-poolOAuth, credentials, Codex pool, quota, failover, plansbugSomething isn't workingcatalogModel catalog, slugs, visibility, routed entries

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions