Repository navigation
ORB-212 (#218): Challenges and accountability (part 1, deprecation) - #772
Merged
Merged
Conversation
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes All seven changed files were reviewed, including the deprecation annotations, both generated OpenAPI documents, and regression tests.
- Endpoint metadata: All six challenge actions and seven accountability actions are marked obsolete while preserving routes, request/response contracts, authorization, rate limits, and handler behavior.
- Versioned documentation: The existing OpenAPI transformer emits
deprecated: truefor all 13 operations in both API versions; no other contract changes appear in the diff. - Regression coverage: The new metadata tests and existing behavior tests remain active. The focused controller, rate-limit, deprecation, and API-versioning suite passed all 52 tests, with zero failures or skips; regenerated OpenAPI files left the worktree clean.
- Rollout boundary: This PR retains the legacy endpoints for installed clients. Actual removal and its Android release/version-floor prerequisites remain explicitly deferred to the follow-up.
gpt-6.1-sol | 𝕏
|
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#218 (ORB-212).
Change and approach
Mark all six
ChallengesControlleractions and all sevenAccountabilityControlleractions[Obsolete]. The existing operation transformer emitsdeprecated: truein both generated API versions, following #660 (1d806028) and #753 (21f810ff). Every route, request, response, handler, tool, job, achievement and table continues working. Endpoint and database removal belongs to the follow-up PR.The changes land in the two controllers,
src/Orbit.Api/openapi.json,src/Orbit.Api/openapi_v2.json, and controller tests.SocialDeprecationTestschecks each operation in both documents. The two existing controller test classes carry[Obsolete]because they intentionally exercise these legacy actions, following the annotation pattern in #753 without adding warning suppressions.Deprecated operations
/api/challenges/api/challenges/api/challenges/join/api/challenges/{challengeId}/leave/api/challenges/{challengeId}/habits/api/challenges/{challengeId}/api/accountability/pairs/api/accountability/pairs/api/accountability/pairs/{pairId}/accept/api/accountability/pairs/{pairId}/api/accountability/pairs/{pairId}/habits/api/accountability/pairs/{pairId}/check-ins/api/accountability/pairs/{pairId}/check-insEach operation is deprecated in v1 and v2.
Schema removal audit and external interface evidence
The pinned action Dockerfile selects
tufin/oasdiff:v1.33.0. I read that exact version's rule registry and request-property implementation, rather than inferring severity from the check name.All properties in the endpoint-specific request schemas that the follow-up removes are covered below.
request-property-removedis WARN, below the gate's ERR threshold, so no property-level deprecation is required here.CreateChallengeBodytype,title,description,targetCount,periodStartUtc,periodEndUtc,linkedHabitIds,invitedFriendUserIdsrequest-property-removed, WARNJoinChallengeBodycode,linkedHabitIdsrequest-property-removed, WARNSetChallengeHabitsBodyhabitIdsrequest-property-removed, WARNInviteAccountabilityBuddyBodybuddyUserId,cadence,habitIdsrequest-property-removed, WARNAcceptAccountabilityPairBodyhabitIdsrequest-property-removed, WARNSetAccountabilityHabitsBodyhabitIdsrequest-property-removed, WARNCheckInAccountabilityBodynoterequest-property-removed, WARNThese routes document no feature-specific response object properties. Their shared
ProblemDetailsschema survives. No property is being removed from a surviving request or response. For completeness, the exact registry makesresponse-required-property-removedERR andresponse-optional-property-removedINFO; neither applies to this ticket's scope. Removed whole operations useapi-path-removed-with-deprecationorapi-removed-with-deprecation, both INFO, after this PR merges. No ignore file or gate configuration changes are included.The tests read the actual framework-generated OpenAPI shape, for example
paths["/api/challenges"]["get"]["deprecated"] = true, observed in both committed artifacts. Re-derive the complete documents withdotnet build Orbit.slnx. A structural comparison against the original documents confirmed exactly 13 addeddeprecated: trueflags per document and equality of every other value, including every schema and route.Test evidence
Before changing implementation or tests:
Exit 0: 26 passed, zero skipped. Existing behavior tests did not check deprecation metadata.
After adding
SocialDeprecationTests, with the controllers still unchanged:dotnet test tests/Orbit.Infrastructure.Tests --filter FullyQualifiedName~SocialDeprecationTests --nologoExit 1: all 13 cases failed because each operation lacked
deprecatedin the original generated document. After adding the annotations and rebuilding:Exit 0: 39 passed, zero skipped. All existing behavior assertions are unchanged.
Final verification after commit, all exit 0:
dotnet build Orbit.slnx --nologodotnet test tests/Orbit.Domain.Tests --nologodotnet test tests/Orbit.Application.Tests --nologodotnet test tests/Orbit.Infrastructure.Tests --nologodotnet test tests/Orbit.Analyzers.Tests --nologoThe full solution's four test projects total 10,016 passing tests, zero failures and zero skips. Warnings concern existing NU1608 package constraints, API-versioning configuration, Firebase
Message.Token, the subscription deprecation tests and CS9107 inAgentChatWriteHoldTests; this change introduces no new warning sites. The unchanged controller baseline already emitted its dependency and compiler warnings, so a zero-warning build was not observed or claimed.All commit hooks passed, including formatting, dash, timeless-text and suppression checks.
git diff --checkpassed. No new#pragma,SuppressMessage, narration comments, migration, client changes or server/browser execution.Follow-up rollout
The removal PR remains gated on the UI part-1 Android build being live in the Play fleet and the carrying
MinSupportedVersionfloor being enforced. This PR changes metadata only and requires no database migration or version-floor update.Assumptions