Skip to content

phase4-D: onboard tool:m-dev-tools-mcp + first GitHub Release wheel#27

Merged
rafael5 merged 1 commit into
mainfrom
phase4-D
May 11, 2026
Merged

phase4-D: onboard tool:m-dev-tools-mcp + first GitHub Release wheel#27
rafael5 merged 1 commit into
mainfrom
phase4-D

Conversation

@rafael5
Copy link
Copy Markdown
Contributor

@rafael5 rafael5 commented May 11, 2026

Summary

Track D §5 D3 + D4. Onboards the new tier-3 repo m-dev-tools-mcp into the org catalog and adds an agent_integration intent so "point my MCP-capable agent at the m-dev-tools catalog" routes to tool:m-dev-tools-mcp.

Architecture: facts in repos, routing in meta-repo

Source-of-truth lives in m-dev-tools-mcp/dist/repo.meta.json. Its phase4-D PR #5 renamed exposes.toolsexposes.mcp_tools and added exposes.release_wheel pointing at the v0.1.0 release asset. The new TIER_3 entry here is the org-side pickup: build-catalog.py fetches that repo.meta.json and translates each exposes.<kind> into a <kind>_url, so the generated tools.m-dev-tools-mcp entry naturally carries:

Field Source
repo_meta_url the TIER_3 URL itself
mcp_tools_url exposes.mcp_toolshttps://raw.githubusercontent.com/m-dev-tools/m-dev-tools-mcp/main/dist/mcp-tools.json
release_wheel_url exposes.release_wheelhttps://github.com/m-dev-tools/m-dev-tools-mcp/releases/download/v0.1.0/m_dev_tools_mcp-0.1.0-py3-none-any.whl
consumes / consumed_by m-dev-tools-mcp consumes m-cli + m-stdlib + m-standard; inverse edges land on those entries

No hand-edits to tools.jsonmake catalog is byte-idempotent (regen-twice diff is empty). Preserves the "facts in repos, routing in meta-repo" architectural inversion.

Changes

  • profile/build/build-catalog.py — TIER_3 gains the m-dev-tools-mcp URL; the inline comment bumps "nine onboarded repos" → "ten".
  • profile/task_index.json — new infra.agent_integration intent (primary: tool:m-dev-tools-mcp, doc points at the MCP server's examples/claude-code/README.md). Additive change; no schema bump needed per schema-changelog discipline.
  • profile/llms.txt — new "Agent integration" section linking the m-dev-tools-mcp AGENTS.md. 26 → 30 lines (under the 40-line cap per parent plan §4.6).
  • profile/tools.json — regenerated. New tools.m-dev-tools-mcp entry with the URL-pointer fields; consumed_by inverse edges added to m-cli / m-stdlib / m-standard.

Verified locally

  • make catalog — byte-identical on regen
  • make validate-catalog — OK
  • make phase0-smoke — PASS (no new tier-1 entries; the tier-3 m-dev-tools-mcp isn't iterated here)
  • make recipes-check — 4/4 clean
  • make handshake — 8/8 steps green

Release reference

The v0.1.0 GitHub Release (https://github.com/m-dev-tools/m-dev-tools-mcp/releases/tag/v0.1.0) was cut from m-dev-tools-mcp main at 1ae96c4 before this PR; the wheel asset is the one release_wheel_url points at.

Test plan

  • All four meta-repo gates green locally (catalog / validate-catalog / phase0-smoke / recipes-check / handshake)
  • tools.m-dev-tools-mcp entry materialized with repo_meta_url + mcp_tools_url + release_wheel_url
  • consumed_by inverse edges show up on m-cli / m-stdlib / m-standard
  • CI green

Out-of-scope follow-up

  • validate-repo-meta.py chokes on exposes.* URLs pointing at binary release assets (UTF-8 decode on the wheel bytes). Worth a small follow-up PR here to skip decoding for non-text extensions. build-catalog.py correctly passes the URL through, so this PR isn't blocked by it.

Track D §5 D3 + D4. Onboards the new tier-3 repo m-dev-tools-mcp
into the org catalog and adds an agent_integration intent so
"point my MCP-capable agent at the m-dev-tools catalog" routes to
tool:m-dev-tools-mcp.

Source-of-truth lives in m-dev-tools-mcp's dist/repo.meta.json (its
phase4-D PR #5 renamed exposes.tools → exposes.mcp_tools and added
exposes.release_wheel pointing at the v0.1.0 release asset). The
new TIER_3 entry here is the org-side pickup: build-catalog.py
fetches that repo.meta.json and translates each exposes.<kind>
into <kind>_url, so the generated entry naturally carries:

* repo_meta_url       — the TIER_3 URL itself
* mcp_tools_url       — points at dist/mcp-tools.json (the 3-tool manifest)
* release_wheel_url   — absolute URL of v0.1.0 wheel asset
* consumes / consumed_by — m-dev-tools-mcp consumes m-cli + m-stdlib +
                            m-standard; inverse edges land on those entries

No hand-edits to tools.json — `make catalog` byte-idempotent
(regen-twice diff is empty). Preserves the "facts in repos,
routing in meta-repo" architectural inversion.

* profile/build/build-catalog.py: TIER_3 gains the m-dev-tools-mcp
  URL; comment bumped "nine onboarded repos" → "ten".
* profile/task_index.json: new infra.agent_integration intent with
  doc URL pointing at the MCP server's examples/claude-code/README.md.
  Schema accepts the addition without bump (additive change, per
  schema-changelog discipline).
* profile/llms.txt: new "Agent integration" section pointing at the
  m-dev-tools-mcp AGENTS.md. 26 → 30 lines (under the 40-line cap
  per parent plan §4.6).
* profile/tools.json: regenerated. New tools.m-dev-tools-mcp entry
  with the URL-pointer fields; consumed_by inverse edges added to
  tools.m-cli / tools.m-stdlib / tools.m-standard.

Verified locally:

* make catalog → byte-identical on regen
* make validate-catalog → OK
* make phase0-smoke → PASS (no new tier-1 entries)
* make recipes-check → 4/4 clean
* make handshake → 8/8 steps green

The v0.1.0 GitHub Release (https://github.com/m-dev-tools/m-dev-tools-mcp/releases/tag/v0.1.0)
was cut from m-dev-tools-mcp main at 1ae96c4 before this PR; the
wheel asset is the one release_wheel_url points at.
@rafael5 rafael5 merged commit 1a4b15a into main May 11, 2026
2 checks passed
@rafael5 rafael5 deleted the phase4-D branch May 11, 2026 12:12
rafael5 added a commit that referenced this pull request May 11, 2026
Captures Phase 4 exit per phase4-plan.md §6 + §11. Mirrors
phase3-evidence.md shape: one section per gate, "What this proves"
roll-up, then each §11 done-criterion cited green.

Verified locally (gate outputs in the evidence doc):

* pytest profile/build/ — 51/51 green
* make catalog — byte-idempotent regen
* make validate-catalog — schema-strict OK
* make handshake — 8/8 steps
* make recipes-check — 4/4 clean
* uvx --from git+...@v0.1.0 m-dev-tools-mcp --tool route_intent
  --query "parse JSON in M" → ["module:m-stdlib#STDJSON"]
  (the parent-plan exit criterion, end-to-end from a fresh clone)

All nine §11 done-criteria cited green:

1. m-dev-tools-mcp repo public AGPL-3.0 + full Phase-0 contract (PR
   #1)
2. server.py exposes 3 TDD-covered tools (PR #2 — 30 dedicated
   cases)
3. v0.1.0 GitHub Release with 23-KB pure-Python wheel attached
   (Track D2)
4. tools.json carries the entry with repo_meta_url + mcp_tools_url +
   release_wheel_url (.github PR #27)
5. task_index.json has infra.agent_integration → tool:m-dev-tools-mcp
   (.github PR #27)
6. examples/claude-code/ has .mcp.json + README + smoke.sh +
   session.md template (PR #3)
7. This evidence file (PR — current)
8. uvx canonical round-trip green (run captured above)
9. CI green on every Phase 4 PR

Phase 5 (continuous enforcement) unblocked. PyPI publishing remains
deliberately deferred.

Two out-of-scope follow-ups noted in the evidence doc:

* validate-repo-meta.py UTF-8-decode bug on binary release-wheel
  exposes URLs (use --no-resolve until fixed)
* 3 Phase-3-era orphan schema fixtures gitignored but still on
  disk; auto-classifier blocks rm
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