FAILURE MAP
← Case archive

FA-17731 / Time representation / Open access

Backward or zero civil adjustment gets a positive direction marker · case 01

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

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

ROOT CAUSE

Backward or zero civil adjustment gets a positive direction marker.

VERIFIED REPAIR

Preserve the declared coordinate and state contract at direction: direction = (shift > 0) - (shift < 0).

Unsuccessful approach: The partial correction still substitutes -1 if shift < 0 else 1 at the same fault site.

Case contract

A stipulated forward offset transition at UTC T creates local gap [T+old,T+new). Reject returns None, forward adds gap width and backward subtracts it, preserving position in the gap. Return resolved local coordinate, UTC coordinate, shift direction and successful-change flag. Outside-gap labels are unchanged.

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):
    start = r['transition'] + r['old']
    end = r['transition'] + r['new']
    width = r['new'] - r['old']
    in_gap = start <= r['local'] < end
    shift = (width if r['policy'] == 'forward' else -width) if in_gap and r['policy'] != 'reject' else 0
    resolved = None if in_gap and r['policy'] == 'reject' else r['local'] + shift
    offset = None if resolved is None else (r['old'] if resolved < start else r['new'])
    utc = None if resolved is None else resolved - offset
    direction = int(shift != 0)
    changed = resolved is not None and resolved != r['local']
    return [resolved,utc,direction,changed]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve({'local': 109, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}), [109, 99, 0, False])
check('fixture 2', solve({'local': 110, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}), [130, 100, 1, True])
check('fixture 3', solve({'local': 110, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'backward'}), [90, 80, -1, True])
check('fixture 4', solve({'local': 110, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'reject'}), [None, None, 0, False])
check('fixture 5', solve({'local': 129, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'backward'}), [109, 99, -1, True])
check('fixture 6', solve({'local': 130, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'reject'}), [130, 100, 0, False])
check('fixture 7', solve({'local': 120, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}), [140, 110, 1, True])
check('fixture 8', solve({'local': 120, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'reject'}), [None, None, 0, False])
check('fixture 9', solve({'local': -20, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'backward'}), [-20, -30, 0, False])
check('fixture 10', solve({'local': 140, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}), [140, 110, 0, False])
variant = [({'local': 110, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [130, 100, 1, True]), ({'local': 111, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [131, 101, 1, True]), ({'local': 112, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [132, 102, 1, True]), ({'local': 113, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [133, 103, 1, True]), ({'local': 114, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [134, 104, 1, True])]
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[109, 99, 0, False][109, 99, 0, False]Passed
fixture 2[130, 100, 1, True][130, 100, 1, True]Passed
fixture 3[90, 80, 1, True][90, 80, -1, True]Failed
fixture 4[None, None, 0, False][None, None, 0, False]Passed
fixture 5[109, 99, 1, True][109, 99, -1, True]Failed
fixture 6[130, 100, 0, False][130, 100, 0, False]Passed
fixture 7[140, 110, 1, True][140, 110, 1, True]Passed
fixture 8[None, None, 0, False][None, None, 0, False]Passed
fixture 9[-20, -30, 0, False][-20, -30, 0, False]Passed
fixture 10[140, 110, 0, False][140, 110, 0, False]Passed
variant capture[130, 100, 1, True][130, 100, 1, True]Passed

SHA-256 / 7729ef90ae6d38d56a7246027e4233354824cf342a228af97f82d18d422d5102

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):
    start = r['transition'] + r['old']
    end = r['transition'] + r['new']
    width = r['new'] - r['old']
    in_gap = start <= r['local'] < end
    shift = (width if r['policy'] == 'forward' else -width) if in_gap and r['policy'] != 'reject' else 0
    resolved = None if in_gap and r['policy'] == 'reject' else r['local'] + shift
    offset = None if resolved is None else (r['old'] if resolved < start else r['new'])
    utc = None if resolved is None else resolved - offset
    direction = -1 if shift < 0 else 1
    changed = resolved is not None and resolved != r['local']
    return [resolved,utc,direction,changed]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve({'local': 109, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}), [109, 99, 0, False])
check('fixture 2', solve({'local': 110, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}), [130, 100, 1, True])
check('fixture 3', solve({'local': 110, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'backward'}), [90, 80, -1, True])
check('fixture 4', solve({'local': 110, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'reject'}), [None, None, 0, False])
check('fixture 5', solve({'local': 129, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'backward'}), [109, 99, -1, True])
check('fixture 6', solve({'local': 130, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'reject'}), [130, 100, 0, False])
check('fixture 7', solve({'local': 120, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}), [140, 110, 1, True])
check('fixture 8', solve({'local': 120, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'reject'}), [None, None, 0, False])
check('fixture 9', solve({'local': -20, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'backward'}), [-20, -30, 0, False])
check('fixture 10', solve({'local': 140, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}), [140, 110, 0, False])
variant = [({'local': 110, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [130, 100, 1, True]), ({'local': 111, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [131, 101, 1, True]), ({'local': 112, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [132, 102, 1, True]), ({'local': 113, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [133, 103, 1, True]), ({'local': 114, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [134, 104, 1, True])]
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[109, 99, 1, False][109, 99, 0, False]Failed
fixture 2[130, 100, 1, True][130, 100, 1, True]Passed
fixture 3[90, 80, -1, True][90, 80, -1, True]Passed
fixture 4[None, None, 1, False][None, None, 0, False]Failed
fixture 5[109, 99, -1, True][109, 99, -1, True]Passed
fixture 6[130, 100, 1, False][130, 100, 0, False]Failed
fixture 7[140, 110, 1, True][140, 110, 1, True]Passed
fixture 8[None, None, 1, False][None, None, 0, False]Failed
fixture 9[-20, -30, 1, False][-20, -30, 0, False]Failed
fixture 10[140, 110, 1, False][140, 110, 0, False]Failed
variant capture[130, 100, 1, True][130, 100, 1, True]Passed

SHA-256 / fa10bd2b82fedf32c9781f8f102ed427e93059c24e148839924915e63f72adf3

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):
    start = r['transition'] + r['old']
    end = r['transition'] + r['new']
    width = r['new'] - r['old']
    in_gap = start <= r['local'] < end
    shift = (width if r['policy'] == 'forward' else -width) if in_gap and r['policy'] != 'reject' else 0
    resolved = None if in_gap and r['policy'] == 'reject' else r['local'] + shift
    offset = None if resolved is None else (r['old'] if resolved < start else r['new'])
    utc = None if resolved is None else resolved - offset
    direction = (shift > 0) - (shift < 0)
    changed = resolved is not None and resolved != r['local']
    return [resolved,utc,direction,changed]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve({'local': 109, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}), [109, 99, 0, False])
check('fixture 2', solve({'local': 110, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}), [130, 100, 1, True])
check('fixture 3', solve({'local': 110, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'backward'}), [90, 80, -1, True])
check('fixture 4', solve({'local': 110, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'reject'}), [None, None, 0, False])
check('fixture 5', solve({'local': 129, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'backward'}), [109, 99, -1, True])
check('fixture 6', solve({'local': 130, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'reject'}), [130, 100, 0, False])
check('fixture 7', solve({'local': 120, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}), [140, 110, 1, True])
check('fixture 8', solve({'local': 120, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'reject'}), [None, None, 0, False])
check('fixture 9', solve({'local': -20, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'backward'}), [-20, -30, 0, False])
check('fixture 10', solve({'local': 140, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}), [140, 110, 0, False])
variant = [({'local': 110, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [130, 100, 1, True]), ({'local': 111, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [131, 101, 1, True]), ({'local': 112, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [132, 102, 1, True]), ({'local': 113, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [133, 103, 1, True]), ({'local': 114, 'old': 10, 'new': 30, 'transition': 100, 'policy': 'forward'}, [134, 104, 1, True])]
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[109, 99, 0, False][109, 99, 0, False]Passed
fixture 2[130, 100, 1, True][130, 100, 1, True]Passed
fixture 3[90, 80, -1, True][90, 80, -1, True]Passed
fixture 4[None, None, 0, False][None, None, 0, False]Passed
fixture 5[109, 99, -1, True][109, 99, -1, True]Passed
fixture 6[130, 100, 0, False][130, 100, 0, False]Passed
fixture 7[140, 110, 1, True][140, 110, 1, True]Passed
fixture 8[None, None, 0, False][None, None, 0, False]Passed
fixture 9[-20, -30, 0, False][-20, -30, 0, False]Passed
fixture 10[140, 110, 0, False][140, 110, 0, False]Passed
variant capture[130, 100, 1, True][130, 100, 1, True]Passed

SHA-256 / d0ee2a9fbf387a1d8347ba1f8e5292e596af918caa4999da3261fb5675877d12

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

Case digest / c7385e544ae6f181015f50895aaab7c8c86b6b16337a37717d93c730925136e7