From 9bf2550350f7c4085fd9adefef751e4875bff78e Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Tue, 1 Sep 2026 20:57:42 +0900 Subject: [PATCH 1/4] test(strix): reject zero model preflight timeout --- tests/test_strix_llm_timeout_contract.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 tests/test_strix_llm_timeout_contract.py diff --git a/tests/test_strix_llm_timeout_contract.py b/tests/test_strix_llm_timeout_contract.py new file mode 100644 index 0000000000..6f6da35694 --- /dev/null +++ b/tests/test_strix_llm_timeout_contract.py @@ -0,0 +1,20 @@ +"""Regression contract for the Strix model preflight request timeout.""" + +from __future__ import annotations + +import re +from pathlib import Path + + +WORKFLOW_PATH = Path(__file__).parents[1] / ".github" / "workflows" / "strix.yml" + + +def test_strix_model_preflight_timeout_matches_upstream_default() -> None: + """Keep model preflight finite and positive instead of cancelling it immediately.""" + workflow = WORKFLOW_PATH.read_text(encoding="utf-8") + configured_timeouts = re.findall( + r"(?m)^\s*export LLM_TIMEOUT=([0-9]+)\s*$", + workflow, + ) + + assert configured_timeouts == ["300"] From c9dc97f2e00dd8d9b46289399cb8d71b85bfd038 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Tue, 1 Sep 2026 21:15:24 +0900 Subject: [PATCH 2/4] chore(ci): stage one-shot Strix timeout repair --- .../source-fix-1597-strix-timeout.yml | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 .github/workflows/source-fix-1597-strix-timeout.yml diff --git a/.github/workflows/source-fix-1597-strix-timeout.yml b/.github/workflows/source-fix-1597-strix-timeout.yml new file mode 100644 index 0000000000..6e8c4a4967 --- /dev/null +++ b/.github/workflows/source-fix-1597-strix-timeout.yml @@ -0,0 +1,59 @@ +name: One-shot PR 1597 Strix timeout repair + +on: + push: + branches: + - fix/strix-orchestrator-zero-llm-timeout + paths: + - .github/workflows/source-fix-1597-strix-timeout.yml + +permissions: + contents: write + +jobs: + repair: + runs-on: ubuntu-24.04 + timeout-minutes: 20 + steps: + - name: Repair timeout, verify GREEN, and self-remove + env: + GH_TOKEN: ${{ github.token }} + TARGET_BRANCH: fix/strix-orchestrator-zero-llm-timeout + TEMP_WORKFLOW: .github/workflows/source-fix-1597-strix-timeout.yml + shell: bash + run: | + set -euo pipefail + export GIT_TERMINAL_PROMPT=0 + git clone --filter=blob:none "https://x-access-token:${GH_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" repo + cd repo + git checkout "$TARGET_BRANCH" + test "$(git rev-parse HEAD)" = "$GITHUB_SHA" + branch_head="$(git rev-parse HEAD)" + + python3 - <<'PY' + from pathlib import Path + + path = Path('.github/workflows/strix.yml') + text = path.read_text(encoding='utf-8') + old = ' export LLM_TIMEOUT=0\n' + new = ' export LLM_TIMEOUT=300\n' + if text.count(old) != 1: + raise SystemExit('expected exactly one zero Strix LLM timeout') + path.write_text(text.replace(old, new, 1), encoding='utf-8') + PY + + PYTHONPATH=. python3 -m pytest -q tests/test_strix_llm_timeout_contract.py + git diff --check + grep -Fq 'export LLM_TIMEOUT=300' .github/workflows/strix.yml + ! grep -Fq 'export LLM_TIMEOUT=0' .github/workflows/strix.yml + + git rm "$TEMP_WORKFLOW" + git add .github/workflows/strix.yml tests/test_strix_llm_timeout_contract.py + git diff --cached --check + + remote_branch="$(git ls-remote origin "refs/heads/${TARGET_BRANCH}" | cut -f1)" + test "$remote_branch" = "$branch_head" + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git commit -m 'fix(strix): keep model preflight timeout positive' + git push origin "HEAD:${TARGET_BRANCH}" From b4e255ef4cd07e897ec4b9a1d4dc1b7715f610dc Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Tue, 1 Sep 2026 21:17:13 +0900 Subject: [PATCH 3/4] fix(ci): install pinned test tooling for 1597 repair --- .github/workflows/source-fix-1597-strix-timeout.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/source-fix-1597-strix-timeout.yml b/.github/workflows/source-fix-1597-strix-timeout.yml index 6e8c4a4967..9e088bd8e2 100644 --- a/.github/workflows/source-fix-1597-strix-timeout.yml +++ b/.github/workflows/source-fix-1597-strix-timeout.yml @@ -30,6 +30,7 @@ jobs: test "$(git rev-parse HEAD)" = "$GITHUB_SHA" branch_head="$(git rev-parse HEAD)" + python3 -m pip install --disable-pip-version-check --require-hashes --only-binary=:all: -r requirements-opencode-review-ci-hashes.txt python3 - <<'PY' from pathlib import Path From 2673878623506f8dd6126815bf74056d519676ec Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 1 Sep 2026 12:17:32 +0000 Subject: [PATCH 4/4] fix(strix): keep model preflight timeout positive --- .../source-fix-1597-strix-timeout.yml | 60 ------------------- .github/workflows/strix.yml | 2 +- 2 files changed, 1 insertion(+), 61 deletions(-) delete mode 100644 .github/workflows/source-fix-1597-strix-timeout.yml diff --git a/.github/workflows/source-fix-1597-strix-timeout.yml b/.github/workflows/source-fix-1597-strix-timeout.yml deleted file mode 100644 index 9e088bd8e2..0000000000 --- a/.github/workflows/source-fix-1597-strix-timeout.yml +++ /dev/null @@ -1,60 +0,0 @@ -name: One-shot PR 1597 Strix timeout repair - -on: - push: - branches: - - fix/strix-orchestrator-zero-llm-timeout - paths: - - .github/workflows/source-fix-1597-strix-timeout.yml - -permissions: - contents: write - -jobs: - repair: - runs-on: ubuntu-24.04 - timeout-minutes: 20 - steps: - - name: Repair timeout, verify GREEN, and self-remove - env: - GH_TOKEN: ${{ github.token }} - TARGET_BRANCH: fix/strix-orchestrator-zero-llm-timeout - TEMP_WORKFLOW: .github/workflows/source-fix-1597-strix-timeout.yml - shell: bash - run: | - set -euo pipefail - export GIT_TERMINAL_PROMPT=0 - git clone --filter=blob:none "https://x-access-token:${GH_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" repo - cd repo - git checkout "$TARGET_BRANCH" - test "$(git rev-parse HEAD)" = "$GITHUB_SHA" - branch_head="$(git rev-parse HEAD)" - - python3 -m pip install --disable-pip-version-check --require-hashes --only-binary=:all: -r requirements-opencode-review-ci-hashes.txt - python3 - <<'PY' - from pathlib import Path - - path = Path('.github/workflows/strix.yml') - text = path.read_text(encoding='utf-8') - old = ' export LLM_TIMEOUT=0\n' - new = ' export LLM_TIMEOUT=300\n' - if text.count(old) != 1: - raise SystemExit('expected exactly one zero Strix LLM timeout') - path.write_text(text.replace(old, new, 1), encoding='utf-8') - PY - - PYTHONPATH=. python3 -m pytest -q tests/test_strix_llm_timeout_contract.py - git diff --check - grep -Fq 'export LLM_TIMEOUT=300' .github/workflows/strix.yml - ! grep -Fq 'export LLM_TIMEOUT=0' .github/workflows/strix.yml - - git rm "$TEMP_WORKFLOW" - git add .github/workflows/strix.yml tests/test_strix_llm_timeout_contract.py - git diff --cached --check - - remote_branch="$(git ls-remote origin "refs/heads/${TARGET_BRANCH}" | cut -f1)" - test "$remote_branch" = "$branch_head" - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git commit -m 'fix(strix): keep model preflight timeout positive' - git push origin "HEAD:${TARGET_BRANCH}" diff --git a/.github/workflows/strix.yml b/.github/workflows/strix.yml index 672c9b796e..26d5d8b2cb 100644 --- a/.github/workflows/strix.yml +++ b/.github/workflows/strix.yml @@ -783,7 +783,7 @@ jobs: PR_HEAD_SHA: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.event.client_payload.pr_head_sha }} IS_PR_EVIDENCE_RUN: ${{ (github.event_name == 'pull_request_target' || github.event.client_payload.pr_number != '') && 'true' || 'false' }} run: | - export LLM_TIMEOUT=0 + export LLM_TIMEOUT=300 export STRIX_MEMORY_COMPRESSOR_TIMEOUT=0 export STRIX_PROCESS_TIMEOUT_SECONDS=0 export STRIX_TOTAL_TIMEOUT_SECONDS=0