From 49eb96f4a305d5e21b3f6e103d529f51a229b209 Mon Sep 17 00:00:00 2001 From: JSONbored <49853598+JSONbored@users.noreply.github.com> Date: Sun, 12 Jul 2026 08:30:55 -0700 Subject: [PATCH] docs: rewrite marketing and docs copy for LoopOver Renames genuine brand-prose mentions of gittensory to LoopOver across the README, all 35 docs-site route pages, and the 4 community health files, while deliberately leaving every not-yet-renamed technical identifier untouched (npm package names, check-run names, the bot's GitHub login, the config-as-code filename, GITTENSORY_-prefixed env vars, and the gittensory.aethereal.dev domain) -- those are each tracked by their own separate rebrand issue and changing them here would describe a system that doesn't exist yet. gittensor (no trailing Y, the permanent Bittensor SN74 subnet brand) is untouched everywhere. Also fixes a real, pre-existing bug found along the way: three docs pages (GitHub App configuration, maintainer install/trust guide, maintainer self-hosting) advertised installing a "shared managed-beta" GitHub App at a literal install URL for the App that was fully deleted earlier this rebrand. Reframed as "currently paused, self-hosting is the only available path today, a new centrally hosted offering is planned for the future" rather than deleting the content outright, so it's ready to reactivate when that offering ships. Adds a "Formerly Gittensory" continuity note near the top of the README, and updates two existing tests whose assertions targeted the now-intentionally-removed dead install checklist / old brand string. --- CODE_OF_CONDUCT.md | 4 +- CONTRIBUTING.md | 8 +- README.md | 12 ++- SECURITY.md | 4 +- SUPPORT.md | 2 +- .../src/routes/docs.ai-summaries.tsx | 10 +- .../src/routes/docs.beta-onboarding.tsx | 10 +- .../src/routes/docs.branch-analysis.tsx | 6 +- .../src/routes/docs.github-app.tsx | 91 +++++++------------ .../src/routes/docs.gittensory-commands.tsx | 4 +- .../src/routes/docs.how-reviews-work.tsx | 12 +-- apps/gittensory-ui/src/routes/docs.index.tsx | 8 +- .../routes/docs.maintainer-install-trust.tsx | 40 ++++---- .../routes/docs.maintainer-self-hosting.tsx | 40 ++++---- .../src/routes/docs.maintainer-workflow.tsx | 8 +- .../src/routes/docs.mcp-clients.tsx | 10 +- .../src/routes/docs.miner-quickstart.tsx | 16 ++-- .../src/routes/docs.miner-workflow.tsx | 4 +- .../src/routes/docs.owner-checklist.tsx | 10 +- .../src/routes/docs.privacy-security.tsx | 10 +- .../src/routes/docs.quickstart.tsx | 10 +- .../src/routes/docs.scoreability.tsx | 6 +- .../routes/docs.self-hosting-ai-providers.tsx | 8 +- .../docs.self-hosting-backup-scaling.tsx | 8 +- .../docs.self-hosting-configuration.tsx | 24 ++--- .../routes/docs.self-hosting-docs-audit.tsx | 4 +- .../routes/docs.self-hosting-github-app.tsx | 42 ++++----- .../routes/docs.self-hosting-operations.tsx | 10 +- .../routes/docs.self-hosting-quickstart.tsx | 12 +-- .../src/routes/docs.self-hosting-rag.tsx | 8 +- .../docs.self-hosting-rees-analyzers.tsx | 8 +- .../src/routes/docs.self-hosting-rees.tsx | 8 +- .../docs.self-hosting-release-checklist.tsx | 4 +- .../src/routes/docs.self-hosting-releases.tsx | 8 +- .../src/routes/docs.self-hosting-security.tsx | 8 +- .../docs.self-hosting-troubleshooting.tsx | 8 +- .../src/routes/docs.troubleshooting.tsx | 10 +- apps/gittensory-ui/src/routes/docs.tsx | 8 +- apps/gittensory-ui/src/routes/docs.tuning.tsx | 16 ++-- .../src/routes/docs.upstream-drift.tsx | 14 +-- test/unit/docs-beta-onboarding.test.ts | 2 +- test/unit/docs-github-app.test.ts | 12 +-- 42 files changed, 263 insertions(+), 284 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 5ad96126c2..4ebad22658 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,6 +1,6 @@ # Code Of Conduct -Gittensory is maintained as a direct, technical, evidence-first project. We expect contributors, +LoopOver is maintained as a direct, technical, evidence-first project. We expect contributors, maintainers, and users to keep discussions focused on the work, the proof, and the production impact. @@ -23,7 +23,7 @@ impact. credit or farm Gittensor rewards. - Posting secrets, private contributor evidence, private maintainer evidence, wallet details, hotkeys, coldkeys, raw trust scores, or private rankings publicly. -- Misrepresenting Gittensory output as guaranteed compensation, guaranteed ranking, or financial +- Misrepresenting LoopOver output as guaranteed compensation, guaranteed ranking, or financial advice. - Evading review boundaries by reopening closed work without addressing the stated reason. - Attempting to bypass authentication, rate limits, GitHub App permissions, or Cloudflare Worker diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cea157b53c..47ac990c04 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing -Gittensory is a Cloudflare Workers, TanStack Start, GitHub App, and MCP project for +LoopOver is a Cloudflare Workers, TanStack Start, GitHub App, and MCP project for Gittensor OSS contribution intelligence. Contributions need to protect that scope: private signals stay private, public GitHub output stays sanitized, and production surfaces must stay wired to real backend behavior. @@ -11,7 +11,7 @@ closed without an extended review cycle. ## What Happens to Your PR (reviewed and acted on automatically) -gittensory reviews every PR with an automated gate (a GitHub App) and **acts on the outcome within a +LoopOver reviews every PR with an automated gate (a GitHub App) and **acts on the outcome within a few minutes** — there is no extended human back-and-forth. For a contributor PR (you are not the repo owner or an automation bot): @@ -31,7 +31,7 @@ the whole procedure step by step. ## How Reviews Work (timing, one-shot, and asking for review) -**Timing is typical, not an SLA.** When the gittensory maintainer agent is operating, most PRs are +**Timing is typical, not an SLA.** When the LoopOver maintainer agent is operating, most PRs are reviewed and auto-merged or auto-closed within **~1 hour of CI finishing**. When the agent is paused or under maintenance, manual review **typically takes 24–48 hours, depending on volume**. These are observations, not commitments or a service-level guarantee — reviews happen when they happen. @@ -305,7 +305,7 @@ Config as code (`.gittensory.yml`) — every repository setting is controllable - Precedence: `.gittensory.yml` `gate:` > `.gittensory.yml` `settings:` > dashboard repository settings > safe defaults; unset fields fall back to the next layer. The committed root `.gittensory.yml` is the worked example. Resolved once in `resolveRepositorySettings`, so the whole app honours the file. -- The config chooses **what** gittensory does (gate on/off, blockers, comments, labels, surface, panel +- The config chooses **what** LoopOver does (gate on/off, blockers, comments, labels, surface, panel content); it never changes **who** can be blocked — only confirmed Gittensor contributors are ever hard-blocked, and the footer's Gittensor attribution/register link always remains. diff --git a/README.md b/README.md index a22e3eabf7..9dfc632353 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -# Gittensory +# LoopOver + +_Formerly Gittensory._
-Gittensory is a deterministic control plane for Gittensor OSS contribution work. +LoopOver is a deterministic control plane for Gittensor OSS contribution work. It helps contributors plan cleaner work, helps maintainers review with less public noise, and keeps private scoring, wallet, hotkey, and reviewability context out of public GitHub output. @@ -18,7 +20,7 @@ It is not a Gittensor explorer, public leaderboard, reward-farming bot, wallet d ## Privacy Boundary -Gittensory keeps sensitive context private by default. +LoopOver keeps sensitive context private by default. - MCP local branch analysis sends metadata, not source contents. - Public GitHub comments never include wallet, hotkey, reward estimate, private ranking, raw trust score, or reviewability context. @@ -29,7 +31,7 @@ See [Privacy and security](https://gittensory.aethereal.dev/docs/privacy-securit ## Review Capabilities -Gittensory CI and gittensory review score, gate, and comment on pull requests. The review algorithm is open-source; operators tune behavior through per-repo settings and the `GITTENSORY_REVIEW_*` feature flags, every one of which ships **OFF** and is opt-in per repo. +LoopOver CI and LoopOver review score, gate, and comment on pull requests. The review algorithm is open-source; operators tune behavior through per-repo settings and the `GITTENSORY_REVIEW_*` feature flags, every one of which ships **OFF** and is opt-in per repo. - **Safety scan** — defangs untrusted PR title/body/diff (prompt-injection neutralization) before the AI reviewer reads them, and scans the diff for leaked secrets, surfacing a `secret_leak` blocker. - **CI + full-file grounding** — grounds the AI reviewer with the PR's finished CI status and the full post-change content of the changed files, so claims are verified against reality instead of predicted. @@ -65,7 +67,7 @@ See [Tuning your reviews](https://gittensory.aethereal.dev/docs/tuning) for the | Engine package | [`@jsonbored/gittensory-engine`](packages/gittensory-engine/README.md) — shared deterministic logic for the review stack and miner | | Miner package | [`@jsonbored/gittensory-miner`](packages/gittensory-miner/README.md) — local foundation CLI for the autonomous miner runtime | | API | [API browser](https://gittensory.aethereal.dev/api) and [OpenAPI JSON](https://gittensory-api.aethereal.dev/openapi.json) | -| GitHub App | [Install](https://github.com/apps/gittensory/installations/new) and [setup docs](https://gittensory.aethereal.dev/docs/github-app) | +| GitHub App | [Setup docs](https://gittensory.aethereal.dev/docs/github-app) — self-hosting is the only currently available path | | Browser extension | [Extension page](https://gittensory.aethereal.dev/extension) | ## MCP Install diff --git a/SECURITY.md b/SECURITY.md index f6e256fc61..5173947c2b 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -11,8 +11,8 @@ include only the minimum reproduction details needed to verify the issue. ## Privacy Posture -- Gittensory does not store user GitHub PATs. -- Browser auth uses GitHub OAuth and an HttpOnly Gittensory session cookie. CLI/MCP auth uses the +- LoopOver does not store user GitHub PATs. +- Browser auth uses GitHub OAuth and an HttpOnly LoopOver session cookie. CLI/MCP auth uses the existing GitHub Device Flow and bearer session token. - Public PR comments are sanitized and only posted for officially confirmed Gittensor miners when the installed repository settings allow them. diff --git a/SUPPORT.md b/SUPPORT.md index bdb999c8b7..54e1503dcd 100644 --- a/SUPPORT.md +++ b/SUPPORT.md @@ -27,6 +27,6 @@ For conduct issues, use the expectations in `CODE_OF_CONDUCT.md`. ## Expected Response Posture -Gittensory is maintained as a Cloudflare Worker, frontend, GitHub App, and agent-integration +LoopOver is maintained as a Cloudflare Worker, frontend, GitHub App, and agent-integration project. Support should keep the same boundaries as the product: no public wallet data, no raw trust scores, no public reward estimates, and no source-code upload by default. diff --git a/apps/gittensory-ui/src/routes/docs.ai-summaries.tsx b/apps/gittensory-ui/src/routes/docs.ai-summaries.tsx index 7b49b1b6af..706bd40681 100644 --- a/apps/gittensory-ui/src/routes/docs.ai-summaries.tsx +++ b/apps/gittensory-ui/src/routes/docs.ai-summaries.tsx @@ -6,17 +6,17 @@ import { Callout } from "@/components/site/primitives"; export const Route = createFileRoute("/docs/ai-summaries")({ head: () => ({ meta: [ - { title: "AI summaries — Gittensory docs" }, + { title: "AI summaries — LoopOver docs" }, { name: "description", content: - "How Gittensory uses AI: only over deterministic signals, never as a source of truth, with strict public/private boundaries.", + "How LoopOver uses AI: only over deterministic signals, never as a source of truth, with strict public/private boundaries.", }, - { property: "og:title", content: "AI summaries — Gittensory docs" }, + { property: "og:title", content: "AI summaries — LoopOver docs" }, { property: "og:description", content: - "How Gittensory uses AI: only over deterministic signals, never as a source of truth, with strict public/private boundaries.", + "How LoopOver uses AI: only over deterministic signals, never as a source of truth, with strict public/private boundaries.", }, { property: "og:url", content: "/docs/ai-summaries" }, ], @@ -34,7 +34,7 @@ function AiSummariesDoc() { >
- Gittensory is deterministic. When AI summaries are enabled, they sit
+ LoopOver is deterministic. When AI summaries are enabled, they sit
on top of the structured response — they never replace it, never add facts that
aren't in the response, and never change ranked actions, blockers, or scoreability
numbers.
diff --git a/apps/gittensory-ui/src/routes/docs.beta-onboarding.tsx b/apps/gittensory-ui/src/routes/docs.beta-onboarding.tsx
index f55110d058..a27e4540f3 100644
--- a/apps/gittensory-ui/src/routes/docs.beta-onboarding.tsx
+++ b/apps/gittensory-ui/src/routes/docs.beta-onboarding.tsx
@@ -6,13 +6,13 @@ import { CodeBlock, Callout } from "@/components/site/primitives";
export const Route = createFileRoute("/docs/beta-onboarding")({
head: () => ({
meta: [
- { title: "Beta onboarding — Gittensory docs" },
+ { title: "Beta onboarding — LoopOver docs" },
{
name: "description",
content:
"Role-based beta paths for miners, maintainers, repo owners, and operators — first useful action, not just API reference.",
},
- { property: "og:title", content: "Beta onboarding — Gittensory docs" },
+ { property: "og:title", content: "Beta onboarding — LoopOver docs" },
{
property: "og:description",
content:
@@ -30,10 +30,10 @@ function BetaOnboarding() {
- Once installed, a Gittensory GitHub App reviews every pull request on the
- repos you select — whether that's your own self-hosted App (recommended; see{" "}
- self-hosting setup) or, for private
- managed-beta operators, the shared gittensory App below. Each review produces
- two surfaces: the Gittensory Orb Review Agent check run (and the advisory{" "}
+ Once installed, a LoopOver GitHub App reviews every pull request on the
+ repos you select. Self-hosting your own App (see{" "}
+ self-hosting setup) is the only currently
+ available path. Each review produces two surfaces: the{" "}
+ Gittensory Orb Review Agent check run (and the advisory{" "}
Gittensory Context check), and a single review comment posted by{" "}
gittensory[bot] that updates in place as the PR evolves. The review behavior
- below this page's Install section (PR panel, checks, gate modes, config-as-code) applies
- identically whichever App you install — but the App's{" "}
- install steps and required permissions differ, since a self-hosted App needs write
- access the shared App does not.
+ below this page's Install section (PR panel, checks, gate modes, config-as-code) is the same
+ regardless of which connection mode your self-hosted App uses.
- Self-hosting is the recommended, default path. Run the review stack + Self-hosting is the only currently available path. Run the review stack yourself, then install your own GitHub App on exactly the repos you choose using the self-host setup wizard. The direct App's required permissions and events are covered in{" "} GitHub App and Orb — use that page's - checklist, not the one below, for a self-hosted install. -
-
- The shared gittensory App is private / managed-beta only — it
- is not open for general public install. If you've been invited into the managed beta, start
- from{" "}
-
- the GitHub App install flow
-
- , then choose only the repositories you want Gittensory to see.
+ checklist for a self-hosted install.
Metadata: read, Pull requests: read, and{" "}
- Issues: write. Enable Checks: write when Context or review-agent
- check runs are enabled.
- issues, issue_comment,{" "}
- pull_request, and repository.
- Pull requests: write (not read) and Checks: write is mandatory,
- not optional — see GitHub App and Orb for
- the direct App's exact permission and event list.
+ - Gittensory is advisory-first. Public comments, labels, the Context check, and the - review-agent check are controlled per repo. Missing issue links, non-Gittensor contributors, - busy queues, and weak overlap signals do not block merge by default. + LoopOver is advisory-first. Public comments, labels, the Context check, and the review-agent + check are controlled per repo. Missing issue links, non-Gittensor contributors, busy queues, + and weak overlap signals do not block merge by default.
- The PR panel is the review comment the gittensory app posts on each pull request. It is one
+ The PR panel is the review comment the LoopOver app posts on each pull request. It is one
sticky comment authored by gittensory[bot] that updates in place — the app
edits the same comment instead of adding new ones. It shows a public-safe readiness score,
concrete signal evidence, and short actions for linked issues, related work, review load,
@@ -144,7 +117,7 @@ GET /v1/installations/:id/repair`}
- The gittensory app publishes its review as check runs.{" "}
+ The LoopOver app publishes its review as check runs.{" "}
Gittensory Orb Review Agent is the gate result, controlled by{" "}
reviewCheckMode (required / visible /{" "}
disabled). Gittensory Context is the separate advisory
@@ -168,7 +141,7 @@ GET /v1/installations/:id/repair`}
- The deterministic gate is the heart of the gittensory review. Its master switch is{" "}
+ The deterministic gate is the heart of the LoopOver review. Its master switch is{" "}
reviewCheckMode (required / visible /{" "}
disabled); each dimension then refines an already-enabled gate with a tri-state
mode — off (not evaluated), advisory (surfaced, never blocks), or{" "}
@@ -256,7 +229,7 @@ GET /v1/installations/:id/repair`}
Every setting can be committed to .gittensory.yml at the repo root instead of,
or layered over, the dashboard. Precedence is .gittensory.yml > repository
settings > safe defaults; an unset field falls back to the next layer. It only chooses{" "}
- what Gittensory does — a configured blocker gates every author identically,
+ what LoopOver does — a configured blocker gates every author identically,
regardless of config.
- The per-repo settings above choose what Gittensory does on each PR. The next - section covers the deployment-wide capability switches that turn whole review features on or - off. + The per-repo settings above choose what LoopOver does on each PR. The next section + covers the deployment-wide capability switches that turn whole review features on or off.
If the install route changes, check the deployed GITHUB_APP_SLUG before
- publishing setup copy. Self-hosted deployments use whatever slug you chose during setup; for
- the shared managed-beta app the expected slug is gittensory.
+ publishing setup copy. Self-hosted deployments use whatever slug you chose during setup.
@@ -400,7 +371,7 @@ GITTENSORY_REVIEW_REPOS="JSONbored/gittensory"`}
- When a pull request opens or updates, gittensory CI runs a review in two + When a pull request opens or updates, LoopOver CI runs a review in two layers and reports the result in one place:
- Self-hosting is the recommended, default path. Start from{" "} + Self-hosting is the only currently available path. Start from{" "} self-hosting setup — the direct App's required permissions and events are covered in{" "} - GitHub App and Orb, not the checklist below. - Either way, keep the first rollout narrow until the repo owner has verified permissions, - webhook delivery, and public copy. -
-- The checklist below is for the shared private / managed-beta only App — see{" "} - GitHub App configuration for the install flow. + GitHub App and Orb. Keep the first rollout + narrow until the repo owner has verified permissions, webhook delivery, and public copy.
+Metadata: read, Pull requests: read, and{" "}
Issues: write. Add Checks: write only when Context or
@@ -73,7 +75,7 @@ function MaintainerInstallTrust() {
Pull requests: write (not read) and{" "}
- Checks: write is mandatory, not optional — this checklist's permissions are
+ Checks: write is mandatory, not optional — the numbered checklist above is
scoped to the shared managed-beta App only.
If the repo enables Gittensory Orb Review Agent, document which blockers - are enforced and why. Otherwise, treat Gittensory output as reviewer context only. + are enforced and why. Otherwise, treat LoopOver output as reviewer context only.
-- Maintainers should request changes or close PRs that misuse Gittensory output. The tool is a + Maintainers should request changes or close PRs that misuse LoopOver output. The tool is a contribution operating layer, not a guarantee that work deserves merge.
+ gittensory App
- described in GitHub App configuration — a repo installed
- there is reviewed by gittensory's own cloud Worker and its own database.
- "Self-host" means your own container from{" "}
+ described in GitHub App configuration — it previously
+ accepted new installs and is currently paused while self-hosted Orb is the primary way to
+ run LoopOver. A new centrally hosted offering is planned for the future. "Switching from
+ hosted to self-host" below still applies to any repo already installed on the hosted App;
+ "switching back to hosted" isn't possible until hosted installs reopen, but the steps are
+ kept here for when they do.
+
+ A repo installed on the hosted App is reviewed by LoopOver's own cloud Worker and its + own database. "Self-host" means your own container from{" "} Quickstart, with its own GitHub App (or brokered Orb enrollment) and its own data store. There is{" "} - no automated migration path between the two today — moving a repo is a - manual App swap plus re-creating whatever settings you had, not a toggle. + no automated migration path between the two — moving a repo is a manual App + swap plus re-creating whatever settings you had, not a toggle.
src/selfhost/setup-wizard.ts always mints a distinct App tied to your
instance's own webhook URL.
- Hosted-side settings live in gittensory's own cloud database, keyed by repo full name —{" "}
+ Hosted-side settings live in LoopOver's own cloud database, keyed by repo full name —{" "}
resolveRepositorySettings (src/settings/repository-settings.ts)
reads them from env.DB, which is a completely different database instance than
your self-host container's. A self-host instance has no access to, and no import path
@@ -339,7 +346,7 @@ function MaintainerSelfHosting() {
App starts reviewing, with nothing to re-enter.
- The reverse migration has the same shape and the same gap: uninstall your self-host App from
- the repo, install the shared hosted App (if you have managed-beta access — see{" "}
+ Hosted installs are currently paused — this direction isn't possible until the shared App
+ reopens (see the callout above). Once it does, the reverse migration has the same shape and
+ the same gap: uninstall your self-host App from the repo, install the shared hosted App (see{" "}
GitHub App configuration), and re-create any DB-backed
settings on the hosted side. These commands print config only. They do not mutate your local client files.
- Gittensory is copilot-only. It ranks and explains your options and drafts public-safe PR
+ LoopOver is copilot-only. It ranks and explains your options and drafts public-safe PR
packets. It does not edit code, open PRs, or post comments for you, it makes no earnings
promises, and it never predicts a public number. Every command below also accepts{" "}
The MCP is published as
- Gittensory is quiet by default: it installs without posting comments or
+ LoopOver is quiet by default: it installs without posting comments or
adding labels until you turn those surfaces on. This checklist is what to confirm first.
Everything owner-only runs through the private API or the{" "}
owner console; readiness is reported as bands and statuses,
@@ -56,7 +56,7 @@ GET /v1/repos/:owner/:repo/gittensor-config-recommendation`}
- Confirm the repo is in the current Gittensory registry. If it is not, that is the first{" "}
+ Confirm the repo is in the current LoopOver registry. If it is not, that is the first{" "}
- Gittensory's review engine is built so the{" "}
+ LoopOver's review engine is built so the{" "}
logic is public but the dial settings are not. The deterministic gate, the
scoring signals, the slop detector, the grounding/RAG context builders, and the comment
renderer all live in the open source tree — anyone can read exactly how a verdict is
diff --git a/apps/gittensory-ui/src/routes/docs.quickstart.tsx b/apps/gittensory-ui/src/routes/docs.quickstart.tsx
index ac49892712..db4eb88d08 100644
--- a/apps/gittensory-ui/src/routes/docs.quickstart.tsx
+++ b/apps/gittensory-ui/src/routes/docs.quickstart.tsx
@@ -6,13 +6,13 @@ import { CodeBlock, Callout } from "@/components/site/primitives";
export const Route = createFileRoute("/docs/quickstart")({
head: () => ({
meta: [
- { title: "Quickstart — Gittensory docs" },
+ { title: "Quickstart — LoopOver docs" },
{
name: "description",
content:
"Install @jsonbored/gittensory-mcp, sign in with GitHub Device Flow, and analyze your branch in two commands.",
},
- { property: "og:title", content: "Quickstart — Gittensory docs" },
+ { property: "og:title", content: "Quickstart — LoopOver docs" },
{
property: "og:description",
content:
@@ -47,8 +47,8 @@ npm i -g @jsonbored/gittensory-mcp@latest`}
- Gittensory never asks for a Personal Access Token. The CLI walks you through GitHub's Device
- Flow and exchanges the result for a Gittensory session token.
+ LoopOver never asks for a Personal Access Token. The CLI walks you through GitHub's Device
+ Flow and exchanges the result for a LoopOver session token.
diff --git a/apps/gittensory-ui/src/routes/docs.self-hosting-ai-providers.tsx b/apps/gittensory-ui/src/routes/docs.self-hosting-ai-providers.tsx
index 80ffb75527..a9a5d5e5c8 100644
--- a/apps/gittensory-ui/src/routes/docs.self-hosting-ai-providers.tsx
+++ b/apps/gittensory-ui/src/routes/docs.self-hosting-ai-providers.tsx
@@ -6,17 +6,17 @@ import { Callout, CodeBlock, FeatureRow } from "@/components/site/primitives";
export const Route = createFileRoute("/docs/self-hosting-ai-providers")({
head: () => ({
meta: [
- { title: "Self-host AI providers — Gittensory docs" },
+ { title: "Self-host AI providers — LoopOver docs" },
{
name: "description",
content:
- "Configure AI providers for self-hosted Gittensory reviews, including Anthropic, OpenAI-compatible endpoints, Ollama, Claude Code, and Codex.",
+ "Configure AI providers for self-hosted LoopOver reviews, including Anthropic, OpenAI-compatible endpoints, Ollama, Claude Code, and Codex.",
},
- { property: "og:title", content: "Self-host AI providers — Gittensory docs" },
+ { property: "og:title", content: "Self-host AI providers — LoopOver docs" },
{
property: "og:description",
content:
- "Configure AI providers for self-hosted Gittensory reviews, including Anthropic, OpenAI-compatible endpoints, Ollama, Claude Code, and Codex.",
+ "Configure AI providers for self-hosted LoopOver reviews, including Anthropic, OpenAI-compatible endpoints, Ollama, Claude Code, and Codex.",
},
{ property: "og:url", content: "/docs/self-hosting-ai-providers" },
],
diff --git a/apps/gittensory-ui/src/routes/docs.self-hosting-backup-scaling.tsx b/apps/gittensory-ui/src/routes/docs.self-hosting-backup-scaling.tsx
index 34b90eb132..3eff2db4d3 100644
--- a/apps/gittensory-ui/src/routes/docs.self-hosting-backup-scaling.tsx
+++ b/apps/gittensory-ui/src/routes/docs.self-hosting-backup-scaling.tsx
@@ -6,17 +6,17 @@ import { Callout, CodeBlock, FeatureRow } from "@/components/site/primitives";
export const Route = createFileRoute("/docs/self-hosting-backup-scaling")({
head: () => ({
meta: [
- { title: "Self-host backup and scaling — Gittensory docs" },
+ { title: "Self-host backup and scaling — LoopOver docs" },
{
name: "description",
content:
- "Back up and scale the self-hosted Gittensory review service with SQLite, Litestream, Postgres, Redis, and restore checks.",
+ "Back up and scale the self-hosted LoopOver review service with SQLite, Litestream, Postgres, Redis, and restore checks.",
},
- { property: "og:title", content: "Self-host backup and scaling — Gittensory docs" },
+ { property: "og:title", content: "Self-host backup and scaling — LoopOver docs" },
{
property: "og:description",
content:
- "Back up and scale the self-hosted Gittensory review service with SQLite, Litestream, Postgres, Redis, and restore checks.",
+ "Back up and scale the self-hosted LoopOver review service with SQLite, Litestream, Postgres, Redis, and restore checks.",
},
{ property: "og:url", content: "/docs/self-hosting-backup-scaling" },
],
diff --git a/apps/gittensory-ui/src/routes/docs.self-hosting-configuration.tsx b/apps/gittensory-ui/src/routes/docs.self-hosting-configuration.tsx
index 4a277c5db9..a1425e55b7 100644
--- a/apps/gittensory-ui/src/routes/docs.self-hosting-configuration.tsx
+++ b/apps/gittensory-ui/src/routes/docs.self-hosting-configuration.tsx
@@ -7,13 +7,13 @@ import { SELFHOST_ENV_REFERENCE_MARKDOWN } from "@/lib/selfhost-env-reference";
export const Route = createFileRoute("/docs/self-hosting-configuration")({
head: () => ({
meta: [
- { title: "Self-host configuration — Gittensory docs" },
+ { title: "Self-host configuration — LoopOver docs" },
{
name: "description",
content:
"Configure the self-host review service: env vars, private repo config, feature flags, review modes, and safe defaults.",
},
- { property: "og:title", content: "Self-host configuration — Gittensory docs" },
+ { property: "og:title", content: "Self-host configuration — LoopOver docs" },
{
property: "og:description",
content:
@@ -533,17 +533,17 @@ features:
/>
For a repo that has never been configured, the default is
- Lets a self-hosted maintainer point Gittensory at their own structured registry (a
- subnet/plugin/package catalog, for example) without a Gittensory code change — reviewing
+ Lets a self-hosted maintainer point LoopOver at their own structured registry (a
+ subnet/plugin/package catalog, for example) without a LoopOver code change — reviewing
additions to a data file the same way it reviews code. Unconfigured by default; uncomment
and set at least
- Lets gittensory open a pull request that refreshes this repo's own{" "}
-
- .gittensory.yml again carries over for free since
it travels with the repo; nothing else does. Your self-host instance's data volumes are
diff --git a/apps/gittensory-ui/src/routes/docs.maintainer-workflow.tsx b/apps/gittensory-ui/src/routes/docs.maintainer-workflow.tsx
index 0000ce2f8a..06a12973b4 100644
--- a/apps/gittensory-ui/src/routes/docs.maintainer-workflow.tsx
+++ b/apps/gittensory-ui/src/routes/docs.maintainer-workflow.tsx
@@ -8,17 +8,17 @@ import { MAINTAINER_COMMAND_LIST, PUBLIC_COMMAND_LIST } from "@/lib/command-refe
export const Route = createFileRoute("/docs/maintainer-workflow")({
head: () => ({
meta: [
- { title: "Maintainer workflow — Gittensory docs" },
+ { title: "Maintainer workflow — LoopOver docs" },
{
name: "description",
content:
- "How to use Gittensory in a repo: confirmed-miner labels, sticky sanitized comments, on-demand @gittensory commands.",
+ "How to use LoopOver in a repo: confirmed-miner labels, sticky sanitized comments, on-demand @gittensory commands.",
},
- { property: "og:title", content: "Maintainer workflow — Gittensory docs" },
+ { property: "og:title", content: "Maintainer workflow — LoopOver docs" },
{
property: "og:description",
content:
- "How to use Gittensory in a repo: confirmed-miner labels, sticky sanitized comments, on-demand @gittensory commands.",
+ "How to use LoopOver in a repo: confirmed-miner labels, sticky sanitized comments, on-demand @gittensory commands.",
},
{ property: "og:url", content: "/docs/maintainer-workflow" },
],
diff --git a/apps/gittensory-ui/src/routes/docs.mcp-clients.tsx b/apps/gittensory-ui/src/routes/docs.mcp-clients.tsx
index 587873c7a4..d68c26fe9c 100644
--- a/apps/gittensory-ui/src/routes/docs.mcp-clients.tsx
+++ b/apps/gittensory-ui/src/routes/docs.mcp-clients.tsx
@@ -6,17 +6,17 @@ import { CodeBlock, Callout } from "@/components/site/primitives";
export const Route = createFileRoute("/docs/mcp-clients")({
head: () => ({
meta: [
- { title: "MCP client setup — Gittensory docs" },
+ { title: "MCP client setup — LoopOver docs" },
{
name: "description",
content:
- "Wire the Gittensory MCP into Codex, Claude Desktop, Cursor, or any MCP-aware client over stdio or remote.",
+ "Wire the LoopOver MCP into Codex, Claude Desktop, Cursor, or any MCP-aware client over stdio or remote.",
},
- { property: "og:title", content: "MCP client setup — Gittensory docs" },
+ { property: "og:title", content: "MCP client setup — LoopOver docs" },
{
property: "og:description",
content:
- "Wire the Gittensory MCP into Codex, Claude Desktop, Cursor, or any MCP-aware client over stdio or remote.",
+ "Wire the LoopOver MCP into Codex, Claude Desktop, Cursor, or any MCP-aware client over stdio or remote.",
},
{ property: "og:url", content: "/docs/mcp-clients" },
],
@@ -30,7 +30,7 @@ function McpClients() {
Generate config
--json for machine-readable output, and your source never leaves your machine —
- only branch metadata (changed file paths, commit messages) is sent to authenticated
- Gittensory MCP/API responses.
+ only branch metadata (changed file paths, commit messages) is sent to authenticated LoopOver
+ MCP/API responses.
0. Install and sign in (every lane)
@jsonbored/gittensory-mcp. Run it with npx{" "}
- or install it globally, then authenticate with GitHub Device Flow — Gittensory never asks
- for a Personal Access Token.
+ or install it globally, then authenticate with GitHub Device Flow — LoopOver never asks for
+ a Personal Access Token.
GITTENSORY_UPLOAD_SOURCE=false) and
local absolute paths are redacted from anything that leaves your machine. Log out anytime
with gittensory-mcp logout.
diff --git a/apps/gittensory-ui/src/routes/docs.miner-workflow.tsx b/apps/gittensory-ui/src/routes/docs.miner-workflow.tsx
index c33ca334c2..75e35f5dbc 100644
--- a/apps/gittensory-ui/src/routes/docs.miner-workflow.tsx
+++ b/apps/gittensory-ui/src/routes/docs.miner-workflow.tsx
@@ -7,12 +7,12 @@ import { WorkflowMirror, type MirroredStep } from "@/components/site/workflow-mi
export const Route = createFileRoute("/docs/miner-workflow")({
head: () => ({
meta: [
- { title: "Miner workflow — Gittensory docs" },
+ { title: "Miner workflow — LoopOver docs" },
{
name: "description",
content: "Plan → analyze → preflight → packet. The four-step miner loop with the MCP CLI.",
},
- { property: "og:title", content: "Miner workflow — Gittensory docs" },
+ { property: "og:title", content: "Miner workflow — LoopOver docs" },
{
property: "og:description",
content: "Plan → analyze → preflight → packet. The four-step miner loop with the MCP CLI.",
diff --git a/apps/gittensory-ui/src/routes/docs.owner-checklist.tsx b/apps/gittensory-ui/src/routes/docs.owner-checklist.tsx
index 36dbf17255..2542ca2295 100644
--- a/apps/gittensory-ui/src/routes/docs.owner-checklist.tsx
+++ b/apps/gittensory-ui/src/routes/docs.owner-checklist.tsx
@@ -6,13 +6,13 @@ import { CodeBlock, Callout } from "@/components/site/primitives";
export const Route = createFileRoute("/docs/owner-checklist")({
head: () => ({
meta: [
- { title: "Repo-owner onboarding checklist — Gittensory docs" },
+ { title: "Repo-owner onboarding checklist — LoopOver docs" },
{
name: "description",
content:
"A pre-flight checklist for repo owners: registration, config quality, labels, issue quality, contribution lanes, validation, maintainer capacity, and the public/private boundary — with honest tradeoffs.",
},
- { property: "og:title", content: "Repo-owner onboarding checklist — Gittensory docs" },
+ { property: "og:title", content: "Repo-owner onboarding checklist — LoopOver docs" },
{
property: "og:description",
content:
@@ -30,10 +30,10 @@ function OwnerChecklist() {
1. Repository registration
blocker in the readiness report and nothing else applies yet. Register and
review from the owner console.
Open algorithm, private tuning
2. Sign in (GitHub Device Flow)
gittensory-mcp logout.
The seven scenarios
disabled, remove Gittensory Orb Review Agent{" "}
- from this repo's branch-protection or ruleset required-status-checks list — Gittensory
+ from this repo's branch-protection or ruleset required-status-checks list — LoopOver
cannot do this on your behalf, and leaving it required with nothing to satisfy it means
GitHub shows a pending status forever. Keep your real CI/Codecov/security checks required;
- this setting only ever affects Gittensory's own check-run.
+ this setting only ever affects LoopOver's own check-run.
disabled; an
already-configured repo keeps its current effective behavior. Self-hosters running
high-volume autonomous review should prefer visible or disabled{" "}
- over required — Gittensory's own merge/close decisions never depend on
- this check either way.
+ over required — LoopOver's own merge/close decisions never depend on this
+ check either way.
Other gate-only fields
@@ -551,7 +551,7 @@ features:
gate.cla — sub-object for the CLA gate (gate.claMode, documented
on Tuning your reviews): consentPhrase (a
- case-insensitive substring gittensory looks for in the PR description),{" "}
+ case-insensitive substring LoopOver looks for in the PR description),{" "}
checkRunName (an existing CLA-bot check-run name that also satisfies
consent), and checkRunAppSlug (the trusted App slug required to have produced
that check-run, so a contributor-controlled same-name check can't satisfy a blocking
@@ -666,8 +666,8 @@ features:
contentLane
entryFileGlob and collectionField (both required
— the whole block is ignored with a warning if either is missing).
@@ -687,9 +687,9 @@ features:
repoDocGeneration
AGENTS.md/CLAUDE.md (and, additively, a skill file) on a schedule
- — never a direct commit. Disabled by default: an unconfigured repo, or an explicit{" "}
+ Lets LoopOver open a pull request that refreshes this repo's own AGENTS.md
+ /CLAUDE.md (and, additively, a skill file) on a schedule — never a direct
+ commit. Disabled by default: an unconfigured repo, or an explicit{" "}
enabled: false, means no repo-doc refresh ever runs for it.
ORB_ANONYMIZE=true), not unconditionally — an operator can set{" "}
ORB_ANONYMIZE=false to export raw repo/PR names instead. There's no scenario
- where gittensory's own hosted collector needs raw names; the toggle exists for an operator
+ where LoopOver's own hosted collector needs raw names; the toggle exists for an operator
running their own collector (see ORB_COLLECTOR_URL below) who
wants readable identifiers in their own infrastructure. Leave this at the default unless you
control the collector end.
ORB_COLLECTOR_URL overrides the export endpoint — default gittensory's hosted
+ ORB_COLLECTOR_URL overrides the export endpoint — default LoopOver's hosted
collector, or point it at your own private collector if you're aggregating telemetry
- yourself instead of sending it to gittensory. ORB_COLLECTOR_TOKEN is the bearer
- credential for that private collector; leave it unset when using gittensory's own hosted
+ yourself instead of sending it to LoopOver. ORB_COLLECTOR_TOKEN is the bearer
+ credential for that private collector; leave it unset when using LoopOver's own hosted
collector, which accepts unauthenticated, rate-limited, aggregate-only exports.
Minimum broker safeguards before a public rollout
diff --git a/apps/gittensory-ui/src/routes/docs.self-hosting-operations.tsx b/apps/gittensory-ui/src/routes/docs.self-hosting-operations.tsx
index b4c87f3e2c..3991255243 100644
--- a/apps/gittensory-ui/src/routes/docs.self-hosting-operations.tsx
+++ b/apps/gittensory-ui/src/routes/docs.self-hosting-operations.tsx
@@ -6,17 +6,17 @@ import { Callout, CodeBlock, FeatureRow } from "@/components/site/primitives";
export const Route = createFileRoute("/docs/self-hosting-operations")({
head: () => ({
meta: [
- { title: "Self-host operations — Gittensory docs" },
+ { title: "Self-host operations — LoopOver docs" },
{
name: "description",
content:
- "Operate the self-hosted Gittensory review service: readiness, metrics, logs, dashboards, jobs, queues, routine checks, safe updates/rollback, and clean uninstall/decommissioning.",
+ "Operate the self-hosted LoopOver review service: readiness, metrics, logs, dashboards, jobs, queues, routine checks, safe updates/rollback, and clean uninstall/decommissioning.",
},
- { property: "og:title", content: "Self-host operations — Gittensory docs" },
+ { property: "og:title", content: "Self-host operations — LoopOver docs" },
{
property: "og:description",
content:
- "Operate the self-hosted Gittensory review service: readiness, metrics, logs, dashboards, jobs, queues, routine checks, safe updates/rollback, and clean uninstall/decommissioning.",
+ "Operate the self-hosted LoopOver review service: readiness, metrics, logs, dashboards, jobs, queues, routine checks, safe updates/rollback, and clean uninstall/decommissioning.",
},
{ property: "og:url", content: "/docs/self-hosting-operations" },
],
@@ -1143,7 +1143,7 @@ docker inspect --format '{{.Config.Image}}' "$(docker compose ps -q gittensory)"
no self-service revocation endpoint today — the "Minimum broker
safeguards" checklist on that page lists a revocation path as a prerequisite for a
public brokered rollout that has not shipped yet. An enrollment record (
- orb_enrollments) lives in gittensory's own central database, not your
+ orb_enrollments) lives in LoopOver's own central database, not your
container, and nothing in this codebase writes a revoked_at value to it outside
of tests. Practical steps until that exists:
Sign in to the control panel (ADMIN_GITHUB_LOGINS must include your GitHub
- login), open the repo workspace, preview what Gittensory would have flagged on recent PRs,
+ login), open the repo workspace, preview what LoopOver would have flagged on recent PRs,
then enable advisory mode in one click — the same patch as:
- Your Gittensory session expired. Run gittensory-mcp login again. Static bearer
+ Your LoopOver session expired. Run gittensory-mcp login again. Static bearer
tokens are not user-facing.
- The site continuously monitors the Gittensory API and surfaces problems through a banner - under the header and a single deduped toast with a Recheck button. + The site continuously monitors the LoopOver API and surfaces problems through a banner under + the header and a single deduped toast with a Recheck button.
diff --git a/apps/gittensory-ui/src/routes/docs.tsx b/apps/gittensory-ui/src/routes/docs.tsx
index 4bd1cfb638..00ad6a3e2f 100644
--- a/apps/gittensory-ui/src/routes/docs.tsx
+++ b/apps/gittensory-ui/src/routes/docs.tsx
@@ -6,17 +6,17 @@ import { DocsToc } from "@/components/site/docs-toc";
export const Route = createFileRoute("/docs")({
head: () => ({
meta: [
- { title: "Docs — Gittensory" },
+ { title: "Docs — LoopOver" },
{
name: "description",
content:
- "Documentation for Gittensory: install, MCP client setup, miner/maintainer workflows, GitHub App, branch analysis, scoreability, drift, privacy.",
+ "Documentation for LoopOver: install, MCP client setup, miner/maintainer workflows, GitHub App, branch analysis, scoreability, drift, privacy.",
},
- { property: "og:title", content: "Docs — Gittensory" },
+ { property: "og:title", content: "Docs — LoopOver" },
{
property: "og:description",
content:
- "Documentation for Gittensory: install, MCP client setup, miner/maintainer workflows, GitHub App, branch analysis, scoreability, drift, privacy.",
+ "Documentation for LoopOver: install, MCP client setup, miner/maintainer workflows, GitHub App, branch analysis, scoreability, drift, privacy.",
},
],
}),
diff --git a/apps/gittensory-ui/src/routes/docs.tuning.tsx b/apps/gittensory-ui/src/routes/docs.tuning.tsx
index caa2f1c454..8193d607fa 100644
--- a/apps/gittensory-ui/src/routes/docs.tuning.tsx
+++ b/apps/gittensory-ui/src/routes/docs.tuning.tsx
@@ -6,17 +6,17 @@ import { CodeBlock, Callout } from "@/components/site/primitives";
export const Route = createFileRoute("/docs/tuning")({
head: () => ({
meta: [
- { title: "Tuning your reviews — Gittensory docs" },
+ { title: "Tuning your reviews — LoopOver docs" },
{
name: "description",
content:
- "Configure Gittensory CI and Gittensory review: gate modes, score thresholds, guardrails, and feature flags via .gittensory.yml and repo settings.",
+ "Configure LoopOver CI and LoopOver review: gate modes, score thresholds, guardrails, and feature flags via .gittensory.yml and repo settings.",
},
- { property: "og:title", content: "Tuning your reviews — Gittensory docs" },
+ { property: "og:title", content: "Tuning your reviews — LoopOver docs" },
{
property: "og:description",
content:
- "Configure Gittensory CI and Gittensory review: gate modes, score thresholds, guardrails, and feature flags via .gittensory.yml and repo settings.",
+ "Configure LoopOver CI and LoopOver review: gate modes, score thresholds, guardrails, and feature flags via .gittensory.yml and repo settings.",
},
{ property: "og:url", content: "/docs/tuning" },
],
@@ -30,12 +30,12 @@ function Tuning() {
- Gittensory review is the engine that scores, gates, and comments on your
- pull requests. You shape its behavior in two places, and you never have to touch the review
+ LoopOver review is the engine that scores, gates, and comments on your pull
+ requests. You shape its behavior in two places, and you never have to touch the review
algorithm itself:
The friendly
- Gittensory stores versioned snapshots of the Gittensor source and ruleset from{" "}
+ LoopOver stores versioned snapshots of the Gittensor source and ruleset from{" "}
entrius/gittensor:test
@@ -44,7 +44,7 @@ function UpstreamDrift() {
How configuration fits together
@@ -93,7 +93,7 @@ function Tuning() {
gate: block in .gittensory.yml is a typed alias for
the gate-related fields and wins over the generic settings: block for those
- same fields. Gittensory looks for the manifest at the first match of{" "}
+ same fields. LoopOver looks for the manifest at the first match of{" "}
.gittensory.yml → .github/gittensory.yml →{" "}
.gittensory.json → .github/gittensory.json.
How drift works
entrius/gittensor is the upstream
- project Gittensory analyzes. Gittensory is{" "}
+ project LoopOver analyzes. LoopOver is{" "}
jsonbored/gittensory
{" "}
diff --git a/test/unit/docs-beta-onboarding.test.ts b/test/unit/docs-beta-onboarding.test.ts
index 08b23e7a1d..eaca184834 100644
--- a/test/unit/docs-beta-onboarding.test.ts
+++ b/test/unit/docs-beta-onboarding.test.ts
@@ -24,7 +24,7 @@ describe("docs beta onboarding page", () => {
expect(source).toMatch(/branch metadata/);
expect(source).toMatch(/changed file paths/);
expect(source).toMatch(/commit messages/);
- expect(normalizedSource).toMatch(/authenticated Gittensory MCP\/API responses/);
+ expect(normalizedSource).toMatch(/authenticated LoopOver MCP\/API responses/);
expect(source).not.toMatch(/Metadata stays on your machine/);
});
diff --git a/test/unit/docs-github-app.test.ts b/test/unit/docs-github-app.test.ts
index 080f569271..be1a0d50c9 100644
--- a/test/unit/docs-github-app.test.ts
+++ b/test/unit/docs-github-app.test.ts
@@ -10,14 +10,10 @@ const GITHUB_APP_DOCS_PATH = resolve(
describe("docs GitHub App setup page", () => {
const source = readFileSync(GITHUB_APP_DOCS_PATH, "utf8");
- it("documents the install route, permissions, events, and setup verification", () => {
- expect(source).toMatch(/https:\/\/github\.com\/apps\/gittensory\/installations\/new/);
- expect(source).toMatch(/Metadata: read/);
- expect(source).toMatch(/Pull requests: read/);
- expect(source).toMatch(/Issues: write/);
- expect(source).toMatch(/Checks: write/);
- expect(source).toMatch(/issue_comment/);
- expect(source).toMatch(/pull_request/);
+ it("documents self-hosting as the only currently available install path, and setup verification", () => {
+ expect(source).not.toMatch(/https:\/\/github\.com\/apps\/gittensory\/installations\/new/);
+ expect(source).toMatch(/Self-hosting is the only currently available path/);
+ expect(source).toMatch(/Shared, centrally hosted App: not currently available/);
expect(source).toMatch(/GET \/v1\/installations/);
expect(source).toMatch(/GET \/v1\/repos\/:owner\/:repo\/registration-readiness/);
expect(source).toMatch(/POST \/v1\/repos\/:owner\/:repo\/settings-preview/);