Skip to content

fix(strix): recognize the hyphenated openai-direct fallback alias - #1256

Closed
seonghobae wants to merge 1 commit into
mainfrom
fix/strix-openai-direct-fallback-alias
Closed

fix(strix): recognize the hyphenated openai-direct fallback alias#1256
seonghobae wants to merge 1 commit into
mainfrom
fix/strix-openai-direct-fallback-alias

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • STRIX_FALLBACK_MODELS' NVIDIA NIM entry ends in the hyphenated openai-direct/gpt-5.6-luna alias (the workflow's user-facing input spelling, also pinned verbatim by protected main's own trusted strix_required_workflow_smoke.sh, so that exact string cannot change).
  • child_model_for_api_base() in scripts/ci/strix_quick_gate.sh only recognized the underscored openai_direct/ form the primary-model case statement produces internally, so the fallback alias passed through unrewritten and reached LiteLLM as an unrecognized provider string.
  • Observed three times in CI on #1052: NVIDIA NIM rate-limited the primary and first fallback model, the run advanced to the third fallback, and litellm.BadRequestError: LLM Provider NOT provided ended the scan instead of completing against direct OpenAI.
  • Fix: accept openai-direct/* alongside openai_direct/* in the same case arm, both now rewriting to LiteLLM's openai/ provider.

Why standalone, not bundled into #1052

#1052 already carries this identical change on its own branch, but it can never verify it: pull_request_target resolves job.workflow_sha to the base branch (main) commit, so any .github PR's own strix check always fetches scripts/ci/strix_quick_gate.sh from protected main, regardless of what the PR branch itself contains. Any PR that touches this file is structurally unable to verify its own fix via that check — only a merge to main can. Filing this as a small, focused, standalone PR gives it the best chance of merging quickly so #1052 and other .github-dependent repositories (e.g. fast-mlsirm) stop hitting the same deterministic failure.

Test plan

  • New regression test test_gate_normalizes_hyphenated_openai_direct_fallback_alias added first, confirmed failing against the pre-fix code ('openai-direct/gpt-5.6-luna' != 'openai/gpt-5.6-luna').
  • tests/test_strix_nvidia_nim_not_found_fallback.py: 16/16 passed after the fix.
  • Full suite: 1394 passed, 1 skipped, 16 subtests passed.
  • bash -n scripts/ci/strix_quick_gate.sh syntax check passed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01X19rsMish4NycoSRUcGzYm


Open in Devin Review

STRIX_FALLBACK_MODELS' NVIDIA NIM entry ends in the hyphenated
openai-direct/gpt-5.6-luna alias (the workflow's user-facing input
spelling, also pinned verbatim by protected main's own trusted
strix_required_workflow_smoke.sh, so that exact string cannot change).
child_model_for_api_base() only recognized the underscored
openai_direct/ form the primary-model case statement produces
internally, so the fallback alias passed through unrewritten and
reached LiteLLM as an unrecognized provider string. Observed three
times in CI: NVIDIA NIM rate-limited the primary and first fallback
model, the run advanced to the third fallback, and
litellm.BadRequestError: LLM Provider NOT provided ended the scan
instead of completing against direct OpenAI.

Filed as a standalone fix against main rather than bundled into
#1052 (whose branch already carries this
same change): pull_request_target resolves job.workflow_sha to the
base branch commit, so any .github PR's own "strix" check always
fetches scripts/ci/strix_quick_gate.sh from protected main regardless
of what the PR branch itself contains. A PR that touches this file
cannot verify its own fix via that check; only a merge to main can.
@coderabbitai

coderabbitai Bot commented Aug 23, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@seonghobae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 13 minutes

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

Wait for the limit to reset, then comment @coderabbitai review or push new commits to the PR.

An organization admin can change what happens after included review limits in Billing.

How do review limits work?

CodeRabbit enforces per-developer PR review limits within each organization.

For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c405add9-f24f-444f-85c1-29fb77f620f6

📥 Commits

Reviewing files that changed from the base of the PR and between 885f2cd and f2a6aab.

📒 Files selected for processing (3)
  • CHANGELOG.md
  • scripts/ci/strix_quick_gate.sh
  • tests/test_strix_nvidia_nim_not_found_fallback.py

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Open in Devin Review

Comment on lines +2451 to +2452
openai_direct/* | openai-direct/*)
printf 'openai/%s\n' "${model#*/}"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Info: Prefix strip change is equivalent

Replacing ${model#openai_direct/} with ${model#*/} is safe: the case guard only matches openai_direct/* or openai-direct/*, so the first / always ends the provider prefix. normalize_model (scripts/ci/strix_model_utils.sh:108-111) leaves slash-containing fallback candidates unchanged, so both alias spellings reach this arm and resolve to openai/.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review current-head review for f2a6aab1fa7297c801b9aa324f52d8e979671ca0.

Required strix still runs trusted scripts/ci/strix_quick_gate.sh from protected main (pull_request_target), so this PR cannot self-verify the hyphenated openai-direct/ rewrite. Independent current-head approval is still required; do not treat the job SUCCESS/FAILURE as merge authorization.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Superseded by #1213 exact head 5edaf36. The active successor normalizes the workflow-facing openai-direct alias in the shared model normalizer, dispatches it as LiteLLM openai, switches the cross-provider credential/API-base transport, and proves the real fallback path end to end. Closing this duplicate without merge; reopen only if that scope is removed from #1213.

@seonghobae seonghobae closed this Aug 23, 2026
seonghobae added a commit that referenced this pull request Aug 23, 2026
Refresh the gap baseline against the current open queue after
#1253-#1256 closed unmerged, record #1257/#1213 head motion, and
correct CWL-MASTER-CONTEXT so naruon#975 is Done rather than In
Progress. The SHA table remains a snapshot, not merge authorization.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant