{
  "schema_version": "decimal-hours-method/v1",
  "version": "1.0.0",
  "scope": "Every integer second 0..86400 inclusive, at 2, 3 and 4 decimal places",
  "rounding": "nearest, exact halves upward; nonnegative inputs only",
  "formula": "hours = input_seconds / 3600; scaled_units = floor(input_seconds*10^p/3600 + 1/2); represented_seconds = scaled_units*3600/10^p",
  "round_trip": "nearest whole second of represented_seconds; exact halves upward",
  "implementation": "Python standard-library integers and fractions.Fraction. Website tests independently use BigInt quotient/remainder.",
  "reproduce": "python3 recompute.py --output ./recomputed",
  "corpus_columns": {
    "input_seconds": "integer, 0 through 86400",
    "decimal_places": "2, 3 or 4",
    "rounded_hours": "fixed-point decimal text, hour unit",
    "represented_seconds_fraction": "reduced exact fraction of seconds",
    "signed_error_seconds_fraction": "represented_seconds - input_seconds, exact fraction",
    "recovered_seconds": "nearest integer second, exact halves upward",
    "round_trip_error_seconds": "recovered_seconds - input_seconds"
  },
  "chart_columns": {
    "minutes": "integer, 0 through 60 inclusive",
    "exact_hours_fraction": "reduced fraction, or integer if denominator is 1",
    "hours_2dp": "hours rounded to two decimal places",
    "hours_3dp": "hours rounded to three decimal places",
    "hours_4dp": "hours rounded to four decimal places"
  },
  "aggregation_examples": "Constructive exact examples, not observed user records or payroll recommendations.",
  "license": "CC0-1.0 for original program and generated data only",
  "tested_reference_runtime": {
    "python": "3.9.6",
    "zlib": "1.2.12"
  },
  "reproduction_equality": "Chart CSV, results JSON and decompressed corpus must match. Gzip header metadata is pinned; compressed bytes may still vary with Python/zlib version. Published SHA-256 values verify the downloaded distribution."
}
