fix: close Strix fallback review gaps#292
Conversation
There was a problem hiding this comment.
Pull request overview
Note
Copilot couldn't run its full agentic review because no GitHub Actions runner was available. Make sure your repository has a runner available to run Copilot's review, or add a copilot-setup-steps.yml file specifying one with the runs-on attribute. See the docs for more details.
Hardens Strix fallback behavior and diagnostics by ensuring temporary diff artifacts are always cleaned up, by constraining UnsupportedToolUse fallback classification to GitHub Models context, and by updating GitHub Models fallback routing to use tool-capable OpenAI models only.
Changes:
- Materialize changed-line diff data into a temp file with guaranteed cleanup and explicit exit-code capture (avoids
set -eskipping cleanup). - Constrain
UnsupportedToolUseclassification to GitHub Models context (log markers and/or trustedmodels.github.aiAPI base). - Update workflow + test harness to use
github_models/openai/o3andgithub_models/openai/gpt-5-chatas the only GitHub Models fallbacks.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
scripts/ci/strix_quick_gate.sh |
Uses temp files + traps for diff overlap checks and adds GitHub Models context detection for UnsupportedToolUse. |
scripts/ci/test_strix_quick_gate.sh |
Updates assertions and fake Strix scenarios/expectations to match new fallback models and context gating. |
scripts/ci/emit_opencode_failed_check_fallback_findings.sh |
Updates operator-facing remediation text to match the new approved GitHub Models fallback list. |
.github/workflows/strix.yml |
Restricts GitHub Models fallbacks to tool-capable OpenAI models (o3, gpt-5-chat). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| trap 'rm -f -- "$diff_output_file"' RETURN | ||
| printf '%s' "$diff_output" >"$diff_output_file" | ||
| local intersects_rc | ||
| if python3 - "$diff_output_file" "$start_line" "$end_line" <<'PY' |
| then | ||
| intersects_rc=0 | ||
| else | ||
| intersects_rc=$? | ||
| fi | ||
| rm -f -- "$diff_output_file" | ||
| trap - RETURN | ||
| return "$intersects_rc" |
| openai/gpt-5|openai/o3|openai/openai/gpt-5.4|openai/meta/test-github-model|openai/mistral-ai/test-github-model) | ||
| if [ "${FAKE_STRIX_SCENARIO:?}" = "github-models-token-limit-fallback-success" ]; then | ||
| echo "openai.APIStatusError: Error code: 413 - {'error': {'code': 'tokens_limit_reached', 'message': 'Request body too large for gpt-5 model. Max size: 4000 tokens.'}}" | ||
| exit 1 | ||
| if [ "${STRIX_LLM:-}" = "openai/gpt-5" ]; then | ||
| exit 1 | ||
| fi | ||
| fi | ||
| echo "scan ok with GitHub Models fallback" | ||
| exit 0 |
Summary
set -eskipping cleanup.UnsupportedToolUsefallback classification to GitHub Models context, using either log markers or the trustedmodels.github.aiAPI base.BandScope queue impact
maintainerCanModify=falseand unresolved source-backed review threads.Validation
git diff --checkbash -n scripts/ci/strix_quick_gate.sh && bash -n scripts/ci/test_strix_quick_gate.shNote
scripts/ci/test_strix_quick_gate.shharness locally because it exercises long CI-oriented model fallback scenarios; required PR checks should run the full central contract.