Add deprecation, sunset, and successor headers to FastAPI routes
Add runtime Deprecation, Sunset, and Link headers plus OpenAPI metadata and tracking middleware for deprecated routes.
fastapi-deprecation-response-headers
Normalized profile
What this task asks for
Add runtime Deprecation, Sunset, and Link headers plus OpenAPI metadata and tracking middleware for deprecated routes. FastAPI currently treats `deprecated=True` as schema metadata only (`"deprecated": true`) and does not add runtime response signals. Any route with `deprecated=True` must emit `Deprecation: true`. Add `sunset: datetime | None`. Add `deprecation_date: datetime | None`. Add `successor_url: str | None`. The existing `deprecated` parameter must also follow the same propagation and inheritance rules described below (it already exists on routes, routers, and `include_router` calls; ensure it propagates consistently with the new parameters).
Intent
- feature implementation
- configuration tuning
- data transformation
- bug repair
Work surfaces
- serialization
- configuration
- validation layer
- runtime
Technology
- FastAPI
- HTTP
- WebSocket
Expected artifacts
- repository patch
What makes it difficult
- layered configuration precedence and inheritance semantics
- native compilation and dependency integration
- changes span multiple components or interfaces
Published evidence
Model × harness outcomes
Counts are tied to these exact configurations. Harnesses are not treated as equivalent across benchmarks.
- Models
- 13
- Configurations
- 41
- Trials
- 164
Showing 41 of 41 configurations
| Model | Harness | Effort | Result | Passes |
|---|---|---|---|---|
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | low | Mixed | 1/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | medium | All passed | 4/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | high | All passed | 4/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | xhigh | All passed | 4/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | max | All passed | 4/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | high | Mixed | 1/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | xhigh | Mixed | 1/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | max | Mixed | 2/4 |
| claude-sonnet-4-6anthropic | mini-swe-agentpublished configuration | high | Mixed | 1/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | high | Mixed | 1/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | xhigh | No passes | 0/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | max | Mixed | 1/4 |
| gemini-3-1-pro-previewvertex_ai | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| gemini-3-5-flashvertex_ai | mini-swe-agentpublished configuration | medium | Mixed | 2/4 |
| glm-5-2zai | mini-swe-agentpublished configuration | high | Mixed | 1/4 |
| glm-5-2zai | mini-swe-agentpublished configuration | max | All passed | 4/4 |
| gpt-5-4openai | mini-swe-agentpublished configuration | xhigh | All passed | 4/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | medium | All passed | 4/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | high | Mixed | 3/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | xhigh | All passed | 4/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | high | Mixed | 1/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | xhigh | Mixed | 2/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | max | Mixed | 1/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | low | Mixed | 3/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | medium | Mixed | 2/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | high | Mixed | 2/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | xhigh | Mixed | 2/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | max | Mixed | 3/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | low | Mixed | 1/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | medium | Mixed | 1/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | high | Mixed | 2/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | xhigh | Mixed | 1/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | max | Mixed | 3/4 |
| kimi-k2-7-codeopenrouter | mini-swe-agentpublished configuration | default | Mixed | 1/4 |