From 052d42e51cb3828af018a95d412ac4029078d653 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Tue, 25 Aug 2026 19:59:02 +0900 Subject: [PATCH 1/2] fix(ci): accept current direct-openai Strix fallback --- scripts/ci/strix_required_workflow_smoke.sh | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/scripts/ci/strix_required_workflow_smoke.sh b/scripts/ci/strix_required_workflow_smoke.sh index 76aec7910..4da86bf8b 100755 --- a/scripts/ci/strix_required_workflow_smoke.sh +++ b/scripts/ci/strix_required_workflow_smoke.sh @@ -58,6 +58,20 @@ assert_file_contains_either() { fi } +assert_file_contains_any() { + local file_path="$1" + local message="$2" + shift 2 + + for needle in "$@"; do + if grep -Fq -- "$needle" "$file_path"; then + return + fi + done + + record_failure "$message (missing all accepted fallback contracts)" +} + assert_status_permissions_scoped() { local output @@ -168,11 +182,13 @@ assert_file_contains "$gate_script" "NPM_CONFIG_IGNORE_SCRIPTS" "Strix gate disa assert_file_contains "$full_gate_test" "assert_strix_workflow_pr_trigger_hardened" "Full Strix harness remains available outside the required path" assert_file_contains "$workflow_file" "nvidia_nim/nvidia/nemotron-3-super-120b-a12b" "Strix defaults public scans to the current hosted NVIDIA NIM model" -assert_file_contains_either \ +assert_file_contains_any \ "$workflow_file" \ + "Strix tries another NVIDIA hosted model before falling back to direct OpenAI" \ "nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 openai_direct/gpt-5.4" \ "nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 openai-direct/gpt-5.4" \ - "Strix tries another NVIDIA hosted model before falling back to direct OpenAI" + "nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 openai_direct/gpt-5.6-luna" \ + "nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 openai-direct/gpt-5.6-luna" assert_file_not_contains "$workflow_file" "github_models/openai/o3" "Strix fallback list must not depend on GitHub Models, which is in platform-wide retirement" assert_file_contains "$workflow_file" "Nvidia_nimException" "Strix workflow recognizes provider-scoped NVIDIA NIM failures" assert_file_contains "$gate_script" "is_nvidia_nim_not_found_error" "Strix gate classifies NVIDIA NIM model-catalog 404s" From 7e80b0aa4884257aabf0078afd124b57d06cab23 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Tue, 25 Aug 2026 20:03:00 +0900 Subject: [PATCH 2/2] refactor(ci): make Strix fallback assertion helper explicit --- scripts/ci/strix_required_workflow_smoke.sh | 23 ++++++--------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/scripts/ci/strix_required_workflow_smoke.sh b/scripts/ci/strix_required_workflow_smoke.sh index 4da86bf8b..f9a058ca3 100755 --- a/scripts/ci/strix_required_workflow_smoke.sh +++ b/scripts/ci/strix_required_workflow_smoke.sh @@ -46,24 +46,13 @@ assert_file_not_contains() { fi } -assert_file_contains_either() { - local file_path="$1" - local first_needle="$2" - local second_needle="$3" - local message="$4" - - if ! grep -Fq -- "$first_needle" "$file_path" && - ! grep -Fq -- "$second_needle" "$file_path"; then - record_failure "$message (missing either '$first_needle' or '$second_needle')" - fi -} - assert_file_contains_any() { local file_path="$1" - local message="$2" - shift 2 + shift + local message="${!#}" + local needle_count=$(($# - 1)) - for needle in "$@"; do + for needle in "${@:1:needle_count}"; do if grep -Fq -- "$needle" "$file_path"; then return fi @@ -184,11 +173,11 @@ assert_file_contains "$full_gate_test" "assert_strix_workflow_pr_trigger_hardene assert_file_contains "$workflow_file" "nvidia_nim/nvidia/nemotron-3-super-120b-a12b" "Strix defaults public scans to the current hosted NVIDIA NIM model" assert_file_contains_any \ "$workflow_file" \ - "Strix tries another NVIDIA hosted model before falling back to direct OpenAI" \ "nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 openai_direct/gpt-5.4" \ "nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 openai-direct/gpt-5.4" \ "nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 openai_direct/gpt-5.6-luna" \ - "nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 openai-direct/gpt-5.6-luna" + "nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 openai-direct/gpt-5.6-luna" \ + "Strix tries another NVIDIA hosted model before falling back to direct OpenAI" assert_file_not_contains "$workflow_file" "github_models/openai/o3" "Strix fallback list must not depend on GitHub Models, which is in platform-wide retirement" assert_file_contains "$workflow_file" "Nvidia_nimException" "Strix workflow recognizes provider-scoped NVIDIA NIM failures" assert_file_contains "$gate_script" "is_nvidia_nim_not_found_error" "Strix gate classifies NVIDIA NIM model-catalog 404s"