Repository navigation
Carry main into redesign/main: the habit schedule expansion and the suppression cleanup (#746) - #793
Conversation
* test: characterize habit schedules before expand step (ORB-221) * feat: expand habit schedule and immutable start date (ORB-221) * test: include habit expansion in schema preservation guard * fix: address habit schedule review (thomasluizon/orbit-tickets#227) * fix: preserve FrequencyUnit OpenAPI contract (ORB-221) (cherry picked from commit 7a708b5)
#791) * fix: recognize UTC timestamp sinks without date exemptions * fix: guard generated logging arguments and remove blanket disables * refactor: remove catalog suppression scaffolding without changing metadata * fix: forward cancellation and remove obsolete library suppressions * chore: record every suppression verdict and reject duplicate reasons * fix: address suppression audit review for ticket 230 * fix: resolve suppression cleanup CI findings Refs thomasluizon/orbit-tickets#230 * test: prove OAuth authorize query validation parity (cherry picked from commit 05ab55f)
|
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes Reviewed both carried commits against redesign/main, including persistence, client compatibility, and redesign-specific conflict resolutions.
- Habit expansion: Adds persisted
HabitScheduleand immutableStartDatealongside the existing fields, without switching scheduling readers or changing create/update requests. - Migration and rollout: Adds the guarded backfill, sync timestamp refresh, and legacy-writer compatibility trigger; preserves the redesign model in the regenerated migration Designer and snapshot.
- Response compatibility: Appends optional fields to habit and sync responses and documents them in both OpenAPI versions; checked the sibling repository's shared schemas and preserved legacy fields.
- Suppression cleanup: Reviews logging guards and extensions, OAuth query binding, MediatR cancellation forwarding, timestamp analyzer changes, and catalog simplification, including retained proactive and Notion entries.
Validation: 408 focused checks passed across domain, application, infrastructure, analyzer, and suppression-guard tests. GitHub Build, Unit Tests, and OpenAPI Breaking-Change Gate also passed. PostgreSQL trigger execution and live staging-data preflight were not repeated locally; source PR #792 documents PostgreSQL proof and the zero-invalid-row deployment prerequisite.
gpt-6.1-sol | 𝕏




Summary
The standing
mainintoredesign/mainsync (thomasluizon/orbit-tickets#746). It carries twomaincommits withcherry-pick -x:7a708b5b(orbit-api#792, thomasluizon/orbit-tickets#227 step 1 of 3): the persistedHabitSchedule, an immutableStartDatecreation anchor beside the existing flags, an honest backfill, append-onlyscheduleandstartDatehabit response fields, and the compatibility trigger. The migration20261019165331_ExpandHabitScheduleAndStartDateapplies on the staging database at the next staging API release.05ab55f0(orbit-api#791, thomasluizon/orbit-tickets#230): the handwritten pragma andSuppressMessagelines are removed and every finding they hid is fixed at its cause; the generated log helpers become extension methods.Refs thomasluizon/orbit-tickets#746
Refs thomasluizon/orbit-tickets#227
Refs thomasluizon/orbit-tickets#230
Conflict resolution
src/Orbit.Api/openapi.jsonandopenapi_v2.json: regenerated bydotnet build, not hand merged. Both carryschedule,startDateand the stringHabitScheduleenum;FrequencyUnitis unchanged, so the onboarding request contract does not narrow.tests/Orbit.Infrastructure.Tests/Persistence/FeatureFlagAccountsMigrationTests.cs: keeps the redesign branch's checks, reads the renewal columns fromUsersonly, and asserts the observed difference count..Designer.cstarget model andOrbitDbContextModelSnapshot.cswere regenerated for the redesign model (the redesign-only entities andAddAstraBlockAnswerReplaystay in it). The migration'sUp,Downand trigger SQL are byte-identical to#792. A new test,TargetModel_PreservesRedesignAndMatchesCurrentModel, failed against the auto-mergedmainDesigner and passes against the regenerated one; aProbeNoChangesmigration generated throughOrbitDbContextFactoryhad an emptyUpandDownand was deleted.AgentCatalogService.*:#791's constructor and logging pattern applied with every redesign-only capability, surface and catalog entry (proactive, Notion) kept.src/Orbit.Infrastructure/Services/ProactiveCheckinSchedulerService.csstays deleted on this branch, so#791's edit to it and its allowlist entry are omitted.Test evidence
dotnet build Orbit.slnxexit 0, withLANGunset and withLANG=en_US.UTF-8 LC_ALL=en_US.UTF-8.dotnet testper project, both settings, every exit 0:The suppression guard tests pass 40 of 40. The OpenAPI Breaking-Change Gate runs in CI. A strict local rebuild with
-p:TreatWarningsAsErrors=truereports the existingCS0618(Message.Tokendeprecated in FirebaseAdmin) inPushNotificationServiceand its tests, which neither commit touches and the repository build does not treat as an error;mainhas the same code.Assumptions
None.
Manual steps
After merge, release the staging API from
redesign/main(GitHub Actions, Release API,environment=staging,branch=redesign/main), then verify/health, the live commit and the20261019165331_ExpandHabitScheduleAndStartDaterow in__EFMigrationsHistory. No new configuration or secrets.🤖 Generated with Claude Code