You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The LoopOver rebrand milestone shows every scoped sub-issue closed except the GitHub repo rename (#4771, deliberately gated on stability) and the brand mark (#4764, blocked on a design asset). Despite that, a full repo audit (2026-07-14) found the rebrand is nowhere near complete outside the surfaces those closed issues actually covered (npm publish scope, HTTP User-Agent strings, check-run names, PR-comment bot username, extension display names, Cloudflare Worker/domain/Queue names). Everything below was never in scope for any closed issue.
Decision: full cutover, not dual-support, for every item below — including the three genuinely breaking-change items (bot mention command, CLI binary names, MCP server/tool names). Old naming stops working; this is deliberate, not an oversight. Any commit executing a breaking-change item must mark it as such (conventional-commit !/BREAKING CHANGE: footer) so release-please major-version-bumps the affected npm package correctly.
Area
Repo-wide (src/, packages/, apps/, .github/workflows/, docs, infra configs)
Scope — by phase, roughly safest/most-mechanical first
Phase 1 — env var family (mechanical, full cutover)
Rename GITTENSORY_MINER_* → LOOPOVER_MINER_* across all 130 files (499 occurrences): packages/gittensory-miner/lib/**, packages/gittensory-engine/src/governor/{action-mode,kill-switch}.ts, k8s/miner-deployment.yaml, docker-compose.yml, systemd/*.service.example, grafana/provisioning/datasources/ams-ledgers.yml, .env.example, .gittensory-miner.env.example, all packages/gittensory-miner/docs/*.md, packages/gittensory-miner/lib/cli.js's own --help text
Same cutover for the secondary GITTENSORY_* family in docker-compose.yml (GITTENSORY_API_TOKEN_FILE, GITTENSORY_MCP_TOKEN_FILE, GITTENSORY_MEM_LIMIT, GITTENSORY_REPORTING_SOURCE_DB, GITTENSORY_REPORTING_DIR, GITTENSORY_REPORTING_DB)
Regenerate packages/gittensory-miner/docs/env-reference.md and root self-host env-reference doc after every var is renamed (regenerate LAST, per this repo's own documented gotcha)
Phase 2 — bot mention command (full cutover)
src/github/commands.ts:279 — change the dispatch regex from @gittensory to @loopover
src/review/planner.ts:32 and every other @gittensory-matching call site (~24 files in src/)
Update all generated help text / PR-comment strings (src/github/commands.ts:946-965, src/settings/agent-actions.ts:559,578,1105, src/api/routes.ts:4119-4247's command catalog)
.loopover.yml.example — fix the 11 remaining @gittensory references in its own docs/comments
Fix all ~254 relative-import statements this breaks (majority in test/, scriptable)
release-please-config.json + .release-please-manifest.json — update the directory-path component-identity keys atomically with the git mvs (real release-tooling risk if done separately)
The two never-npm-renamed packages: @jsonbored/gittensory-extension → @loopover/extension, @jsonbored/gittensory-miner-extension → @loopover/miner-extension (or equivalent), alongside their directory renames above
Phase 6 — internal code identifiers (mechanical, full cutover, do after Phase 2 since many are named after the mention-command string)
~215 distinct identifiers across ~350 files in src/**, packages/*/src/**, packages/gittensory-miner/lib/** (e.g. parseGittensoryMentionCommand, runGittensoryAiReview, gittensoryFooter, resolveGittensorySelfRepoFullName, GittensoryMentionCommand type, GITTENSORY_SITE_URL/GITTENSORY_MCP_PACKAGE_NAME/etc. env-var-name constants) — scripted find/replace + typecheck pass per directory, not hand-edited one by one
Phase 7 — Docker/k8s manifests (full cutover)
Root Dockerfile (DATABASE_PATH=/data/gittensory.sqlite live default, comments)
review-enrichment/Dockerfile comment
k8s/miner-deployment.yaml — StatefulSet/label/service/secret names, image tag
Do NOT edit CHANGELOG.md directly in any of these PRs — release-please generates it from commit messages.
Every breaking-change phase (2, 3, 4) needs its commit(s) marked as a real semver-breaking change so the affected npm package gets a correct major-version bump.
This is too large for one PR — expect this epic to resolve via a sequence of small, independently-mergeable PRs, one per phase (or sub-phase where a phase is still large), matching this repo's own PR-size discipline.
Resources
Full audit findings (directory/import blast-radius + text/identifier residue) — this issue's checkboxes are transcribed directly from that sweep.
Problem
The LoopOver rebrand milestone shows every scoped sub-issue closed except the GitHub repo rename (#4771, deliberately gated on stability) and the brand mark (#4764, blocked on a design asset). Despite that, a full repo audit (2026-07-14) found the rebrand is nowhere near complete outside the surfaces those closed issues actually covered (npm publish scope, HTTP User-Agent strings, check-run names, PR-comment bot username, extension display names, Cloudflare Worker/domain/Queue names). Everything below was never in scope for any closed issue.
Decision: full cutover, not dual-support, for every item below — including the three genuinely breaking-change items (bot mention command, CLI binary names, MCP server/tool names). Old naming stops working; this is deliberate, not an oversight. Any commit executing a breaking-change item must mark it as such (conventional-commit
!/BREAKING CHANGE:footer) so release-please major-version-bumps the affected npm package correctly.Area
Repo-wide (src/, packages/, apps/, .github/workflows/, docs, infra configs)
Scope — by phase, roughly safest/most-mechanical first
Phase 1 — env var family (mechanical, full cutover)
GITTENSORY_MINER_*→LOOPOVER_MINER_*across all 130 files (499 occurrences):packages/gittensory-miner/lib/**,packages/gittensory-engine/src/governor/{action-mode,kill-switch}.ts,k8s/miner-deployment.yaml,docker-compose.yml,systemd/*.service.example,grafana/provisioning/datasources/ams-ledgers.yml,.env.example,.gittensory-miner.env.example, allpackages/gittensory-miner/docs/*.md,packages/gittensory-miner/lib/cli.js's own--helptextGITTENSORY_*family indocker-compose.yml(GITTENSORY_API_TOKEN_FILE,GITTENSORY_MCP_TOKEN_FILE,GITTENSORY_MEM_LIMIT,GITTENSORY_REPORTING_SOURCE_DB,GITTENSORY_REPORTING_DIR,GITTENSORY_REPORTING_DB)packages/gittensory-miner/docs/env-reference.mdand root self-host env-reference doc after every var is renamed (regenerate LAST, per this repo's own documented gotcha)Phase 2 — bot mention command (full cutover)
src/github/commands.ts:279— change the dispatch regex from@gittensoryto@loopoversrc/review/planner.ts:32and every other@gittensory-matching call site (~24 files insrc/)src/github/commands.ts:946-965,src/settings/agent-actions.ts:559,578,1105,src/api/routes.ts:4119-4247's command catalog).loopover.yml.example— fix the 11 remaining@gittensoryreferences in its own docs/commentsREADME.mdCLI/bot-mention examplesPhase 3 — CLI binary names (full cutover)
packages/gittensory-miner/package.json"bin":gittensory-miner/gittensory-miner-mcp→loopover-miner/loopover-miner-mcppackages/gittensory-mcp/package.json"bin":gittensory-mcp→loopover-mcppackages/gittensory-miner/lib/cli.js:12help text ("Foundation CLI for the local Gittensory miner runtime.").github/workflows/publish-miner.yml:118-119,publish-mcp.yml:112— update the post-publish smoke-test assertions to the new bin names/help textpackages/gittensory-miner/Dockerfile:37ENTRYPOINT, and itsdocker build -texample commentREADME.md,packages/gittensory-miner/README.md,DEPLOYMENT.md, andpackages/gittensory-miner/docs/*.mdPhase 4 — MCP server + tool names (full cutover)
src/mcp/server.ts— server registrationname: "gittensory"→"loopover",class GittensoryMcp→ renamedgittensory_*-prefixed tool names →loopover_*(106 string-literal occurrences)description:fields with bare "Gittensory" prose (65 occurrences)packages/gittensory-miner/lib/*.js(gittensory_miner_predictions_totaletc., 12+ distinct names) +grafana/dashboards/miner-usage.jsonpanel queries that reference themgrafana/dashboards/gittensory.jsonfile itself (rename + its own internal references)Phase 5 — directory renames (mechanical, coordinated)
apps/gittensory-ui→apps/loopover-ui,apps/gittensory-miner-ui→apps/loopover-miner-ui,apps/gittensory-extension→apps/loopover-extension,apps/gittensory-miner-extension→apps/loopover-miner-extensionpackages/gittensory-engine→packages/loopover-engine,packages/gittensory-miner→packages/loopover-miner,packages/gittensory-mcp→packages/loopover-mcp,packages/gittensory-ui-kit→packages/loopover-ui-kittest/, scriptable)release-please-config.json+.release-please-manifest.json— update the directory-path component-identity keys atomically with thegit mvs (real release-tooling risk if done separately).github/workflows/ci.yml'sdorny/paths-filter-style filters,.github/workflows/ui-preview.yml'spaths:block,.github/workflows/publish-*.yml's hardcoded paths,.github/workflows/mcp-release-please.yml's component-output referencesvitest.config.tscoverage-include globspackage.jsonscripts referencing literal paths (miner:env-reference,benchmark:miner,ui:preview,ui:deploy:built,ui:version:built,changelog:mcp,selfhost:config-lint)k8s/README.md,k8s/miner-deployment.yamlDockerfile-path references@jsonbored/gittensory-extension→@loopover/extension,@jsonbored/gittensory-miner-extension→@loopover/miner-extension(or equivalent), alongside their directory renames abovePhase 6 — internal code identifiers (mechanical, full cutover, do after Phase 2 since many are named after the mention-command string)
src/**,packages/*/src/**,packages/gittensory-miner/lib/**(e.g.parseGittensoryMentionCommand,runGittensoryAiReview,gittensoryFooter,resolveGittensorySelfRepoFullName,GittensoryMentionCommandtype,GITTENSORY_SITE_URL/GITTENSORY_MCP_PACKAGE_NAME/etc. env-var-name constants) — scripted find/replace + typecheck pass per directory, not hand-edited one by onePhase 7 — Docker/k8s manifests (full cutover)
Dockerfile(DATABASE_PATH=/data/gittensory.sqlitelive default, comments)review-enrichment/Dockerfilecommentk8s/miner-deployment.yaml— StatefulSet/label/service/secret names, image tagk8s/miner-secret.example.yamlsystemd/gittensory-miner*.service.examplefilenames + contentdocker-compose.ymlmounted-dir convention (./gittensory-config)Phase 8 — prose/doc cleanup + small workflow strings (do last, describes reality once everything above lands)
README.md(51 occurrences) — including fixing the ironic "Formerly Gittensory." line to actually match the bodypackages/gittensory-miner/README.md,DEPLOYMENT.md, all 14 files underpackages/gittensory-miner/docs/.github/workflows/publish-mcp.yml:85step name,ui-preview-deploy.yml:228,286Deployment descriptions,release-selfhost.yml's release-notes body/OCI label/Sentry project slug,orb-*-release*.yml's git tag messages,publish-*.yml's artifactname:fieldsBoundaries
CHANGELOG.mddirectly in any of these PRs — release-please generates it from commit messages.Resources