Skip to content

feat: v0.3.0 — MCP engine parity + comprehensive perfSummary report#24

Merged
hoainho merged 3 commits into
mainfrom
feat/mcp-v0.3.0-parity
Jun 25, 2026
Merged

feat: v0.3.0 — MCP engine parity + comprehensive perfSummary report#24
hoainho merged 3 commits into
mainfrom
feat/mcp-v0.3.0-parity

Conversation

@hoainho

@hoainho hoainho commented Jun 23, 2026

Copy link
Copy Markdown
Owner

ohmyperf MCP server v0.3.0 — engine parity + hardening

Surfaces the v0.2.0 engine diagnostic signals (Full-Load Time, component hotspots, prescriptive remediations) through the MCP server, and fixes two confirmed bugs. Fully additiveschemaVersion stays 1.0.0, the 17 tools keep their names/shapes, default measure/analyze_report outputs unchanged. Consensus-planned (Planner→Architect→Critic) and implemented via Ralph.

Bug fixes

  • third-parties insight always returned null — read the never-populated pluginData["thirdParties"]; now reads the third-parties audit (the same source the engine uses). Also unblocks the audit_third_parties prompt.
  • enforce_budget scored bot-challenge / error pages — now trust/servability-gated: exitCode widened 0|12|13 (13 = gated/unmeasurable) with gated/gateReason + a force override.

New (parity)

  • analyze_report gains 3 insights (8 → 11): full-load-breakdown, hotspots, remediation — all degrade gracefully on reports lacking the data.
  • measure forwards diagnose / rx / fullLoad to the engine (default measure unchanged).
  • measure / generate_markdown_summary summary surfaces Full-Load Time, gating phase, top hotspots/recs (presence-guarded).
  • New measure_and_diagnose prompt (7 → 8). No new tool (count stays 17).

Hardening

  • propose_patch warns when trust=unreliable; verify_fix returns inconclusive instead of pass/fail on an unreliable candidate.

Release

  • Version bump 0.2.0 → 0.3.0 across the published package set; MCP server advertises 0.3.0 (was 0.0.0-pre).

Verification

  • turbo run build typecheck test lint110/110 tasks green (whole monorepo).
  • MCP suite → 36 tests (23 new, incl. a byte-stable golden test for the measure summary).
  • Live e2e vs https://moodtrip.hoainho.info (real --rx report): FLT=1732ms (gating=paint), 2 hotspots, 2 remediations all surfaced through the built MCP layer.
  • MCP-client stdio smoke test: server advertises 0.3.0, 17 tools, 8 prompts, all new insights/flags present.
  • Architect review: APPROVED.

See docs/MCP_V0.3.0_PLAN.md (scope/design/ADR) and docs/MCP_V0.3.0_PROGRESS.md (per-story notes).

🤖 Generated with Claude Code

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request upgrades the MCP server to version 0.3.0, bringing parity with the v0.2.0 engine signals by surfacing Full-Load Time, component hotspots, and prescriptive remediations. It also hardens trust-gating across tools like enforce_budget (introducing exit code 13 for gated/unmeasurable results), propose_patch, and verify_fix, and fixes a bug in the third-parties insight retrieval. The review feedback identifies an improvement opportunity in parseFullLoadConfig to explicitly check and exclude arrays using Array.isArray(raw) since typeof [] evaluates to "object" in JavaScript/TypeScript.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.


/** Pick only known FullLoadConfig keys from a client-supplied object. Returns undefined when empty. */
function parseFullLoadConfig(raw: unknown): Partial<FullLoadConfig> | undefined {
if (!raw || typeof raw !== "object") return undefined;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

In JavaScript/TypeScript, typeof [] evaluates to "object". To prevent arrays from being processed as plain objects, add an explicit Array.isArray(raw) check.

Suggested change
if (!raw || typeof raw !== "object") return undefined;
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return undefined;

…/JS/main-thread/errors+console); surface in CLI/MCP/markdown
@hoainho hoainho changed the title feat(mcp): v0.3.0 — Full-Load/hotspots/remediation insights + trust-gated budget; bump 0.2.0→0.3.0 feat: v0.3.0 — MCP engine parity + comprehensive perfSummary report Jun 24, 2026
Repository owner deleted a comment from nhonhgeargame Jun 24, 2026
@hoainho
hoainho merged commit 1a6bc90 into main Jun 25, 2026
4 of 15 checks passed
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.

1 participant