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

instrument mechanism / verified-with-binding-errata

Age Calculator mechanism

The inspectable method record for Age Calculator, kept separate from implementation and qualification.

Status: VERIFIED_WITH_ERRATALifecycle: verified-with-binding-errata

Model scope

The underlying calendar-subtraction concept is standard, but the specification is not deterministic enough to verify as an implementation-ready formula. The exact month-end and February-29 policies must be selected and documented.

  • The phrase "calendar-aware subtraction" is conceptually correct but does not specify the actual borrowing and month-end algorithm needed to produce a unique years/months/days result.
  • The next-birthday formula is underspecified for birthdays on February 29 in non-leap years.
  • It is not specified whether a birthday occurring on the reference date yields 0 days or the interval to the following year's birthday.
  • It is not specified whether dates use the proleptic Gregorian calendar, how invalid dates are rejected, or how future birth dates and reference dates earlier than the birth date are handled.

Units and conventions

  • Dates are valid ISO-8601 Gregorian calendar dates in YYYY-MM-DD format; age components are calendar years, calendar months, and calendar days, not fixed-duration conversions.
  • Days until the birthday means elapsed calendar days from the reference date to the next selected birthday, excluding the start date and including the target date; a birthday on the reference date therefore returns 0.
  • For these vectors, February 29 birthdays recur only on February 29 in leap years; an explicit product policy is still required for non-leap years.
  • The reference date is interpreted in the user's local calendar/time zone when the default "today" is used.

Inspectable vector

One of 4 source-bound review vectors:

{
  "inputs": {
    "birth_date": "1990-04-15",
    "reference_date": "2025-06-20"
  },
  "expected_outputs": {
    "age_years": 35,
    "age_months": 2,
    "age_days": 5,
    "days_until_next_birthday": 299
  },
  "working": "Age: 1990-04-15 + 35 years = 2025-04-15; + 2 months = 2025-06-15; + 5 days = 2025-06-20, so age = 35 years, 2 months, 5 days. Next birthday = 2026-04-15. Days remaining in 2025 after 2025-06-20 = 10 (June) + 31 (July) + 31 (August) + 30 (September) + 31 (October) + 30 (November) + 31 (December) = 194. Days from 2026-01-01 through 2026-04-15 = 31 + 28 + 31 + 15 = 105. Total = 194 + 105 = 299 days."
}

Failure boundary

BREAK_CLAIMED · SELF_FLAGGED

The specification leaves two important hazards unresolved: invalid calendar dates must be rejected, and the leap-day birthday rule is unspecified. A permissive parser could normalize 2024-02-30 incorrectly, while Feb-29 birthdays produce different ages and countdowns under the February-28 and March-1 conventions. Future birth dates also have an unspecified signed-versus-reject behavior.

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-tranche5/tranche5-results.json
  • BOUNDARY_HAZARD_CATALOG.json