FAILURE MAP
← Case archive

FA-18476 / Time representation / Open access

Piecewise clock discards continuity anchor or active rate · case 01

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

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

ROOT CAUSE

Piecewise clock discards continuity anchor or active rate.

VERIFIED REPAIR

Preserve the declared coordinate and state contract at coordinate: coordinate = (join if second else r['anchor']) + delta * active.

Unsuccessful approach: The partial correction still substitutes (join if second else r['anchor']) + delta 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['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 = 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['100', '2/3', '115', '30', '85/2']['115', '2/3', '115', '15', '85/2']Failed
fixture 5['302/3', '2/3', '115', '88/3', '85/2']['347/3', '2/3', '115', '43/3', '85/2']Failed
fixture 6['320/3', '2/3', '115', '70/3', '85/2']['365/3', '2/3', '115', '25/3', '85/2']Failed
fixture 7['120', '2/3', '115', '0', '55/2']['135', '2/3', '115', '-15', '55/2']Failed
fixture 8['310/3', '2/3', '115', '35/3', '20']['355/3', '2/3', '115', '-10/3', '20']Failed
fixture 9['215/2', '3/2', '115', '17/2', '43/2']['215/2', '3/2', '115', '17/2', '43/2']Passed
fixture 10['460/3', '2/3', '115', '-70/3', '85/2']['505/3', '2/3', '115', '-115/3', '85/2']Failed
variant capture['94', '3/2', '115', '36', '85/2']['94', '3/2', '115', '36', '85/2']Passed

SHA-256 / 6139901bc776e785eebe5561023d8aa76f233ad86ae70097f70cb95a1c120e11

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
    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', '3/2', '115', '35', '85/2']['185/2', '3/2', '115', '75/2', '85/2']Failed
fixture 2['100', '3/2', '115', '30', '85/2']['100', '3/2', '115', '30', '85/2']Passed
fixture 3['109', '3/2', '115', '21', '85/2']['227/2', '3/2', '115', '33/2', '85/2']Failed
fixture 4['115', '2/3', '115', '15', '85/2']['115', '2/3', '115', '15', '85/2']Passed
fixture 5['116', '2/3', '115', '14', '85/2']['347/3', '2/3', '115', '43/3', '85/2']Failed
fixture 6['125', '2/3', '115', '5', '85/2']['365/3', '2/3', '115', '25/3', '85/2']Failed
fixture 7['145', '2/3', '115', '-25', '55/2']['135', '2/3', '115', '-15', '55/2']Failed
fixture 8['120', '2/3', '115', '-5', '20']['355/3', '2/3', '115', '-10/3', '20']Failed
fixture 9['105', '3/2', '115', '11', '43/2']['215/2', '3/2', '115', '17/2', '43/2']Failed
fixture 10['195', '2/3', '115', '-65', '85/2']['505/3', '2/3', '115', '-115/3', '85/2']Failed
variant capture['96', '3/2', '115', '34', '85/2']['94', '3/2', '115', '36', '85/2']Failed

SHA-256 / 0f6744b3366c8ef7b0d68fc1c434c452a2ad6e90607c40e9ed11151f9291c511

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:58.057550+00:00.

Case digest / 1e2839093a8f9fb315e7b666d4fe9d5a12fb43c7dccc103c8a2487c0c6fc4b29