Guth
NewsDocs
Page actions
View as Markdown ↗
Explore MCP tools ↗

instrument mechanism / verified-clean

Ovulation & Fertile Window Estimator mechanism

The inspectable method record for Ovulation & Fertile Window Estimator, kept separate from implementation and qualification.

Status: VERIFIED_CLEANLifecycle: verified-clean

Model scope

The existing honest label is appropriate and should remain prominent: estimate only, highly variable by individual, not medical advice, and not a contraceptive method. Before approval, specify the date-counting convention, define whether fertile-window endpoints are inclusive, document the next-period formula, and impose input constraints.

  • The ovulation formula is ambiguous about date counting: adding cycle_length−14 calendar days after the LMP date makes a 28-day cycle with an LMP of 2025-01-01 ovulate on 2025-01-15, whereas standard cycle-day terminology commonly calls 2025-01-14 cycle day 14 because the LMP is cycle day 1.
  • The ovulation estimate assumes a fixed 14-day luteal phase; this is an approximation and can be substantially wrong for individuals with variable luteal phases or irregular cycles.
  • The definition fertile window = ovulation ±5 days is mathematically clear only if the endpoints are inclusive, but it is not a universally standard biological definition. Many clinical descriptions use the five days before ovulation through ovulation day, sometimes including the following day.
  • The output includes a next period estimate, but no formula is specified for it. A likely formula is LMP date plus average cycle length in calendar days, and that assumption must be documented.

Units and conventions

  • cycle_length is an integer number of calendar days, not hours, weeks, or an inclusive date-span count.
  • For the test vectors, LMP is treated as date offset 0; estimated ovulation is LMP plus cycle_length−14 calendar days.
  • The fertile-window endpoints are inclusive and are calculated as five calendar days before through five calendar days after the estimated ovulation date.
  • The next-period estimate is calculated as LMP plus cycle_length calendar days.
  • Dates are date-only values in ISO 8601 format (YYYY-MM-DD), using local calendar arithmetic with leap years handled correctly; no time-zone conversion is involved.

Inspectable vector

One of 4 source-bound review vectors:

{
  "inputs": {
    "last_period_date": "2025-01-01",
    "average_cycle_length_days": 28
  },
  "expected_outputs": {
    "estimated_ovulation_date": "2025-01-15",
    "fertile_window_start": "2025-01-10",
    "fertile_window_end": "2025-01-20",
    "next_period_estimate": "2025-01-29"
  },
  "working": "Ovulation offset = 28 − 14 = 14 days. 2025-01-01 + 14 days = 2025-01-15. Fertile-window start = 2025-01-15 − 5 days = 2025-01-10. Fertile-window end = 2025-01-15 + 5 days = 2025-01-20. Next period = 2025-01-01 + 28 days = 2025-01-29."
}

Failure boundary

BREAK_CLAIMED · SELF_FLAGGED

The exact-zero offset case produces an estimated fertile window beginning before the recorded LMP, with no specified input validation or rejection rule. The specification also has no physiological formula branch and leaves date-counting and window-endpoint conventions ambiguous; the branch test therefore exposes calendar handling rather than a biological regime switch.

Other records

Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

  • VERIFIED_LEDGER.json
  • evidence-tranche4/tranche4-results.json
  • BOUNDARY_HAZARD_CATALOG.json