Skip to content

Commit 46c901d

Browse files
committed
refactor(rebrand): rename bot-posted check-run names and PR-comment branding
Hard cutover (maintainer decision: no dual-emit window) of the two active check-run names ("Gittensory Context" -> "LoopOver Context", "Gittensory Orb Review Agent" -> "LoopOver Orb Review Agent") and the matching PR- comment brand strings: the unified-comment headline/reviewing-placeholder defaults, the "Re-run ... review" checkbox label, the "Checked by [...]" footer attribution, and the legacy panel's title/summary text. The existing supersedeLegacyNames mechanism (src/github/app.ts's finalizeLegacyPendingCheckRuns) is extended with a new legacy-name constant for each renamed check so a self-hoster's already-pending check-run under the old name still gets finalized to neutral instead of hanging in_progress forever across the deploy boundary — the same belt-and-suspenders treatment the pre-existing "Gittensory Gate" legacy name already got from an earlier rename. @jsonbored/gittensory-engine (the separate, hand-duplicated predicted-gate package) mirrors this exact rename in its own copy of the same evaluateGateCheckCore logic, with the golden parity fixtures and the engine-parity drift-check regenerated/verified to match. README's check-run disambiguation section and the OpenAPI settings descriptions are updated to match. Deliberately left untouched (each tracked by its own separate rebrand issue or genuinely out of scope for this one): gittensor (the permanent SN74 subnet brand), the repo's own name, the @gittensory bot-mention command prefix, .gittensory.yml/.gittensory-ams.yml config filenames, GITTENSORY_*-prefixed env vars, npm package identifiers, the bot's check-run-adjacent GitHub App slug, and the broader deterministic rule-finding message strings elsewhere in src/rules/advisory.ts. Closes #5327
1 parent ecb18c1 commit 46c901d

56 files changed

Lines changed: 374 additions & 345 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ LoopOver CI and LoopOver review score, gate, and comment on pull requests. The r
4242

4343
**Check-run and comment surfaces, disambiguated** (a common point of confusion — these are three independent, separately-configured things, not layers of the same feature):
4444

45-
- **`Gittensory Orb Review Agent`** (`gate.*` / `settings.reviewCheckMode`, off by default) — the authoritative GitHub Check Run carrying the gate's pass/fail verdict. This is the one worth making a required status check.
46-
- **`Gittensory Context`** (`settings.checkRunMode` / `settings.checkRunDetailLevel`, off by default) — a separate, purely advisory Check Run. At its default `checkRunDetailLevel: minimal` it publishes no findings at all; even at `standard`/`deep` it only re-renders content already shown elsewhere. Never make this one required.
45+
- **`LoopOver Orb Review Agent`** (`gate.*` / `settings.reviewCheckMode`, off by default) — the authoritative GitHub Check Run carrying the gate's pass/fail verdict. This is the one worth making a required status check.
46+
- **`LoopOver Context`** (`settings.checkRunMode` / `settings.checkRunDetailLevel`, off by default) — a separate, purely advisory Check Run. At its default `checkRunDetailLevel: minimal` it publishes no findings at all; even at `standard`/`deep` it only re-renders content already shown elsewhere. Never make this one required.
4747
- **Inline review comments** (`GITTENSORY_REVIEW_INLINE_COMMENTS` + `.gittensory.yml`'s `review.inline_comments`, off by both by default) — real, reply-able line-anchored PR review comment threads (CodeRabbit-style). This is the ONLY one of the three that posts an interactive per-line thread; the two check runs above never do. With `.gittensory.yml`'s `review.suggestions` also on, a precise line-anchored fix is additionally rendered as a one-click, committable GitHub suggested-change block. With `review.finding_categories` also on (off by default), each finding is additionally tagged with a category — security/correctness/performance/maintainability/tests/style — in both the inline comment label and the unified comment's "Finding categories" collapsible; a deterministic path/keyword fallback covers whatever the model omits.
4848

4949
See [Tuning your reviews](https://gittensory.aethereal.dev/docs/tuning) for the full flag, setting, and `.gittensory.yml` reference.

apps/gittensory-ui/public/openapi.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3838,7 +3838,7 @@
38383838
"comment_only",
38393839
"label_only"
38403840
],
3841-
"description": "Governs ONLY the PR comment and label -- never the Gittensory Context check (checkRunMode) or the Gittensory Orb Review Agent gate check (reviewCheckMode), which are independent axes by design (#2852). Setting this to \"off\" does NOT silence either check-run."
3841+
"description": "Governs ONLY the PR comment and label -- never the LoopOver Context check (checkRunMode) or the LoopOver Orb Review Agent gate check (reviewCheckMode), which are independent axes by design (#2852). Setting this to \"off\" does NOT silence either check-run."
38423842
},
38433843
"commentMode": {
38443844
"type": "string",
@@ -9199,7 +9199,7 @@
91999199
"comment_only",
92009200
"label_only"
92019201
],
9202-
"description": "Governs ONLY the PR comment and label -- never the Gittensory Context check (checkRunMode) or the Gittensory Orb Review Agent gate check (reviewCheckMode), which are independent axes by design (#2852). Setting this to \"off\" does NOT silence either check-run."
9202+
"description": "Governs ONLY the PR comment and label -- never the LoopOver Context check (checkRunMode) or the LoopOver Orb Review Agent gate check (reviewCheckMode), which are independent axes by design (#2852). Setting this to \"off\" does NOT silence either check-run."
92039203
},
92049204
"includeMaintainerAuthors": {
92059205
"type": "boolean"
@@ -9704,7 +9704,7 @@
97049704
"comment_only",
97059705
"label_only"
97069706
],
9707-
"description": "Governs ONLY the PR comment and label -- never the Gittensory Context check (checkRunMode) or the Gittensory Orb Review Agent gate check (reviewCheckMode), which are independent axes by design (#2852). Setting this to \"off\" does NOT silence either check-run."
9707+
"description": "Governs ONLY the PR comment and label -- never the LoopOver Context check (checkRunMode) or the LoopOver Orb Review Agent gate check (reviewCheckMode), which are independent axes by design (#2852). Setting this to \"off\" does NOT silence either check-run."
97089708
},
97099709
"commentMode": {
97109710
"type": "string",
@@ -10111,7 +10111,7 @@
1011110111
"comment_only",
1011210112
"label_only"
1011310113
],
10114-
"description": "Governs ONLY the PR comment and label -- never the Gittensory Context check (checkRunMode) or the Gittensory Orb Review Agent gate check (reviewCheckMode), which are independent axes by design (#2852). Setting this to \"off\" does NOT silence either check-run."
10114+
"description": "Governs ONLY the PR comment and label -- never the LoopOver Context check (checkRunMode) or the LoopOver Orb Review Agent gate check (reviewCheckMode), which are independent axes by design (#2852). Setting this to \"off\" does NOT silence either check-run."
1011510115
},
1011610116
"commentMode": {
1011710117
"type": "string",

packages/gittensory-engine/src/advisory/gate-advisory.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import type { CollisionReport } from "../types/predicted-gate-types.js";
1313
import { isDuplicateClusterWinnerByClaim } from "../signals/duplicate-winner.js";
1414
import type { GuardrailPathMatch } from "../signals/change-guardrail.js";
1515
import { nowIso } from "../utils/json.js";
16-
import { GITTENSORY_GATE_CHECK_NAME } from "../review/check-names.js";
16+
import { LOOPOVER_GATE_CHECK_NAME } from "../review/check-names.js";
1717
import { CLA_CHECK_UNRESOLVED_CODE, CLA_CONSENT_MISSING_CODE } from "../review/cla-check.js";
1818
import { REVIEW_THREAD_BLOCKER_CODE } from "../review/review-thread-findings.js";
1919
import { labelMatchesPattern } from "../scoring/label-match.js";
@@ -338,7 +338,7 @@ function advisory(
338338
): Advisory {
339339
const severity = highestSeverity(findings);
340340
const conclusion = conclusionForSeverity(severity, findings);
341-
const title = conclusion === "success" ? "Gittensory advisory passed" : "Gittensory advisory available";
341+
const title = conclusion === "success" ? "LoopOver advisory passed" : "LoopOver advisory available";
342342
return {
343343
id: randomUUID(),
344344
targetType,
@@ -441,8 +441,8 @@ function evaluateGateCheckCore(advisoryResult: Advisory, policy: GateCheckPolicy
441441
return {
442442
enabled: true,
443443
conclusion: "neutral",
444-
title: `${GITTENSORY_GATE_CHECK_NAME} — not evaluated yet`,
445-
summary: "Gittensory has not finished syncing this repo/PR. The gate stays advisory and re-evaluates automatically; no action is needed.",
444+
title: `${LOOPOVER_GATE_CHECK_NAME} — not evaluated yet`,
445+
summary: "LoopOver has not finished syncing this repo/PR. The gate stays advisory and re-evaluates automatically; no action is needed.",
446446
blockers: [],
447447
warnings,
448448
};
@@ -472,7 +472,7 @@ function evaluateGateCheckCore(advisoryResult: Advisory, policy: GateCheckPolicy
472472
return {
473473
enabled: true,
474474
conclusion: "neutral",
475-
title: `${GITTENSORY_GATE_CHECK_NAME} — held for human review`,
475+
title: `${LOOPOVER_GATE_CHECK_NAME} — held for human review`,
476476
summary: "The AI review could not be completed for this change, so the gate is held for a human reviewer rather than passed automatically. It re-evaluates on the next update.",
477477
blockers: [],
478478
warnings: gateWarnings,
@@ -490,7 +490,7 @@ function evaluateGateCheckCore(advisoryResult: Advisory, policy: GateCheckPolicy
490490
return {
491491
enabled: true,
492492
conclusion: "neutral",
493-
title: `${GITTENSORY_GATE_CHECK_NAME} — held for manual review`,
493+
title: `${LOOPOVER_GATE_CHECK_NAME} — held for manual review`,
494494
summary: holds.map((h) => sanitizeForCheckRun(h.title)).join("; "),
495495
blockers: [],
496496
warnings: [...gateWarnings, ...holds],
@@ -499,7 +499,7 @@ function evaluateGateCheckCore(advisoryResult: Advisory, policy: GateCheckPolicy
499499
return {
500500
enabled: true,
501501
conclusion: "success",
502-
title: `${GITTENSORY_GATE_CHECK_NAME} passed`,
502+
title: `${LOOPOVER_GATE_CHECK_NAME} passed`,
503503
summary: "No configured hard blocker was found. Advisory findings, if any, stay advisory.",
504504
blockers,
505505
warnings: gateWarnings,
@@ -511,7 +511,7 @@ function evaluateGateCheckCore(advisoryResult: Advisory, policy: GateCheckPolicy
511511
return {
512512
enabled: true,
513513
conclusion: "failure",
514-
title: `${GITTENSORY_GATE_CHECK_NAME}: ${titleDetail}`,
514+
title: `${LOOPOVER_GATE_CHECK_NAME}: ${titleDetail}`,
515515
summary: blockers
516516
.map((finding) => `${sanitizeForCheckRun(finding.title)}${finding.action ? ` — ${sanitizeForCheckRun(finding.action)}` : ""}`)
517517
.join("; "),

packages/gittensory-engine/src/focus-manifest.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,14 @@ export type FocusManifestIssueDiscoveryPolicy = "encouraged" | "neutral" | "disc
7070
* only chooses which deterministic blockers are active, never who can be blocked. There is no single
7171
* gate master switch: each per-dimension mode (`linkedIssue`, `duplicates`, `readinessMode`, etc.)
7272
* independently controls whether that dimension evaluates. `checkMode`/`enabled` (#2852) is a separate
73-
* axis entirely: whether/how the "Gittensory Orb Review Agent" check-RUN publishes, independent of gate
73+
* axis entirely: whether/how the "LoopOver Orb Review Agent" check-RUN publishes, independent of gate
7474
* evaluation itself (which always runs regardless of `checkMode`/`enabled`) — see {@link ReviewCheckMode}.
7575
*/
7676
export type FocusManifestGateConfig = {
7777
present: boolean;
7878
/** `gate.enabled` (legacy): a boolean shorthand for `checkMode` below -- `true` maps to `"required"`,
7979
* `false` maps to `"disabled"` (see resolveEffectiveSettings/applyGateConfigOverrides). Despite the name,
80-
* this controls ONLY whether the "Gittensory Orb Review Agent" check-run publishes -- it has NO effect on
80+
* this controls ONLY whether the "LoopOver Orb Review Agent" check-run publishes -- it has NO effect on
8181
* gate evaluation, disposition, comments, labels, audit, spend, or autonomous merge/close, all of which run
8282
* identically regardless of this field. It also cannot express `checkMode`'s third state (`"visible"`), and
8383
* is silently ignored once `checkMode` is set (see the parse-time warning a few lines below this type).
@@ -1373,7 +1373,7 @@ function parseGateConfig(value: JsonValue | undefined, warnings: string[]): Focu
13731373
if (gate.firstTimeContributorGrace === true) {
13741374
warnings.push(`Manifest field "gate.firstTimeContributorGrace" is currently reserved/inert — it does not soften a blocker outcome for first-time contributors.`);
13751375
}
1376-
// gate.enabled only controls whether the "Gittensory Orb Review Agent" check-run publishes (the legacy
1376+
// gate.enabled only controls whether the "LoopOver Orb Review Agent" check-run publishes (the legacy
13771377
// enabled -> reviewCheckMode alias in applyGateConfigOverrides) -- it does NOT gate spend, merge, comment,
13781378
// label, or close behavior, and it cannot express checkMode's "visible" state. checkMode always wins when
13791379
// both are set, so once an operator sets checkMode, a lingering enabled becomes pure inert noise they have
@@ -1383,7 +1383,7 @@ function parseGateConfig(value: JsonValue | undefined, warnings: string[]): Focu
13831383
// side effect instead, twice).
13841384
if (gate.enabled !== null && gate.checkMode === null) {
13851385
warnings.push(
1386-
`Manifest field "gate.enabled" only controls whether the Gittensory Orb Review Agent check-run publishes — it does not gate spend, merge, comment, label, or close behavior, and it cannot express reviewCheckMode's "visible" state. Set "gate.checkMode" (required/visible/disabled) explicitly instead of "gate.enabled".`,
1386+
`Manifest field "gate.enabled" only controls whether the LoopOver Orb Review Agent check-run publishes — it does not gate spend, merge, comment, label, or close behavior, and it cannot express reviewCheckMode's "visible" state. Set "gate.checkMode" (required/visible/disabled) explicitly instead of "gate.enabled".`,
13871387
);
13881388
}
13891389
gate.present =
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export const GITTENSORY_GATE_CHECK_NAME = "Gittensory Orb Review Agent";
1+
export const LOOPOVER_GATE_CHECK_NAME = "LoopOver Orb Review Agent";

packages/gittensory-engine/src/types/manifest-deps-types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ export type RepositorySettings = {
163163
* Selection-time only — real-time webhook-driven review is not gated by this and can process any PR at
164164
* any time regardless of the chosen order. */
165165
regateSweepOrderMode: "staleness" | "oldest-first";
166-
/** The actual runtime authority for whether the "Gittensory Orb Review Agent" check-run publishes (#2852).
166+
/** The actual runtime authority for whether the "LoopOver Orb Review Agent" check-run publishes (#2852).
167167
* See {@link ReviewCheckMode}. */
168168
reviewCheckMode: ReviewCheckMode;
169169
/** Auto-project/milestone matching (#3183). See {@link ProjectMilestoneMatchMode}. Always populated by the DB

0 commit comments

Comments
 (0)