Skip to content

chore: remove Python rune-mcp tree (v0.3 implementation) - #129

Merged
couragehong merged 1 commit into
feat/go-migrationfrom
couragehong/chore/remove-python-tree
May 8, 2026
Merged

chore: remove Python rune-mcp tree (v0.3 implementation)#129
couragehong merged 1 commit into
feat/go-migrationfrom
couragehong/chore/remove-python-tree

Conversation

@couragehong

Copy link
Copy Markdown
Contributor

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__.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 Couragehong/chore/ci drop python #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.

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
couragehong force-pushed the couragehong/chore/remove-python-tree branch from 5f0bdd6 to 67a0273 Compare May 8, 2026 08:50
@couragehong
couragehong merged commit e66771f into feat/go-migration May 8, 2026
@couragehong
couragehong deleted the couragehong/chore/remove-python-tree branch May 8, 2026 08:51
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>
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