You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Strix run ended "cancelled" at 6h with no verdict: 909 provider attempts, 92% on one route, 0 exhaustion events, request identity absent from evidence #2000
strix on .github#1187@541cadd1 ran from 15:19:48Z to 21:20:05Z and was cancelled at exactly 6 h 00 m 17 s — GitHub Actions' hard per-job ceiling, not any policy timeout. The required check is now cancelled, which is not a verdict at all: no findings, no gate decision, and a required context that branch protection cannot interpret.
Job 101503665803; every step succeeded through Prepare Strix model input file, and Run Strix (quick) is the cancelled one. Evidence artifact strix-reports (id 9997372950) uploaded successfully, so the whole run is inspectable.
The run never had a termination condition
From contextual-orchestrator-sidecar.stderr.log (2,691 lines, 15:25:29Z → 21:19:46Z):
event
count
provider_attempt (starts)
909
provider_attempt_failed
603
error_type=TimeoutError
541
error_type=HTTPError
62
request_failed status=500 code=internal_error
536
provider_exhausted
0
circuit_failure
55
circuit_opened
3
circuit_cleared
43
The final log line is a newprovider_attempt at 21:19:46, 19 seconds before the platform killed the job. Nothing in the run was converging; it was stopped from outside.
92% of all attempts went to one route. Attempts per agent_id:
agent_id
attempts
nvidia_nim_deepseek_ai_deepseek_v4_flash_0731
837
nvidia_nim_sub_deepseek_ai_deepseek_v4_pro_0813
55
nvidia_nim_deepseek_ai_deepseek_v4_pro_0813
4
every other agent (13 of them)
1 each
The 13 single-attempt rows are the preflight probes. After preflight, the request path re-selected one already-failing route 837 times over six hours.
This is not in-call retry: attempt= is 1/1 on 904 of 909 attempts (the other five are one 1/3→2/3 sequence). The per-call retry budget is 1. The repetition comes from the caller re-selecting the same route after each failure, and provider_exhausted never firing once in 837 consecutive failures on it.
Sustained, not a tail-end artifact — attempts per hour: 15:00 51 (partial hour), 16:00258, 17:00 196, 18:00 204, 19:00 146, 20:00 41, 21:00 13.
The circuit breaker did not keep the dead route out
55 circuit_failure produced only 3 circuit_opened, against 43 circuit_cleared. An earlier run on this same pool logged circuit_opened … threshold=3 reset_seconds=30.0. A 30-second reset against a failure cycle whose dominant mode is a ~90-second socket idle timeout means the breaker re-admits the same route roughly every cycle, so it records failures without ever excluding the route for a meaningful interval. I am reporting the observed counts and that outcome; I have not read the selection code closely enough to assert which specific branch decides re-admission.
with all five ready routes on nvidia_nim / nvidia_nim_sub, provider_discovery_failed provider=bytez code=http_status_500, and both OpenRouter free routes deferred.
But the two are separable. Restoring provider diversity would change which routes get hammered, not the fact that a degraded pool produces an unbounded retry loop. An upstream-wide outage with a perfectly diverse pool yields the same six-hour burn. Conversely, a bounded exhaustion condition would turn this run into a fail-closed verdict in minutes regardless of pool composition.
Runner occupancy. Measured 2026-09-06T18:1x on this repository: status=in_progress = 18 runs, 14 of them Strix Security Scan, aged 97–381 minutes, against status=queued = 150 with the oldest waiting 39 minutes. If each stuck scan runs to the 6-hour ceiling, that is a large fraction of the runner pool held by runs that will produce no verdict. Related but distinct from ops: three required workflows each boot a runner for the same "Detect changed scope" job #1976.
What this issue is not asking for
Not a wall-clock timeout on the model path.docs/product-goal-directive.md §8 accepts that central OpenCode/Strix/Noema may take more than two hours per model, and #1889/#1890/#1892 each added a 900-second cap on genuine multi-hour-hang evidence and were all reverted (#1891, #1895). Elapsed inference time must not become a model-failure verdict, and nothing here argues otherwise: a single 90-second timeout is a normal event, and 837 of them is not a slow model.
The lever is attempt/route exhaustion, which is orthogonal to elapsed time:
provider_exhausted firing after a bounded number of consecutive failures on the same agent_id, so the selector stops re-picking it.
A breaker reset window that is not shorter than the failure cycle it is meant to damp.
A terminal condition when every ready route has been exhausted, so the gate fails closed with evidence instead of being killed with none.
All three bound attempts, not duration. A route that is genuinely slow but progressing is untouched by any of them.
Reproduction
Artifact strix-reports id 9997372950 on run 34036172117 (contextual-orchestrator-preflight.json, contextual-orchestrator-sidecar.stderr.log, gate-console.log).
What happened
strixon.github#1187@541cadd1ran from15:19:48Zto21:20:05Zand was cancelled at exactly 6 h 00 m 17 s — GitHub Actions' hard per-job ceiling, not any policy timeout. The required check is nowcancelled, which is not a verdict at all: no findings, no gate decision, and a required context that branch protection cannot interpret.Job 101503665803; every step succeeded through
Prepare Strix model input file, andRun Strix (quick)is the cancelled one. Evidence artifactstrix-reports(id 9997372950) uploaded successfully, so the whole run is inspectable.The run never had a termination condition
From
contextual-orchestrator-sidecar.stderr.log(2,691 lines,15:25:29Z → 21:19:46Z):provider_attempt(starts)provider_attempt_failederror_type=TimeoutErrorerror_type=HTTPErrorrequest_failed status=500 code=internal_errorprovider_exhaustedcircuit_failurecircuit_openedcircuit_clearedThe final log line is a new
provider_attemptat21:19:46, 19 seconds before the platform killed the job. Nothing in the run was converging; it was stopped from outside.92% of all attempts went to one route. Attempts per
agent_id:nvidia_nim_deepseek_ai_deepseek_v4_flash_0731nvidia_nim_sub_deepseek_ai_deepseek_v4_pro_0813nvidia_nim_deepseek_ai_deepseek_v4_pro_0813The 13 single-attempt rows are the preflight probes. After preflight, the request path re-selected one already-failing route 837 times over six hours.
This is not in-call retry:
attempt=is1/1on 904 of 909 attempts (the other five are one1/3→2/3sequence). The per-call retry budget is 1. The repetition comes from the caller re-selecting the same route after each failure, andprovider_exhaustednever firing once in 837 consecutive failures on it.Sustained, not a tail-end artifact — attempts per hour:
15:0051 (partial hour),16:00258,17:00196,18:00204,19:00146,20:0041,21:0013.The circuit breaker did not keep the dead route out
55
circuit_failureproduced only 3circuit_opened, against 43circuit_cleared. An earlier run on this same pool loggedcircuit_opened … threshold=3 reset_seconds=30.0. A 30-second reset against a failure cycle whose dominant mode is a ~90-second socket idle timeout means the breaker re-admits the same route roughly every cycle, so it records failures without ever excluding the route for a meaningful interval. I am reporting the observed counts and that outcome; I have not read the selection code closely enough to assert which specific branch decides re-admission.Why this is not the same issue as #1915
#1915 tracks the free pool having no provider-family diversity, and this run reproduces that again — third independent confirmation today:
with all five
readyroutes onnvidia_nim/nvidia_nim_sub,provider_discovery_failed provider=bytez code=http_status_500, and both OpenRouter free routes deferred.But the two are separable. Restoring provider diversity would change which routes get hammered, not the fact that a degraded pool produces an unbounded retry loop. An upstream-wide outage with a perfectly diverse pool yields the same six-hour burn. Conversely, a bounded exhaustion condition would turn this run into a fail-closed verdict in minutes regardless of pool composition.
Consequences already observable
cancelledrequired checks. Sweep pre-#1669 PRs stuck with a wrongly-cancelled current-head Strix/OpenCode/Noema check #1756 is already sweeping PRs stuck behind wrongly-cancelled Strix/OpenCode/Noema checks. This is a live production path that creates them.2026-09-06T18:1xon this repository:status=in_progress= 18 runs, 14 of themStrix Security Scan, aged 97–381 minutes, againststatus=queued= 150 with the oldest waiting 39 minutes. If each stuck scan runs to the 6-hour ceiling, that is a large fraction of the runner pool held by runs that will produce no verdict. Related but distinct from ops: three required workflows each boot a runner for the same "Detect changed scope" job #1976.What this issue is not asking for
Not a wall-clock timeout on the model path.
docs/product-goal-directive.md§8 accepts that central OpenCode/Strix/Noema may take more than two hours per model, and #1889/#1890/#1892 each added a 900-second cap on genuine multi-hour-hang evidence and were all reverted (#1891, #1895). Elapsed inference time must not become a model-failure verdict, and nothing here argues otherwise: a single 90-second timeout is a normal event, and 837 of them is not a slow model.The lever is attempt/route exhaustion, which is orthogonal to elapsed time:
provider_exhaustedfiring after a bounded number of consecutive failures on the sameagent_id, so the selector stops re-picking it.readyroute has been exhausted, so the gate fails closed with evidence instead of being killed with none.All three bound attempts, not duration. A route that is genuinely slow but progressing is untouched by any of them.
Reproduction
strix-reportsid 9997372950 on run 34036172117 (contextual-orchestrator-preflight.json,contextual-orchestrator-sidecar.stderr.log,gate-console.log).noema-reviewon docs: confirm review pipeline already routes through orchestrator/free, not NIM directly #1884@396b4dee, artifactnoema-sidecar-evidenceid 9994541963 —ready_count: 6, allnvidia_nim/nvidia_nim_sub, endsrequest_failed status=502 code=provider_connection_error.Generated by Claude Code