Skip to content

refactor(mcp): retire the loopover_/gittensory_ legacy tool-name aliases - #5648

Merged
JSONbored merged 1 commit into
mainfrom
claude/mcp-retire-legacy-aliases-4777
Jul 13, 2026
Merged

refactor(mcp): retire the loopover_/gittensory_ legacy tool-name aliases#5648
JSONbored merged 1 commit into
mainfrom
claude/mcp-retire-legacy-aliases-4777

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Issue #4775 renamed the local stdio MCP CLI's 37 tools from
gittensory_-prefixed to loopover_-prefixed names, keeping the old
names registered as deprecated aliases (registerToolWithLegacyAlias)
during a transition window. Remove that mechanism: each tool now
registers once, under its canonical loopover_ name only.

Deletes legacyAliasName() and ALL_STDIO_TOOL_DESCRIPTORS (the
37-primary + 37-alias merged descriptor list), collapsing
stdioToolDescription() and the tools CLI subcommand back to the
original 37-entry STDIO_TOOL_DESCRIPTORS.

Deliberately unchanged: AGENT_PROFILES.recommendedTools/recommendedPrompts
still reference several gittensory_-prefixed names. Most of those
belong to the separate, never-renamed remote/hosted MCP server
(src/mcp/server.ts), not these local CLI tools. A handful do collide
with locally-renamed tools (gittensory_agent_plan_next_work and 7
others) -- left exactly as-is pending a maintainer call on whether
those specific references were meant to track the local rename,
since test/unit/mcp-cli-basics.test.ts pins this exact spelling today.

Part of #4777

Issue #4775 renamed the local stdio MCP CLI's 37 tools from
gittensory_-prefixed to loopover_-prefixed names, keeping the old
names registered as deprecated aliases (registerToolWithLegacyAlias)
during a transition window. Remove that mechanism: each tool now
registers once, under its canonical loopover_ name only.

Deletes legacyAliasName() and ALL_STDIO_TOOL_DESCRIPTORS (the
37-primary + 37-alias merged descriptor list), collapsing
stdioToolDescription() and the `tools` CLI subcommand back to the
original 37-entry STDIO_TOOL_DESCRIPTORS.

Deliberately unchanged: AGENT_PROFILES.recommendedTools/recommendedPrompts
still reference several gittensory_-prefixed names. Most of those
belong to the separate, never-renamed remote/hosted MCP server
(src/mcp/server.ts), not these local CLI tools. A handful do collide
with locally-renamed tools (gittensory_agent_plan_next_work and 7
others) -- left exactly as-is pending a maintainer call on whether
those specific references were meant to track the local rename,
since test/unit/mcp-cli-basics.test.ts pins this exact spelling today.

Part of #4777
@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

1 similar comment
@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@codecov

codecov Bot commented Jul 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.03%. Comparing base (941c300) to head (92ddd5a).
⚠️ Report is 3 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #5648   +/-   ##
=======================================
  Coverage   95.03%   95.03%           
=======================================
  Files         577      577           
  Lines       45920    45920           
  Branches    14695    14695           
=======================================
  Hits        43640    43640           
  Misses       1528     1528           
  Partials      752      752           
Flag Coverage Δ
shard-1 43.91% <ø> (ø)
shard-2 35.67% <ø> (ø)
shard-3 32.26% <ø> (+0.06%) ⬆️
shard-4 32.69% <ø> (+0.11%) ⬆️
shard-5 31.74% <ø> (-0.04%) ⬇️
shard-6 44.46% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
loopover-ui 92ddd5a Commit Preview URL

Branch Preview URL
Jul 13 2026, 07:51 PM

@loopover-orb loopover-orb Bot added the gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. label Jul 13, 2026
@loopover-orb

loopover-orb Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Warning

🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨

⏸️ LoopOver review result - manual review recommended

Review updated: 2026-07-13 19:54:13 UTC

13 files · 1 AI reviewer · 2 blockers · readiness 93/100 · CI green · clean

⏸️ Suggested Action - Manual Review

  • AI review could not be completed: The dual-model AI review did not return a usable verdict for this change.

Review summary
This PR cleanly retires the loopover_/gittensory_ deprecated-alias mechanism from #4775: registerToolWithLegacyAlias is replaced with a plain registerStdioTool wrapper, ALL_STDIO_TOOL_DESCRIPTORS and legacyAliasName() are deleted, and stdioToolDescription()/toolsCommand() fall back to the original 37-entry STDIO_TOOL_DESCRIPTORS. The test suite is correctly updated to assert the new invariants (37 tools, zero gittensory_-prefixed aliases, retired names error rather than resolve), and docs/skill references to the now-dead aliases are stripped. The PR explicitly and honestly flags an unresolved edge case — several AGENT_PROFILES entries and docs still reference gittensory_-prefixed names that collide with locally-renamed tools (e.g. gittensory_agent_plan_next_work) — and defers that to a maintainer call rather than silently leaving stale references.

Nits — 6 non-blocking
  • The PR's own description flags that AGENT_PROFILES.recommendedTools/recommendedPrompts still reference gittensory_-prefixed names that collide with 7 locally-retired tools (e.g. gittensory_agent_plan_next_work) — worth a maintainer decision before merge so agent profiles don't silently reference dead tool names.
  • test/unit/mcp-tool-rename-aliases.test.ts's retired-alias test passes empty arguments ({}) for tools like gittensory_get_repo_context that require owner/repo — verify the isError:true assertion is actually due to 'unknown tool' rather than a schema-validation error that would pass even if the alias accidentally still resolved.
  • registerStdioTool(name, config, handler) is now a pure pass-through to server.registerTool with no added behavior — consider whether keeping the wrapper (vs. calling server.registerTool directly at all 37 call sites) is worth the indirection now that there's no alias logic to share.
  • Confirm with a maintainer whether the 7 colliding gittensory_-prefixed AGENT_PROFILES references (e.g. gittensory_agent_plan_next_work) should be renamed to loopover_ now, since test/unit/mcp-cli-basics.test.ts reportedly pins the old spelling.
  • In mcp-tool-rename-aliases.test.ts, tighten the retired-alias assertions by checking the error message/content mentions 'Unknown tool' or similar, not just isError:true, to guard against a false pass from unrelated validation errors.
  • AI review could not be completed — The gate is held for a human reviewer rather than passed automatically; it re-evaluates on the next update.

Concerns raised — review before merging

  • No linked issue detected — If this PR is intended to solve an issue, link it explicitly in the PR body.
  • Maintainer requires a linked issue — Link the relevant issue (for example Closes #123) before opening the PR.
📋 Copy for AI agents — paste into your coding agent
Fix the following blocker(s) from this PR review:

1. No linked issue detected — If this PR is intended to solve an issue, link it explicitly in the PR body.

2. Maintainer requires a linked issue — Link the relevant issue (for example `Closes #123`) before opening the PR.
Signal Result Evidence
Code review ❌ 2 blockers 1 reviewer
Linked issue ⚠️ Missing No linked issue or no-issue rationale found.
Related work ✅ No active overlap found No same-issue or scoped active PR overlap found.
Change scope ✅ 20/20 Low review scope from cached public metadata (no linked issue context).
Validation posture ✅ 25/25 PR body includes validation/test evidence.
Contributor workload ✅ 10/10 Author activity: 44 registered-repo PR(s), 36 merged, 320 issue(s).
Contributor context ✅ Confirmed Gittensor contributor JSONbored; Gittensor profile; 44 PR(s), 320 issue(s).
Gate result ❌ Blocking Repo-configured hard blocker found.
Improvement ✅ Minor risk: clean · value: minor — Code changes are accompanied by test evidence. LLM value judgment: moderate — This completes a previously-planned two-phase deprecation (#4775 introduce aliases, #4777 retire them), removing real dead code (legacyAliasName, ALL_STDIO_TOOL_DESCRIPTORS) and updating tests/docs in lockstep, though it stops short of resolving the residual AGENT_PROFILES naming collisions it surfaces.
Review context
  • Author: JSONbored
  • Role context: owner (maintainer lane)
  • Public audience mode: oss maintainer
  • Lane context: Repository is configured for direct PR review.
  • Public profile languages: Python, TypeScript, Ruby, Go, JavaScript, MDX, Shell, Solidity
  • Official Gittensor activity: 44 PR(s), 320 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Treat this as maintainer-lane context rather than normal contributor-lane activity.
  • Explain no-issue PR.
  • Link the issue being solved, or explicitly explain why this is a no-issue PR.
Signal definitions
  • Related work = same linked issue, overlapping active PRs, or title/path similarity.
  • Change scope = cached public metadata such as size labels, draft state, and review-burden hints.
  • Validation posture = whether the PR provides enough public validation/test evidence for maintainer review.
  • Contributor workload = public contributor activity and cleanup pressure, not a repo-wide quality failure.
  • Contributor context = public GitHub/Gittensor identity context; non-Gittensor status is not a blocker.
[BETA] Chat with Gittensory

Ask Gittensory a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.

  • @gittensory ask &lt;question&gt; answers contribution-quality Q&A with source citations and freshness.
  • @gittensory chat &lt;question&gt; answers in natural prose from cached decision-pack facts via local inference (maintainer/collaborator; read-only).
  • A plain-language @gittensory mention with a real question is routed to the closest matching read-only command automatically -- no exact syntax required.

Full command reference: https://gittensory.aethereal.dev/docs/gittensory-commands

🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed


💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →.

Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.

  • Re-run LoopOver review

@loopover-orb loopover-orb Bot added the manual-review Gittensor contributor context label Jul 13, 2026
@JSONbored
JSONbored merged commit 1bbae0e into main Jul 13, 2026
19 checks passed
@JSONbored
JSONbored deleted the claude/mcp-retire-legacy-aliases-4777 branch July 13, 2026 19:58
JSONbored added a commit that referenced this pull request Jul 13, 2026
JSONbored added a commit that referenced this pull request Jul 13, 2026
JSONbored added a commit that referenced this pull request Jul 13, 2026
JSONbored added a commit that referenced this pull request Jul 13, 2026
#5650)

* ci(selfhost): stop publishing the legacy gittensory-selfhost image tag

The self-host container image release workflow published every orb-v
tag under both the renamed "loopover-selfhost" name and the pre-rename
"gittensory-selfhost" name as a dual-publish alias. Stop publishing
under the old name going forward -- only "loopover-selfhost" ships
from here on.

Already-published tags and digests under the old name are untouched;
GHCR has no server-side alias, so an existing exact-version or digest
pin keeps resolving forever regardless. Only a ":latest"-style pin
stops advancing, which is the accepted tradeoff of retiring the
dual-publish, not something this change works around.

Updates the release workflow's image metadata step and release-notes
template, trims the now-stale dual-publish/alias commentary from the
deploy script, release-automation scripts, and .env.example, and
brings the self-hosting docs and unit tests in line with the new
single-name publish.

Part of #4777

* ci: retrigger Workers Builds (Cloudflare build-concurrency contention from #5648 merge)
JSONbored added a commit that referenced this pull request Jul 13, 2026
…him (#5651)

* chore(config): retire the .gittensory.yml config-filename dual-read shim

The config-filename grace period from the LoopOver rebrand has elapsed:
drop legacy .gittensory.yml/.yaml/.json support from every reader now
that the new .loopover.yml name is the only one read.

- src/selfhost/private-config.ts: collapse CONFIG_BASENAMES/CONFIG_EXTENSIONS
  to the 3 .loopover.* entries, drop the 3 legacy .gittensory.* entries,
  rewrite the module-header comment.
- src/signals/focus-manifest-loader.ts: drop the 4 legacy entries from
  MANIFEST_FILE_CANDIDATES, strip dual-brand language from the doc comments.
- src/review/guardrail-config.ts and its hand-duplicated engine twin
  (packages/gittensory-engine/src/review/guardrail-config.ts): drop the 6
  legacy globs from CONFIG_AS_CODE_GUARDRAIL_GLOBS.
- packages/gittensory-engine/src/objective-anchor.ts: drop the legacy
  entry from the CONFIG_FILENAMES classification set.
- packages/gittensory-engine/src/predicted-gate.ts: drop the legacy
  filename from the predictor's public-facing note text; regenerate the
  engine-parity golden fixtures to match.
- src/queue/processors.ts: drop the legacy filename from the
  E2E-test-gen-not-enabled comment posted to contributors.
- Renames this repo's own root config file (.gittensory.yml ->
  .loopover.yml, .gittensory.yml.example -> .loopover.yml.example) to
  dogfood the new-only behavior.
- Updates every affected test: removes/collapses the dual-brand describe
  blocks, and fixes stub fetch-URL matchers and expected-string
  assertions that were still keyed on the old filename (several of these
  were silent regressions -- a stale ".gittensory.y" URL matcher meant a
  test's manifest stub was never hit, and it was instead falling through
  to a real bundled fallback manifest).
- Updates docs: config/examples/, CONTRIBUTING.md, README.md, the
  self-hosting doc pages, and the contributing-to-loopover skill.

Part of #4777.

* ci: retrigger Workers Builds (Cloudflare build-concurrency contention from #5648 merge)
JSONbored added a commit that referenced this pull request Jul 13, 2026
JSONbored added a commit that referenced this pull request Jul 13, 2026
… tool refs to loopover_

The local CLI's stdio tools were already renamed in #5648; these AGENT_PROFILES
recommendedTools/prompt-guidance strings and their matching test assertions
were the remaining stale references. Also fixes a leftover .gittensory.yml
mention in a visual-wire.ts comment.

Part of #4777
JSONbored added a commit that referenced this pull request Jul 13, 2026
…oopover_

test/unit/mcp-cli-issue-slop.test.ts and a routes.ts comment still expected
the pre-#5648 local CLI tool name. Missed in the previous pass because the
verification grep was truncated by an unintended `head -40`.

Part of #4777
JSONbored added a commit that referenced this pull request Jul 14, 2026
…e worker (#5652)

* refactor(env): retire GITTENSORY_<X>/LOOPOVER_<X> dual-read across the worker

Deletes src/utils/env.ts (dualPrefixEnvString/Flag/StrictFlag) now that every
call site reads its LOOPOVER_<X> var directly. This is the largest and
highest-risk piece of the #4774 dual-read cleanup: auth/security.ts and
selfhost/preflight.ts (API/MCP token auth + preflight secret checks) move in
lockstep so a self-hoster's preflight and auth gate agree on the same var
names; selfhost/ai.ts and selfhost/health.ts keep ENABLE_UNSAFE_CODEX_REVIEWER
as a strict `=== "1"` check; the ~20 review/** feature flags (safety,
grounding, RAG, unified comment, reputation, ops, selftune, content-lane,
parity-audit, draft, planner, impact-map, culture-profile, memory,
inline-comments, fix-handoff, e2e-tests, improvement-signal, enrichment,
continuous) and the REVIEW_REPOS cutover allowlist all move together with
their existing precedence logic untouched; notify-discord.ts's per-repo
webhook map now points 'jsonbored/gittensory' straight at
LOOPOVER_DISCORD_WEBHOOK instead of deriving it from a GITTENSORY_ name at
runtime.

wrangler.jsonc's `vars` block is renamed alongside src/env.d.ts -- the
deployed Worker's own var bindings were still declaring the pre-rebrand
GITTENSORY_REVIEW_* keys, which would have left every LOOPOVER_REVIEW_* read
unbound on deploy once the dual-read helper was gone. worker-configuration.d.ts
and apps/gittensory-ui/src/lib/selfhost-env-reference.ts are regenerated to
match. scripts/gen-selfhost-env-reference.mjs drops the dual-prefix AST
recognition branch now that no call site needs it.

.env.example and .env.selfhost.example flip to LOOPOVER_<X> as the live,
uncommented default with the retired GITTENSORY_<X> name left as a commented
"no longer read" note. Self-hosting docs pages and their stray
GITTENSORY_REVIEW_* wildcard-family prose mentions are updated to match,
including a couple of comment-only references in packages/gittensory-engine
that had drifted from the actual env var names. Tests are the mechanical
counterpart: utils-env.test.ts is deleted, auth.test.ts loses its
"legacy alone" case, and every *-wire/selfhost/notify test fixtures on the
new LOOPOVER_ names.

Fields with no LOOPOVER_ sibling (SKIP_AUTOMATION_BOT_PRS, the DRIFT_ISSUE_*
and MAINTAINER_RECAP families, PUBLIC_STATS, SWEEP_WATCHDOG,
PR_RECONCILIATION, EXPERIMENTAL_GITTENSOR, DUPLICATE_WINNER,
OPEN_PR_FILE_COLLISION, UPLOAD_SOURCE, CONTRIBUTOR_ISSUE_TOKEN, and the
bespoke REVIEW_STATS_TOKEN secret name) are left on their existing
GITTENSORY_ prefix -- they were never part of the dual-read family.

Part of #4777

* ci: retrigger Workers Builds (Cloudflare build-concurrency contention from #5648 merge)

* refactor(mcp): rename the last 17 gittensory_-prefixed AGENT_PROFILES tool refs to loopover_

The local CLI's stdio tools were already renamed in #5648; these AGENT_PROFILES
recommendedTools/prompt-guidance strings and their matching test assertions
were the remaining stale references. Also fixes a leftover .gittensory.yml
mention in a visual-wire.ts comment.

Part of #4777

* fix(mcp): rename the last stale gittensory_check_issue_slop refs to loopover_

test/unit/mcp-cli-issue-slop.test.ts and a routes.ts comment still expected
the pre-#5648 local CLI tool name. Missed in the previous pass because the
verification grep was truncated by an unintended `head -40`.

Part of #4777

* fix(review): rename the last live gittensory_-named secret to LOOPOVER_REVIEW_STATS_TOKEN

src/review/stats.ts's STATS_TOKEN_SECRET constant, its self-host docs entry
(docs.tuning.tsx), and .env.example still named the old GITTENSORY_REVIEW_
prefix. Missed by npm run cf-typegen:check since it's a secret (set via
wrangler secret put / a self-host .env), not a wrangler.jsonc var, so
codegen never sees it.

Verified before renaming: `wrangler secret list` shows no secret by this
name on the hosted Worker, and the self-hosted server's real .env has no
match either (only its .env.example, commented out) -- this token has
never actually been configured anywhere, so the rename carries zero live-
cutover risk.

Part of #4777

* style(ui): reflow docs.tuning.tsx after the LOOPOVER_REVIEW_STATS_TOKEN rename
JSONbored added a commit that referenced this pull request Jul 14, 2026
#5666)

cross-repo-discovery-phase1.md and an opportunity-ranker.ts comment still
described the hosted and stdio MCP surfaces as sharing one gittensory_-
prefixed tool name. The stdio CLI's tool was renamed to
loopover_find_opportunities by #5648; only the hosted server kept the
gittensory_ prefix. Prose-only, no behavior change.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. manual-review Gittensor contributor context

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant