Skip to content

fix(test): rename the stale gittensory GITHUB_APP_SLUG default to loopover-orb - #6900

Merged
JSONbored merged 1 commit into
mainfrom
worktree-github-app-slug-rebrand
Jul 17, 2026
Merged

fix(test): rename the stale gittensory GITHUB_APP_SLUG default to loopover-orb#6900
JSONbored merged 1 commit into
mainfrom
worktree-github-app-slug-rebrand

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Summary

  • 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, described in its own comment as "the same stable, real app across every deployment") and production's own unset-fallback is "loopover" (src/api/routes.ts:936).
  • Surfaced while investigating an unrelated flaky-test report: two tests (test/unit/github-labels.test.ts, test/unit/github-pr-actions.test.ts, fixed in fix(test): stop rebuilding env/keys per iteration in repo-name validation tests #6880) constructed a fresh RSA key and D1 database per loop iteration; fixing that revealed the shared GITHUB_APP_SLUG 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 resulting project-slug value directly.
  • Left deliberately untouched (confirmed preserved on purpose, not stale -- verified via explicit code comments and other tests that pin these exact values): sticky-comment HTML markers (e.g. <!-- gittensory-pr-panel:v1 -->, never renamed in production), the "gittensory-native" DB-source literal (written into review_audit/contributor_gate_history rows, renaming would orphan existing data), Sentry ticket IDs (GITTENSORY-*), the GITTENSORY_LEGACY_*_CHECK_NAME constants (kept for self-hoster upgrade compatibility), 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 via isLoopOverSelfRepo()).

Two subtleties worth calling out for reviewers:

  • Matching semantics matter. isOwnReviewThreadAuthor does prefix matching, not exact 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 (traced through isAuthorizedReviewThreadAuthor's early-return logic to confirm this before assuming).
  • Regenerated the branding-drift baseline. 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://, confirmed against src/review/enrichment-analyzers-taxonomy.ts) dropped that file's tracked "gittensory" mention count from 3 to 2, so npm run branding-drift:update was run and the regenerated scripts/branding-drift-baseline.json is included.

Scope

  • The PR title follows type(scope): short summary Conventional Commit format.
  • This PR is focused on one coherent change (a stale shared test default and its dependents) despite touching many files -- splitting it would leave intermediate states with failing tests, since the default and its dependent fixtures must change together atomically.
  • This follows CONTRIBUTING.md and does not reintroduce GitHub Pages, VitePress, site/, or CNAME.
  • I linked a currently open issue this PR resolves -- not applicable; this is a maintainer-authored test-reliability fix discovered during unrelated work, not a contributor PR under the linked-issue policy.

Validation

  • git diff --check
  • npm run actionlint
  • npm run typecheck
  • npm run test:coverage locally -- test-only change (plus a regenerated baseline JSON and one comment fix), which Codecov does not measure under test/**, so there is no patch-coverage obligation.
  • npm run test:workers
  • npm run build:mcp
  • npm run test:mcp-pack
  • npm run ui:openapi:check
  • npm run ui:lint
  • npm run ui:typecheck
  • npm run ui:build
  • npm audit --audit-level=moderate
  • New or changed behavior has unit/integration tests for new branches, fallback paths, and sanitizer boundaries -- not applicable; no production code changed, and all ~20 affected files' existing tests (1621 total) still pass unchanged in intent.

Additional validation: all ~20 affected files verified individually and together (1621 tests, zero failures). A full local npm run test:ci run is green for everything this PR touches. That run also surfaced two unrelated, pre-existing failures, both confirmed via git blame/content inspection to be nothing to do with this change: test/unit/root-terraform-grafana-firewall.test.ts fails because terraform/ was deliberately deleted in an earlier, separate commit (9001197c, "chore: remove unused terraform/ directory") that didn't clean up this test; test/unit/selfhost-sentry-release.test.ts fails because scripts/deploy-selfhost-prebuilt.sh has already been renamed to loopover-selfhost while the test still pins the old gittensory-selfhost value. Both are being fixed in a small separate follow-up PR.

Safety

  • No secrets, wallet details, hotkeys, coldkeys, user PATs, private keys, raw trust scores, private rankings, or private maintainer evidence are exposed.
  • Public GitHub text stays sanitized, low-noise, and does not imply compensation guarantees or optimization tactics. (Not applicable -- test-only change.)
  • Auth, cookie, CORS, GitHub App, Cloudflare, or session changes include negative-path tests. (Not applicable -- no such changes; this only touches how the App's identity is represented in test fixtures, not any auth/session logic.)
  • API/OpenAPI/MCP behavior is updated and tested where needed. (Not applicable -- no such changes.)
  • UI changes use live API data or real empty/error/loading states, not production mock/demo fallbacks. (Not applicable -- no UI changes.)
  • Visible UI changes include a UI Evidence section below. (Not applicable -- no visible/UI changes.)
  • Public docs/changelogs are updated where needed. (Not applicable.)

UI Evidence

Not applicable -- test-only change (plus one generated baseline file and one comment fix), no UI/frontend/docs surface touched.

Notes

@superagent-security

Copy link
Copy Markdown
Contributor

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

@JSONbored JSONbored self-assigned this Jul 17, 2026
@JSONbored
JSONbored force-pushed the worktree-github-app-slug-rebrand branch from 60468eb to da1b3c3 Compare July 17, 2026 11:23
@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.70%. Comparing base (e118f6e) to head (9034739).
⚠️ Report is 5 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #6900   +/-   ##
=======================================
  Coverage   93.70%   93.70%           
=======================================
  Files         685      685           
  Lines       68284    68284           
  Branches    18715    18715           
=======================================
  Hits        63985    63985           
  Misses       3302     3302           
  Partials      997      997           
Flag Coverage Δ
shard-1 43.68% <ø> (ø)
shard-2 36.79% <ø> (ø)
shard-3 32.66% <ø> (ø)
shard-4 34.76% <ø> (ø)
shard-5 31.17% <ø> (ø)
shard-6 45.68% <ø> (ø)

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

@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

Caution

🛑 LoopOver review result - fixes required

Review updated: 2026-07-17 11:30:25 UTC

22 files · 1 AI reviewer · 1 blocker · CI failing · blocked

🛑 Suggested Action - Manual Review

Review summary
This is a mechanical, scoped rename of the stale `GITHUB_APP_SLUG` test default from "gittensory" to "loopover-orb" in `test/helpers/d1.ts`, propagated consistently across ~20 fixture files (bot logins, check-run `app.slug`, explicit overrides, and assertion values). The rename correctly leaves sticky-comment HTML markers, the `gittensory-native` DB-source literal, Sentry ticket IDs, legacy check-name constants, and the generic placeholder repo name untouched, matching the stated rationale that those are load-bearing or intentionally preserved. The one detail that doesn't line up: `scripts/branding-drift-baseline.json` drops the `packages/loopover-mcp/bin/loopover-mcp.js` count from 3 to 2, but no change to that file is visible anywhere in this diff.

Nits — 3 non-blocking
  • scripts/branding-drift-baseline.json:4 lowers the `packages/loopover-mcp/bin/loopover-mcp.js` count from 3 to 2 with no corresponding change to that file visible in the diff (it's not in the ~20 test fixtures listed) — confirm that file was actually edited elsewhere in the full PR and the baseline isn't just drifting from reality.
  • The failing `validate` and `validate-tests (1)`/`validate-tests (4)` checks are worth a quick look before merge given they align with jobs that would plausibly check branding-drift consistency, even though CI status itself isn't a code defect to block on here.
  • Double check the branding-drift-baseline.json count change against the actual diff for packages/loopover-mcp/bin/loopover-mcp.js since it isn't shown in this PR's visible file list.

Why this is blocked

  • No linked issue detected — If this PR is intended to solve an issue, link it explicitly in the PR body.
📋 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.

CI checks failing

  • validate
  • validate-tests (1)
  • validate-tests (4)

Decision drivers

  • ❌ Code review — 1 blocker (1 reviewer)
  • ❌ Gate result — Blocking (Repo-configured hard blocker found.)
Context & advisory signals — never blocks the verdict
Signal Result Evidence
Linked issue ✅ No-issue rationale PR body explains why no issue is linked.
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, 375 issue(s).
Contributor context ✅ Confirmed Gittensor contributor JSONbored; Gittensor profile; 33 PR(s), 375 issue(s).
Improvement ℹ️ Insufficient signal risk: clean · value: insufficient-signal
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), 375 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Start here: Treat this as maintainer-lane context rather than normal contributor-lane activity.
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

@loopover-orb loopover-orb Bot added the manual-review Gittensor contributor context label 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
JSONbored force-pushed the worktree-github-app-slug-rebrand branch from da1b3c3 to 9034739 Compare July 17, 2026 11:38
@JSONbored
JSONbored merged commit 54b784a into main Jul 17, 2026
17 checks passed
@JSONbored
JSONbored deleted the worktree-github-app-slug-rebrand branch July 17, 2026 11:49
lourincedaging0-commits pushed a commit to lourincedaging0-commits/gittensory that referenced this pull request Jul 17, 2026
test/unit/root-terraform-grafana-firewall.test.ts read terraform/main.tf,
terraform/variables.tf, and terraform/README.md -- all deleted by commit 9001197
("chore: remove unused terraform/ directory"), whose message confirms this was
deliberate and discussed with the repo owner ("Never applied... no intention of
using terraform/Hetzner going forward"). The test guarded real safety-critical
invariants (Grafana's firewall port never opened to the public) for a module that
no longer exists, so it's pure dead code now -- removed rather than updated,
since there's nothing left to test. The miner's separate Terraform module
(packages/loopover-miner/terraform/) is untouched and still has its own test.

test/unit/selfhost-sentry-release.test.ts asserted scripts/deploy-selfhost-prebuilt.sh
still defaults SENTRY_RELEASE to the pre-rename "gittensory-selfhost@..." prefix; the
script itself has already moved to "loopover-selfhost@...". Every other assertion in
this test (40+, covering the release workflow's Docker image naming, Sentry API calls,
and version-tag handling) was already correct and unaffected -- only this one stale
expected value needed updating to match reality.

Also regenerates scripts/branding-drift-baseline.json: unrelated to this change, but
picked up while re-verifying against a moving main -- a separate, concurrent rebrand
PR removed a "gittensory" comment mention in packages/loopover-mcp/bin/loopover-mcp.js
without regenerating the baseline, so the regression-guard test in
check-branding-drift-script.test.ts was failing on main itself.

Confirmed via git blame/content inspection that both original failures were unrelated
to any of this session's other PRs (verified real CI logs on JSONbored#6900, which surfaced
these same 2 pre-existing failures despite never touching either file).
jeffrey701 pushed a commit to jeffrey701/gittensory that referenced this pull request Jul 17, 2026
Sweeps the rest of test/ for lingering pre-rename "gittensory" text that
PR JSONbored#6900 didn't already cover -- arbitrary example values, prose comments,
and non-functional identifiers with no behavioral dependency on the real
GITHUB_APP_SLUG or LOOPOVER_REVIEW_REPOS defaults. Purely 1:1 string swaps,
no logic changes.

Verified via three full unsharded npm run test:coverage passes. The first
(before rebasing onto JSONbored#6900/JSONbored#6902) was green on a stale base. After
reconciling onto the new origin/main, the second surfaced 3 files
(rag-index.test.ts, reputation-wiring.test.ts, ci-completion-fork-resume.test.ts)
where the renamed repo identity happened to be the SAME value load-bearing
against LOOPOVER_REVIEW_REPOS's still-current "JSONbored/gittensory,acme/widgets"
allowlist default -- reverted those three back to "gittensory" to keep the
allowlist match, matching the same reasoning JSONbored#6900 already applied to
GITHUB_APP_SLUG-dependent fixtures. The third run confirmed clean: 949 files,
18084 tests, 0 failures.
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