Estimate ovulation and the fertile window, with uncertainty inherited from the forecast #21
Labels
No Label
P0
P1
P2
release-blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: null/Privacy-Period-Tracker#21
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
CycleStatusandCalendarMarksboth already take a fertile window and an ovulation date, and both currently receive null. Nothing estimates them.PRODUCT_PLAN.md §17: for a calendar-only V1, estimate ovulation relative to the predicted next period and the user's available cycle history. Do not imply that a fixed day-14 rule is biologically exact. The luteal-phase assumption is configurable/estimated, with the uncertainty reflected rather than hidden.
What to build in
domain/prediction:The trap: an ovulation date computed from a forecast that has been re-conditioned by "Not yet" moves with it. That is correct and worth a test, because the alternative — pinning ovulation to the original forecast — silently contradicts the period estimate on the same screen.
No new data is collected. §17 lists LH tests, basal body temperature and cervical mucus as future inputs that are not required for V1.
Verify:
./gradlew :domain:prediction:testcovers ovulation falling a luteal phase before the predicted start, a fertile window that contains ovulation and ends no later than a day after it, a window at least as wide as the forecast's own uncertainty, and no estimate at all when there is no forecast.