chore: remove Python rune-mcp tree (v0.3 implementation) - #129
Merged
couragehong merged 1 commit intoMay 8, 2026
Conversation
This was referenced May 8, 2026
The Go rune-mcp at internal/* + cmd/rune-mcp/ has reached parity (PR #102 + #110 + #117) and end-to-end verification (#118, #122, #124), which means the Python tree is now dead weight. Carrying both implementations is actively misleading: a fresh contributor following the in-repo install instructions would still land in mcp/ + agents/ and try to set up a venv that no longer ships, and parity audits keep re-discovering the Python source instead of treating the Go side as the source of truth. Removed ------- agents/common/ 12 files (config, embedding, llm, schemas) agents/retriever/ 4 files (query_processor, searcher, synthesizer) agents/scribe/ 12 files (detector, llm_extractor, handlers, server) agents/tests/ 16 files (pytest suite) agents/__init__.py agents/README.md (Python agents intro — gone with the impl) agents/SLACK_SETUP.md (Slack notifier setup for Python scribe) mcp/ 18 files (Python adapter + server + tests) requirements.txt (root Python dependency list) scripts/migrate_embeddings.py (one-off Python migration helper) Total: 67 files, 17,815 lines. Kept (intentional) ------------------ agents/claude/{scribe,retriever}.md referenced by .claude-plugin/ plugin.json — agent prompts that the runtime loads agents/codex/scribe.md Codex-side agent prompt agents/gemini/{scribe,retriever}.md Gemini-side agent prompts benchmark/ deferred (separate decision — rewrite in Go vs delete entirely) docs/v04/spec/python-mapping.md parity blueprint that maps Python source to Go destinations; useful as a historical record post-deletion docs/migration/*.md migration plan + audit trail — intentional history scripts/bootstrap-mcp.sh and other referenced by gemini-extension.json; Python-era shell scripts removal blocked on Gemini support decision (separate PR) Not in scope ------------ .github/workflows/pr-tests.yml + pr-comment.yml — Python pytest CI; handled by PR #125 (ci-drop-python). README.md, CLAUDE.md, SKILL.md, AGENT_INTEGRATION.md, GEMINI.md, CONTRIBUTING.md — top-level docs still describe the v0.3 install flow; rewrite scheduled separately so this commit stays focused on code deletion. Verification ------------ go build ./... passes go vet ./... passes go test ./... full suite passes (no test referenced deleted paths) grep across remaining .{go,md,json,sh,toml,yml,yaml} for the deleted paths returned zero hits — no dangling references. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
couragehong
force-pushed
the
couragehong/chore/remove-python-tree
branch
from
May 8, 2026 08:50
5f0bdd6 to
67a0273
Compare
heeyeon01
pushed a commit
to heeyeon01/rune
that referenced
this pull request
Jul 7, 2026
The six top-level docs still described the v0.3 install flow — a Python
venv prepared by scripts/bootstrap-mcp.sh, mcp/server/server.py spawned
under .venv/bin/python3, agents/{common,scribe,retriever}/ as the
business-logic packages, etc. After PR CryptoLabInc#129 (remove-python-tree) all of
that is gone, but a contributor following these docs would still try to
set it up and land in a dead end.
This rewrite anchors every doc on the v0.4 truth: a single Go binary
(cmd/rune-mcp) that the host CLI auto-spawns over stdio, runtime
preparation done at install time, runtime health visible through the
diagnostics + vault_status MCP tools.
Per file
--------
README.md (small)
- drop the dead `scripts/check-infrastructure.sh` reference
- point Related Projects at envector-go-sdk (the Go FHE SDK we
actually depend on now) instead of pyenvector
CLAUDE.md (one-line)
- "Writing Python scripts to /tmp" → "Writing scripts to /tmp" in the
routing table NOT-do column (the rule still holds; the Python
qualifier was v0.3-specific)
GEMINI.md (medium)
- replace the Plugin Root Detection / Runtime Preparation block,
which mandated SETUP_ONLY=1 scripts/bootstrap-mcp.sh and
.venv/bin/python3 sanitization, with v0.4 guidance: the binary is
auto-spawned, health is observable via diagnostics, no venv exists
SKILL.md (medium-large)
- Execution Model: drop scripts/bootstrap-mcp.sh as the
"single source of truth" — the binary itself is now the runtime
- Activation Check: drop the Local Runtime Check (step 0) that
required the bootstrap script; drop the envector.endpoint /
envector.api_key field requirement (those come via Vault bundle now)
- /rune:configure: drop scripts/check-infrastructure.sh validation
step; replace with reload_pipelines + diagnostics rendering
- /rune:status: drop "Python venv" / "MCP servers running" rows;
render diagnostics' per-subsystem snapshot instead
- /rune:activate: drop the "check Python environment" step
- /rune:reset: drop "stop MCP servers" — the host CLI manages process
lifecycle, the user does not
AGENT_INTEGRATION.md (full rewrite, 278 lines → equivalent shape)
- drop all .venv/bin/python3 + mcp/server/server.py invocations
across Claude / Codex / Gemini / OpenAI sections
- replace install.sh / install-codex.sh / ensure-codex-ready.sh
references with plugin/skill/extension install commands
- rewrite the OpenAI integration around stdio against the Go binary
(the agents-sdk + Responses API patterns just point command= at
bin/rune-mcp)
- acknowledge that gemini-extension.json still calls bootstrap-mcp.sh
as a known follow-up under the Gemini track (not in this PR's
scope to resolve)
CONTRIBUTING.md (medium)
- Prerequisites: Python 3.12 → Go 1.26.2+ (toolchain pinned in go.mod)
- test instructions: pytest agents/tests/ → go test -race ./...
- Cross-Agent Invariant Checklist: replace bootstrap-mcp.sh items
with "Go binary is single MCP entry point" / manifest consistency
- Project Structure: redraw the tree against current layout
(cmd/rune-mcp, internal/{mcp,service,lifecycle,adapters,domain,
policy,obs}, agents/{claude,codex,gemini}/*.md only, scripts/dev/
v04/, etc.) — the old tree showed mcp/server/server.py and
agents/common/ that no longer exist
- Release Process: bump example version 0.2.0 → 0.4.0; tests command
updated; reference Task CryptoLabInc#30 for the binary distribution pipeline
Out of scope
------------
- gemini-extension.json bootstrap-mcp.sh path (Gemini track)
- scripts/ Python-era shell scripts cleanup (Gemini track)
- examples/ patterns/ setup/ config/ docs (separate A4 pass)
- package.json + .claude-plugin/plugin.json version bump (separate A5)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
heeyeon01
pushed a commit
to heeyeon01/rune
that referenced
this pull request
Jul 7, 2026
The Python pytest pipeline at .github/workflows/pr-tests.yml currently fires on every PR open / synchronize / reopen, regardless of base branch. Across the v0.4 Go migration line that's pure noise: every PR into feat/go-migration runs the v0.3 pytest suite against a working tree where the Python source is being deleted out from under it (Python tree removal already landed via PR CryptoLabInc#129). The runs all fail or no-op, which trains contributors to ignore CI status — the worst possible state to be in when CI matters again at main-merge time. Narrow the trigger so the workflow only fires when the PR's base branch is `main`. That preserves the workflow scaffolding for the final feat/go-migration → main integration moment, when CI itself will be rewritten as Go (build / vet / fmt / test -race) so it actually exercises the v0.4 code at the boundary. Effect on PR streams -------------------- PR base = feat/go-migration → no CI run (silent) PR base = main → CI runs (existing pytest pipeline, to be rewritten at main-merge) pr-comment.yml is unchanged — it chains off `workflow_run: workflows: ["PR Tests"]`, so when pr-tests stays quiet, pr-comment stays quiet too. No edit needed there. Side effects ------------ - PR CryptoLabInc#125 (ci-drop-python) currently sits open and proposes a Go CI rewrite. With this gate in place there is no CI noise to fight, so CryptoLabInc#125's urgency drops. The cleanest path is to close it and redo the Go CI as part of the main-merge integration PR — that way the CI lands together with whatever the boundary actually needs (artifact uploads, GOPRIVATE auth, OS matrix, etc.) rather than having two CI rewrites land independently. - .github/workflows/pr-tests.yml still references .github/scripts/ci_changed_tests.py and requirements.txt, both of which exist in main but not on feat/go-migration after PR CryptoLabInc#129. That is intentional — the workflow scaffolding stays bound to main's contents, and the rewrite at main-merge time will replace both anyway. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Go rune-mcp at
internal/*+cmd/rune-mcp/has reached parity and end-to-end verification, which means the Python tree is now dead weight.Carrying both implementations is actively misleading: a fresh contributor following the in-repo install instructions would still land in mcp/ + agents/ and try to set up a venv that no longer ships, and parity audits keep re-discovering the Python source instead of treating the Go side as the source of truth.
Removed
agents/common/agents/retriever/4 files (query_processor, searcher, synthesizer)agents/scribe/12 files (detector, llm_extractor, handlers, server)agents/tests/16 files (pytest suite)agents/__init__.pyagents/README.md(Python agents intro — gone with the impl)agents/SLACK_SETUP.md(Slack notifier setup for Python scribe)mcp/18 files (Python adapter + server + tests)requirements.txt(root Python dependency list)scripts/migrate_embeddings.py(one-off Python migration helper)Total: 67 files, 17,815 lines.
Kept (intentional)
agents/claude/{scribe,retriever}.mdagents/codex/scribe.mdagents/gemini/{scribe,retriever}.mdbenchmark/docs/v04/spec/python-mapping.mddocs/migration/*.mdscripts/bootstrap-mcp.shand other referenced bygemini-extension.json;Python-era shell scriptsremoval blocked on Gemini support decision (separate PR)Not in scope