Skip to content

feat(agent-handoff): Serve the handoff guide at /agent-handoff.md - #131079

Open
sentry-junior[bot] wants to merge 1 commit into
masterfrom
feat/agent-handoff-md-route
Open

sentry-junior[bot] wants to merge 1 commit into
masterfrom
feat/agent-handoff-md-route

Conversation

@sentry-junior

@sentry-junior sentry-junior Bot commented Nov 13, 2026

Copy link
Copy Markdown
Contributor

This serves the agent handoff guide at /agent-handoff.md and makes that the canonical URL (sentry-agent-handoff). A .md path signals to agents that the guide is a plain markdown document to fetch, not a page to open with browser tools.

/agent-handoff/ keeps serving and claiming through the same view, renamed to sentry-agent-handoff-legacy, so prompts people have already copied still work.

The claim page builds its curl and Invoke-WebRequest commands from reverse("sentry-agent-handoff"). That means agents that land on either URL now POST their code to /agent-handoff.md.

controlsiloUrlPatterns.ts gets the new pattern because test_no_missing_urls requires it. #129973 and #130249 did the same when they added control-silo routes.

Follow-ups:

  • A frontend PR, after this deploys, to point handoffPrompt.tsx and the preview link at /agent-handoff.md.
  • Adding the .md route to the mocks in getsentry/sentry-for-ai-evals.
  • Removing the legacy route once old prompts have aged out.

via evan.purkhiser.

--

View Session [Sentry]

A .md URL tells agents the guide is a plain markdown document to fetch rather than a page to open with browser automation. /agent-handoff/ keeps serving and claiming so prompts that were already copied keep working.

Co-Authored-By: Abdullah Khan <abdullah.khan@sentry.io>
@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 Nov 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🚨 Warning: This pull request contains Frontend and Backend changes!

It's discouraged to make changes to Sentry's Frontend and Backend in a single pull request. The Frontend and Backend are not atomically deployed. If the changes are interdependent of each other, they must be separated into two pull requests and be made forward or backwards compatible, such that the Backend or Frontend can be safely deployed independently.

Have questions? Please ask in the #discuss-dev-infra channel.

@github-actions

Copy link
Copy Markdown
Contributor

Backend Test Failures

Failures on 13d5658 in this run:

tests/sentry/seer/agent/test_service_map_utils.py::TestQueryServiceDependenciesIntegration::test_aggregates_duplicate_edges — log
[gw0] linux -- Python 3.13.18 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/seer/agent/test_service_map_utils.py:566: in test_aggregates_duplicate_edges
    project_frontend = self.create_project(organization=self.organization, slug="frontend")
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/cases.py:1109: in create_project
    return super().create_project(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:405: in create_project
    return Factories.create_project(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.18/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:812: in create_project
    project = Project.objects.create(organization=organization, **kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/silo/base.py:157: in override
    return original_method(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/db/models/manager.py:87: in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/silo/base.py:157: in override
    return original_method(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/db/models/query.py:665: in create
    obj.save(force_insert=True, using=self.db)
src/sentry/silo/base.py:157: in override
    return original_method(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/models/project.py:422: in save
    self._save_project(save_callback)
src/sentry/models/project.py:411: in _save_project
    save_with_snowflake_id(
src/sentry/utils/snowflake.py:64: in save_with_snowflake_id
    raise MaxSnowflakeRetryError
E   sentry.utils.snowflake.MaxSnowflakeRetryError: Max allowed ID retry reached. Please try again in a second

This branch was successfully deployed

1 active deployment
Preview — f341f325 Deployed Nov 12, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

0 participants