Source: https://guthlabs.ai/docs/instruments/menstrual-cycle-length-tracker-predictor/

instrument / verified-clean

# Menstrual Cycle Length Tracker/Predictor

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/menstrual-cycle-length-tracker-predictor/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/menstrual-cycle-length-tracker-predictor/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/menstrual-cycle-length-tracker-predictor/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/menstrual-cycle-length-tracker-predictor/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Biology, Medicine & Pharmacology (educational estimates only — every panel labeled not-medical-advice)

**Tranche**: tranche-4

**Evidence ID**: t4-286

**Ledger rows**: 1

No ledger note is attached.

## Review findings

NEEDS_REVIEW because the exact ambiguity is: cycle length variability is named as an output but has no formula, and fractional average lengths have no specified date conversion or rounding rule. The honest-label requirement is present and should remain visible on every prediction panel.

### Formula and scope findings

- The formula for cycle length variability is missing, so that output cannot be verified or computed.

- The average cycle length may be fractional, but no rule specifies how to convert a fractional number of days into a date-only predicted start date.

- The prediction formula is a simple arithmetic estimate, not a generally reliable physiological prediction; irregular cycles, missing logs, and nonrepresentative history are not addressed.

- No minimum history length or validation rule is specified. At least two chronologically ordered, distinct period-start dates are needed to calculate a cycle length.

### Unit assumptions

- Input dates are valid ISO 8601 calendar dates in the proleptic Gregorian calendar.

- Cycle length is the date difference in calendar days between consecutive period starts; the start day is not counted inclusively.

- The average cycle length is measured in days.

- Date arithmetic is timezone-independent and ignores time-of-day and daylight-saving transitions.

- A predicted start is expected to be a calendar date; the specification does not define rounding or timestamp behavior for fractional-day predictions.

- Cycle-length variability has no defined unit or statistical method because no formula is supplied.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The specification permits or fails to define behavior for invalid and undefined inputs: a zero-length cycle produces a raw prediction unless explicitly rejected, one start date causes a 0/0 average, and cycle-length variability has no formula. Date-counting convention is also unspecified and can shift the prediction by one day.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "history_of_period_start_dates": [
      "2025-01-01",
      "2025-01-29",
      "2025-02-26",
      "2025-03-26"
    ]
  },
  "expected_outputs": {
    "predicted_next_start": "2025-04-23",
    "cycle_length_variability": null
  },
  "working": "Differences: 2025-01-29 − 2025-01-01 = 28 days; 2025-02-26 − 2025-01-29 = 28 days; 2025-03-26 − 2025-02-26 = 28 days. Average = (28 + 28 + 28) / 3 = 84 / 3 = 28 days. Next start = 2025-03-26 + 28 days = 2025-04-23. Variability = undefined because no variability formula is provided."
}
````

## Related workflows

[Pregnancy & Cycle Suitehistory](<https://guthlabs.ai/docs/instrument-workflows/cycle-suite/>)

## Sources and evidence

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

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche4/tranche4-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
