Skip to content

feat(mcp)!: Phase 4 - full-cutover rename MCP server class + 96 tool names to loopover_* - #5739

Merged
JSONbored merged 4 commits into
mainfrom
rebrand-phase4-mcp-tools
Jul 14, 2026
Merged

feat(mcp)!: Phase 4 - full-cutover rename MCP server class + 96 tool names to loopover_*#5739
JSONbored merged 4 commits into
mainfrom
rebrand-phase4-mcp-tools

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Summary

Phase 4 of the gittensory -> loopover rebrand epic (#5705): renames the hosted MCP server's identity and every tool it registers.

  • src/mcp/server.ts: GittensoryMcp -> LoopoverMcp, MCP server name: "gittensory" -> "loopover", all 83 gittensory_*-prefixed registerTool names -> loopover_*, plus prose updated while preserving every genuine Gittensor (the Bittensor subnet) reference untouched.
  • packages/gittensory-mcp/bin/loopover-mcp.js: 96 gittensory_* cross-references in tool-guidance text updated to match; local config dir ~/.config/gittensory -> ~/.config/loopover; MCP resource URIs gittensory://* -> loopover://*; local stdio server name "gittensory-local" -> "loopover-local"; generated client-config keys -> "loopover". The hardcoded defaultApiUrl/legacyDefaultApiUrls (gittensory-api.aethereal.dev) is deliberately left untouched — no loopover-api.aethereal.dev DNS/custom-domain exists yet, so flipping it would break connectivity, not just branding.
  • ~95 source/test files: bulk rename across the tool catalog's consumers (packages/gittensory-engine, packages/gittensory-miner, test/unit/mcp-*.test.ts).
  • 9 markdown docs had the same tool names in a file extension the initial code-file sweep missed; CHANGELOG.md files deliberately left untouched.
  • scripts/check-docs-drift.mjs: extractGittensoryReviewFlags -> extractLoopOverReviewFlags (a .mjs file the initial sweep also missed).

Caught and reverted several real regressions from the broad rename sweep before they landed: a legacy MCP-tool-alias-retirement test (#4777, unrelated to this epic) whose gittensory_ values were deliberately-retired old names; several test fixtures using JSONbored/Gittensory as a realistic repo-slug (the actual GitHub repo, not renamed at the infra level); and a GraphQL response alias computed at runtime from the real repo full name.

BREAKING CHANGE: every gittensory_* MCP tool name is now loopover_*, the hosted MCP server identifies itself as "loopover", and the CLI's local resource URIs/config-dir/generated client config all use the new naming. No dual-read/alias, per the epic's full-cutover mandate.

Advances #5705

Test plan

  • npx vitest run — 835 passed | 2 skipped, 16218 tests passed | 12 skipped, 0 failed
  • npm run docs:drift-check
  • npm run manifest:drift-check
  • npx tsx scripts/write-ui-openapi.ts --check (regenerated apps/gittensory-ui/public/openapi.json)
  • npm run typecheck — local tsc --noEmit intermittently misreports one renamed export as unresolved in this specific worktree only (reproduces with any renamed export from that file, survives tsbuildinfo deletion/--incremental false/clean npm ci); runtime and the actual docs-drift script both execute it correctly. Verifying against CI's fresh checkout.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 14, 2026

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 14808b8 Commit Preview URL

Branch Preview URL
Jul 14 2026, 10:49 AM

@JSONbored JSONbored self-assigned this Jul 14, 2026
…names to loopover_*

Phase 4 of the gittensory -> loopover rebrand epic (#5705): renames the hosted
MCP server's identity and every tool it registers.

- src/mcp/server.ts: GittensoryMcp -> LoopoverMcp, MCP server name: "gittensory"
  -> "loopover", all 83 gittensory_*-prefixed registerTool names -> loopover_*,
  plus prose (descriptions, comments) updated while carefully preserving every
  genuine Gittensor (the Bittensor subnet) reference untouched.
- packages/gittensory-mcp/bin/loopover-mcp.js: 96 gittensory_* cross-references
  in recommendedPrompts/tool-guidance text updated to match; local config dir
  ~/.config/gittensory -> ~/.config/loopover; MCP resource URIs gittensory://*
  -> loopover://*; local stdio server name "gittensory-local" -> "loopover-local";
  generated client-config keys ("mcpServers": { "gittensory": ... }) -> "loopover".
  The hardcoded defaultApiUrl/legacyDefaultApiUrls (gittensory-api.aethereal.dev)
  is deliberately left untouched -- no loopover-api.aethereal.dev DNS/custom-domain
  exists yet, so flipping it would break connectivity, not just branding.
- ~95 source/test files: bulk gittensory_*/GittensoryMcp rename across the tool
  catalog's consumers (packages/gittensory-engine, packages/gittensory-miner,
  test/unit/mcp-*.test.ts and related).
- 9 markdown docs (packages/gittensory-{miner,engine}/README.md, docs/*.md,
  .claude/skills/contributing-to-loopover/*.md) had the same gittensory_* tool
  names in a file extension (.md) the initial code-file sweep didn't cover;
  CHANGELOG.md files deliberately left untouched (house rule).
- scripts/check-docs-drift.mjs: extractGittensoryReviewFlags -> extractLoopOverReviewFlags
  (a .mjs file the initial .ts/.js/.tsx sweep also missed).

Caught and reverted several real regressions from a broad rename sweep before
they landed: a legacy MCP-tool-alias-retirement test (#4777, unrelated to this
epic) whose "gittensory_" values were deliberately-retired old names, not stale
branding; several test fixtures using "JSONbored/Gittensory" as a realistic
repo-slug (the actual GitHub repo, not yet renamed at the infra level) rather
than brand prose; and a GraphQL response alias computed at runtime from the
real (unrenamed) repo full name.

BREAKING CHANGE: every gittensory_* MCP tool name is now loopover_*, the hosted
MCP server identifies itself as "loopover" (was "gittensory"), and the CLI's
local resource URIs/config-dir/generated client config all use the loopover_*
naming and ~/.config/loopover path. No dual-read/alias, per the epic's
full-cutover mandate.

Advances #5705

Note: local `tsc --noEmit` intermittently misreports test/unit/check-docs-drift-script.test.ts's
import of the renamed extractLoopOverReviewFlags as unresolved in this specific
worktree (reproduces with any renamed export from that file, persists across
tsbuildinfo deletion/--incremental false/clean npm ci, and the identical rename
typechecks fine everywhere else) -- runtime (vitest) and the actual docs-drift
script both execute the renamed function correctly, so this looks like a local
cache artifact rather than a real type error; verify against CI's fresh checkout.
scripts/check-docs-drift.d.mts is a hand-maintained .d.mts sibling that TS's
Bundler module resolution prefers over the .mjs source when allowJs is off
(confirmed via --traceResolution). It still declared the pre-rename
extractGittensoryReviewFlags, so any rename of that export -- correct or
not -- broke typecheck regardless of the .mjs file's actual content. None of
this rebrand's earlier greps covered the .d.mts extension.
@codecov

codecov Bot commented Jul 14, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.80220% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 95.07%. Comparing base (90e2f75) to head (14808b8).
⚠️ Report is 1 commits behind head on main.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
src/mcp/server.ts 92.30% 0 Missing and 1 partial ⚠️
src/queue/processors.ts 95.23% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #5739   +/-   ##
=======================================
  Coverage   95.06%   95.07%           
=======================================
  Files         581      581           
  Lines       46181    46181           
  Branches    14811    14811           
=======================================
+ Hits        43904    43905    +1     
  Misses       1516     1516           
+ Partials      761      760    -1     
Flag Coverage Δ
shard-1 43.96% <58.24%> (+0.01%) ⬆️
shard-2 35.71% <60.43%> (ø)
shard-3 32.27% <26.37%> (ø)
shard-4 33.55% <46.15%> (-0.03%) ⬇️
shard-5 31.18% <28.57%> (ø)
shard-6 44.63% <60.43%> (ø)

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

Files with missing lines Coverage Δ
...es/gittensory-engine/src/advisory/gate-advisory.ts 100.00% <ø> (ø)
packages/gittensory-engine/src/focus-manifest.ts 99.10% <ø> (ø)
.../gittensory-engine/src/issue-plan-decomposition.ts 100.00% <ø> (ø)
...s/gittensory-engine/src/miner/local-write-tools.ts 100.00% <100.00%> (ø)
...ges/gittensory-engine/src/miner/submission-gate.ts 100.00% <ø> (ø)
...ckages/gittensory-engine/src/opportunity-ranker.ts 100.00% <ø> (ø)
packages/gittensory-engine/src/plan-export.ts 100.00% <ø> (ø)
packages/gittensory-engine/src/plan-templates.ts 100.00% <ø> (ø)
packages/gittensory-engine/src/review/cla-check.ts 100.00% <ø> (ø)
...s/gittensory-engine/src/review/pre-merge-checks.ts 100.00% <ø> (ø)
... and 76 more
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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

loopover-orb Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Caution

🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥

🛑 LoopOver review result - fixes required

Review updated: 2026-07-14 10:54:10 UTC

300 files · 1 AI reviewer · 2 blockers · readiness 93/100 · CI failing · unstable

🛑 Suggested Action - Manual Review

Review summary
This is a large, mechanical bulk-rename PR (Phase 4 of a rebrand epic): GittensoryMcp -> LoopoverMcp, MCP server name, all 83 registerTool names gittensory_* -> loopover_*, matching prompt/description/resource text, plus the cross-referencing bin/loopover-mcp.js, ~95 consumer files, docs, and check-docs-drift.mjs. The diff hunks shown are consistent, mechanical string substitutions with no logic changes, and the PR description explicitly documents deliberate exclusions (defaultApiUrl/legacyDefaultApiUrls, CHANGELOG.md, genuine Gittensor/Bittensor references) which is the kind of judgment call that matters most in a rename this size. The most notable risk isn't in the visible hunks but in what's NOT shown: whether every one of the 83 tool names was renamed consistently across server.ts, bin/loopover-mcp.js, and the ~95 consumer/test files, since a single missed rename would silently break a tool lookup at runtime.

Nits — 5 non-blocking
  • This is a breaking-change rename touching 299 files; confirm CI's validate-code/validate/codecov/patch failures (97.80% vs 99% target) are purely from mechanical rename lines rather than a missed callsite update, since patch coverage gaps in a rename this size can hide a real miss.
  • Per the repo's issue-scope convention, confirm this PR closes or links an eligible tracking issue for Phase 4 of epic Epic: complete the gittensory -> loopover rebrand (full cutover, no dual-support) #5705 rather than being an unsolicited scope expansion.
  • src/mcp/server.ts — the JSDoc comment above computePredictedGateVerdict was updated to reference both tool names; worth spot-checking that all such paired cross-references (e.g. in bin/loopover-mcp.js tool-guidance text) were updated together rather than one-sided.
  • Given 96 tool names change identity, ask the contributor to confirm (or add) a test that enumerates registerTool calls in src/mcp/server.ts and asserts zero remaining `gittensory_` prefixes, so a future partial-rename regression fails CI deterministically rather than relying on manual grep.
  • Verify packages/gittensory-mcp/bin/loopover-mcp.js's local config dir migration (~/.config/gittensory -> ~/.config/loopover) includes a fallback/migration path for existing local installs, or confirm that's out of scope for this phase.

Why this is blocked

  • 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.

CI checks failing

  • codecov/patch — 97.80% of diff hit (target 99.00%)
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: 45 registered-repo PR(s), 37 merged, 310 issue(s).
Contributor context ✅ Confirmed Gittensor contributor JSONbored; Gittensor profile; 45 PR(s), 310 issue(s).
Gate result ❌ Blocking Repo-configured hard blocker found.
Improvement ✅ Minor risk: clean · value: minor — Code changes are accompanied by test evidence.
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: 45 PR(s), 310 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

Visual preview
Route Viewport Before (production) After (this PR's preview) Diff
/ desktop before / after /
/ mobile before / (mobile) after / (mobile)
/agents desktop before /agents after /agents
/agents mobile before /agents (mobile) after /agents (mobile)

Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy.

🟩 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 14, 2026
…nch coverage

mcp-package.ts's known-latest-version guard was stale (0.7.1) against the
now-published @loopover/mcp 0.9.0 -- an unrelated concurrent release, not
caused by this PR, but ui:version-audit fails CI either way.

getIssueQuality's "computed" (no cached snapshot) branch had no test
exercising it -- only the "snapshot" (cached) and "not_found" arms were
covered, so the summary-text rename on this branch tripped patch coverage.
@JSONbored
JSONbored merged commit 4bd2c06 into main Jul 14, 2026
19 of 20 checks passed
@JSONbored
JSONbored deleted the rebrand-phase4-mcp-tools branch July 14, 2026 10:57
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