Skip to content

fix(strix): break contextual-orchestrator sidecar bootstrap deadlock #1399

Description

@seonghobae

Buyer / organization impact

The required Strix gate is currently unable to validate the exact PR that repairs the gateway contract Strix itself needs. This also blocks unrelated product PRs that route Strix through the same trusted contextual-orchestrator sidecar.

Fresh exact evidence

  • Central control-plane main: 3a7941aa92de00b8b39fd11cbe7bf3da2fbbeddc.
  • scripts/ci/contextual_orchestrator_review_sidecar.sh on that exact main still defaults ORCHESTRATOR_PIN_SHA to b21645116b352967e50fc497b87eb745b9cc8c61.
  • ContextualWisdomLab/contextual-orchestrator#914 is Ready/mergeable at exact head 3db6b77ca7f5b25f47488e61371b0007a34f0dbb and specifically accepts stream_options.include_usage=true, preserves provider usage, emits the usage-only SSE chunk after the stop chunk, and retains fail-closed unsupported options.
  • All current chore(deps): bump types-requests from 2.33.0.20260518 to 2.33.0.20260712 #914 review threads are resolved; latest Devin review reports zero new findings.
  • Required Strix run 33229504026, job 99039694157, materialized the target PR head for scan scope but logged vendoring contextual-orchestrator @ b21645116b352967e50fc497b87eb745b9cc8c61 for the credentialed review sidecar. OpenAI Agents then sent stream_options.include_usage=true; the pinned gateway returned 400 invalid_stream_options on all bounded attempts, so Strix correctly failed closed as provider unavailable.
  • The same transport failure is present on ContextualWisdomLab/naruon#1206 exact head cb55a7eda5152fe2250c7eb1bd416911b59a5e43; its source/security checks otherwise reach terminal success, but required Strix fails before producing a vulnerability verdict.

This is a central trusted-review bootstrap dependency, not evidence that #914's source repair fails.

Security boundary

Do not solve this by executing an arbitrary contextual-orchestrator PR head with provider credentials. The trusted pull_request_target/central workflow must not expose NVIDIA_NIM_API_KEY or other reviewer credentials to untrusted target code. Do not weaken required Strix, convert provider failure to success, bypass protection, or accept predecessor/synthetic evidence.

Required repair

Provide a trusted bootstrap path that lets Strix obtain an actual vulnerability verdict while the protected-main contextual-orchestrator pin lacks the protocol feature being repaired. Prefer a bounded transport/provider compatibility path owned by central .github (using NVIDIA_NIM_API_KEY for LLM execution) rather than running untrusted PR-head gateway code with secrets. Once #914 integrates through normal protection, advance the protected sidecar pin and remove any temporary compatibility path that is no longer required.

Acceptance criteria

  1. Add a test-first regression reproducing the stream_options.include_usage=true failure against the currently pinned sidecar.
  2. Preserve the secret boundary: no target PR code receives reviewer/provider credentials merely because it is the contextual-orchestrator repository.
  3. A fresh required Strix run on unchanged contextual-orchestrator#914@3db6b77... reaches the scanner and returns a real terminal vulnerability verdict; provider-unavailable, skipped, neutral, or synthetic results remain non-passing.
  4. A fresh required Strix run on unchanged naruon#1206@cb55a7e... likewise reaches a real verdict.
  5. Keep current severity/fail-closed rules, bounded retries/timeouts, raw evidence, and exact-head identity checks intact.
  6. Re-run live central ruleset requirements and merge only with all required checks, zero valid unresolved findings, and qualifying independent approval.

Concurrency note

An active writer is currently moving overlapping central review artifacts (including .github/workflows/strix.yml on open PR #1382), so this issue intentionally records the dependency without racing that branch. Reuse/coordinate with the active writer if it already owns the fix.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions