Skip to content

fix(mcp): rename enrichment-analyzers resource URI to loopover:// - #6786

Merged
JSONbored merged 2 commits into
mainfrom
fix/enrichment-analyzers-uri-rebrand
Jul 17, 2026
Merged

fix(mcp): rename enrichment-analyzers resource URI to loopover://#6786
JSONbored merged 2 commits into
mainfrom
fix/enrichment-analyzers-uri-rebrand

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Summary

  • ENRICHMENT_ANALYZERS_URI was still gittensory://enrichment-analyzers, while its sibling FINDING_TAXONOMY_URI (added in the same MCP: add REST routes + CLI resource mirrors for finding-taxonomy and enrichment-analyzers #6620 PR) already uses loopover://finding-taxonomy — a straggler from the rebrand, not an intentional legacy reference (unlike the GITTENSORY_LEGACY_* check-run-name constants, nothing here is annotated as pre-rename/compat).
  • Fixed in both the main server (src/review/enrichment-analyzers-taxonomy.ts, src/mcp/server.ts already referenced the constant so no change needed there) and the standalone @loopover/mcp CLI package (packages/loopover-mcp/bin/loopover-mcp.js), which independently registers the same resource.
  • Updated the 4 test files whose assertions were pinned to the old literal value, plus two doc comments for consistency.
  • Confirmed via git grep that zero references to the old URI remain anywhere in the tracked repo.

Scope

  • Narrow, single-purpose change
  • No secrets/private terms touched
  • No changelog edit

Validation

  • npx vitest run test/unit/enrichment-analyzers-taxonomy.test.ts test/unit/mcp-discovery.test.ts test/unit/mcp-enrichment-analyzers.test.ts test/unit/routes-taxonomy-mirrors.test.ts — 34/34 passing
  • npm run typecheck — clean
  • git grep -n "gittensory://enrichment-analyzers" — zero hits repo-wide

Its sibling finding-taxonomy resource (added in the same #6620 PR) already
uses loopover://finding-taxonomy; enrichment-analyzers was left on the
pre-rebrand gittensory:// scheme in both the main MCP server and the
standalone @loopover/mcp CLI package.
@superagent-security

Copy link
Copy Markdown
Contributor

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

@codecov

codecov Bot commented Jul 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.63%. Comparing base (8cd0b24) to head (7ec9f69).
⚠️ Report is 7 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #6786   +/-   ##
=======================================
  Coverage   93.63%   93.63%           
=======================================
  Files         683      683           
  Lines       68148    68148           
  Branches    18703    18703           
=======================================
  Hits        63812    63812           
  Misses       3350     3350           
  Partials      986      986           
Flag Coverage Δ
shard-1 43.66% <100.00%> (ø)
shard-2 36.83% <100.00%> (ø)
shard-3 32.74% <100.00%> (ø)
shard-4 34.67% <100.00%> (-0.01%) ⬇️
shard-5 31.00% <100.00%> (-0.01%) ⬇️
shard-6 45.67% <100.00%> (ø)

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

Files with missing lines Coverage Δ
src/api/routes.ts 94.67% <ø> (ø)
src/review/enrichment-analyzers-taxonomy.ts 100.00% <100.00%> (ø)

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

loopover-orb Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Warning

⏸️ LoopOver review result - manual review recommended

Review updated: 2026-07-17 06:44:13 UTC

7 files · 1 AI reviewer · 2 blockers · CI green · clean

⏸️ Suggested Action - Manual Review

Review summary
This is a straightforward rename of the ENRICHMENT_ANALYZERS_URI constant and its literal usages from the stray `gittensory:​//enrichment-analyzers` to the consistent `loopover:​//enrichment-analyzers`, matching the sibling `loopover:​//finding-taxonomy` established in #6620. The change is applied consistently across the constant definition, the standalone MCP CLI package, test assertions, and doc comments, and the PR confirms via git grep that no old references remain. The two long-file size smells flagged in the brief are pre-existing file sizes unrelated to this diff's scope.

Nits — 4 non-blocking
  • The `validate` and `validate-tests (6)` CI checks failed — worth confirming whether they're related to this rename or a pre-existing/flaky failure before merge, though this is a CI status note rather than a code defect.
  • test/unit/mcp-enrichment-analyzers.test.ts:16 renames the client name string for consistency but this is purely cosmetic and has no functional effect on the test.
  • Double check the failing `validate` and `validate-tests (6)` jobs aren't masking a missed reference to the old URI somewhere outside the files shown in this diff.
  • Code changes lack test evidence — Add focused regression tests or explain why existing coverage is sufficient.

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.

Decision drivers

  • ❌ Code review — 2 blockers (1 reviewer)
  • ❌ Gate result — Blocking (Repo-configured hard blocker found.)
Context & advisory signals — never blocks the verdict
Signal Result Evidence
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: 33 registered-repo PR(s), 26 merged, 332 issue(s).
Contributor context ✅ Confirmed Gittensor contributor JSONbored; Gittensor profile; 33 PR(s), 332 issue(s).
Improvement ℹ️ None detected risk: low · value: none
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: 33 PR(s), 332 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Start here: Treat this as maintainer-lane context rather than normal contributor-lane activity.
  • Then work through the remaining 2 steps in the Signals table above.
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.
🧪 Chat with LoopOver

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

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

Full command reference: https://loopover.ai/docs/loopover-commands

🧪 Experimental — new and may change.

🟩 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

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 17, 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 7ec9f69 Commit Preview URL

Branch Preview URL
Jul 17 2026, 06:40 AM

@JSONbored
JSONbored merged commit feec18c into main Jul 17, 2026
19 checks passed
@JSONbored
JSONbored deleted the fix/enrichment-analyzers-uri-rebrand branch July 17, 2026 06:46
JSONbored added a commit that referenced this pull request Jul 17, 2026
…seline

chore(ci): regenerate the branding-drift baseline after #6786
bitfathers94 pushed a commit to bitfathers94/loopover that referenced this pull request Jul 17, 2026
…er-ui, loopover-ui, and loopover-miner-extension

- CLI command references in comments (governor.ts, portfolio-queue-actions.ts,
  vite-portfolio-queue-api.ts) still said `gittensory-miner ...`; the real
  binary is `loopover-miner` (confirmed against package.json's own bin field).
- 9 vite-*-api.ts dev-server plugins had their `name:` field (and
  chat-api.test.ts's matching assertion) as `gittensory-miner-ui:...`.
- vite.config.ts's port-offset comments and styles.css's design-system
  comment referenced the sibling app as `gittensory-ui`; confirmed
  loopover-ui's own vite config relies on the same default ports (5173/4173)
  the comments describe.
- self-hosting-operations.mdx documented the exact stale SENTRY_RELEASE/
  LOOPOVER_VERSION default already fixed in JSONbored#6876/JSONbored#6881/JSONbored#6888 as current
  behavior ("defaults to gittensory-selfhost@...").
- packages/loopover-mcp/bin/loopover-mcp.js had a comment claiming
  "enrichment-analyzers keeps its legacy gittensory:// URI on purpose" --
  stale since JSONbored#6786 actually renamed that URI to loopover://.
- Remaining ~50 occurrences (background.test.ts, opportunity-badge.test.ts,
  governor/ledgers/portfolio-queue-*.test.tsx's mock config-dir paths,
  proof-of-power-stats.test.tsx, browser-sentry.test.ts) were all arbitrary
  placeholder fixture values -- confirmed each by reading the source under
  test: browser-sentry.ts's VITE_SENTRY_RELEASE has no hardcoded default at
  all (pure passthrough, not the JSONbored#6876-class bug), so its test fixture value
  is genuinely arbitrary, same as the repo-name/path fixtures elsewhere.

Left untouched (verified real, not drift): try-it.ts/.test.ts's
LEGACY_STORAGE_KEY = "gittensory.session_token" and the matching legacy-key
arguments in app.index/runs/workbench.tsx's useLocalStorage(new, default,
legacy) calls -- this is a deliberate migration path so a returning user's
existing browser localStorage (session token, onboarding state, saved
views, workbench tab) is still recognized after the rebrand. Also left the
3 self-hosting docs' "Renamed from gittensory-selfhost" / "pre-rename name"
callouts, which are already correctly historically framed.

All affected test suites pass: 98 (miner-ui) + 29 (loopover-ui) + 16
(miner-extension) = 143 tests, plus a clean loopover-miner-ui typecheck.
JSONbored added a commit that referenced this pull request Jul 17, 2026
…pover-orb

test/helpers/d1.ts's createTestEnv() defaulted GITHUB_APP_SLUG to "gittensory" --
the pre-rename product name -- even though the real, live canonical GitHub App is
"loopover-orb" (src/services/subnet-interface.ts's PUBLIC_GITHUB_APP_SLUG, "the same
stable, real app across every deployment") and production's own unset-fallback is
"loopover" (src/api/routes.ts). Surfaced while investigating an unrelated flaky-test
report: two tests (test/unit/github-labels.test.ts, test/unit/github-pr-actions.test.ts)
constructed a fresh RSA key and D1 database per loop iteration; fixing that (a separate,
already-merged PR) revealed the shared default itself was stale.

Renames the default to "loopover-orb" and updates every fixture across ~20 files that
depends on it -- bot-login strings ("gittensory[bot]" -> "loopover-orb[bot]"), check-run
app.slug fixtures, explicit GITHUB_APP_SLUG overrides, and one test that asserts on the
project-slug value directly. Left untouched (confirmed deliberately preserved, not
stale): sticky-comment HTML markers, the "gittensory-native" DB-source literal, Sentry
ticket IDs, the GITTENSORY_LEGACY_*_CHECK_NAME upgrade-compatibility constants, and the
"JSONbored/gittensory" generic-placeholder-repo-name pattern used across ~144 files
(NOT swapped for "JSONbored/loopover", which is a live self-repo sentinel value that
would silently change unrelated tests' behavior).

Two subtleties worth noting for future reference:
- A function's matching semantics matter: isOwnReviewThreadAuthor does PREFIX matching,
  so its own dedicated test (backfill-2.test.ts) needed an explicit bare "loopover"
  override to keep testing multiple suffix forms, rather than inheriting the new
  "loopover-orb" default -- a bare "loopover[bot]" fixture would not prefix-match a
  "loopover-orb" configured slug.
- Regenerated scripts/branding-drift-baseline.json (npm run branding-drift:update)
  after a one-line comment fix in packages/loopover-mcp/bin/loopover-mcp.js (a stale
  claim that enrichment-analyzers "keeps its legacy gittensory:// URI on purpose" --
  it was already loopover:// per #6786) dropped that file's tracked "gittensory"
  mention count from 3 to 2.

Verified: all ~20 affected files pass individually and together (1621 tests), a clean
typecheck, and a full local npm run test:ci pass with zero failures attributable to
this change (two unrelated, pre-existing failures surfaced -- a terraform/ directory
deliberately removed in a separate prior commit leaving a stale test behind, and a
self-host Sentry release script already renamed to loopover-selfhost while its test
still pinned the old value -- both confirmed unrelated via git blame/content diff and
left for a separate follow-up).
JSONbored added a commit that referenced this pull request Jul 17, 2026
…pover-orb

test/helpers/d1.ts's createTestEnv() defaulted GITHUB_APP_SLUG to "gittensory" --
the pre-rename product name -- even though the real, live canonical GitHub App is
"loopover-orb" (src/services/subnet-interface.ts's PUBLIC_GITHUB_APP_SLUG, "the same
stable, real app across every deployment") and production's own unset-fallback is
"loopover" (src/api/routes.ts). Surfaced while investigating an unrelated flaky-test
report: two tests (test/unit/github-labels.test.ts, test/unit/github-pr-actions.test.ts)
constructed a fresh RSA key and D1 database per loop iteration; fixing that (a separate,
already-merged PR) revealed the shared default itself was stale.

Renames the default to "loopover-orb" and updates every fixture across ~20 files that
depends on it -- bot-login strings ("gittensory[bot]" -> "loopover-orb[bot]"), check-run
app.slug fixtures, explicit GITHUB_APP_SLUG overrides, and one test that asserts on the
project-slug value directly. Left untouched (confirmed deliberately preserved, not
stale): sticky-comment HTML markers, the "gittensory-native" DB-source literal, Sentry
ticket IDs, the GITTENSORY_LEGACY_*_CHECK_NAME upgrade-compatibility constants, and the
"JSONbored/gittensory" generic-placeholder-repo-name pattern used across ~144 files
(NOT swapped for "JSONbored/loopover", which is a live self-repo sentinel value that
would silently change unrelated tests' behavior).

Two subtleties worth noting for future reference:
- A function's matching semantics matter: isOwnReviewThreadAuthor does PREFIX matching,
  so its own dedicated test (backfill-2.test.ts) needed an explicit bare "loopover"
  override to keep testing multiple suffix forms, rather than inheriting the new
  "loopover-orb" default -- a bare "loopover[bot]" fixture would not prefix-match a
  "loopover-orb" configured slug.
- Regenerated scripts/branding-drift-baseline.json (npm run branding-drift:update)
  after a one-line comment fix in packages/loopover-mcp/bin/loopover-mcp.js (a stale
  claim that enrichment-analyzers "keeps its legacy gittensory:// URI on purpose" --
  it was already loopover:// per #6786) dropped that file's tracked "gittensory"
  mention count from 3 to 2.

Verified: all ~20 affected files pass individually and together (1621 tests), a clean
typecheck, and a full local npm run test:ci pass with zero failures attributable to
this change (two unrelated, pre-existing failures surfaced -- a terraform/ directory
deliberately removed in a separate prior commit leaving a stale test behind, and a
self-host Sentry release script already renamed to loopover-selfhost while its test
still pinned the old value -- both confirmed unrelated via git blame/content diff and
left for a separate follow-up).
thomasalvaedison7777-lgtm pushed a commit to thomasalvaedison7777-lgtm/loopover that referenced this pull request Jul 17, 2026
This session found and fixed real behavioral drift left over from the
loopover rebrand -- a hardcoded MCP resource URI (JSONbored#6786), a Qdrant
collection default, and metric names that only got caught by manual
investigation. scripts/check-branding-drift.mjs snapshots today's known
"gittensory" mentions in executable src/ and packages/*/{bin,lib,src}
code (test/**, docs, and CHANGELOGs are excluded -- those legitimately
reference the rename permanently) and fails CI if a file's count rises
without the baseline being regenerated, the same generated-artifact
convention this repo already uses for openapi.json and cf-typegen.

Wired into npm run test:ci via a new branding-drift:check script;
branding-drift:update regenerates the baseline for an intentional change.
thomasalvaedison7777-lgtm pushed a commit to thomasalvaedison7777-lgtm/loopover that referenced this pull request Jul 17, 2026
JSONbored#6786 removed the last 3 gittensory references in loopover-mcp.js,
routes.ts, and enrichment-analyzers-taxonomy.ts; JSONbored#6788's baseline (merged
around the same time) predated that fix, so main's own
branding-drift:check has been red since both landed.
JSONbored pushed a commit that referenced this pull request Jul 25, 2026
#8661)

The BRANDING_DRIFT_PATHSPECS listed both .ts and .tsx for the apps/*
scope but only .ts for packages/*, despite the header framing
packages/*/src as mirroring apps/*. That left the 48 loopover-ui-kit
.tsx design-system components — the repo's highest-reuse UI surface —
outside the git-grep scan, so a reintroduced pre-rebrand string in any
of them would never trip the check (the exact class of bug #6786).

Add the missing packages/*/src/**/*.tsx pathspec. No packages .tsx file
currently contains a flagged string, so the baseline is unchanged.

Closes #8657

Co-authored-by: bitfathers94 <237535319+bitfathers94@users.noreply.github.com>
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