FAILURE MAP
← Case archive

FA-18446 / Time representation / Open access

Initial virtual clock rate is inverted or integer-truncated · case 01

The decoded time state disagrees with the explicit regression oracle for first_rate.

Verified by executionVariant 1 · 11 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

Initial virtual clock rate is inverted or integer-truncated.

VERIFIED REPAIR

Preserve the declared coordinate and state contract at first_rate: first_rate = Fraction(r['p0'],r['q0']).

Unsuccessful approach: The partial correction still substitutes Fraction(r['p0']//r['q0']) at the same fault site.

Case contract

Virtual clock has anchor A at monotonic M0, rate p0/q0 until switch S, then p1/q1 thereafter. Readings may precede M0 and use first rate. The switch is continuous. Report exact coordinate, active rate, continuity anchor, next target delta and inverse monotonic coordinate for a target at or after switch. All rates positive.

Why this case matters

Clock transfer and timestamp consumers require preserved coordinate, phase, validity and elapsed-time semantics.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(r):
    first_span = r['switch'] - r['mono_origin']
    first_rate = Fraction(r['q0'],r['p0'])
    second_rate = Fraction(r['p1'],r['q1'])
    join = r['anchor'] + first_span * first_rate
    second = r['reading'] >= r['switch']
    delta = r['reading'] - (r['switch'] if second else r['mono_origin'])
    active = second_rate if second else first_rate
    coordinate = (join if second else r['anchor']) + delta * active
    until = r['target'] - coordinate
    inverse = r['switch'] + (r['target'] - join) / second_rate
    return [str(coordinate),str(active),str(join),str(until),str(inverse)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 5, 'target': 130}), ['185/2', '3/2', '115', '75/2', '85/2'])
check('fixture 2', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 10, 'target': 130}), ['100', '3/2', '115', '30', '85/2'])
check('fixture 3', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 19, 'target': 130}), ['227/2', '3/2', '115', '33/2', '85/2'])
check('fixture 4', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 20, 'target': 130}), ['115', '2/3', '115', '15', '85/2'])
check('fixture 5', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 21, 'target': 130}), ['347/3', '2/3', '115', '43/3', '85/2'])
check('fixture 6', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 30, 'target': 130}), ['365/3', '2/3', '115', '25/3', '85/2'])
check('fixture 7', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 50, 'target': 120}), ['135', '2/3', '115', '-15', '55/2'])
check('fixture 8', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 25, 'target': 115}), ['355/3', '2/3', '115', '-10/3', '20'])
check('fixture 9', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 15, 'target': 116}), ['215/2', '3/2', '115', '17/2', '43/2'])
check('fixture 10', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 100, 'target': 130}), ['505/3', '2/3', '115', '-115/3', '85/2'])
variant = [({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 6, 'target': 130}, ['94', '3/2', '115', '36', '85/2']), ({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 7, 'target': 130}, ['191/2', '3/2', '115', '69/2', '85/2']), ({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 8, 'target': 130}, ['97', '3/2', '115', '33', '85/2']), ({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 9, 'target': 130}, ['197/2', '3/2', '115', '63/2', '85/2']), ({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 10, 'target': 130}, ['100', '3/2', '115', '30', '85/2'])]
check("variant capture", solve(variant[N-1][0]), variant[N-1][1])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
fixture 1['290/3', '2/3', '320/3', '100/3', '55']['185/2', '3/2', '115', '75/2', '85/2']Failed
fixture 2['100', '2/3', '320/3', '30', '55']['100', '3/2', '115', '30', '85/2']Failed
fixture 3['106', '2/3', '320/3', '24', '55']['227/2', '3/2', '115', '33/2', '85/2']Failed
fixture 4['320/3', '2/3', '320/3', '70/3', '55']['115', '2/3', '115', '15', '85/2']Failed
fixture 5['322/3', '2/3', '320/3', '68/3', '55']['347/3', '2/3', '115', '43/3', '85/2']Failed
fixture 6['340/3', '2/3', '320/3', '50/3', '55']['365/3', '2/3', '115', '25/3', '85/2']Failed
fixture 7['380/3', '2/3', '320/3', '-20/3', '40']['135', '2/3', '115', '-15', '55/2']Failed
fixture 8['110', '2/3', '320/3', '5', '65/2']['355/3', '2/3', '115', '-10/3', '20']Failed
fixture 9['310/3', '2/3', '320/3', '38/3', '34']['215/2', '3/2', '115', '17/2', '43/2']Failed
fixture 10['160', '2/3', '320/3', '-30', '55']['505/3', '2/3', '115', '-115/3', '85/2']Failed
variant capture['292/3', '2/3', '320/3', '98/3', '55']['94', '3/2', '115', '36', '85/2']Failed

SHA-256 / 936394a26b319e0d486992855688744ff4afc122b3a83afa0b16fd298b370344

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(r):
    first_span = r['switch'] - r['mono_origin']
    first_rate = Fraction(r['p0']//r['q0'])
    second_rate = Fraction(r['p1'],r['q1'])
    join = r['anchor'] + first_span * first_rate
    second = r['reading'] >= r['switch']
    delta = r['reading'] - (r['switch'] if second else r['mono_origin'])
    active = second_rate if second else first_rate
    coordinate = (join if second else r['anchor']) + delta * active
    until = r['target'] - coordinate
    inverse = r['switch'] + (r['target'] - join) / second_rate
    return [str(coordinate),str(active),str(join),str(until),str(inverse)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 5, 'target': 130}), ['185/2', '3/2', '115', '75/2', '85/2'])
check('fixture 2', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 10, 'target': 130}), ['100', '3/2', '115', '30', '85/2'])
check('fixture 3', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 19, 'target': 130}), ['227/2', '3/2', '115', '33/2', '85/2'])
check('fixture 4', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 20, 'target': 130}), ['115', '2/3', '115', '15', '85/2'])
check('fixture 5', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 21, 'target': 130}), ['347/3', '2/3', '115', '43/3', '85/2'])
check('fixture 6', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 30, 'target': 130}), ['365/3', '2/3', '115', '25/3', '85/2'])
check('fixture 7', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 50, 'target': 120}), ['135', '2/3', '115', '-15', '55/2'])
check('fixture 8', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 25, 'target': 115}), ['355/3', '2/3', '115', '-10/3', '20'])
check('fixture 9', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 15, 'target': 116}), ['215/2', '3/2', '115', '17/2', '43/2'])
check('fixture 10', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 100, 'target': 130}), ['505/3', '2/3', '115', '-115/3', '85/2'])
variant = [({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 6, 'target': 130}, ['94', '3/2', '115', '36', '85/2']), ({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 7, 'target': 130}, ['191/2', '3/2', '115', '69/2', '85/2']), ({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 8, 'target': 130}, ['97', '3/2', '115', '33', '85/2']), ({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 9, 'target': 130}, ['197/2', '3/2', '115', '63/2', '85/2']), ({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 10, 'target': 130}, ['100', '3/2', '115', '30', '85/2'])]
check("variant capture", solve(variant[N-1][0]), variant[N-1][1])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
fixture 1['95', '1', '110', '35', '50']['185/2', '3/2', '115', '75/2', '85/2']Failed
fixture 2['100', '1', '110', '30', '50']['100', '3/2', '115', '30', '85/2']Failed
fixture 3['109', '1', '110', '21', '50']['227/2', '3/2', '115', '33/2', '85/2']Failed
fixture 4['110', '2/3', '110', '20', '50']['115', '2/3', '115', '15', '85/2']Failed
fixture 5['332/3', '2/3', '110', '58/3', '50']['347/3', '2/3', '115', '43/3', '85/2']Failed
fixture 6['350/3', '2/3', '110', '40/3', '50']['365/3', '2/3', '115', '25/3', '85/2']Failed
fixture 7['130', '2/3', '110', '-10', '35']['135', '2/3', '115', '-15', '55/2']Failed
fixture 8['340/3', '2/3', '110', '5/3', '55/2']['355/3', '2/3', '115', '-10/3', '20']Failed
fixture 9['105', '1', '110', '11', '29']['215/2', '3/2', '115', '17/2', '43/2']Failed
fixture 10['490/3', '2/3', '110', '-100/3', '50']['505/3', '2/3', '115', '-115/3', '85/2']Failed
variant capture['96', '1', '110', '34', '50']['94', '3/2', '115', '36', '85/2']Failed

SHA-256 / b67f904b64380585c473a56ac298d04ce7a157c04591f2c9fc0910ad632c7819

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(r):
    first_span = r['switch'] - r['mono_origin']
    first_rate = Fraction(r['p0'],r['q0'])
    second_rate = Fraction(r['p1'],r['q1'])
    join = r['anchor'] + first_span * first_rate
    second = r['reading'] >= r['switch']
    delta = r['reading'] - (r['switch'] if second else r['mono_origin'])
    active = second_rate if second else first_rate
    coordinate = (join if second else r['anchor']) + delta * active
    until = r['target'] - coordinate
    inverse = r['switch'] + (r['target'] - join) / second_rate
    return [str(coordinate),str(active),str(join),str(until),str(inverse)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 5, 'target': 130}), ['185/2', '3/2', '115', '75/2', '85/2'])
check('fixture 2', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 10, 'target': 130}), ['100', '3/2', '115', '30', '85/2'])
check('fixture 3', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 19, 'target': 130}), ['227/2', '3/2', '115', '33/2', '85/2'])
check('fixture 4', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 20, 'target': 130}), ['115', '2/3', '115', '15', '85/2'])
check('fixture 5', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 21, 'target': 130}), ['347/3', '2/3', '115', '43/3', '85/2'])
check('fixture 6', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 30, 'target': 130}), ['365/3', '2/3', '115', '25/3', '85/2'])
check('fixture 7', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 50, 'target': 120}), ['135', '2/3', '115', '-15', '55/2'])
check('fixture 8', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 25, 'target': 115}), ['355/3', '2/3', '115', '-10/3', '20'])
check('fixture 9', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 15, 'target': 116}), ['215/2', '3/2', '115', '17/2', '43/2'])
check('fixture 10', solve({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 100, 'target': 130}), ['505/3', '2/3', '115', '-115/3', '85/2'])
variant = [({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 6, 'target': 130}, ['94', '3/2', '115', '36', '85/2']), ({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 7, 'target': 130}, ['191/2', '3/2', '115', '69/2', '85/2']), ({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 8, 'target': 130}, ['97', '3/2', '115', '33', '85/2']), ({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 9, 'target': 130}, ['197/2', '3/2', '115', '63/2', '85/2']), ({'mono_origin': 10, 'anchor': 100, 'switch': 20, 'p0': 3, 'q0': 2, 'p1': 2, 'q1': 3, 'reading': 10, 'target': 130}, ['100', '3/2', '115', '30', '85/2'])]
check("variant capture", solve(variant[N-1][0]), variant[N-1][1])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
fixture 1['185/2', '3/2', '115', '75/2', '85/2']['185/2', '3/2', '115', '75/2', '85/2']Passed
fixture 2['100', '3/2', '115', '30', '85/2']['100', '3/2', '115', '30', '85/2']Passed
fixture 3['227/2', '3/2', '115', '33/2', '85/2']['227/2', '3/2', '115', '33/2', '85/2']Passed
fixture 4['115', '2/3', '115', '15', '85/2']['115', '2/3', '115', '15', '85/2']Passed
fixture 5['347/3', '2/3', '115', '43/3', '85/2']['347/3', '2/3', '115', '43/3', '85/2']Passed
fixture 6['365/3', '2/3', '115', '25/3', '85/2']['365/3', '2/3', '115', '25/3', '85/2']Passed
fixture 7['135', '2/3', '115', '-15', '55/2']['135', '2/3', '115', '-15', '55/2']Passed
fixture 8['355/3', '2/3', '115', '-10/3', '20']['355/3', '2/3', '115', '-10/3', '20']Passed
fixture 9['215/2', '3/2', '115', '17/2', '43/2']['215/2', '3/2', '115', '17/2', '43/2']Passed
fixture 10['505/3', '2/3', '115', '-115/3', '85/2']['505/3', '2/3', '115', '-115/3', '85/2']Passed
variant capture['94', '3/2', '115', '36', '85/2']['94', '3/2', '115', '36', '85/2']Passed

SHA-256 / 8fdcdffbb20c91deb17e8de8625c7ba422be0170c4d12248e7529db60f2b6fc4

Verification & scope

Deterministic integer reference model with stipulated units and policies; not a complete clock, wire standard or platform implementation. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.

Observations recorded using Python 3.12.14 at 2026-09-29T14:39:57.646514+00:00.

Case digest / 9b3fc7ec4f1a9e6528a82d514ed9101fa0365612bfd0e0c23a15ec0eabc9de56