FA-6548 / Calendar arithmetic / Member archive
Whole birthday years february 28 policy · case 03
Year subtraction increments age before the birthday.
Case contract
Valid ISO Gregorian dates in years 1 through 9999; generated dates must remain in that range. Month is 1 through 12 and zero-based weekday is Monday 0 through Sunday 6 unless the output convention says otherwise. born<=today; February 29 anniversaries are observed on February 28 in nonleap years. Exact operational definition: (date.fromisoformat(today).year-date.fromisoformat(born).year)-int(date.fromisoformat(today)<date(date.fromisoformat(today).year,date.fromisoformat(born).month,min(date.fromisoformat(born).day,calendar.monthrange(date.fromisoformat(today).year,date.fromisoformat(born).month)[1])))
Why this case matters
Small exact fixtures expose this error without platform timing, external services, or probabilistic observations. Calendar conventions results depend on the stated convention.
One recorded failure
Sample boundary fixtureThis sample comes from the broken implementation of a controlled reproducer.
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| fixture 1: ('2000-06-15', '2024-06-14') | 24 | 23 | Failed |
MEMBER ARCHIVE
The complete case is available to members.
This record includes three runnable implementations, regression fixtures, execution results, and source hashes.
Member access is invitation-based. Sign in with your invited account to inspect the sources.
Sign in to the archive ↗