Skip to content

[pull] master from getsentry:master#1827

Merged
pull[bot] merged 23 commits intoKingDEV95:masterfrom
getsentry:master
Mar 26, 2026
Merged

[pull] master from getsentry:master#1827
pull[bot] merged 23 commits intoKingDEV95:masterfrom
getsentry:master

Conversation

@pull
Copy link

@pull pull bot commented Mar 26, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

trevor-e and others added 23 commits March 26, 2026 11:15
…on issues (#111486)

Extracts the filter logic from `kick_off_seer_automation()` into two
helper functions (`_get_default_seer_automation_skip_reason` and
`_get_seat_based_seer_automation_skip_reason`) that return a string
reason when an issue is skipped. This enables a single `metrics.incr`
and `logger.info` call per filtered issue instead of silent returns.

Previously, ~14 return points in this function silently dropped issues
with no observability. Only the 3 rate-limit paths emitted any signal.
Now every skip reason is tagged and visible:

- `already_has_fixability_score`, `not_eligible`, `lock_already_held`,
`rate_limited` (default tier)
- `summary_already_cached`, `summary_already_dispatched`,
`already_triggered`, `issue_too_old`, `fixability_too_low`,
`automation_already_dispatched`, `no_connected_repos` (seat-based tier)

Metric: `seer.automation.filtered` with `reason` and `tier` tags.

Refs AIML-2686

---------

Co-authored-by: Claude <noreply@anthropic.com>
…rm system (#109356)"

This reverts commit b59560c.

Co-authored-by: chromy <351085+chromy@users.noreply.github.com>
…s_completed_and_overdue (#111609)

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
## Description

This PR temporarily skips the test
`test_quick_start_not_rendered_because_all_tasks_completed_and_overdue`
in the acceptance test suite.

## Changes

- Added `@pytest.mark.skip(reason="Temporarily skipped")` decorator to
the test method
- Imported `pytest` module to support the skip decorator

## Testing

- Verified pre-commit hooks pass
- Test will be skipped when running the test suite
<!-- CURSOR_AGENT_PR_BODY_END -->

[Slack
Thread](https://sentry.slack.com/archives/D09259VQFAP/p1774526835160849?thread_ts=1774526835.160849&cid=D09259VQFAP)

<div><a
href="https://cursor.com/agents/bc-7ca5447e-d6c0-5261-a9c3-c307fd73c3c5"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/background-agent?bcId=bc-7ca5447e-d6c0-5261-a9c3-c307fd73c3c5"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img
alt="Open in Cursor" width="131" height="28"
src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Armen Zambrano G. <armenzg@users.noreply.github.com>
…r` flips after resolution (#111584)

Fixes #111393.

When `has_resolution()` determines that `current_release_version` is
older than the event's release (semver), also check whether the event's
release is older than the resolved-in release before declaring
regression.

Fixes false positive regressions when `follows_semver` flips from False
to True between resolution time & event arrival time.
Move the project grouping record delete endpoint
(`/v0/issues/similar-issues/grouping-record/delete`) to use
`make_signed_seer_api_request` instead of a raw unsigned `urlopen` call,
consistent with all other Seer API methods.

- Add `make_delete_grouping_records_by_project_request` to
`signed_seer_api.py` with a `DeleteGroupingRecordsByProjectRequest`
typed dict
- Add `seer_grouping_default_connection_pool` using
`settings.SEER_GROUPING_URL`
- Update `call_seer_to_delete_project_grouping_records` to use the new
signed method (this also resolves the existing TODO comment about moving
to POST)


Agent transcript:
https://claudescope.sentry.dev/share/yp4ee9srss2V1UbfuaaD-PJyoIAqYGErBGG8WwuRn-I
)

Gate explore-view links in insights/dashboard widgets behind the
`visibility-explore-view` feature flag.

AM1 users were being sent to `/explore/traces/` from three separate code
paths in the cache miss rates widget:

1. **Insights widget dropdown** (`chartActionDropdown.tsx`) —
`BaseChartActionDropdown` always added the "Open in Explore" menu item
for any widget that passed `queryInfo`, regardless of the flag. Fixed by
checking `visibility-explore-view` before adding the menu item.

2. **Dashboard widget context menu** (`widgetCardContextMenu.tsx`) —
`getMenuOptions` unconditionally added "Open in Explore" for all
`SPANS`/`LOGS` widgets. This path is hit via `PlatformizedCachesOverview
→ PrebuiltDashboardRenderer`. Fixed by gating on
`visibility-explore-view`.

3. **Breakdown series label links** (`visualizationWidget.tsx`) — Chart
series labels for SPANS widgets with group-by columns were rendered as
`<Link>` elements pointing to `/explore/traces/`, with no flag check.
Fixed by gating on `visibility-explore-view`; without the flag, labels
render as plain text.

Each fix is covered by a test:
- `chartActionDropdown.spec.tsx` (new file)
- `widgetCard/index.spec.tsx` (new describe block)
- `visualizationWidget.spec.tsx` (new file)

Refs DAIN-1368

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…in fullscreen (#111616)

The widget viewer modal (fullscreen view) did not check whether the
dashboard was pre-built, so the "Edit Widget" button was incorrectly
enabled for pre-built dashboard widgets. This allowed users to open the
edit flow for widgets that shouldn't be editable.

Passes `isPrebuiltDashboard` to both the data and text widget viewer
modals and includes it in the edit access check, matching the existing
behavior in the dashboard grid view (`sortableWidget.tsx`).

<img width="1150" height="424" alt="image"
src="https://github.com/user-attachments/assets/0b894e6f-5f2e-4719-ace2-8e6af4faa1e1"
/>


Fixes DAIN-1411

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…#111192)

Refactors the GitHub SCM provider layer to make HTTP requests directly
via `_request` and work with raw `requests.Response` objects instead of
delegating to high-level methods on `GitHubApiClient`.

**Why:** The provider needs access to response headers (ETag,
Last-Modified) to support conditional requests and pagination. The
existing `GitHubApiClient` methods return parsed JSON dicts, discarding
all response metadata. Rather than modifying every client method to
optionally return headers, this moves the provider to use raw responses
directly.

**What changed:**

- Introduced `GitHubProviderApiClient`, a thin wrapper around
`GitHubApiClient._request` that returns raw `requests.Response` objects.
It handles pagination params, conditional request headers
(`If-None-Match`, `If-Modified-Since`), and error translation
(`ApiError` → `SCMProviderException`) in one place.
- All `GitHubProvider` methods now construct their own API paths and
call through `GitHubProviderApiClient` instead of delegating to named
methods on `GitHubApiClient` (e.g. `get_branch`, `create_git_ref`,
`list_pull_requests`, etc.).
- `map_action` and new `map_paginated_action` helpers extract
`ResponseMeta` (etag, last_modified) from response headers and compute
`next_cursor` for pagination.
- Removed ~30 methods from `GitHubBaseClient` that were only used by the
SCM provider (GraphQL queries, git ref/tree/blob CRUD, PR management,
comment deletion, etc.). These are now inlined in the provider.
- Moved the `MINIMIZE_COMMENT_MUTATION` GraphQL query to the provider
since it's the only consumer.
- Added `force_raise_for_status` parameter to `BaseApiClient._request`
so raw responses still get status checks.
- Rewrote unit tests to mock at the `GitHubProviderApiClient` request
boundary instead of asserting on `GitHubApiClient` method delegation.
Tests now verify the HTTP method, path, and payload sent to the API
rather than which client method was called.

No behavior changes for callers of the SCM provider interface.
This returns the details of errors caught by the RPC in its response,
allowing getsentry/seer#5313 to reconstruct and
raise appropriate exceptions.
We can use `taskworker.worker.execution_latency` instead.
Removes regression introduced by #111414 by removing the custom `Range`
component

| Before | After |
|--------|--------|
| <img width="803" height="100" alt="Screenshot 2026-03-26 at 10 31
20 AM"
src="https://github.com/user-attachments/assets/f3636f07-d85a-4a37-8f22-9c220de69951"
/> | <img width="801" height="89" alt="Screenshot 2026-03-26 at 10 31
11 AM"
src="https://github.com/user-attachments/assets/8a015578-35c4-4779-ac9d-97150dbb3142"
/> |
…11566)

When merging two user accounts, if both users are subscribed to the
same issue group, the unique_together constraint on GroupSubscription
causes an IntegrityError. Add dedupe logic matching the existing
GroupSeen pattern: delete the secondary user's conflicting
subscriptions before reassigning the remaining ones.

Fixes SENTRY-4YFH
Fixes SENTRY-5HVP

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…111484)

This uses the new seer_explorer_autofix_last_triggered column to handle
the new explorer autofix so we can handle the migration cleanly.
## Summary

- Remove `_clear_commit_context_cache` from
`RepositoryProjectPathConfig` post-save handler
- This function was querying all group IDs for a project and calling
`cache.delete_many` on keys with pattern
`process-commit-context-{group_id}`
- These cache keys were **never being set** — the debounce key was
removed in #65043 when suspect-commits-all-frames was GA'd, making this
function a no-op
- Despite being a no-op, the query + `cache.delete_many` call was taking
**~27 seconds** on projects with many groups (observed on the bulk
code-mappings upload endpoint)

## Evidence

- The cache key `process-commit-context-{group_id}` (with dash) was set
via `DEBOUNCE_CACHE_KEY` in `commit_context.py`, removed in #65043
- The lock key in `commit_context.py` uses
`process-commit-context:{group_id}` (with colon) — a different key
entirely
- No code in the codebase currently sets the dash-variant cache key
- Trace showing 26.5s "No Instrumentation" block corresponding to this
function: the group IDs query takes ~183ms, the rest is
`cache.delete_many` on nonexistent keys

## Test plan

- [x] Verified no tests reference `_clear_commit_context_cache` or the
`process-commit-context-` cache key pattern
- [x] Verified `_spawn_update_schema_task` (the other post-save
callback) is unaffected
- [ ] Deploy and verify code-mappings upload endpoint responds in <5s
instead of ~90s

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…#111586)

Replace deprecated `space()` function references with current
`theme.space.<token>` pattern in the design-system agent skill

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
migrate `useLocationQuery` tests from mocked `useLocation` to
`renderHookWithProviders`
…111577)

Extract reusable frontend components for the OAuth popup flow so
integration pipelines can share the same authorization UX. The
OAuthLoginStep handles opening the popup, listening for postMessage
callbacks from the trampoline, and forwarding the code/state params.

Refs VDY-35
Defaults to `sum` for distribution and counter metrics and `avg` for
gauges on initial load. If a selection is made that isn't a valid
aggregate for that type, we fix it and get the default aggregate for
that type instead of just the first one.
If an org has seat-based billing enabled _and_ have the
`seer-gitlab-support` feature flag enabled, then allow GitLab to be
configurable for Seer. Note that only internal Sentry orgs have the
gitlab feature flag enabled.
@pull pull bot locked and limited conversation to collaborators Mar 26, 2026
@pull pull bot added the ⤵️ pull label Mar 26, 2026
@pull pull bot merged commit e42006b into KingDEV95:master Mar 26, 2026
@github-actions github-actions bot added Scope: Frontend Automatically applied to PRs that change frontend components Scope: Backend Automatically applied to PRs that change backend components labels Mar 26, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

⤵️ pull Scope: Backend Automatically applied to PRs that change backend components Scope: Frontend Automatically applied to PRs that change frontend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.