Detect a possible missing period and ask, never correct it silently #13

Closed
opened 2026-08-18 03:04:46 -05:00 by null · 0 comments
Owner

Given the history 29, 28, 30, 29, 61, 29, the 61-day interval is probably a forgotten entry — but it might be a genuinely long cycle, and §14 is explicit that the app must ask rather than decide:

Quick check — there's a larger gap than usual in your history. Did you forget to record a period?

With Add missing period and No, this is correct. If the user confirms the long interval, keep it and let the model learn from it with appropriate uncertainty.

Build:

  • detection of an interval implausible against this user's own history, not a global constant — a 45-day gap is unremarkable for someone whose cycles run 40 and very odd for someone at 28
  • a flag on the derived cycle carrying why it was questioned
  • reduced statistical influence until the user answers, per §12 step 2: "Do not silently delete unusual data. Instead mark it for review or reduce its statistical influence until confirmed."

Never secretly modify health history (§14). Detection produces a question and a weight, never an inserted record and never a deleted one.

The UI for the question is Batch 03; this issue is the detection, the flag and the weighting, exercised through tests.

Verify: the §51 outlier history 29, 29, 28, 30, 45, 29 flags the 45 as questionable, keeps it in the data, and produces a forecast within 28–30 days; and a user whose cycles genuinely run 40–45 does not have a 45 flagged at all.

Given the history 29, 28, 30, 29, 61, 29, the 61-day interval is probably a forgotten entry — but it might be a genuinely long cycle, and §14 is explicit that the app must ask rather than decide: > Quick check — there's a larger gap than usual in your history. Did you forget to record a period? With **Add missing period** and **No, this is correct**. If the user confirms the long interval, keep it and let the model learn from it with appropriate uncertainty. Build: - detection of an interval implausible against this user's own history, not a global constant — a 45-day gap is unremarkable for someone whose cycles run 40 and very odd for someone at 28 - a flag on the derived cycle carrying why it was questioned - reduced statistical influence until the user answers, per §12 step 2: "Do not silently delete unusual data. Instead mark it for review or reduce its statistical influence until confirmed." **Never secretly modify health history** (§14). Detection produces a question and a weight, never an inserted record and never a deleted one. The UI for the question is Batch 03; this issue is the detection, the flag and the weighting, exercised through tests. Verify: the §51 outlier history 29, 29, 28, 30, 45, 29 flags the 45 as questionable, keeps it in the data, and produces a forecast within 28–30 days; and a user whose cycles genuinely run 40–45 does not have a 45 flagged at all.
null added this to the Batch 02 — Prediction Engine milestone 2026-08-18 03:04:46 -05:00
null closed this issue 2026-08-18 03:06:41 -05:00
Sign in to join this conversation.
No Label
P0
P1
P2
release-blocker
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: null/Privacy-Period-Tracker#13
No description provided.