Skip to content

feat(mcp): EP hardware gaps (TRT RTX, OpenVINO NPU, DirectML, WebGPU) - #131

Merged
tonythethompson merged 17 commits into
feature/mcp-validation-kb-feedbackfrom
feature/mcp-ep-hardware-gaps
Aug 7, 2026
Merged

tonythethompson merged 17 commits into
feature/mcp-validation-kb-feedbackfrom
feature/mcp-ep-hardware-gaps

Conversation

@tonythethompson

@tonythethompson tonythethompson commented Aug 6, 2026 •

Copy link
Copy Markdown
Owner

Stacked on

Stacked on #130 (feature/mcp-validation-kb-feedback). Merge after #130.

Summary

Fills Olive MCP knowledge gaps for EPs Studio already supports:

  • NVIDIA TensorRT RTX (NvTensorRTRTXExecutionProvider)
  • Intel Core Ultra NPU (OpenVINO) (aliases; bare npu → Qualcomm)
  • Windows DirectML GPU (DmlExecutionProvider)
  • WebGPU (Browser) (WebGpuExecutionProvider) — export/browser, not local Olive run

Changes

  • 14 → 18 hardware profiles
  • EP→profile map + aliases, strategy buckets, troubleshooting, matrix v0.3.1 rows, tests

Test plan

  • pytest normalization + hardware_ep_profiles + compatibility_matrix + tools
  • CI

Review in cubic

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @tonythethompson, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@vercel

vercel Bot commented Aug 6, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
olive-studio Ready Ready Preview Aug 7, 2026 8:55am

@coderabbitai

coderabbitai Bot commented Aug 6, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@cursor[bot], you've reached your PR review limit, so we couldn't start this review.

Next review available in: 5 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: edc9187e-6324-40ca-a138-6cf3af5547c1

📥 Commits

Reviewing files that changed from the base of the PR and between 3023b5c and c70c461.

📒 Files selected for processing (26)
  • olive-mcp-server/README.md
  • olive-mcp-server/olive_mcp_server/knowledge_base/compatibility_matrix.json
  • olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json
  • olive-mcp-server/olive_mcp_server/knowledge_base/integration_recipes.json
  • olive-mcp-server/olive_mcp_server/knowledge_base/studio_troubleshooting.json
  • olive-mcp-server/olive_mcp_server/knowledge_base/troubleshooting.json
  • olive-mcp-server/olive_mcp_server/mcp_server.py
  • olive-mcp-server/olive_mcp_server/tools/__init__.py
  • olive-mcp-server/olive_mcp_server/tools/compatibility.py
  • olive-mcp-server/olive_mcp_server/tools/hardware_guide.py
  • olive-mcp-server/olive_mcp_server/tools/normalization.py
  • olive-mcp-server/olive_mcp_server/tools/runtime_ep_hints.py
  • olive-mcp-server/olive_mcp_server/tools/strategy_advisor.py
  • olive-mcp-server/olive_mcp_server/tools/studio_loopback.py
  • olive-mcp-server/olive_mcp_server/tools/studio_recipe.py
  • olive-mcp-server/olive_mcp_server/tools/troubleshooting.py
  • olive-mcp-server/scripts/check_olive_pass_availability.py
  • olive-mcp-server/scripts/expand_kb.py
  • olive-mcp-server/tests/test_compatibility_matrix.py
  • olive-mcp-server/tests/test_domain_troubleshoot.py
  • olive-mcp-server/tests/test_hardware_ep_profiles.py
  • olive-mcp-server/tests/test_integration.py
  • olive-mcp-server/tests/test_normalization.py
  • olive-mcp-server/tests/test_runtime_ep_hints.py
  • olive-mcp-server/tests/test_studio_recipe.py
  • olive-mcp-server/tests/test_tools.py
📝 Walkthrough

Walkthrough

Changes

MCP hardware and runtime capabilities

Layer / File(s) Summary
Structured hardware target parsing
olive-mcp-server/olive_mcp_server/tools/normalization.py, olive-mcp-server/tests/test_normalization.py
Hardware aliases and OpenVINO device tokens now resolve to typed profiles or explicit errors.
Provider-aware MCP tools
olive-mcp-server/olive_mcp_server/tools/compatibility.py, hardware_guide.py, strategy_advisor.py, troubleshooting.py, tests/test_hardware_ep_profiles.py
MCP tools now use parsed targets and provider-specific compatibility, guidance, strategies, and troubleshooting matches.
Studio runtime hint workflow
olive-mcp-server/olive_mcp_server/tools/runtime_ep_hints.py, studio_loopback.py, mcp_server.py, tools/__init__.py, tests/test_runtime_ep_hints.py, tests/test_integration.py
A loopback-only Studio client and registered runtime hint tool normalize probe and runtime metadata with structured failures and refresh support.
Shared Studio bridge transport
olive-mcp-server/olive_mcp_server/tools/studio_recipe.py, tests/test_studio_recipe.py
Studio recipe requests now use the shared validated loopback client.

Knowledge base and pass discovery

Layer / File(s) Summary
Hardware and compatibility coverage
olive-mcp-server/olive_mcp_server/knowledge_base/compatibility_matrix.json, hardware_profiles.json, scripts/expand_kb.py, tests/test_compatibility_matrix.py
Knowledge-base coverage now includes TensorRT RTX, DirectML, WebGPU, OpenVINO NPU, ROCm, and related model pipelines.
Recipes and troubleshooting data
olive-mcp-server/olive_mcp_server/knowledge_base/integration_recipes.json, studio_troubleshooting.json, troubleshooting.json, README.md, tests/test_tools.py
Recipes and troubleshooting entries now describe the added providers, device requirements, browser limits, and recovery steps.
Installed Olive pass discovery
olive-mcp-server/scripts/check_olive_pass_availability.py
The availability checker reads installed configuration and registries, resolves aliases case-insensitively, and accepts cloud-only pass claims.

Frontend state and test maintenance

Layer / File(s) Summary
UI state typing and test corrections
src/lib/pipelineValidation.ts, src/server/services/mcp/studioRecipeBridge.ts, src/components/features/MCPDiagnosticCard.tsx, src/components/features/*test.tsx
Partial state merges use UiStatePatch, status refs synchronize in an effect, and affected tests reflect current typing and render behavior.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 7 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 41.84% which is insufficient. The required threshold is 60.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (7 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main execution-provider hardware coverage added by the pull request.
Description check ✅ Passed The description accurately explains the execution-provider coverage, knowledge-base updates, implementation changes, and test plan.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Pipeline Stage Enum Ordering ✅ Passed The complete diff against main contains no SessionWorkflowStage declaration, member reference, or stage inequality; tracked base and final trees both have zero target-symbol matches.
Gpu/Cpu Runtime Boundary ✅ Passed The full branch diff from main modifies no files under inference/, no managed CPU/GPU requirements files, no main.py, and no C# files; the boundary check is not applicable.
Managed Host Restart Safety ✅ Passed The PR change set contains no ManagedVenvHostManager, containerized host, lease, restart, or readiness components; the exact target symbols are absent from tracked files.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/mcp-ep-hardware-gaps
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch feature/mcp-ep-hardware-gaps

Warning

Review ran into problems

🔥 Problems

Linked repositories: Public OSS repositories can only analyze public repositories installed in this organization. Analyzed tonythethompson/QuickShell, tonythethompson/numan, tonythethompson/dependency-chain-substrate, skipped Trackdubllc/Trackdub.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@qodo-code-review

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Fill MCP EP hardware gaps for TensorRT RTX, OpenVINO NPU, DirectML, and WebGPU

✨ Enhancement 🧪 Tests 📝 Documentation 🕐 40+ Minutes

Grey Divider

AI Description

• Add dedicated hardware profiles and compatibility matrix rows for TRT RTX, OpenVINO NPU, DirectML,
 and WebGPU.
• Improve EP→hardware normalization and strategy bucketing for correct guidance and aliases.
• Expand Olive/Studio troubleshooting knowledge and add regression tests for new targets.
Diagram

graph TD
A["Tool request"] --> B["Hardware normalization"] --> C[("Hardware profiles KB")] --> D["Hardware guide"] --> F["Guide output"]
C --> E["Strategy advisor"] --> F
A --> H[("Troubleshooting KB")] --> G["Troubleshooting scorer"] --> F
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Move EP→profile mapping into KB data (JSON-driven)
  • ➕ Reduces code changes for new EPs/aliases; updates become data-only.
  • ➕ Enables validating mappings via schema/tests without touching Python logic.
  • ➖ Requires designing a stable schema for aliases and precedence rules.
  • ➖ Harder to express complex normalization precedence (e.g., bare 'npu' routing) without bespoke logic anyway.
2. Introduce structured hardware query grammar (e.g., EP + device fields)
  • ➕ Avoids ambiguous substring/alias matching (e.g., OpenVINO EP + device=NPU).
  • ➕ Makes strategy selection more deterministic and extensible.
  • ➖ Requires upstream tool/UI changes and migration for existing free-form queries.
  • ➖ More user friction vs accepting natural-language inputs.
3. Use fuzzy matching for hardware names
  • ➕ More forgiving for typos and variant naming.
  • ➕ Could reduce alias list growth over time.
  • ➖ Higher risk of misclassification (exactness is important here, e.g., 'npu' ambiguity).
  • ➖ Harder to test and reason about precedence and false positives.

Recommendation: Current approach (explicit EP map + exact-key alias table + profile matching with shortest-match safeguards) is the best fit for correctness-sensitive routing (notably keeping bare 'npu' mapped to Qualcomm). If the alias surface area grows significantly, consider migrating aliases and precedence metadata into a JSON-driven schema, but keep exact-match semantics to avoid misclassification.

Files changed (12) +649 / -32

Enhancement (8) +571 / -27
compatibility_matrix.jsonBump matrix to v0.3.1 and add evidence-backed rows for new targets +155/-2

Bump matrix to v0.3.1 and add evidence-backed rows for new targets

• Updates version/last_updated and adds compatibility guidance for NVIDIA TensorRT RTX, Windows DirectML GPU, WebGPU (Browser), and Intel Core Ultra NPU (OpenVINO). Includes notes and evidence links per pass to keep claims auditable.

olive-mcp-server/olive_mcp_server/knowledge_base/compatibility_matrix.json

hardware_profiles.jsonAdd 4 new hardware profiles and bump KB version +72/-2

Add 4 new hardware profiles and bump KB version

• Introduces dedicated profiles for NVIDIA TensorRT RTX, Intel Core Ultra NPU (OpenVINO), Windows DirectML GPU, and WebGPU (Browser). Each profile specifies EPs, recommended passes, constraints, and known issues.

olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json

studio_troubleshooting.jsonAdd Studio troubleshooting entries for TRT RTX, DirectML, WebGPU, and OpenVINO NPU +66/-2

Add Studio troubleshooting entries for TRT RTX, DirectML, WebGPU, and OpenVINO NPU

• Bumps KB version and adds 4 new Studio-domain entries with detection patterns, root causes, and actionable guidance. Focuses on install/venv issues, WebGPU non-runnable behavior, and OpenVINO NPU device selection.

olive-mcp-server/olive_mcp_server/knowledge_base/studio_troubleshooting.json

troubleshooting.jsonAdd Olive-side troubleshooting for DirectML and WebGPU limitations +33/-2

Add Olive-side troubleshooting for DirectML and WebGPU limitations

• Bumps version/last_updated and adds entries clarifying DirectML availability requirements and that WebGPU is browser-only (not a server-side Olive CLI EP). Entries include match patterns and recommended remediation.

olive-mcp-server/olive_mcp_server/knowledge_base/troubleshooting.json

normalization.pyExtend hardware normalization with new EP mappings, exact aliases, and cache reset +38/-2

Extend hardware normalization with new EP mappings, exact aliases, and cache reset

• Updates EP→target mapping to route NvTensorRTRTXExecutionProvider, DirectML, and WebGPU to new dedicated targets, while keeping OpenVINO default as CPU unless explicitly aliased to NPU. Adds an exact-match alias table (avoids loose substrings), a cache clearing helper for tests, and tweaks reverse-substring matching to prefer shortest matches (protects bare 'npu' → Qualcomm).

olive-mcp-server/olive_mcp_server/tools/normalization.py

strategy_advisor.pyAdd DirectML/WebGPU strategy buckets and OpenVINO NPU-aware guidance +131/-17

Add DirectML/WebGPU strategy buckets and OpenVINO NPU-aware guidance

• Refines category normalization precedence so WebGPU and DirectML do not collapse into generic NVIDIA/Intel buckets. Adds strategy recommendations and pass chains for DirectML and WebGPU, plus Intel OpenVINO NPU-specific guidance keyed off the normalized base name.

olive-mcp-server/olive_mcp_server/tools/strategy_advisor.py

troubleshooting.pyTag new troubleshooting IDs for scoring and routing +6/-0

Tag new troubleshooting IDs for scoring and routing

• Registers the newly added Studio and Olive troubleshooting entry IDs into the scoring/category map so they can be surfaced by the troubleshooting tool.

olive-mcp-server/olive_mcp_server/tools/troubleshooting.py

expand_kb.pyKeep KB expansion script in sync with new hardware profiles +70/-0

Keep KB expansion script in sync with new hardware profiles

• Adds the four new hardware profiles to the expansion script’s canonical list so generated KB artifacts match checked-in knowledge-base content.

olive-mcp-server/scripts/expand_kb.py

Tests (3) +75 / -2
test_compatibility_matrix.pyUpdate matrix version assertion and loosen claim-count docstring +2/-2

Update matrix version assertion and loosen claim-count docstring

• Adjusts expectations to matrix v0.3.1 and updates the claim-count comment to reflect continued growth beyond the earlier evidence-backed baseline.

olive-mcp-server/tests/test_compatibility_matrix.py

test_hardware_ep_profiles.pyAdd regression tests for new EP/profile resolution and strategy coverage +61/-0

Add regression tests for new EP/profile resolution and strategy coverage

• Introduces tests ensuring new EP strings and aliases resolve to the expected hardware targets and execution providers. Adds coverage for strategy bucketing (webgpu/directml/intel+npu) and verifies bare 'npu' remains mapped to Qualcomm.

olive-mcp-server/tests/test_hardware_ep_profiles.py

test_normalization.pyExtend normalization test cases for new EPs and aliases +12/-0

Extend normalization test cases for new EPs and aliases

• Adds assertions for TensorRT RTX, DirectML, WebGPU, and OpenVINO NPU aliases, plus a regression check that bare 'npu' still maps to Qualcomm and OpenVINO EP still defaults to CPU target.

olive-mcp-server/tests/test_normalization.py

Documentation (1) +3 / -3
README.mdUpdate KB counts for new hardware and troubleshooting entries +3/-3

Update KB counts for new hardware and troubleshooting entries

• Refreshes documented KB inventory to reflect 18 hardware profiles and increased troubleshooting coverage. Calls out new targets (TRT RTX, OpenVINO NPU, DirectML, WebGPU).

olive-mcp-server/README.md

@greptile-apps

greptile-apps Bot commented Aug 6, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR expands Olive MCP guidance and normalization for TensorRT RTX, Intel OpenVINO NPU, DirectML, and browser WebGPU.

  • Adds four hardware profiles, compatibility entries, recipes, troubleshooting guidance, and runtime EP hints.
  • Extends hardware normalization and strategy selection for the new execution-provider targets.
  • Replaces the Intel NPU LLM chain with a format-compatible OpenVINO conversion and weight-compression sequence.
  • Adds test coverage for profile resolution, strategy generation, compatibility, runtime hints, and Studio recipes.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains; the current OpenVINO NPU LLM chain accepts both ONNX and Torch inputs and feeds a compatible OpenVINO model into weight compression.

Important Files Changed

Filename Overview
olive-mcp-server/olive_mcp_server/tools/strategy_advisor.py Adds target-specific strategy buckets and fixes the prior Intel NPU LLM chains by using OpenVINOConversion, which accepts both Torch and ONNX inputs.
olive-mcp-server/olive_mcp_server/tools/normalization.py Adds structured hardware and OpenVINO-device resolution for the newly supported execution providers.
olive-mcp-server/olive_mcp_server/tools/runtime_ep_hints.py Introduces runtime installation and execution guidance for resolved execution-provider targets.
olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json Adds TensorRT RTX, OpenVINO NPU, DirectML, and WebGPU hardware profiles and recommended pass metadata.
olive-mcp-server/tests/test_hardware_ep_profiles.py Covers new EP aliases and strategies, including the corrected format-compatible OpenVINO NPU chain.

Reviews (16): Last reviewed commit: "Merge remote-tracking branch 'origin/fea..." | Re-trigger Greptile

Comment thread olive-mcp-server/olive_mcp_server/tools/strategy_advisor.py Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 966cc6cea4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"Set openvinoTargetDevice to NPU in Olive Studio (EP id stays OpenVINOExecutionProvider).",
"Unsupported ops fall back to CPU; verify Core Ultra / Meteor Lake+ NPU driver.",
]
pass_chain = ["OnnxConversion", "OpenVINOOptimumConversion", "OpenVINOWeightCompression"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use a format-compatible OpenVINO conversion chain

For every Intel NPU LLM recommendation, this chain feeds the ONNX output of OnnxConversion into OpenVINOOptimumConversion, whose knowledge-base metadata accepts only torch; users following the returned pass_chain therefore cannot execute the second pass. Remove the initial conversion, or replace the Optimum pass with OpenVINOConversion, which accepts ONNX; the same incompatible chain is also exposed by the new hardware profile.

Useful? React with 👍 / 👎.

"target": "Windows DirectML GPU",
"accelerator": "gpu",
"execution_providers": ["DmlExecutionProvider"],
"recommended_passes": ["OnnxConversion", "OnnxStaticQuantization", "OnnxModelOptimizer"],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Optimize the DirectML graph before quantization

When the DirectML hardware guide is used, this ordered recommendation places OnnxModelOptimizer after OnnxStaticQuantization. The repository's get_pass_chain validator explicitly warns that graph optimization after quantization can produce a less clean quantized graph and recommends canonical conversion → optimization → quantization order; the new DirectML CNN/vision strategy repeats this ordering.

Useful? React with 👍 / 👎.

"target": "WebGPU (Browser)",
"accelerator": "gpu",
"execution_providers": ["WebGpuExecutionProvider"],
"recommended_passes": ["OnnxConversion", "OnnxFloatToFloat16", "OnnxModelOptimizer"],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Run WebGPU optimization before the FP16 cast

For WebGPU guide requests, this chain runs OnnxModelOptimizer after OnnxFloatToFloat16. get_pass_chain warns that optimization in this order may revert FP16 precision, undermining the profile's stated FP16 deployment strategy; put the optimizer before the cast, including in the matching CNN/vision strategy branch.

Useful? React with 👍 / 👎.

Comment on lines +167 to +170
"openvinoTargetDevice",
"OpenVINO NPU",
"device NPU",
"OpenVINOExecutionProvider",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Require an NPU-specific troubleshooting signal

When a Studio error merely mentions OpenVINOExecutionProvider, or its configuration context contains the routinely present openvinoTargetDevice field, this entry receives a full keyword match even for CPU/GPU OpenVINO usage because troubleshooting patterns are OR alternatives. Such errors can therefore be misdiagnosed as an NPU-device-selection problem; restrict the patterns to text that actually identifies NPU, or require the generic field/provider token to co-occur with an NPU value.

Useful? React with 👍 / 👎.

Comment on lines +153 to +155
"localExecutionIssues",
"webgpu",
"isRunnable"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove generic recipe fields from WebGPU matching

When callers include a recipe or UI-state payload in config_context, nearly every recipe contains isRunnable and localExecutionIssues, and the scorer treats either substring as a complete keyword match. Unrelated Studio failures can consequently be ranked as the browser-only WebGPU issue, with both fields adding an extra multi-hit bonus; keep only WebGPU-specific provider/error tokens or require these fields to be paired with a WebGPU value.

Useful? React with 👍 / 👎.

@qodo-code-review

qodo-code-review Bot commented Aug 6, 2026 •

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. DirectML EP naming mismatch ✓ Resolved 🐞 Bug ⚙ Maintainability
Description
The new Windows DirectML hardware profile reports only DmlExecutionProvider, while normalization
also accepts DirectMLExecutionProvider (the spelling used in passes.json), creating inconsistent
EP identifiers across the KB and tool outputs.
Code

olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json[R236-239]

+      "target": "Windows DirectML GPU",
+      "accelerator": "gpu",
+      "execution_providers": ["DmlExecutionProvider"],
+      "recommended_passes": ["OnnxConversion", "OnnxStaticQuantization", "OnnxModelOptimizer"],
Relevance

●●● Strong

Consistent EP identifiers are low-risk; team usually accepts small maintainability/consistency
fixes.

PR-#73

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The DirectML profile added by this PR exposes only DmlExecutionProvider, while the normalization
layer explicitly supports DirectMLExecutionProvider (notably referenced by passes.json), so EP
naming is inconsistent across sources and tool responses.

olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json[236-249]
olive-mcp-server/olive_mcp_server/tools/normalization.py[78-108]
olive-mcp-server/olive_mcp_server/knowledge_base/passes.json[1646-1662]
olive-mcp-server/olive_mcp_server/tools/hardware_guide.py[26-50]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The knowledge base and tools now accept both `DirectMLExecutionProvider` and `DmlExecutionProvider` as inputs, but the hardware profile returns only `DmlExecutionProvider`. This creates inconsistent identifiers across `passes.json` (requirements) vs `hardware_profiles.json` (recommendations) vs normalization, which can confuse downstream consumers doing exact string matching or presenting “supported EPs” back to users.

### Issue Context
- `normalize_hardware()` explicitly maps `DirectMLExecutionProvider` to the `Windows DirectML GPU` profile.
- The `Windows DirectML GPU` profile itself lists only `DmlExecutionProvider`.
- `passes.json` uses `DirectMLExecutionProvider` in `hardware_requirements` (at least for `ModelBuilder`).

### Fix Focus Areas
Pick a single canonical spelling and make the KB consistent (recommended: canonicalize to `DmlExecutionProvider`, but either direction is fine as long as it’s consistent).

- olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json[236-249]
- olive-mcp-server/olive_mcp_server/tools/normalization.py[78-108]
- olive-mcp-server/olive_mcp_server/knowledge_base/passes.json[1646-1662]

Option A (minimal, preserves aliasing): add `DirectMLExecutionProvider` alongside `DmlExecutionProvider` in the DirectML hardware profile’s `execution_providers` list.

Option B (full standardization): update `passes.json` to use `DmlExecutionProvider` for hardware requirements and keep `DirectMLExecutionProvider` only as an accepted alias in normalization.

Also consider adding a regression test asserting `get_hardware_optimization_guide(target_hardware="DirectMLExecutionProvider")` returns a consistent/canonical `execution_providers` list.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context used
✅ Compliance rules (platform): 86 rules
✅ REVIEW.md

To customize comments, go to the Qodo configuration screen, or learn more in the docs.

Qodo Logo

Comment thread olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json Outdated
@qodo-code-review

Copy link
Copy Markdown
Contributor

Qodo Fixer

✅ Committed (1) · ☑ Fixed (1)

Grey Divider

Commits pushed directly to this PR — no separate fix PR opened.

Process — 1 fixed
  • ☑ Fixed: DirectML EP naming mismatch

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 15

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json`:
- Around line 235-250: Update the Windows DirectML GPU profile’s
execution_providers list to contain only the canonical DmlExecutionProvider
identifier. Remove the DirectMLExecutionProvider normalization alias while
preserving the rest of the profile unchanged.
- Around line 208-212: Clarify the tensorrt-rtx guidance to state that it
installs the standalone TensorRT RTX EP-ABI provider library implementing
NvTensorRTRTXExecutionProvider for ORT 1.23+, without implying a separate plugin
dependency. Apply this wording consistently in
olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json:208-212,
olive-mcp-server/olive_mcp_server/knowledge_base/compatibility_matrix.json:233-237,
olive-mcp-server/olive_mcp_server/knowledge_base/compatibility_matrix.json:959-963,
and olive-mcp-server/scripts/expand_kb.py:549-553.

In
`@olive-mcp-server/olive_mcp_server/knowledge_base/studio_troubleshooting.json`:
- Around line 126-127: Update the TensorRT RTX guidance in
olive-mcp-server/olive_mcp_server/knowledge_base/studio_troubleshooting.json:126-127
to require both tensorrt-rtx and the matching ONNX Runtime EP ABI plugin, and
explicitly instruct users to verify NvTensorRTRTXExecutionProvider appears in
onnxruntime.get_available_providers(). Update
olive-mcp-server/olive_mcp_server/knowledge_base/integration_recipes.json:856 to
state that the recipe requires both packages.

In `@olive-mcp-server/olive_mcp_server/tools/compatibility.py`:
- Around line 24-27: Update the return documentation for the compatibility
function to explicitly include the optional error key. State that invalid
OpenVINO device requests may return model-level data together with error, while
hardware-specific fields are omitted, distinguishing this partially populated
shape from the bare error responses of sibling tools.

In `@olive-mcp-server/olive_mcp_server/tools/normalization.py`:
- Around line 99-131: Remove all OpenVINO-related entries from
_HARDWARE_ALIASES, including NPU, GPU, iGPU, and Arc variants. Keep only the
TensorRT RTX, DirectML, and WebGPU aliases, leaving _try_parse_openvino as the
sole handler for OpenVINO inputs.
- Around line 323-332: The execution-provider mapping in the normalization flow
is case-sensitive while subsequent matching uses lowercase. Update the lookup
around _EXECUTION_PROVIDER_TO_TARGET to use the normalized lowercased input,
preserving the existing canonical target assignment and lower update so mixed-
or lowercase provider names resolve through the EP map before aliases and
profile matching.

In `@olive-mcp-server/olive_mcp_server/tools/strategy_advisor.py`:
- Around line 351-369: Guard both the latency and accuracy override logic in the
strategy advisor so it runs only when the selected algorithm actually uses int4.
Update the conditions around the latency_rank_val handling and
accuracy-threshold replacement, preserving the existing LLM/CNN/vision behavior
for int4 algorithms while leaving FP16 algorithm descriptions and risks
unchanged.
- Around line 375-386: Update get_quantization_strategy’s result construction to
include "resolved_profile": parsed.profile while retaining "target_hardware" as
the strategy bucket. Document that target_hardware identifies the bucket and
resolved_profile preserves the resolved hardware description, with the existing
openvino_device details unchanged.

In `@olive-mcp-server/olive_mcp_server/tools/studio_loopback.py`:
- Around line 82-98: Update resolve_studio_base() to access parsed.port inside a
try block after URL parsing, catching invalid or out-of-range port ValueErrors
and returning studio_unavailable instead of allowing request-time failures.
Preserve the existing scheme, credential, and loopback validation, and add
regression coverage for malformed and out-of-range OLIVE_STUDIO_API_URL ports.

In `@olive-mcp-server/olive_mcp_server/tools/troubleshooting.py`:
- Around line 417-421: Update the candidate selection logic around the scored
results and require_keyword handling: when require_keyword is true, filter
scored to entries with hits greater than zero before selecting the best entry,
then apply the existing positive-score validation. Preserve the current ranking
order and behavior when require_keyword is false.

In `@olive-mcp-server/scripts/check_olive_pass_availability.py`:
- Around line 309-310: Update the success message in the claim-availability
reporting flow to say claims were recognized by the Olive registry, alias
mapping, or cloud-only allowlist, rather than asserting all claims are exact
local registry entries. Keep the existing _claim_in_registry validation and
missing-claim behavior unchanged.
- Around line 85-95: Update the exception handler in _olive_config_json_path to
resolve Ruff S110: either add an S110-specific suppression alongside BLE001 with
a comment explaining the intentional fallback to a site-packages walk, or log
the metadata lookup failure before continuing to the fallback. Preserve the
existing fallback behavior.

In `@olive-mcp-server/tests/test_hardware_ep_profiles.py`:
- Around line 73-98: Add a parameterized test case in
test_quantization_strategy_new_categories for WebGPU or DirectML using
latency_budget="<100ms", pass that budget to get_quantization_strategy, and
assert the recommended algorithm retains the expected FP16/INT8 strategy without
int4 KV-cache guidance.

In `@olive-mcp-server/tests/test_normalization.py`:
- Line 98: Remove the duplicate ("RTX 4090", "NVIDIA RTX 4090") entry from the
pytest.mark.parametrize case list in test_normalization.py, keeping the earlier
identical case and all other test cases unchanged.
- Around line 156-165: Update test_parse_hardware_target_bare_gpu_not_ov to
assert the expected bare-gpu fallback target, then adjust
parse_hardware_target’s unresolved path and _match_hardware_profile resolution
so the exact input "gpu" cannot select WebGPU (Browser). Add a dedicated
bare-gpu alias or explicit fallback that preserves non-OpenVINO status while
returning the intended generic GPU target.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 1f9e8ab1-750e-431f-b017-88d0dc25dc3d

📥 Commits

Reviewing files that changed from the base of the PR and between 4ec2c76 and 7e2c77f.

📒 Files selected for processing (30)
  • olive-mcp-server/README.md
  • olive-mcp-server/olive_mcp_server/knowledge_base/compatibility_matrix.json
  • olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json
  • olive-mcp-server/olive_mcp_server/knowledge_base/integration_recipes.json
  • olive-mcp-server/olive_mcp_server/knowledge_base/studio_troubleshooting.json
  • olive-mcp-server/olive_mcp_server/knowledge_base/troubleshooting.json
  • olive-mcp-server/olive_mcp_server/mcp_server.py
  • olive-mcp-server/olive_mcp_server/tools/__init__.py
  • olive-mcp-server/olive_mcp_server/tools/compatibility.py
  • olive-mcp-server/olive_mcp_server/tools/hardware_guide.py
  • olive-mcp-server/olive_mcp_server/tools/normalization.py
  • olive-mcp-server/olive_mcp_server/tools/runtime_ep_hints.py
  • olive-mcp-server/olive_mcp_server/tools/strategy_advisor.py
  • olive-mcp-server/olive_mcp_server/tools/studio_loopback.py
  • olive-mcp-server/olive_mcp_server/tools/studio_recipe.py
  • olive-mcp-server/olive_mcp_server/tools/troubleshooting.py
  • olive-mcp-server/scripts/check_olive_pass_availability.py
  • olive-mcp-server/scripts/expand_kb.py
  • olive-mcp-server/tests/test_compatibility_matrix.py
  • olive-mcp-server/tests/test_hardware_ep_profiles.py
  • olive-mcp-server/tests/test_integration.py
  • olive-mcp-server/tests/test_normalization.py
  • olive-mcp-server/tests/test_runtime_ep_hints.py
  • olive-mcp-server/tests/test_studio_recipe.py
  • olive-mcp-server/tests/test_tools.py
  • src/components/features/BatchProcessingPanel.test.tsx
  • src/components/features/ExecutionWorkspace.test.tsx
  • src/components/features/MCPDiagnosticCard.tsx
  • src/lib/pipelineValidation.ts
  • src/server/services/mcp/studioRecipeBridge.ts
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • tonythethompson/QuickShell (manual)
  • tonythethompson/numan (manual)
  • tonythethompson/dependency-chain-substrate (manual)
📜 Review details
⏰ Context from checks skipped due to timeout. (4)
  • GitHub Check: Greptile Review
  • GitHub Check: olive-pass-availability
  • GitHub Check: python-tests
  • GitHub Check: validate
🧰 Additional context used
📓 Path-based instructions (5)
olive-mcp-server/**/*.py

📄 CodeRabbit inference engine (CLAUDE.md)

Pin the Python mcp dependency to a version below 2 because version 2.x removes mcp.server.fastmcp and breaks imports.

Files:

  • olive-mcp-server/olive_mcp_server/mcp_server.py
  • olive-mcp-server/scripts/expand_kb.py
  • olive-mcp-server/olive_mcp_server/tools/__init__.py
  • olive-mcp-server/tests/test_compatibility_matrix.py
  • olive-mcp-server/tests/test_hardware_ep_profiles.py
  • olive-mcp-server/olive_mcp_server/tools/compatibility.py
  • olive-mcp-server/tests/test_studio_recipe.py
  • olive-mcp-server/tests/test_integration.py
  • olive-mcp-server/olive_mcp_server/tools/runtime_ep_hints.py
  • olive-mcp-server/olive_mcp_server/tools/hardware_guide.py
  • olive-mcp-server/tests/test_normalization.py
  • olive-mcp-server/tests/test_tools.py
  • olive-mcp-server/tests/test_runtime_ep_hints.py
  • olive-mcp-server/olive_mcp_server/tools/studio_recipe.py
  • olive-mcp-server/olive_mcp_server/tools/troubleshooting.py
  • olive-mcp-server/scripts/check_olive_pass_availability.py
  • olive-mcp-server/olive_mcp_server/tools/strategy_advisor.py
  • olive-mcp-server/olive_mcp_server/tools/normalization.py
  • olive-mcp-server/olive_mcp_server/tools/studio_loopback.py
src/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

src/**/*.{ts,tsx}: Match existing naming, file layout, and TypeScript patterns in src/.
Put shared recipe logic in src/lib/, especially pipelineValidation.ts, oliveRecipeBuilder.ts, and recipePipeline.ts.

src/**/*.{ts,tsx}: Keep validation logic in shared libraries rather than duplicating it in UI cell helpers or inspectors.
Split the InputEnvironmentPanel, IHVIntegrationPanel, and ExecutionWorkspace mega-panels into feature folders with colocated hooks and tests.
Keep server and UI AI provider catalogs synchronized, preferably through a shared provider ID list or synchronization test; register new providers in both catalogs.
Add test coverage for recipe-graph/, passCatalog, oliveRecipeHub, jobHistoryStore, and vramEstimate, and strengthen component tests for the large panels.

src/**/*.{ts,tsx}: All UI state mutations must go through commitUiStateUpdate in src/lib/pipelineValidation.ts so invariants are enforced; use usePipelineState() for state access and replaceState for recipe imports or preset loads.
Avoid export * barrel imports; import directly from the actual module file to preserve Vite tree-shaking and component-test isolation.

src/**/*.{ts,tsx}: In React/TypeScript source, avoid barrel imports; import from the specific module/file instead of re-export index files.
In React/TypeScript source, eliminate waterfalls in data loading and rendering flows.
In React/TypeScript source, defer non-critical third-party libraries instead of loading them eagerly.

Files:

  • src/server/services/mcp/studioRecipeBridge.ts
  • src/lib/pipelineValidation.ts
  • src/components/features/MCPDiagnosticCard.tsx
  • src/components/features/BatchProcessingPanel.test.tsx
  • src/components/features/ExecutionWorkspace.test.tsx
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*.{ts,tsx,js,jsx}: Place imports at the top of modules; use inline imports only for a documented circular dependency.
Run linting and ensure typecheck-related CI checks pass before submitting changes.
For UI or server changes, manually smoke-test development startup, recipe loading/building, validation banners, and live execution when execution behavior is touched.

Files:

  • src/server/services/mcp/studioRecipeBridge.ts
  • src/lib/pipelineValidation.ts
  • src/components/features/MCPDiagnosticCard.tsx
  • src/components/features/BatchProcessingPanel.test.tsx
  • src/components/features/ExecutionWorkspace.test.tsx
**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

When working with React 19 or Vite 8 APIs, consult current Context7 documentation instead of assuming conventions from earlier major versions.

Files:

  • src/server/services/mcp/studioRecipeBridge.ts
  • src/lib/pipelineValidation.ts
  • src/components/features/MCPDiagnosticCard.tsx
  • src/components/features/BatchProcessingPanel.test.tsx
  • src/components/features/ExecutionWorkspace.test.tsx
src/lib/pipelineValidation.ts

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Extend validation rules in pipelineValidation.ts when pass-to-provider compatibility changes.

Files:

  • src/lib/pipelineValidation.ts
🧠 Learnings (1)
📚 Learning: 2026-08-04T12:36:02.655Z
Learnt from: tonythethompson
Repo: tonythethompson/Olive-Studio PR: 97
File: src/components/features/BatchProcessingPanel.tsx:0-0
Timestamp: 2026-08-04T12:36:02.655Z
Learning: When updating pipeline state through usePipelineState().setState in React components, do not wrap the update in another commitUiStateUpdate call. PipelineStore.setState already invokes commitUiStateUpdate(store.state, partial) to enforce UI state invariants; a second commit can duplicate the operation and merge against a stale component state snapshot.

Applied to files:

  • src/components/features/MCPDiagnosticCard.tsx
  • src/components/features/BatchProcessingPanel.test.tsx
  • src/components/features/ExecutionWorkspace.test.tsx
🪛 ast-grep (0.45.0)
olive-mcp-server/tests/test_runtime_ep_hints.py

[warning] 113-113: Do not make http calls without encryption
Context: "http://example.com:3000"
Note: [CWE-319] Cleartext Transmission of Sensitive Information.

(requests-http)


[info] 81-81: use jsonify instead of json.dumps for JSON output
Context: json.dumps(payload)
Note: [CWE-116] Improper Encoding or Escaping of Output.

(use-jsonify)

olive-mcp-server/olive_mcp_server/tools/studio_loopback.py

[info] 144-144: use jsonify instead of json.dumps for JSON output
Context: json.dumps(body)
Note: [CWE-116] Improper Encoding or Escaping of Output.

(use-jsonify)

🪛 Checkov (3.3.9)
olive-mcp-server/olive_mcp_server/knowledge_base/compatibility_matrix.json

[low] 280-281: Base64 High Entropy String

(CKV_SECRET_6)

🪛 Ruff (0.16.1)
olive-mcp-server/tests/test_normalization.py

[warning] 98-98: Duplicate of test case at index 2 in pytest.mark.parametrize

Remove duplicate test case

(PT014)

olive-mcp-server/scripts/check_olive_pass_availability.py

[error] 94-95: try-except-pass detected, consider logging the exception

(S110)


[warning] 154-154: Use key in dict instead of key in dict.keys()

Remove .keys()

(SIM118)

🔍 Remote MCP DeepWiki, GitHub Copilot

Relevant review context

  • Studio runtime contract: /api/system/hardware-probe accepts both refresh=1 and refresh=true, so the new MCP hint tool’s refresh query is compatible with Studio. /api/env/runtime exposes per-family runtime capabilities.
  • Provider IDs: Studio’s canonical identifiers are DmlExecutionProvider, OpenVINOExecutionProvider, NvTensorRTRTXExecutionProvider, and WebGpuExecutionProvider. The PR additionally accepts DirectMLExecutionProvider as an alias, which should remain normalization-only rather than a runtime output.
  • OpenVINO device model: Studio keeps OpenVINOExecutionProvider separate from the target device (CPU/GPU/NPU) and maps that device into the Olive accelerator configuration. The PR’s structured OpenVINO parser follows this established contract.
  • TensorRT RTX installation warning: Existing Studio code states that tensorrt-rtx alone does not register NvTensorRTRTXExecutionProvider; the NVIDIA ORT EP-ABI plugin is also required. The PR troubleshooting solution currently says only pip install tensorrt-rtx, so this remediation should be checked.
  • WebGPU behavior: Studio explicitly treats WebGPU as browser/ORT-Web-only and excludes it from local execution, matching the PR’s knowledge-base guidance.
  • Related runtime architecture: Merged PR #111 established separate default, cuda, and openvino runtime families, with DirectML in the default family and OpenVINO isolated in .venvs/openvino; PR #131’s runtime hints should preserve that separation.
  • Checks: The PR head has a successful Vercel deployment; the CodeRabbit review status remains pending.

DeepWiki was attempted but the repository is not indexed there.

🔇 Additional comments (40)
olive-mcp-server/scripts/check_olive_pass_availability.py (3)

24-33: LGTM!


110-123: LGTM!

Also applies to: 147-157, 245-247


261-273: LGTM!

olive-mcp-server/olive_mcp_server/tools/studio_loopback.py (1)

23-65: LGTM!

Also applies to: 101-209

olive-mcp-server/olive_mcp_server/tools/runtime_ep_hints.py (1)

1-196: LGTM!

olive-mcp-server/olive_mcp_server/mcp_server.py (1)

57-60: LGTM!

olive-mcp-server/olive_mcp_server/tools/__init__.py (1)

37-37: LGTM!

Also applies to: 185-185

olive-mcp-server/tests/test_runtime_ep_hints.py (1)

1-211: LGTM!

olive-mcp-server/olive_mcp_server/tools/studio_recipe.py (1)

12-18: LGTM!

Also applies to: 49-68, 96-102

olive-mcp-server/tests/test_studio_recipe.py (1)

14-14: LGTM!

Also applies to: 80-87

src/lib/pipelineValidation.ts (1)

799-802: 🎯 Functional Correctness

Apply UiStatePatch at the state-update boundary.

mergeUiState now accepts shallow patches such as { passes: { quantization: true } }, but commitUiStateUpdate still accepts Partial<UIState> at Line 894. This leaves the required mutation API unable to accept the new nested patch shape without a cast. Change commitUiStateUpdate and any store-facing setter type to UiStatePatch, or verify that no caller needs partial passes updates.

As per coding guidelines, all UI state mutations must go through commitUiStateUpdate so invariants are enforced.

Source: Coding guidelines

src/server/services/mcp/studioRecipeBridge.ts (1)

14-14: LGTM!

Also applies to: 102-102

src/components/features/MCPDiagnosticCard.tsx (1)

52-54: LGTM!

src/components/features/BatchProcessingPanel.test.tsx (1)

199-199: LGTM!

Also applies to: 301-301

src/components/features/ExecutionWorkspace.test.tsx (1)

322-322: LGTM!

olive-mcp-server/tests/test_integration.py (1)

26-26: LGTM!

olive-mcp-server/olive_mcp_server/knowledge_base/integration_recipes.json (1)

2-3: LGTM!

Also applies to: 264-350, 783-855, 858-1044

olive-mcp-server/olive_mcp_server/knowledge_base/studio_troubleshooting.json (1)

2-3: LGTM!

Also applies to: 115-126, 128-129, 132-177

olive-mcp-server/olive_mcp_server/knowledge_base/troubleshooting.json (1)

2-3: LGTM!

Also applies to: 619-649

olive-mcp-server/README.md (1)

14-18: LGTM!

olive-mcp-server/tests/test_tools.py (1)

274-313: LGTM!

olive-mcp-server/olive_mcp_server/tools/normalization.py (1)

157-176: LGTM!

Also applies to: 196-270, 273-297, 365-375

olive-mcp-server/tests/test_normalization.py (1)

109-112: LGTM!

Also applies to: 115-153

olive-mcp-server/olive_mcp_server/tools/compatibility.py (1)

66-89: LGTM!

olive-mcp-server/olive_mcp_server/tools/hardware_guide.py (1)

6-6: LGTM!

Also applies to: 25-33, 52-52, 68-70

olive-mcp-server/olive_mcp_server/tools/strategy_advisor.py (1)

10-37: LGTM!

Also applies to: 64-96, 98-191, 193-297, 299-349

olive-mcp-server/olive_mcp_server/tools/troubleshooting.py (2)

365-366: LGTM!

Also applies to: 529-535


272-277: 📐 Maintainability & Code Quality

No action needed. The six quirk-category keys match existing knowledge-base entry ids.

olive-mcp-server/tests/test_hardware_ep_profiles.py (1)

12-38: LGTM!

Also applies to: 41-70, 101-107, 109-156

olive-mcp-server/olive_mcp_server/knowledge_base/compatibility_matrix.json (6)

2-3: LGTM!


425-562: LGTM!


1416-1461: LGTM!


1585-1630: LGTM!


1711-1745: LGTM!


2384-2416: LGTM!

olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json (3)

2-3: LGTM!


214-234: LGTM!


251-266: LGTM!

olive-mcp-server/tests/test_compatibility_matrix.py (2)

400-400: LGTM!


420-420: LGTM!

Comment thread olive-mcp-server/olive_mcp_server/knowledge_base/studio_troubleshooting.json Outdated
Comment thread olive-mcp-server/olive_mcp_server/tools/compatibility.py
Comment thread olive-mcp-server/olive_mcp_server/tools/normalization.py
Comment thread olive-mcp-server/scripts/check_olive_pass_availability.py Outdated
Comment thread olive-mcp-server/scripts/check_olive_pass_availability.py
Comment thread olive-mcp-server/tests/test_hardware_ep_profiles.py
Comment thread olive-mcp-server/tests/test_normalization.py Outdated
Comment thread olive-mcp-server/tests/test_normalization.py
Comment thread olive-mcp-server/olive_mcp_server/tools/strategy_advisor.py Outdated
tonythethompson and others added 9 commits August 7, 2026 00:06
Treat QNNQuantization, OnnxModelOptimizer, and AzureMLQuantization as aliases or cloud-only claims so olive-pass-availability matches the pinned olive-ai 0.12.1 config.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Add rocm strategy bucket + llama3_rocm_gptq; deepen ROCm matrix claims.
Add get_runtime_ep_hints loopback proxy over hardware-probe/env runtime
(shared studio_loopback client; no install logic).
Canonicalize DirectML EP id, clarify TensorRT RTX EP-ABI wording, harden
hardware normalization (case-insensitive EP map, bare gpu fallback), guard
int4-only strategy overrides, validate Studio URL ports, and tighten
troubleshooting/CI messaging with regression tests.

Co-authored-by: Anthony Thompson <github@trackdub.com>
…erns

Use format-compatible OpenVINO NPU chains, put DirectML/WebGPU optimization
before quant/FP16, and require NPU/WebGPU-specific troubleshooting signals.

Co-authored-by: Anthony Thompson <github@trackdub.com>
Default to OpenVINOConversion (torch|onnx) before weight compression so
ONNX-source LLMs are not routed through torch-only Optimum conversion.

Co-authored-by: Anthony Thompson <github@trackdub.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@tonythethompson
tonythethompson force-pushed the feature/mcp-ep-hardware-gaps branch from d59606c to b051888 Compare August 7, 2026 07:06
Reject OLIVE_STUDIO_API_URL values with path/query/fragment, and only
forward HTTPError JSON bodies that include a structured error key.

Co-authored-by: Anthony Thompson <github@trackdub.com>
greptile-apps[bot]
greptile-apps Bot previously approved these changes Aug 7, 2026
…are-gaps

Resolve check_olive_pass_availability conflict by keeping the logged
metadata-lookup fallback from the base (CodeFactor) while preserving
PR 131 EP-hardware content.

Co-authored-by: Anthony Thompson <github@trackdub.com>
@greptile-apps
greptile-apps Bot dismissed their stale review August 7, 2026 08:05

Dismissed because a newer commit was pushed; Greptile will re-review the current head.

…ck' into feature/mcp-ep-hardware-gaps

Co-authored-by: Anthony Thompson <github@trackdub.com>
@tonythethompson
tonythethompson merged commit 3291f6f into main Aug 7, 2026
13 checks passed
@tonythethompson
tonythethompson deleted the feature/mcp-ep-hardware-gaps branch August 7, 2026 08:59
@linear-code

linear-code Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

OLI-61

This branch was successfully deployed

1 active deployment
Preview — c70c461f Deployed Aug 7, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants