Skip to content

fix(strix): preserve NIM fallback evidence - #1254

Closed
seonghobae wants to merge 3 commits into
mainfrom
codex/strix-direct-fallback-alias
Closed

fix(strix): preserve NIM fallback evidence#1254
seonghobae wants to merge 3 commits into
mainfrom
codex/strix-direct-fallback-alias

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Preserve a successful zero-finding NVIDIA NIM fallback when its log contains only the exact MODEL QUALITY WARNING heading.
  • Continue to fail closed on fatal, denied, timeout, and every other warning/provider-failure signal.
  • Add the 429-primary / zero-finding NIM-fallback regression that reproduces the contextual-orchestrator reports.

Validation

  • bash scripts/ci/test_strix_quick_gate.sh
  • bash scripts/ci/strix_required_workflow_smoke.sh
  • python3 -m unittest tests.test_strix_nvidia_nim_not_found_fallback
  • actionlint .github/workflows/strix.yml

This is the shared-gate repair for ContextualWisdomLab/contextual-orchestrator#803 and ContextualWisdomLab/contextual-orchestrator#824. Both remain blocked until this PR has passed required checks and independent review, reaches protected main, and their exact heads receive fresh successful Strix checks.

@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: 38 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: e3799b42-82e8-49e7-b068-bdde4ea9e3f7

📥 Commits

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

📒 Files selected for processing (2)
  • scripts/ci/strix_quick_gate.sh
  • scripts/ci/test_strix_quick_gate.sh

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 4 potential issues.

Open in Devin Review

Comment on lines +3155 to +3156
if grep -Eiv '^[[:space:]]*[^[:alnum:]]*[[:space:]]*MODEL QUALITY WARNING[[:space:]]*[^[:alnum:]]*[[:space:]]*$' "$STRIX_LOG" |
grep -Eiq '(^|[^[:alpha:]])(Fatal|Denied|Warn|Warning)([^[:alpha:]]|$)'; then

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.

🔴 Infrastructure-error guard can miss signals in large logs

Under the script's pipefail, grep -Eiq exits on the first match and can kill the upstream grep -Eiv with SIGPIPE, so the pipeline fails despite matching. An early warning in a large log then reads as absent, letting an rc==0 scan that should fail closed pass the gate.

Suggested change
if grep -Eiv '^[[:space:]]*[^[:alnum:]]*[[:space:]]*MODEL QUALITY WARNING[[:space:]]*[^[:alnum:]]*[[:space:]]*$' "$STRIX_LOG" |
grep -Eiq '(^|[^[:alpha:]])(Fatal|Denied|Warn|Warning)([^[:alpha:]]|$)'; then
if grep -Eiv '^[[:space:]]*[^[:alnum:]]*[[:space:]]*MODEL QUALITY WARNING[[:space:]]*[^[:alnum:]]*[[:space:]]*$' "$STRIX_LOG" |
grep -Ei '(^|[^[:alpha:]])(Fatal|Denied|Warn|Warning)([^[:alpha:]]|$)' >/dev/null; then
Open in Devin Review

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

Comment on lines +224 to +225
if grep -Eiv '^[[:space:]]*[^[:alnum:]]*[[:space:]]*MODEL QUALITY WARNING[[:space:]]*[^[:alnum:]]*[[:space:]]*$' "$report_log" |
grep -Eiq '(^|[^[:alpha:]])(Fatal|Denied|Warn|Warning|WARNING|Timeout)([^[:alpha:]]|$)'; then

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.

🔴 Report warning-signal check can miss large log artifacts

Under pipefail, grep -Eiq exits on first match and can kill the upstream grep -Eiv with SIGPIPE, so the pipeline fails despite matching. A Fatal/Warn/Timeout signal early in a large report log is then read as absent, and the artifact no longer fails the gate closed.

Suggested change
if grep -Eiv '^[[:space:]]*[^[:alnum:]]*[[:space:]]*MODEL QUALITY WARNING[[:space:]]*[^[:alnum:]]*[[:space:]]*$' "$report_log" |
grep -Eiq '(^|[^[:alpha:]])(Fatal|Denied|Warn|Warning|WARNING|Timeout)([^[:alpha:]]|$)'; then
if grep -Eiv '^[[:space:]]*[^[:alnum:]]*[[:space:]]*MODEL QUALITY WARNING[[:space:]]*[^[:alnum:]]*[[:space:]]*$' "$report_log" |
grep -Ei '(^|[^[:alpha:]])(Fatal|Denied|Warn|Warning|WARNING|Timeout)([^[:alpha:]]|$)' >/dev/null; then
Open in Devin Review

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

Comment on lines +224 to +225
if grep -Eiv '^[[:space:]]*[^[:alnum:]]*[[:space:]]*MODEL QUALITY WARNING[[:space:]]*[^[:alnum:]]*[[:space:]]*$' "$report_log" |
grep -Eiq '(^|[^[:alpha:]])(Fatal|Denied|Warn|Warning|WARNING|Timeout)([^[:alpha:]]|$)'; then

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.

🔍 Banner filter only matches the single title line

The exclusion regex matches only a whole line equal to the banner title plus box/padding. If the real NIM MODEL QUALITY WARNING banner spans multiple lines, any body line containing warning/quality still trips the Fatal/Warn detector and fails the scan closed. Safe, but may not fully tolerate clean NIM fallbacks as intended. Worth confirming the actual banner is a single line.

Open in Devin Review

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

Comment thread .github/workflows/strix.yml Outdated
@seonghobae

Copy link
Copy Markdown
Contributor Author

Superseded by #1213 exact head 5edaf36, which preserves the complete NVIDIA fallback while filtering the exact clean model-quality advisory in both console and report evidence, retains all other warning/provider failures as fail-closed, and carries the full shell regression. Closing this duplicate without merge; reopen only if that scope is removed from #1213.

@seonghobae seonghobae closed this Aug 23, 2026

@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 new potential issue.

Open in Devin Review

Comment on lines +224 to +225
if grep -Eiv '^[[:space:]]*[^[:alnum:]]*[[:space:]]*MODEL QUALITY WARNING[[:space:]]*[^[:alnum:]]*[[:space:]]*$' "$report_log" |
grep -Eiq '(^|[^[:alpha:]])(Fatal|Denied|Warn|Warning|WARNING|Timeout)([^[:alpha:]]|$)'; then

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: Filter regex correctly narrows to the exact heading

The anchored filter only exempts the bare MODEL QUALITY WARNING heading with box/space decoration. A line such as MODEL QUALITY WARNING: detail keeps alnum after WARNING, so it is not filtered and still fails closed. The exemption stays narrow as intended.

Open in Devin Review

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

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