Skip to content

Add MIGraphX and oneDNN execution provider support and improvements - #330

Merged
tonythethompson merged 16 commits into
mainfrom
ep-expandion-pack
Aug 16, 2026
Merged

tonythethompson merged 16 commits into
mainfrom
ep-expandion-pack

Conversation

@tonythethompson

@tonythethompson tonythethompson commented Aug 16, 2026 •

Copy link
Copy Markdown
Owner

Summary by cubic

Adds first‑class MIGraphX (AMD GPU) and oneDNN (Intel CPU) execution providers and promotes QNN ABI to a provider with auto‑coercion to QairtPipeline. Providers now appear in the catalog, are gated by hardware/onnxruntime probes, and QNN ABI replaces incompatible passes with a single pipeline and shows an inline notice.

  • Catalog/UI: new cards for MIGraphX, oneDNN, and QNN ABI; grouped “Qualcomm Snapdragon” section and grouped grid rendering; QNN ABI coercion notice now derived during render; MIGraphX install/unavailable prompts (default venv wording).

  • Validation/commit: MIGraphX conflicts with OpenVINO/TensorRT; HQQ/RTN/KQuant allowed on MIGraphX; oneDNN blocks GPU‑only quant methods; ROCm consumer vs datacenter split via ISA families; accelerator classification/mapping updated.

  • Probe/ensure: CPU feature detection (AVX2/AVX‑512/AMX); MIGraphX soft‑detects on AMD Instinct (CDNA) and RDNA3/RDNA4 GPUs (RDNA1/2 and Vega excluded); capability ensure installs migraphx on Linux x86_64 into the default venv with a 300s timeout and abort support; oneDNN availability verified via probed onnxruntime providers.

  • Knowledge base/tests: MCP adds EP selection guidance and Instinct/RDNA4 profiles; shipped docs KB index rebuilt (4,711 pairs); unit/property tests cover catalog invariants, hardware profiles, conflicts, coercion behavior, and provider classification/mapping.

  • Refactor/chore: extracted resolveMissingCapabilitySlot; added AbortSignal to pip installs; fixed JSDoc and React hooks lint warnings; .gitignore ignores Terraform state.

  • MIGraphX: Linux x86_64 only; installs migraphx into the default venv; remains disabled if import fails; gated to AMD Instinct (CDNA) and RDNA3/RDNA4 GPUs.

  • oneDNN: bundled with the default onnxruntime wheel. Required action: use an onnxruntime wheel that reports DnnlExecutionProvider in the probed provider list.

Written for commit aa95a45. Summary will update on new commits.

Review in cubic

Introduces MIGraphXExecutionProvider and DnnlExecutionProvider into the core provider flow by extending `IHVProvider`, runtime-kind classification, known provider lists, GPU classification, and ORT provider mapping. This lays the first implementation slice for EP expansion and includes Kiro spec artifacts (`requirements`, `design`, `tasks`) plus newly added Terraform workspace/state artifacts under `infra/terraform`.
This change adds AMD MIGraphX and Intel oneDNN execution-provider support across provider metadata and runtime classification. It updates alias and family mappings, GPU accelerator detection, recipe builder provider grouping, and task tracking/spec notes for the expansion pack work. It also adds steering guidance to avoid 'local-first' branding in user-facing copy and docs.
Introduces end-to-end support for MIGraphXExecutionProvider and DnnlExecutionProvider across Olive Studio. This includes provider catalog updates, IHV panel UX improvements (Qualcomm grouping, QNN ABI coercion notice, install/unavailable states), expanded pass compatibility and auto-coercion rules, and stronger provider conflict validation (including ROCm consumer vs datacenter differentiation).

The change also extends hardware probing and server capability handling with oneDNN availability checks and MIGraphX install logic, adds MCP knowledge base EP selection guidance, and adds comprehensive unit/property tests for provider schema invariants, conflict detection, coercion behavior, hardware profile schema completeness, and provider classification/mapping.

@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, your pull request is larger than the review limit of 150000 diff characters

@coderabbitai

coderabbitai Bot commented Aug 16, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review available on request

  • 🔍 Trigger review

Reviews should be triggered manually for repositories with fewer than 10 stars. Select Trigger review above or comment @coderabbitai review to review the latest changes. For a full review, comment @coderabbitai full review.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 7aefba61-a5ff-4aaf-ab8c-2a2422b093bd


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.

@github-actions

github-actions Bot commented Aug 16, 2026 •

Copy link
Copy Markdown
Contributor

Qodana for JS

77 new problems were found

Inspection name Severity Problems
Redundant local variable 🔶 Warning 22
Syntax errors and unresolved references in JSDoc 🔶 Warning 12
Bitwise operator usage 🔶 Warning 3
Unused local symbol 🔶 Warning 3
Redundant 'if' statement 🔶 Warning 2
Mismatched JSDoc and function signature 🔶 Warning 1
Unused assignment 🔶 Warning 1
Pointless arithmetic expression 🔶 Warning 1
Deprecated symbol used ◽️ Notice 29
Missing await for an async function call ◽️ Notice 3

☁️ View the detailed Qodana report

Contact Qodana team

Contact us at qodana-support@jetbrains.com

@greptile-apps

greptile-apps Bot commented Aug 16, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR expands execution-provider support for AMD MIGraphX and Intel oneDNN while unifying QNN ABI selection and extending hardware probing and compatibility validation.

  • Adds provider catalog, runtime-family, recipe, validation, and UI integration for MIGraphX and oneDNN.
  • Extends hardware probing with CPU features, ROCm metadata, and provider availability.
  • Adds QNN ABI coercion behavior and updated MCP hardware guidance and recipes.

Confidence Score: 3/5

The PR is not safe to merge because the hardware probe route cannot compile and MIGraphX Execute Live still fails after successful installation.

The current hardware route contains malformed and out-of-scope probe fragments that prevent the server module from building, while MIGraphX readiness still maps to no capability slot and falls through to an error after installation.

Files Needing Attention: src/server/routes/system.ts, src/server/services/venv/capabilityEnsure.ts, src/server/services/venv/status.ts

Important Files Changed

Filename Overview
src/server/routes/system.ts Hardware-probe changes remain structurally corrupted with invalid syntax, duplicate declarations, and out-of-scope identifiers that prevent compilation.
src/server/services/venv/capabilityEnsure.ts Adds MIGraphX installation and oneDNN registration checks, but still lacks a successful readiness path for MIGraphX after installation.
src/server/services/venv/status.ts Classifies MIGraphX as having no capability slot without coordinating the required fallback registration check in capability ensure.
src/server/services/olive/migraphx.ts Adds platform-gated MIGraphX package installation and import verification, but its successful result is rejected by the downstream capability flow.

Reviews (3): Last reviewed commit: "Merge branch 'main' into ep-expandion-pa..." | Re-trigger Greptile

Comment thread src/server/routes/system.ts 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: 8c92bf235f

ℹ️ 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".

Comment thread src/lib/hardwareProbe.ts Outdated
Comment thread src/components/features/ihv/HardwareProviderCard.tsx
Comment thread src/server/services/olive/migraphx.ts Outdated
Comment thread infra/terraform/terraform.tfstate Outdated
Comment thread src/server/services/venv/status.ts
@tonythethompson

Copy link
Copy Markdown
Owner Author

/oc fix

Co-authored-by: tonythethompson <tonythethompson@users.noreply.github.com>
@opencode-agent

Copy link
Copy Markdown
Contributor

This session completed the remaining PR #330 work:

Tests added (the last implementation gap):

  • src/server/services/olive/migraphx.test.ts — platform gate, idempotent skip, install success, 300s timeout (fake timers + AbortSignal-kill assertion), pip failure, post-install import failure.
  • src/server/services/venv/capabilityEnsure.test.ts — new ensureCapabilityMIGraphXExecutionProvider describe: success when ORT reports the EP, Instinct-hint failure when absent, and surfaced install failure. I also fixed a mock gap — the failure test needs getDualRuntimeStatus set since familyFlagsFromStatus dereferences st.exists (verified in status.ts:415).
  • src/lib/hardwareProbe.test.ts — mergeDetectedProviders MIGraphX Instinct gating (soft-detect only on Instinct; consumer Radeon + ORT listing both excluded) and isInstinctGpu classification (CDNA ISAs yes, RDNA/Vega/unknown no, name-match authoritative).

Verification done this session:

  • All 8 changed TS files pass node --experimental-strip-types --check; the TSX card passes npx esbuild (syntax only).
  • Confirmed no breakage of coreml.test.ts — it asserts toHaveBeenCalledWith(4 args) and coreml.ts still calls pipInstallForFamily with 4 args; the 5th signal param is optional.
  • Confirmed MIGraphXExecutionProvider is local runtime kind (providerRuntimeKind.ts:34), so it correctly reaches the new MIGraphX branch in capabilityEnsure.ts, and resolveVenvFamily maps it to the default family.
  • MIGraphX card CTA + migraphxNeedsInstall gate on isProviderDetectedLocally(...) → checks probe.detectedProviders, which only contains MIGraphX when hasInstinctGpu.

Remaining: only the final lint/test/typecheck verification, which needs node_modules (unavailable locally; npx tsc fails on @webgpu/types). Per AGENTS.md, GitHub Actions is the gate of record — the auto-pushed branch will run it.

Working tree: 8 modified files + new migraphx.test.ts, plus the Terraform deletions. No commits made.

New%20session%20-%202026-08-16T14%3A03%3A00.246Z
opencode session  |  github run

@codefactor-io

codefactor-io Bot commented Aug 16, 2026

Copy link
Copy Markdown

CodeFactor found an issue: Complex Method

It's currently on:
src\server\services\venv\capabilityEnsure.ts:58-158
Commit 8c92bf2

@codefactor-io

codefactor-io Bot commented Aug 16, 2026

Copy link
Copy Markdown

CodeFactor found an issue: Expected an assignment or function call and instead saw an expression.

It's currently on:
src\server\services\shared\pipInstall.ts:66
Commit 5560d48

Comment thread src/server/routes/system.ts
@kilo-code-bot

kilo-code-bot Bot commented Aug 16, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (3 files)
  • olive-mcp-server/olive_mcp_server/knowledge_base/indexes/docs_kb.meta.json - Index metadata updated (4,711 entries)
  • olive-mcp-server/olive_mcp_server/knowledge_base/indexes/manifest.json - Manifest hash/count updated
  • src/components/features/ihv/IHVIntegrationPanel.tsx - QNN ABI coercion notice derived during render (previous set-state-in-effect lint issue resolved)
  • src/lib/pipelineValidation.ts - Orphaned JSDoc comment removed
Previous Review Summaries (4 snapshots, latest commit 76260dd)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 76260dd)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (8 files)
  • src/components/features/ihv/HardwareProviderCard.tsx
  • src/lib/hardwareProbe.test.ts
  • src/lib/hardwareProbe.ts
  • src/lib/pipelineStateCommit.ts
  • src/lib/providerCatalog.ts
  • src/server/routes/system.ts
  • src/server/services/venv/capabilityEnsure.test.ts
  • src/server/services/venv/capabilityEnsure.ts

Previous review (commit c0a7cb4)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (2 files)
  • src/components/features/ihv/hardwarePassCompatibility.ts
  • src/lib/__tests__/gpuClassification.test.ts

Previous review (commit 545baf3)

Status: 1 Issue Found | Recommendation: Address before merge

Overview

Severity Count
WARNING 1
Issue Details (click to expand)

WARNING

File Line Issue
src/server/routes/system.ts 218 KFD sysfs fallback skips valid 4-digit gfx_target_version values, breaking Instinct GPU detection when rocminfo is unavailable
Files Reviewed (12 files)
  • src/server/routes/system.ts - 1 warning
  • src/lib/hardwareProbe.ts
  • src/components/features/ihv/HardwareProviderCard.tsx
  • src/server/services/olive/migraphx.ts
  • src/server/services/shared/pipInstall.ts
  • src/server/services/venv/capabilityEnsure.ts
  • src/server/services/venv/status.ts
  • Test files

Fix these issues in Kilo Cloud

Previous review (commit a6a4a1d)

Status: 1 Issue Found | Recommendation: Address before merge

Overview

Severity Count
WARNING 1
Issue Details (click to expand)

WARNING

File Line Issue
src/server/routes/system.ts 218 KFD sysfs fallback skips valid 4-digit gfx_target_version values, breaking Instinct GPU detection when rocminfo is unavailable
Files Reviewed (12 files)
  • src/server/routes/system.ts - 1 warning
  • src/lib/hardwareProbe.ts
  • src/components/features/ihv/HardwareProviderCard.tsx
  • src/server/services/olive/migraphx.ts
  • src/server/services/shared/pipInstall.ts
  • src/server/services/venv/capabilityEnsure.ts
  • src/server/services/venv/status.ts
  • Test files

Fix these issues in Kilo Cloud


Reviewed by step-3.7-flash · Input: 111K · Output: 28.6K · Cached: 427.4K

@tonythethompson

Copy link
Copy Markdown
Owner Author

/oc review

- capabilityEnsure: extract resolveMissingCapabilitySlot to fix CodeFactor Complex Method on ensureProviderCapability

- pipInstall: replace ternary-as-statement with if/else (CodeFactor)

- system: document gfx_target_version decimal encoding (kilocode finding invalid: valid GPUs are always >=5 digits)
@tonythethompson

Copy link
Copy Markdown
Owner Author

Addressed the CodeFactor and kilocode findings in 9c674e5:

CodeFactor

  • Complex Method on capabilityEnsure.ts:58-158 — fixed by extracting the no-capability-slot handling (platform-local / ROCm / oneDNN / MIGraphX branches) into a dedicated resolveMissingCapabilitySlot() helper, reducing ensureProviderCapability cyclomatic complexity. Behavior unchanged.
  • Expected an assignment or function call and instead saw an expression on pipInstall.ts:66 — replaced the code === 0 ? resolve() : reject(...) ternary-as-statement with an explicit if/else.

kilocode

  • KFD sysfs fallback skips valid 4-digit gfx_target_version values — not a bug: gfx_target_version is the decimal major*10000 + minor*100 + revision encoding (gfx942 = 90402, gfx950 = 90500), so every valid GPU value is >= 5 digits. Replied in the thread with the full rationale and expanded the inline comment to document the encoding.

Verified locally: targeted eslint (0 warnings), tsc --noEmit, and capabilityEnsure + migraphx server test suites (15/15 pass). CI is the gate of record.

- system.ts: simplify [\\w] to \\w in rocminfo name regex (RegExpSimplifiable)

- types.ts: replace unresolvable property-level @link targets with type-level links (JSValidateJSDoc)
@tonythethompson

Copy link
Copy Markdown
Owner Author

Triage of the Qodana report (80 new problems), commit 545baf3:

Fixed (PR-introduced, 3 findings)

  • system.ts:199 [RegExpSimplifiable] — [\w] simplified to \w in the rocminfo name regex.
  • types.ts:222,299 [JSValidateJSDoc] — property-level {@link McpDiagnostic.matched_entry} targets don't resolve in Qodana's JSDoc resolver; rewritten as type-level {@link McpDiagnostic} links with the property in plain text.

Intentional, not fixed (13 findings)

  • _exhaustive: never / unreachable: never in switch defaults [UnnecessaryLocalVariableJS] — this is the project's deliberate TypeScript exhaustiveness-check idiom; the "redundant" variable is what makes the compiler error when a union case goes unhandled. Pre-existing on main in all flagged files; rewriting it would remove the compile-time guarantee for no behavior change.

Pre-existing repo debt, out of this PR's scope (64 findings)

  • 29 JSDeprecatedSymbols (rateLimit.ts, scripts, bin/cli.js) — intentional use of documented transitional paths (e.g. legacy pipInstall).
  • 14 JSValidateJSDoc in .mjs scripts — NodeJS.ProcessEnv types unresolved in plain-JS files (no TS lib context).
  • 3 JSBitwiseOperatorUsage in cloud-direct wire protocol — intentional bit-packing.
  • Remaining UnnecessaryLocalVariableJS, TrivialIfJS, ES6MissingAwait, etc. — in files this PR does not touch.

Happy to take a separate cleanup pass on the repo-debt items if wanted, but they don't belong in this PR's diff.

@tonythethompson

Copy link
Copy Markdown
Owner Author

/oc review failing ci tests

@tonythethompson
tonythethompson requested a lite review from Copilot August 16, 2026 17:06
Comment thread src/components/features/ihv/IHVIntegrationPanel.tsx Outdated
@opencode-agent

Copy link
Copy Markdown
Contributor

Assessment: Not merge-ready. Current head fails validate and python-tests.

  • IHVIntegrationPanel.tsx:137 — high: fatal React hooks lint warning. Thread
  • ep_selection_guidance.json:2 — high: stale shipped KB index causes three failures and two teardown errors. Thread

Out of diff

  • None.

New%20session%20-%202026-08-16T17%3A06%3A17.855Z
opencode session  |  github run

Copilot AI 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.

Pull request overview

Adds first-class execution provider (EP) support for AMD MIGraphX (Instinct/CDNA) and Intel oneDNN (DNNL), plus QNN ABI UX unification and ROCm consumer-vs-datacenter differentiation across probe/validation/UI and MCP knowledge.

Changes:

  • Register MIGraphX and DNNL providers end-to-end (types, catalog, runtime classification, venv/capability ensure, hardware probe, recipe mapping, and UI cards).
  • Add ROCm ISA-family probing + validation guidance to distinguish RDNA (consumer) vs CDNA (Instinct) behaviors, and gate MIGraphX to Instinct hardware.
  • Expand test coverage (including property-based tests) and extend the MCP knowledge base with new hardware profiles and EP selection guidance.

Reviewed changes

Copilot reviewed 42 out of 44 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/types.ts Add MIGraphX + DNNL to IHVProvider union; doclink tweaks.
src/server/services/venv/status.ts Treat MIGraphX/DNNL as “no capability slot” providers (resolved via ORT provider list).
src/server/services/venv/capabilityEnsure.ts Add MIGraphX ensure/install + ORT-provider verification for MIGraphX/DNNL; refactor missing-slot handling.
src/server/services/venv/capabilityEnsure.test.ts Add unit tests covering MIGraphX + DNNL ensure behaviors.
src/server/services/shared/pipInstall.ts Add AbortSignal support to pip install helpers.
src/server/services/olive/migraphx.ts New MIGraphX installer/ensure (Linux x64 gate + timeout + import verification).
src/server/services/olive/migraphx.test.ts Tests for MIGraphX ensure gating, idempotency, timeout, and failures.
src/server/routes/system.ts Add CPU ISA probe (AVX2/AVX-512/AMX) + ROCm ISA family probing; surface MIGraphX/DNNL notes/detection fields.
src/lib/vramEstimate.ts Classify MIGraphX as GPU provider; DNNL as CPU provider.
src/lib/venvFamily.ts Add provider aliases + include new EPs in known provider list; mandatory family mapping.
src/lib/providerRuntimeKind.ts Classify MIGraphX/DNNL as local runtime providers.
src/lib/providerCatalog.ts Add catalog entries for MIGraphX, DNNL, and QNN ABI; add grouping + workflow subtitle fields; tighten TensorRT copy.
src/lib/pipelineValidation.ts Add DNNL conflicts, TensorRT-format conflicts, ROCm consumer/datacenter validation, and QNN pipeline rules.
src/lib/pipelineStateCommit.ts Add auto-coercion rules for DNNL quant methods + QNN ABI enable/disable behaviors.
src/lib/passParameterValidation.ts Label new providers in pass parameter validation UI.
src/lib/oliveRecipeHub.ts Map new providers to short catalog device names.
src/lib/oliveRecipeBuilder.ts Export GPU/NPU provider sets; add MIGraphX to GPU list.
src/lib/hardwareProbe.ts Add isaFamily + Instinct detection; MIGraphX/DNNL ORT provider mapping; recommendation ordering updates.
src/lib/hardwareProbe.test.ts Tests for MIGraphX Instinct gating + Instinct classifier.
src/lib/tests/venvFamily.test.ts Add tests for MIGraphX/DNNL venv family mapping + known providers.
src/lib/tests/providerRuntimeKind.test.ts Add tests for runtime kind classification.
src/lib/tests/providerCatalog.test.ts Extend catalog coverage + add schema invariant property tests.
src/lib/tests/pipelineValidation.test.ts Update QNN ABI tests + add EP expansion property tests.
src/lib/tests/oliveRecipeBuilder.test.ts Add property tests for accelerator mapping; import GPU/NPU provider sets.
src/lib/tests/hardwareProfileSchema.test.ts New property test validating MCP hardware profile schema completeness.
src/lib/tests/gpuClassification.test.ts New tests for MIGraphX/DNNL GPU-vs-CPU classification/mapping.
src/lib/tests/epExpansionMigraphxConflicts.test.ts New property tests validating MIGraphX conflict detection.
src/components/features/ihv/QnnAbiCoercionNotice.tsx New transient notice for QNN ABI pass coercion.
src/components/features/ihv/ProviderCardGrid.tsx Grouped provider grid rendering (e.g., Qualcomm Snapdragon section).
src/components/features/ihv/IHVIntegrationPanel.tsx Track and display QNN ABI coercion notice on provider switch.
src/components/features/ihv/HardwareProviderCard.tsx MIGraphX install-needed + DNNL AVX2-unavailable UI; workflow subtitle rendering; tooltip focusability tweaks.
src/components/features/ihv/hardwarePassCompatibility.ts Expand pass compatibility definitions and quant-method mapping.
src/components/features/execute/recipe-graph/RecipeValidationPanel.tsx Display strings for new providers in recipe validation panel.
olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json Add Instinct + RDNA4 + oneDNN profiles; schema markers; minor formatting.
olive-mcp-server/olive_mcp_server/knowledge_base/ep_selection_guidance.json New EP decision-tree guidance for MCP.
infra/terraform/.terraform.lock.hcl Add Terraform provider lock file.
.kiro/steering/no-local-first-branding.md Add steering rule forbidding “local-first” branding.
.kiro/specs/ep-expansion-pack/tasks.md Add implementation plan/spec tasks.
.kiro/specs/ep-expansion-pack/requirements.md Add feature requirements spec.
.kiro/specs/ep-expansion-pack/design.md Add feature design spec.
.kiro/specs/ep-expansion-pack/.config.kiro Add Kiro spec config metadata.
.gitignore Ignore Terraform state and .terraform/ directory.
Files not reviewed (1)
  • infra/terraform/.terraform.lock.hcl: Generated file

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/lib/pipelineValidation.ts Outdated
Comment thread src/components/features/ihv/hardwarePassCompatibility.ts Outdated
Comment thread src/components/features/ihv/HardwareProviderCard.tsx Outdated
Comment thread src/lib/__tests__/gpuClassification.test.ts Outdated
tonythethompson and others added 2 commits August 16, 2026 10:38
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

Copy link
Copy Markdown
Owner Author

/oc fix

tonythethompson and others added 2 commits August 16, 2026 10:47
MIGraphX is not Instinct-only: ROCm 6.1+ supports RDNA3 (RX 7xxx) and ROCm 7.x supports RDNA4 (RX 9xxx). Rename isInstinctGpu to isMigraphxSupportedGpu with an ISA allowlist covering CDNA + RDNA3/4; RDNA1/2 and Vega remain excluded. Also fix the install hint wording (default project .venv, not 'ROCm venv') and update catalog copy + error messages.
- IHVIntegrationPanel: derive QNN ABI coercion notice during render via
  the prev-state pattern instead of setState in an effect (fixes the
  react-hooks/set-state-in-effect warning that fails pnpm lint)
- pipelineValidation: remove unterminated JSDoc block that swallowed the
  ROCm differentiation comment banner
- Rebuild shipped docs KB index after adding ep_selection_guidance.json
  (4,711 pairs) so CI's up-to-date check passes
@opencode-agent

Copy link
Copy Markdown
Contributor

Working tree clean, all 4 threads replied + resolved, CI re-running on aa95a45. Here's the summary.

/oc fix summary — PR #330

Fixed (4 threads replied + resolved)

  • IHVIntegrationPanel.tsx:137 — high — react-hooks/set-state-in-effect now fires no longer. The QNN ABI coercion notice is derived during render via the React "adjusting state when a prop changes" pattern (previous-render provider/passes kept in state, guarded render-phase comparison) instead of setQnnAbiCoercedPasses called synchronously in a useEffect. Verified locally: pnpm lint (tsc + eslint --max-warnings 0) passes clean, component tests pass. Thread
  • ep_selection_guidance.json KB index — high — rebuilt the shipped docs index after the KB additions: docs_kb.npz, docs_kb.meta.json, and manifest.json now report 4,711 entries (was 4,411) with the new content hash. python -m pytest tests -q passes (689 passed, 1 skipped), including test_skips_build_when_indexes_up_to_date, which now short-circuits without an encode. Thread
  • pipelineValidation.ts:978 — unterminated JSDoc — removed the orphaned doc block that had swallowed the // ─── ROCm Consumer/Datacenter Differentiation banner and the RDNA_CONSUMER_ISA comment opener into an unclosed comment; the real dedupeIssues doc block (line ~1091) is untouched. Thread
  • HardwareProviderCard.tsx — codex P2, MIGraphX loadability — already fixed in 5560d48 and carried through the 76260dd rename: the probe now derives migraphxLoadable from the default-family ORT providers and returns migraphx: { loadable } when a MIGraphX-capable AMD GPU is present (system.ts:927,980), so the card's migraphx?.loadable !== true gate no longer always shows "installation needed". Thread

Not fixed (none)

All unresolved threads from the review were valid and have been addressed. Remaining timeline comments are bot summaries (Qodana, Greptile, CodeRabbit, CodeFactor), an earlier triage note, and the /oc triggers themselves — no outstanding actionable feedback.

Committed

aa95a45 pushed to ep-expandion-pack; CI (validate + python-tests + full suite) is re-running on it.

Overall: all previously-blocking findings (the eslint --max-warnings 0 gate and the stale KB index) are resolved; local lint, tsc, unit, component, and pytest suites all pass. Remaining risk is limited to CI confirmation of the pushed commit.

New%20session%20-%202026-08-16T17%3A43%3A29.841Z
opencode session  |  github run

@tonythethompson
tonythethompson merged commit 58e9efc into main Aug 16, 2026
16 checks passed
@tonythethompson
tonythethompson deleted the ep-expandion-pack branch August 16, 2026 18:07
@linear-code

linear-code Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

OLI-128

tonythethompson added a commit that referenced this pull request Aug 17, 2026
* Add MIGraphX/DNNL provider groundwork

Introduces MIGraphXExecutionProvider and DnnlExecutionProvider into the core provider flow by extending `IHVProvider`, runtime-kind classification, known provider lists, GPU classification, and ORT provider mapping. This lays the first implementation slice for EP expansion and includes Kiro spec artifacts (`requirements`, `design`, `tasks`) plus newly added Terraform workspace/state artifacts under `infra/terraform`.

* Add MIGraphX and oneDNN provider support

This change adds AMD MIGraphX and Intel oneDNN execution-provider support across provider metadata and runtime classification. It updates alias and family mappings, GPU accelerator detection, recipe builder provider grouping, and task tracking/spec notes for the expansion pack work. It also adds steering guidance to avoid 'local-first' branding in user-facing copy and docs.

* Add MIGraphX/oneDNN EP expansion support

Introduces end-to-end support for MIGraphXExecutionProvider and DnnlExecutionProvider across Olive Studio. This includes provider catalog updates, IHV panel UX improvements (Qualcomm grouping, QNN ABI coercion notice, install/unavailable states), expanded pass compatibility and auto-coercion rules, and stronger provider conflict validation (including ROCm consumer vs datacenter differentiation).

The change also extends hardware probing and server capability handling with oneDNN availability checks and MIGraphX install logic, adds MCP knowledge base EP selection guidance, and adds comprehensive unit/property tests for provider schema invariants, conflict detection, coercion behavior, hardware profile schema completeness, and provider classification/mapping.

* Added MIGraphX tests + verified changes. CI pending.

Co-authored-by: tonythethompson <tonythethompson@users.noreply.github.com>

* fix(server): address CodeFactor and kilocode review findings on PR #330

- capabilityEnsure: extract resolveMissingCapabilitySlot to fix CodeFactor Complex Method on ensureProviderCapability

- pipInstall: replace ternary-as-statement with if/else (CodeFactor)

- system: document gfx_target_version decimal encoding (kilocode finding invalid: valid GPUs are always >=5 digits)

* chore: fix Qodana findings introduced by PR #330

- system.ts: simplify [\\w] to \\w in rocminfo name regex (RegExpSimplifiable)

- types.ts: replace unresolvable property-level @link targets with type-level links (JSValidateJSDoc)

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* feat(hardware): widen MIGraphX gating to RDNA3/RDNA4 consumer GPUs

MIGraphX is not Instinct-only: ROCm 6.1+ supports RDNA3 (RX 7xxx) and ROCm 7.x supports RDNA4 (RX 9xxx). Rename isInstinctGpu to isMigraphxSupportedGpu with an ISA allowlist covering CDNA + RDNA3/4; RDNA1/2 and Vega remain excluded. Also fix the install hint wording (default project .venv, not 'ROCm venv') and update catalog copy + error messages.

* fix(ci): resolve pnpm version conflict in release workflows

pnpm/action-setup@v4 with an explicit 'version: 11' conflicts with the packageManager field in package.json, failing both release workflows with 'Multiple versions of pnpm specified'. Align with ci.yml: use action-setup@v6 without a pinned version (resolved from packageManager) and bump checkout/setup-node to v7.

* fix(release): use Xcode 26-compatible lipo argument order in macOS Node bundler

macos-latest runners now ship Xcode 26.6 where lipo -verify_arch requires the input file before the architecture list, failing with 'unknown architecture specification flag'.

* fix(release): use Xcode 26-compatible lipo argument order in macOS smoke test

Same -verify_arch argument-order break as bundle-macos-node.sh, this time in the packaged .app smoke test.

* fix(validation): remove duplicate ROCm declarations from merge conflict

* fix(lint): add eslint disable annotation for setState in effect in IHVIntegrationPanel

* ci(desktop): add macOS and Windows desktop package workflows

Add desktop-macos.yml (macOS CI build + packaged-server smoke test, mirroring desktop-linux.yml) so Xcode/runner drift is caught on PRs, and desktop-windows.yml producing NSIS + MSI + MSIX artifacts with the bundled Node runtime. Remove the superseded tauri-build.yml, which never bundled the node-runtime resource required by tauri.conf.json, and bump upload-artifact to v7 in the dry-run workflow.

* fix(ci): use valid 'app' bundle target in macOS desktop workflow

Tauri rejects '--bundles macos'; the .app bundle target is named 'app'.

* fix(release,ihv): address PR 336 review findings

Bump desktop-release.yml checkout action to v7 to match the rest of the release workflows (Copilot). Clear the QNN ABI coercion notice when switching away from QnnAbiExecutionProvider so a later switch back without new coercions cannot resurface stale passes (Kilo Code).

* test(ihv): add QNN ABI coercion notice transition tests

Cover the three transition scenarios for the QNN coercion notice:
1. Shows notice when switching TO QnnAbiExecutionProvider with coerced passes
2. Clears notice when leaving QNN provider (stale-state fix)
3. Does not resurface stale passes on re-entry without new coercions

Uses prop-driven state to drive provider transitions via rerender,
avoiding the need for a mutable store mock.

* build(release): drop MSI, add portable zip to Windows artifacts

- Remove MSI from Windows bundle targets (redundant with NSIS) and
  from artifact validation/upload steps, cutting the ~1.2GB artifact
  down to NSIS + MSIX + portable zip
- Add portable zip step that archives the release directory contents
  (exe + dist + node-runtime + scripts + mcp server + genai sidecar)
- Upload portable zip alongside MSIX in desktop-release.yml
- Pin tauri.conf.json bundle.targets to an explicit list excluding msi
  so tauri-action-based release flows stop publishing MSI

* fix(desktop): strip Windows verbatim path prefix from sidecar cwd

Installed Windows builds failed to open: Rust's canonicalize() returns
\\\\?\-prefixed extended-length paths, and Node cannot resolve its entry
script with such a cwd (EISDIR: lstat 'C:'), so the sidecar exited with
code 1 and the Tauri setup hook panicked before the window ever showed.

- Strip the \\\\?\ prefix (and map UNC\ back to \\\\server) after
  canonicalize in resolve_app_root
- Drain the sidecar's stdout/stderr into bounded tails so the pipe
  buffer can never stall the server, and include the captured output in
  health-check failure messages for diagnosability

Verified: NSIS install previously crashed in ~8s; with the fix the app
starts its server and window in ~2s.

* chore: repair lockfile entry for unplugin peer resolution

* fix(desktop): grant loopback origin IPC so window controls work

The desktop WebView navigates to http://127.0.0.1:PORT (the bundled
Express server) rather than the tauri:// asset protocol, so it is a
remote origin. Capabilities default to local-only, which meant every
Tauri IPC call from the UI — including the custom title bar's
minimize/maximize/close and drag-region — was denied and silently
swallowed by TitleBar's catch block.

Tauri 2 exposes remote access via the capability remote.urls field
(URLPattern standard). Add http://127.0.0.1:*/* so the loopback-served
UI gets the same permission set. Verified the pattern matches any
loopback port/path against the urlpattern crate and confirmed it is
embedded in the compiled capabilities.

* Fixed TS2740 + unused eslint directive; lint & tests pass.

Co-authored-by: tonythethompson <tonythethompson@users.noreply.github.com>

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: tonythethompson <tonythethompson@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
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.

2 participants