Skip to content

feat(m4): tiered tool registry - default flips to core (20 mounted, 36 legacy behind UE_MCP_PROFILE=full) - #16

Merged
JosephOIbrahim merged 1 commit into
masterfrom
m4-registry-flip
Jul 2, 2026
Merged

feat(m4): tiered tool registry - default flips to core (20 mounted, 36 legacy behind UE_MCP_PROFILE=full)#16
JosephOIbrahim merged 1 commit into
masterfrom
m4-registry-flip

Conversation

@JosephOIbrahim

Copy link
Copy Markdown
Owner

What

The M4 milestone — the retirement flip specified by EPIC_MCP_MATRIX.md:

  • Tiered registry at the register_all_tools() seam (zero tool-module changes): every one of the 56 tools classified CORE / LEGACY_COMMODITY / EXPERIMENTAL, each legacy verdict citing its matrix row.
  • Default profile is now core: 20 tools mounted (18 differentiated + ue_status/ue_health_check). UE_MCP_PROFILE=full remounts the 36 Epic-covered commodity tools; all adds the two honest not-implemented undo/redo slots. Rollback is one env var.
  • Health check now reports the active profile, mount counts, and Epic MCP (:8000) reachability.
  • Drift gates in both directions: a tool without a tier and a tier without a tool both fail CI.

Verification

  • Adversarial review parsed all 58 matrix rows programmatically against TIERS: zero mismatches; seam confirmed undodgeable (no module touches any server API but the decorator).
  • It also caught a ship-blocker pre-merge: smoke_live.py exercises legacy tools by design and would have crashed under the flipped default — now registers with profile="all".
  • 574 tests green (11 new tier tests), ruff clean.

🤖 Generated with Claude Code

The retirement flip specified by docs/EPIC_MCP_MATRIX.md, executed:

- ue_mcp/tools/__init__.py: Tier (CORE / LEGACY_COMMODITY / EXPERIMENTAL),
  a TIERS entry for all 56 tools (each LEGACY verdict cites its matrix
  row), profiles core/full/all, and a ToolRegistry wrapper at the single
  register_all_tools seam — zero changes to tool modules. Default profile
  is now "core" (18 registry tools + ue_status/ue_health_check = 20
  mounted); UE_MCP_PROFILE=full remounts the 36 Epic-covered tools;
  "all" adds the honest not-implemented undo/redo slots. Unknown tools
  fail open at runtime and fail loud in CI; unknown profiles fall back
  to core with a recorded warning.
- ue_mcp/mcp_server.py: health check reports profile, mount counts, and
  Epic MCP (:8000) reachability; startup logs the mount summary.
- tests/test_registry_tiers.py: pins the matrix arithmetic (36/18/2 of
  56), profile semantics, env resolution, annotation passthrough, and
  bidirectional drift (tool without tier / tier without tool both fail).
- exec-sim harness + smoke_live.py register with profile="all" — they
  gate the full surface regardless of what the default mounts (the
  smoke fix was a ship-blocker caught by adversarial verification).
- .mcp.json drops the transitional full override; README states the
  new default and points at the matrix.

Adversarial verification: TIERS parsed row-by-row against the merged
matrix — zero mismatches; seam confirmed undodgeable for production
code. 574 tests green; ruff clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@JosephOIbrahim, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 57 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 26e3397b-30d8-43d6-ba0b-2c39a54b47d7

📥 Commits

Reviewing files that changed from the base of the PR and between bd91238 and c193e85.

📒 Files selected for processing (7)
  • .mcp.json
  • README.md
  • smoke_live.py
  • tests/exec_sim/conftest.py
  • tests/test_registry_tiers.py
  • ue_mcp/mcp_server.py
  • ue_mcp/tools/__init__.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch m4-registry-flip

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.

@JosephOIbrahim
JosephOIbrahim merged commit 2129c08 into master Jul 2, 2026
3 checks passed
@JosephOIbrahim
JosephOIbrahim deleted the m4-registry-flip branch July 2, 2026 17:28
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