Repository navigation
ORB-229: Deprecate AI memory API (part 1, deprecation) - #771
Merged
Merged
Conversation
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes across all nine files, including compatibility with the sibling mobile consumer.
- Route deprecation: Marks the four AI-memory operations obsolete while preserving their routes, authorization, handlers, and payloads.
- Schema deprecation: Marks
ProfileResponse.aiMemoryEnableddeprecated in both OpenAPI versions while retaining the required boolean expected by existing clients. - Metadata generation: Adds the shared obsolete-property schema transformer and updates both generated documents without other contract changes.
- Verification: All 66 focused deprecation, controller-behavior, and API-versioning tests passed; regenerating the OpenAPI documents left the worktree clean. The full solution test suite was not rerun locally.
gpt-6.1-sol | 𝕏
|
thomasluizon
deleted the
thomasluizon/ticket-235-ai-memory-deprecation
branch
October 19, 2026 06:46
thomasluizon
added a commit
that referenced
this pull request
Oct 19, 2026
…d cancellations and the Play renewal notice (#746) (#778) * Deprecate AI memory HTTP contracts for ORB-229 (part 1) (#771) (cherry picked from commit f8abd02) * Deprecate challenge and accountability routes for ORB-212 (#772) (cherry picked from commit 572b8de) * Deprecate social API routes and required profile fields (ORB-233 part 1) (#773) (cherry picked from commit 9c414c7) * fix: exclude retired notifications from inbox counts (#774) (cherry picked from commit f5df366) * fix: retain owed cancellations after account erasure (#775) * fix: retain provider cancellation obligations after account erasure * fix: preserve erasure for accounts without billing obligations * fix: claim owed cancellations before provider calls * fix: alert owed cancellation exhaustion only after a failed attempt Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit c369535) * fix: notify returning Play subscribers about renewal (#776) * fix: explain Play renewal recovery on account reactivation * test: register reactivation service in sign-in retry fixture * fix: verify Play renewal before reactivation notice (cherry picked from commit 96023f9) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Part of thomasluizon/orbit-tickets#235 (ORB-229).
Marks the AI memory HTTP contract deprecated while keeping the handlers, payloads, tools, extraction pipeline, jobs and persistence working. This is part 1; removal belongs to part 2 after this merges and its fleet prerequisites are satisfied.
Approach
UserFactsController.csandProfileController.csuse action-level[Obsolete], matching Fix Google sign-in on MCP authorization page #660 and Deprecate legacy Google auth routes (#1528, part 1) #753 and the existing operation transformer.GetProfileQuery.csmarks theProfileResponse.AiMemoryEnabledproperty obsolete.ServiceCollectionExtensions.Infrastructure.csadds a schema transformer that maps obsolete property metadata todeprecated: truefor both API versions.openapi.jsonandopenapi_v2.jsonwere regenerated withdotnet build Orbit.slnx. A structural comparison against the parent commit found exactly five additions per document: four operation deprecation flags and the profile property deprecation flag. Every other document value is unchanged.AiMemoryDeprecationTests.csuses the same reflection and generated-document assertions as Deprecate legacy Google auth routes (#1528, part 1) #753. Existing controller behavior tests remain and carry the same obsolete annotations as that precedent.Deprecated routes
GET /api/user-factsDELETE /api/user-facts/{id}DELETE /api/user-facts/bulkPUT /api/Profile/ai-memoryAll four operations have
deprecated: truein both generated documents.Schema removal review
The pinned action Dockerfile uses
tufin/oasdiff:v1.33.0. Its own rule registry establishes these levels:ProfileResponse.aiMemoryEnabledresponse-required-property-removed: ERRSetAiMemoryRequest.enabledrequest-property-removed: WARN for a property removal;api-schema-removed: INFO for the whole componentBulkDeleteUserFactsRequest.factIdsrequest-property-removed: WARN for a property removal;api-schema-removed: INFO for the whole componentfacts, itsfactText,category,extractedAtUtcmembers, andsettings.aiMemoryEnabledUserDataExport,ExportedUserFactandExportedSettingsare absent from componentslimits.MaxUserFactslimitsis a dictionary with stringadditionalProperties; this key is not a schema propertydeletedpayloadDeprecating a required response property does not waive its eventual removal error: the pinned required-property checker still reports that removal. Part 2 must account for that compatibility constraint. This PR adds no ignore file or severity override.
External interface evidence
Confirmed
OpenApiSchemaTransformerContext.JsonPropertyInfoin the installedMicrosoft.AspNetCore.OpenApi10.0.13 XML API metadata,JsonPropertyInfo.AttributeProviderin the installed .NET reference metadata, andOpenApiSchema.DeprecatedinMicrosoft.OpenApi2.12.2 metadata. The real build then producedcomponents.schemas.ProfileResponse.properties.aiMemoryEnabledas{"type":"boolean","deprecated":true}in both documents. The generated-document tests read that actual output rather than an invented fixture.Test evidence
dotnet test tests/Orbit.Infrastructure.Tests --filter 'FullyQualifiedName~UserFactsControllerTests|FullyQualifiedName~ProfileControllerTests' --nologo: 39 passed, zero failed or skipped. These unchanged tests did not check deprecation metadata.AiMemoryDeprecationTests,dotnet test tests/Orbit.Infrastructure.Tests --filter FullyQualifiedName~AiMemoryDeprecationTests --nologo: 14 failed, zero passed or skipped.RouteRemainsAvailableAndDeprecatedfailed for the missing obsolete attributes;GeneratedOpenApiMarksRouteDeprecatedandGeneratedOpenApiKeepsMemorySettingRequiredAndMarksItDeprecatedfailed for missing deprecation flags.dotnet build Orbit.slnx --nologo: zero errors. Existing package, versioning and obsolete-member warnings remain; no suppression was added.dotnet test tests/Orbit.Infrastructure.Tests --no-build --filter 'FullyQualifiedName~AiMemoryDeprecationTests|FullyQualifiedName~UserFactsControllerTests|FullyQualifiedName~ProfileControllerTests' --nologo: 53 passed, zero failed or skipped.dotnet test tests/Orbit.Domain.Tests --no-build --nologo: 736 passed, zero failed or skipped, exit 0.dotnet test tests/Orbit.Application.Tests --no-build --nologo: 5,556 passed, zero failed or skipped, exit 0.dotnet test tests/Orbit.Infrastructure.Tests --no-build --nologo: 3,693 passed, zero failed or skipped, exit 0.dotnet test tests/Orbit.Analyzers.Tests --no-build --nologo: 32 passed, zero failed or skipped, exit 0.Assumptions
AiMemoryDeprecationTestsbeside the controller tests rather than extending authentication tests with unrelated AI memory cases.