fix(strix): use provider-diverse orchestrator pool - #1401
Conversation
|
Warning Review limit reachedNext included review available in 37 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (6)
📝 WalkthroughWalkthroughStrix 필수 스캔의 기본 모델과 사이드카 풀이 ChangesStrix 관리형 라우팅
Estimated code review effort: 3 (Moderate) | ~25 minutes Merge Risk: 🔵 Low · up to Required scans now use a provider-diverse routing pool while retaining privacy and fallback safeguards. Equal-tier provider selection can still vary with discovery order, affecting first-attempt and failover behavior, and the workflow smoke test does not fully enforce the single auto-default contract. The change is mergeable with explicit owner awareness and follow-up on deterministic ordering and stricter validation. Suggested reviewers: Sequence Diagram(s)sequenceDiagram
participant StrixWorkflow
participant ReviewSidecar
participant LauncherCLI
participant ReviewPolicy
participant ContextualOrchestrator
StrixWorkflow->>ReviewSidecar: auto 풀 환경 변수 설정
ReviewSidecar->>LauncherCLI: --pool auto 전달
LauncherCLI->>ReviewPolicy: 발견 모델 및 가격 증거 전달
ReviewPolicy->>LauncherCLI: 검증된 auto 카탈로그 반환
LauncherCLI->>ContextualOrchestrator: 선택 모델로 리뷰 요청
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 97.14% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 35 functions across 11 files. (6 skipped: 5 unsupported, 1 too large.) ✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@opencode-agent Please review the exact current head |
There was a problem hiding this comment.
Pull request overview
OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.
Findings
1. HIGH Current-head GitHub Checks - Fix failed required checks before approval
- Problem: Failed same-head checks remain for
a6c559ef498a03ccaa1247b1238c5d18e609ffa3. - Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
- Fix: Read and fix the failed check logs below, then rerun the current-head checks.
- Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.
Failed checks:
- Strix Security Scan/strix workflow run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/33244902454)
- strix: FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/33245227248)
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review-dispatch.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: opencode-review-dispatch.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["Workflow: strix.yml"]
S2 --> I2["GitHub Actions review job"]
I2 --> R2["Review risk: Workflow: strix.yml"]
R2 --> V2["actionlint plus required checks"]
Evidence --> S3["Repository file: CHANGELOG.md"]
S3 --> I3["repository behavior"]
I3 --> R3["Review risk: Repository file: CHANGELOG.md"]
R3 --> V3["required checks"]
Evidence --> S4["Docs: 0003-contextual-orchestrator-vendored-free-zdr.md"]
S4 --> I4["operator or user guidance"]
I4 --> R4["Review risk: Docs: 0003-contextual-orchestrator-vendored-free-zdr.md"]
R4 --> V4["docs review"]
Evidence --> S5["CI script: strix_required_workflow_smoke.sh"]
S5 --> I5["review and security gate shell path"]
I5 --> R5["Review risk: CI script: strix_required_workflow_smoke.sh"]
R5 --> V5["bash -n plus Strix self-test"]
Evidence --> S6["CI script: test_strix_quick_gate.sh"]
S6 --> I6["review and security gate shell path"]
I6 --> R6["Review risk: CI script: test_strix_quick_gate.sh"]
R6 --> V6["bash -n plus Strix self-test"]
Evidence --> S7["Test: test_contextual_orchestrator_review_sidecar_contract.py (6 files)"]
S7 --> I7["regression suite"]
I7 --> R7["Review risk: Test: test_contextual_orchestrator_review_sidecar_contract.py (6 files)"]
R7 --> V7["targeted test run"]
OpenCode Review Overview
|
…er-pool-v1 # Conflicts: # AGENTS.md # CHANGELOG.md # docs/adr/0003-contextual-orchestrator-vendored-free-zdr.md # scripts/ci/contextual_orchestrator_review_launcher.py # scripts/ci/contextual_orchestrator_review_sidecar.sh # scripts/ci/strix_required_workflow_smoke.sh
Resolves the split-timeout/batched-preflight design (this branch) against main's independently-landed ADR-0005 diagnostic, bounded-retry preflight (#1449/#1452 and predecessors #1436/#1440/#1434/#1425/#1426/#1422/#1413/ #1401/#1442), a genuine semantic merge, not a mechanical pick: - Keeps this branch's core contribution: launcher.py splits startup-route admission (10s) from real serving (120s, via _build_model_client), and probes up to REVIEW_PREFLIGHT_MAX_TOTAL_ROUTES (24) candidates in concurrent batches of REVIEW_PREFLIGHT_BATCH_SIZE (4). - Folds in main's ADR-0005 escalation logic (16-token base probe, escalate to the real serving budget on a "budget too small" signature, shared REVIEW_PREFLIGHT_MAX_ESCALATIONS=4 cap) into the per-candidate probe used by that batching, via a new _EscalationBudget class so the shared budget stays a hard, lock-enforced invariant across concurrently-probed candidates within one batch -- a plain int (correct for main's original sequential loop) cannot coordinate that safely under concurrency. - Folds in main's ADR-0005 bounded retry for the sidecar's own separate gateway smoke request (up to REVIEW_PREFLIGHT_GATEWAY_MAX_ATTEMPTS=3 attempts, 120s each, retried only on no-response/transport failure), replacing this branch's single-attempt transport_timeout/transport_error classification, while keeping this branch's "orchestration":"route" field and the 413-body-limit stderr-message-capture test enhancement. - Keeps this branch's family_cap==total-route-budget default (24) over main's more conservative raise to 8, since batching's concurrency keeps worst-case wall time bounded even at the higher route/family count (recomputed and re-tested below). - Two designs were deliberately NOT combined, resolved in main's favor after tracing each side's intent (not guessed): Strix's orchestrator/auto routing, which this branch's history re-added but main's most recent, explicit owner decision (#1434) reverted to orchestrator/free-only with the accepted-risk rationale recorded in ADR-0003; and a "fail closed on any partial provider discovery error" gate this branch added ( _require_complete_discovery), which main never adopted and whose philosophy directly conflicts with main's demonstrated-in-production "log the failure, continue with whatever succeeded" handling -- live BandScope evidence in this PR's own comments shows single-provider hiccups (Bytez 5xx) are common and should not be fatal to the whole pool. - Updates the two main-side tests whose literal worst-case-time assertions were computed for the old sequential (non-batched) design (test_preflight_stage_limits_share_one_startup_budget, test_fallback_escalation_budget_is_shared_with_primary_and_bounds_worst_case) to the batching-aware arithmetic, and drops this branch's now-superseded tests (orchestrator/auto Strix routing, fail-closed-on-partial-discovery, single-attempt gateway transport classification). Verification: coverage run -m pytest tests (2096 passed, 1 pre-existing skip, 21 subtests, 100% coverage on scripts/ci); interrogate (100% docstrings); git diff --check clean; bash -n on both changed shell scripts; ruff check clean. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KPmJErfkcHer4UVEgrQxUX
Outcome
orchestrator/autoorchestrator/freeoutage-domain evidenceValidation
bash scripts/ci/strix_required_workflow_smoke.shpython -m pytest -q tests/test_strix_contextual_orchestrator_contract.py tests/test_contextual_orchestrator_review_sidecar_contract.py(32 passed, 1 subtest passed)actionlint -ignore SC2129 .github/workflows/strix.ymlgit diff --checkSummary by CodeRabbit
변경 사항
orchestrator/auto로 변경되었습니다.문서