Your agents can finally write, run, and ship code in real isolation.Meet Tenki Sandbox
Code Review Benchmarks

How well does Tenki do versus other
AI code reviewers in catching real bugs?

Last updated: May 20, 2026

TL;DR

Tenki is the #1 reviewer based on finding-level scoring.

In this independent 2026 benchmark of 6 leading AI code review tools, Tenki catches 84 of 122 real, production bugs across 50 pull requests from cal.com, Sentry, Grafana, Keycloak, and Discourse, graded per finding by a 3-judge LLM panel. That's 1.9× the next-best reviewer.

84/122
Real Bugs Caught
68.9%
Catch Rate
3
LLM Judges
7
Tools
5
Repositories
350
Code Reviews

Methodology

How we benchmarked AI code reviewers.

Every pull request contains a real, merged bug-fix from an open-source codebase. We replay the bug-introducing diff into a clean fork and let each tool review it with its default configuration. Reviews are then graded by a 3-LLM judge panel using majority vote. No synthetic bugs, no repo-specific tuning.

Sources

50 bug-fix PRs from 5 open-source repositories

Real merged fixes from cal.com (TypeScript), sentry (Python), grafana (Go), keycloak (Java), and discourse (Ruby). All five major server-side languages are represented in the bug set.

Replay

Real bugs reintroduced, not invented

The pre-fix diff is replayed against every tool with default settings: no custom rules, no repo-specific tuning, and full repository context for every reviewer. Every tool sees the same code at the same point in history.

Scoring

Per-finding 3-judge LLM majority vote

Bugs are scored individually, not per-PR (which would over-credit drive-by comments). A bug counts as caught only if a line-level comment pinpoints the faulty code and explains its impact, and at least two of three independent LLM judges agree.

Test Sources

  • Cal.com

    TypeScriptOpen source scheduling infrastructure

    GitHub
  • Sentry

    PythonError tracking & performance monitoring

    GitHub
  • Grafana

    GoMonitoring & observability platform

    GitHub
  • Keycloak

    JavaIdentity & access management

    GitHub
  • Discourse

    RubyCommunity discussion platform

    GitHub

Overall performance

Tenki leads recall and F1 across every real bug.

Each individual bug is scored, not each pull request. Data is sorted by F1 and tools were kept at their default configurations. Higher-precision tools post fewer comments overall; Tenki's higher comment volume drives both higher recall and lower precision. See methodology for how each metric is computed.

Reviewer
Recall
Precision
F1
Tenki
68.9%
29.9%
41.7
CodeRabbit
28.7%
25.0%
26.7
Greptile
36.1%
15.9%
22.1
Copilot
24.6%
18.9%
21.4
Graphite
3.3%
50.0%
6.2
Coding agents
Devin
36.1%
47.3%
40.9
Cursor
32.0%
51.3%
39.4

By Severity

Do AI code reviewers catch the bugs that actually matter?

Catch rate broken down by the severity of the individual finding. Critical bugs cause outages, data loss, or auth bypass. High-severity bugs break major user-facing flows. Medium bugs degrade behavior without breaking it. The severity that matters most for production reliability is the first column.

Tenki
69%(84/122 Bugs)
Devin
36%(44/122 Bugs)
Greptile
36%(44/122 Bugs)
Cursor
32%(39/122 Bugs)
CodeRabbit
29%(35/122 Bugs)
Copilot
25%(30/122 Bugs)
Graphite
3%(4/122 Bugs)

By Repository

How each reviewer performs across five production codebases.

Per-repository recall: the share of real bugs each AI code reviewer caught in each codebase.

Tenki
91%(30/33 Bugs)
Devin
33%(11/33 Bugs)
Cursor
30%(10/33 Bugs)
Greptile
30%(10/33 Bugs)
CodeRabbit
21%(7/33 Bugs)
Copilot
21%(7/33 Bugs)
Graphite
0%(0/33 Bugs)

Case Library

Every real bug, every reviewer verdict.

One row per real bug, 122 findings across 50 production pull requests. Each cell shows whether that reviewer flagged that specific defect, decided by 3-LLM majority vote. Click any verdict to see the actual review on GitHub.

Caught Missed
deleteCacheHandler throws generic Error → tRPC surfaces as 500 instead of 403/404
MediumCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Checkbox fires onChange twice per click via redundant onClick + onCheckedChange handlers
LowCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
`getPendingActions` never shows confirm button for paid payment-enabled bookings
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Missing `revalidateTag('team-features')` leaves settings layout cache stale after role update
MediumCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Past pending-unconfirmed bookings lose cancel/edit actions
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Functional regression: 'Check for recordings' action replaced with disabled button
MediumCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
afterNthPaintCycle fires callback after n+1 frames, not n frames
LowCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
no_show action always included in afterEventActions, shown disabled for upcoming bookings
MediumCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Charge card action hidden for recurring bookings in recurring tab
MediumCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
forEach with async callback fire-and-forgets calendar/video deletions
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Backup-code login bypasses password verification
CriticalCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Unguarded mainHostDestinationCalendar.integration access crashes booking
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Silent validation failure in constructor — invalid options return empty results, not errors
MediumCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Dead branches in getBaseConditions — `else if (filterConditions)` and `else` unreachable
LowCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
immediateDelete path does not update the WorkflowReminder DB row
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Default (non-immediate) path marks DB cancelled but never calls SendGrid
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Working-hours `end` check uses slotStartTime, missing the end-of-slot boundary
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Dayjs object compared with `===` instead of `.isSame()` — always `false`
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
UTC offset sign is inverted when checking date-override day match
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Missing guard for absent `timeZone` in `getSlots` override offset calculation
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Working-hours check does not reject slots on days with no working-hour entries
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
`availabilityCheckProps` does not include `dateOverrides` / `workingHours`, creating inconsistent behaviour between fixed and loose hosts
MediumCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Working-hours day-of-week comparison uses UTC day instead of organizer timezone day
MediumCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
GoogleCalendarService stores safeParse wrapper {success,data} as credential key
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Missing `prisma` import in SalesforceCalendarService causes runtime crash
CriticalCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Computed property keys in minimumTokenResponseSchema use Zod schema objects, not string values
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
refreshOAuthTokens returns incompatible types: Response vs axios response
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Webhook secret compared with non-constant-time string equality
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
ZohoCRM token expiry calculation adds seconds instead of milliseconds
MediumCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Unhandled `ZodError` from `.parse()` returns 500 instead of 400 for invalid request body
MediumCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Outbound credential sync request carries no authentication — sync endpoint response is implicitly trusted
MediumCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
SMS-reminder cleanup deletes non-SMS reminders with retryCount > 1
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
isTeamAdminOrOwner uses && instead of || — check is unsatisfiable
HighCal.com
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Duplicate self.downsize definition silently overrides 4-arg signature; existing callers crash
HighDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Unsubscribe endpoint NoMethodError when no TopicUser row exists
HighDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
CSRF: GET request permanently mutates topic notification state
HighDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Missing `unsubscribe_url` in `template_args` causes `I18n::MissingInterpolationArgument` for non-notification callers
HighDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Duplicate `%{respond_instructions}` placeholder in email notification template causes text to appear twice
MediumDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
email_in_restriction_setting? regex has no end anchor — whitelist bypass via domain suffix
HighDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
best.html.erb closes if/else with `<%- end if %>` — invalid Ruby, view crashes
CriticalDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
SSRF via user-controlled embed_url triggers open() to arbitrary URL
CriticalDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
SSRF and RCE via Kernel#open with attacker-controlled URL from Disqus XML
CriticalDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Non-atomic Redis SETNX + EXPIRE creates permanent throttle lock on crash
HighDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
`invalid_host?` silently blocks all retrieval when `embeddable_host` is blank
HighDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
XSS via unsanitized Referer header injected into JavaScript postMessage targetOrigin
HighDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
`i.content` in PollFeed may be nil, causing NoMethodError on `.scrub`
HighDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
`save_reply_relationships` called unconditionally even when `save` fails
MediumDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Port-stripping logic in `absolutize_urls` uses hardcoded ports instead of scheme-relative defaults
MediumDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Synchronous `PollFeed.new.execute({})` blocks caller and polls entire feed for one URL
MediumDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
.title float removed without flex replacement; child floats now ignored
MediumDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Destructive String#<< on literal in website_name domain check
MediumDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Light-theme lightness values silently changed during scale-color → dark-light-choose conversion
MediumDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
remove_member spec uses PUT but the route is DELETE
MediumDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
I18n Fallbacks included on backend.class instead of I18n::Backend::Simple
MediumDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
category_fabricator.rb and embeddable_host_fabricator.rb contents swapped
MediumDiscourse
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Cache-poisoning bypass of device limit
HighGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
rowsAffected==0 misclassified as ErrDeviceLimitReached
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
TOCTOU race between CountDevices and INSERT
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Stale denial cache blocks newly granted permissions
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
In-process authz client loses 30s client-side cache
LowGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Stream and admission requests lose contextual logging
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Empty-after-interpolation queries bypass expr filter (shardQuerySplitting)
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Filter precedes interpolation in querySplitting too
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Switch from interpolateVariablesInQueries to applyTemplateVariables changes filter semantics
LowGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Missing React key prop on GrafanaRuleListItem in FilterView
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Silence drawer never opens for Grafana rules in v2 list
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Storage.Create error records legacy duration
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Storage.Update error records legacy duration
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
DeleteCollection async legacy goroutine records storage duration
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Delete success records `name` instead of `options.Kind`
LowGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Delete passes d.Log instead of contextual log to klog.NewContext
LowGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
CleanUpService ticker reduced from 10 minutes to 1 minute
HighGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Routine cleanup progress logged at Error level
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Missing double-checked lock in GetWebAssets
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
enableSqlExpressions is dead code; FlagSqlExpressions feature flag is non-functional
HighGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
BuildIndex no longer serializes concurrent builds for the same key
MediumGrafana
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
UsernameForm.authenticate calls isConditionalPasskeysEnabled() with no args; compile error
HighKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Cache-hit path of getForLogin skips createOrganizationAwareIdentityProviderModel wrapping
HighKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
OrganizationAwareIdentityProviderBean adds defensive isEnabled() re-checks
LowKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
CryptoProvider.order() added without default — breaks third-party SPI implementations
HighKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
All production CryptoProviders share the same order value — FIPS provider can be silently bypassed
HighKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
`readSequence` silently returns empty list for indefinite-length encoded sequences
MediumKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
RECREATE_UPGRADE_EXIT_CODE silently changed from 4 to 3 (breaking external contract)
MediumKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Cleanup listener guarded by V1 flag while rest of class uses V2
HighKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
GroupPermissionsV2.canManage() accepts VIEW scope — privilege escalation
CriticalKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
GroupPermissionsV2 adds authorization resource IDs instead of group UUIDs to view-permission filter, breaking group-scoped admin user visibility
HighKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Lithuanian totpStep1/loginTotpStep1 strings replaced with Italian text
MediumKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
AccessTokenContext constructor null-checks grantType twice instead of rawTokenId
MediumKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
isAccessTokenId test matcher inverts the grant-shortcut check
MediumKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Optional<CredentialModel>.get() called without isPresent check in login bean
MediumKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
getSubGroupsCount returns null instead of delegating like sibling methods
HighKeycloak
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
OptimizedCursorPaginator.get_item_key TypeError on datetime values
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Negative-offset queryset slicing raises AssertionError
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Date-range filtering silently removed
MediumSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
AttributeError on organization_context.member when None
MediumSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
enable_advanced gate is effectively a no-op (has_global_access defaults True)
MediumSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Redirect-chain iteration limit reduced from 10000 to 1000 in add-buffer.lua
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
max_segment_spans safety check removed from flush path
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
OptimizedCursorPaginator.get_item_key TypeError on datetime values
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Negative-offset queryset slicing raises AssertionError
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Audit-logs date-range filtering removed; permission gate too permissive
MediumSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Upsampling check uses outer `dataset` instead of `scoped_dataset`
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
`timestamp` raw_groupby validation silently removed
MediumSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Misleading 'cached' comments around upsampling decision
LowSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
OAuth state parameter is a deterministic pipeline.signature, not a per-session nonce
CriticalSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
fetch_error_details mispairs error IDs to payloads via zip(error_ids, events.values())
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
{title}
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
validate_timestamp/validate_age silently skip mutual-exclusion check when age=0 or timestamp=0
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Wrong key 'detector_type' in update() prevents type from ever being updated
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Feature-flagged TableWidgetVisualization renders with empty data instead of query results
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
drain_mailbox_parallel processing_deadline_duration (120s) is shorter than its internal loop timeout (180s)
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Organization slug missing from queryKey causes cross-org cache hits
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Removed `retry: false` causes unintended request retries for attribute key fetches
MediumSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Inconsistent optional chaining in tableData?.meta.fields can throw at runtime
MediumSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Hook returns `isFetching` labeled as `isLoading`, causing misleading loading state during background refetches
MediumSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Global max-flush-segments cap is multiplied by flusher process count
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
Redis cluster memory polled redundantly once per flusher process buffer
MediumSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
AssignmentSource.queued default is evaluated at class-definition time
MediumSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
schedule_type display transformation is dropped on return
MediumSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
FixedQueuePool.shutdown signals workers before draining queues, dropping messages
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
result_processor moved before block-size config in ResultsStrategyFactory.__init__
LowSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile
MetricAlertDetectorHandler instantiation raises TypeError due to unimplemented abstract methods
HighSentry
Tenki
CodeRabbit
Copilot
Cursor
Devin
Graphite
Greptile