Skip to content

Carry main fixes into redesign main (#746) - #688

Merged
thomasluizon merged 2 commits into
redesign/mainfrom
fix/ticket-746-carry-calendar-checkin
Oct 2, 2026
Merged

thomasluizon merged 2 commits into
redesign/mainfrom
fix/ticket-746-carry-calendar-checkin

Conversation

@thomasluizon

Copy link
Copy Markdown
Owner

Carries the missing calendar and proactive check-in fixes from main into redesign/main, preserving the redesign behavior. Refs thomasluizon/orbit-tickets#746. The standing sync ticket stays open.

Carried commits

  • f2e5180c42700ed84d05bbd266034c0af485a2d3 (fix(calendar): omit flexible dates after the window target is met #686, ticket #903): cherry-picked with -x, without conflicts. src/Orbit.Application/Habits/Queries/GetCalendarMonthQuery.cs filters flexible projected dates by the remaining window target for parents, children and descendant inclusion, while retaining positive logged dates. tests/Orbit.Application.Tests/Queries/Habits/GetCalendarMonthQueryHandlerTests.cs carries all ten added cases, including nested habits, skipped targets and the next window.
  • 6c4e92dcdba347859acc08b9583c9a30b87540f1 (fix: capitalize standalone proactive check-in bodies #687, ticket #1102): cherry-picked with -x. Adds standalone body instructions and language-aware capitalization to the redesign service. Carries the generation, prompt and scheduler tests in tests/Orbit.Infrastructure.Tests/Services/AiProactiveCheckinMessageServiceGenerationTests.cs, AiProactiveCheckinMessageServiceTests.cs and ProactiveCheckinSchedulerServiceTests.cs.

Conflict resolution by redesign commit

23396af4 (#532), notification copy redesign

  • src/Orbit.Infrastructure/Services/AiProactiveCheckinMessageService.cs: read both versions and retained SystemPrompt, BuildPrompt, NotificationVoice.Rules, the one-open-habit instruction, count-aware fallback bodies and FallbackTitle. Added main's standalone body instructions alongside the redesign format rules and its NormalizeBody method before the existing fallback helpers. Applied normalization to both branches of the redesign's two-line/single-line result expression.
  • The three check-in test paths merged automatically. Reviewed both sides: all redesign fallback assertions and single-habit cases remain, along with every added main regression case.

Skipped commit evidence

41d806406952fa3db10fa9eeaf5b1f58232816cc (#678) is already carried by content on the base branch:

  • infra/workers/staging-pinger.mjs:29 sends redirect: "manual".
  • infra/staging-pinger.test.mjs:82 asserts manual mode; line 106 covers redirect responses failing the invocation.
  • infra/README.md:58 documents manual redirect behavior.
  • git show 41d80640 --format= --binary | git apply --reverse --check exited 0 before any carry and again after both carries.

Test evidence

Calendar command: env -u LANG dotnet test tests/Orbit.Application.Tests --filter FullyQualifiedName~GetCalendarMonthQueryHandlerTests.

  • Unchanged tests with the defect present: exit 0, 19 passed.
  • Applied only main's added tests before applying the implementation: exit 1, 8 failed and 21 passed. Handle_FlexibleTargetMet_ReturnsOnlyLoggedDatesInWindow returned extra dates at all three depths for week/month targets; Handle_FlexibleTargetMetWithSkip_OnlyProjectsNextWindow returned exhausted-window dates for both week starts. The short-of-target cases passed.
  • After the carry: exit 0, all 29 passed.

Check-in command: env -u LANG dotnet test tests/Orbit.Infrastructure.Tests --filter 'FullyQualifiedName~AiProactiveCheckinMessageService|FullyQualifiedName~ProactiveCheckinSchedulerServiceTests'.

  • Unchanged tests with the defect present: exit 0, 44 passed.
  • Applied only the carried tests before the implementation, retaining redesign assertions: exit 1, 8 failed and 42 passed. The three GenerateMessageAsync_SingleLowercaseLine_ReturnsSentenceCaseBody cases and three CheckAndSendCheckins_LowercaseModelBody_RecordsAndPushesSentenceCase cases observed lowercase bodies, including persisted notification and push delivery. Both strengthened GenerateMessageAsync_RequestsSentenceCaseTitleAndStandaloneBody cases failed on the missing body instructions.
  • After resolving the carry: exit 0, all 50 passed.

Verification

  • env -u LANG dotnet build Orbit.slnx: exit 0, zero errors.
  • env -u LANG dotnet test: exit 0, 8,579 passed, zero failed or skipped.
  • env LC_ALL=en_US.UTF-8 dotnet build Orbit.slnx: exit 0, zero errors.
  • env LC_ALL=en_US.UTF-8 dotnet test: exit 0, 8,579 passed, zero failed or skipped.
  • dotnet ef migrations has-pending-model-changes --project src/Orbit.Infrastructure --startup-project src/Orbit.Api --no-build: exit 0, no model changes since the last migration.
  • node --test infra/staging-pinger.test.mjs: exit 0, 15 passed.
  • Commit hooks, node tools/check-timeless.mjs --base origin/redesign/main, changed-file bare-comment review and git diff --check origin/redesign/main passed.

No contract, entity or migration changes. The API build runs the OpenAPI generator and leaves src/Orbit.Api/openapi.json unchanged. No migration ordering question applies. No new external response fields or fixture response shapes were introduced.

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes Reviewed both fixes carried into redesign/main, including the check-in conflict resolution and all six changed files.

  • Calendar targets: Flexible projected dates now respect each window's remaining target at root and descendant levels, while preserving positive logged dates and next-window eligibility.
  • Check-in bodies: Standalone sentence instructions and localized capitalization apply to both response formats without replacing the redesign's prompt, voice rules, or count-aware fallbacks.
  • Regression coverage: Verified exact calendar-date assertions and persisted notification/push body assertions. Targeted suites passed all 29 calendar tests and 50 check-in tests; the initial calendar invocation exited with Segmentation fault (core dumped), then passed on standalone retry. The full suite was not rerun during this review.

Pullfrog  | View workflow run | Using gpt-6.1-sol | 𝕏

@thomasluizon
thomasluizon merged commit 891176b into redesign/main Oct 2, 2026
22 checks passed
@thomasluizon
thomasluizon deleted the fix/ticket-746-carry-calendar-checkin branch October 2, 2026 04:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant