FAILURE MAP
← Case archive

FA-18821 / Time representation / Open access

Offset conversion emits untrusted timestamp or reverses declared timescale mapping · case 01

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

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

ROOT CAUSE

Offset conversion emits untrusted timestamp or reverses declared timescale mapping.

VERIFIED REPAIR

Preserve the declared coordinate and state contract at shifted: shifted = r['query'] + r['offset'] if status == 'ok' else None.

Unsuccessful approach: The partial correction still substitutes r['query'] - r['offset'] if status == 'ok' else None at the same fault site.

Case contract

A timescale offset certificate declares coverage [start,end), publication instant, expiry instant, version and source identity. A query may use offset only inside coverage with a currently valid certificate and minimum accepted version. Query time and validation wall time are independent. Return status precedence identity/version/publication/expiry/coverage, admitted shifted coordinate, remaining validity and coverage margin.

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):
    identity = r['source'] == r['trusted_source']
    version = r['version'] >= r['minimum_version']
    published = r['now'] >= r['published']
    live = r['now'] < r['expires']
    covered = r['start'] <= r['query'] < r['end']
    status = 'identity' if not identity else ('version' if not version else ('future' if not published else ('expired' if not live else ('uncovered' if not covered else 'ok'))))
    shifted = r['query'] + r['offset']
    remaining = max(0,r['expires'] - r['now'])
    left_margin = r['query'] - r['start']
    right_margin = r['end'] - r['query']
    return [status,shifted,remaining,[left_margin,right_margin] if covered else None]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 100, 'offset': 7}), ['ok', 107, 10, [0, 100]])
check('fixture 2', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 3, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['ok', 157, 5, [50, 50]])
check('fixture 3', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 1, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['version', None, 5, [50, 50]])
check('fixture 4', solve({'source': 'clock2', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['identity', None, 5, [50, 50]])
check('fixture 5', solve({'source': 'other', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['identity', None, 5, [50, 50]])
check('fixture 6', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 9, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['future', None, 11, [50, 50]])
check('fixture 7', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 20, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['expired', None, 0, [50, 50]])
check('fixture 8', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 21, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['expired', None, 0, [50, 50]])
check('fixture 9', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 200, 'offset': 7}), ['uncovered', None, 5, None])
check('fixture 10', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 99, 'offset': 7}), ['uncovered', None, 5, None])
check('fixture 11', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 199, 'offset': 7}), ['ok', 206, 5, [99, 1]])
check('fixture 12', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 100, 'offset': 7}), ['ok', 107, 5, [0, 100]])
variant = [({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 101, 'offset': 7}, ['ok', 108, 10, [1, 99]]), ({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 102, 'offset': 7}, ['ok', 109, 10, [2, 98]]), ({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 103, 'offset': 7}, ['ok', 110, 10, [3, 97]]), ({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 104, 'offset': 7}, ['ok', 111, 10, [4, 96]]), ({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 105, 'offset': 7}, ['ok', 112, 10, [5, 95]])]
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['ok', 107, 10, [0, 100]]['ok', 107, 10, [0, 100]]Passed
fixture 2['ok', 157, 5, [50, 50]]['ok', 157, 5, [50, 50]]Passed
fixture 3['version', 157, 5, [50, 50]]['version', None, 5, [50, 50]]Failed
fixture 4['identity', 157, 5, [50, 50]]['identity', None, 5, [50, 50]]Failed
fixture 5['identity', 157, 5, [50, 50]]['identity', None, 5, [50, 50]]Failed
fixture 6['future', 157, 11, [50, 50]]['future', None, 11, [50, 50]]Failed
fixture 7['expired', 157, 0, [50, 50]]['expired', None, 0, [50, 50]]Failed
fixture 8['expired', 157, 0, [50, 50]]['expired', None, 0, [50, 50]]Failed
fixture 9['uncovered', 207, 5, None]['uncovered', None, 5, None]Failed
fixture 10['uncovered', 106, 5, None]['uncovered', None, 5, None]Failed
fixture 11['ok', 206, 5, [99, 1]]['ok', 206, 5, [99, 1]]Passed
fixture 12['ok', 107, 5, [0, 100]]['ok', 107, 5, [0, 100]]Passed
variant capture['ok', 108, 10, [1, 99]]['ok', 108, 10, [1, 99]]Passed

SHA-256 / 86bf91577fa260fb5a2c4c9e0887118aaac8a66a07c09645895f965bc02224d0

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):
    identity = r['source'] == r['trusted_source']
    version = r['version'] >= r['minimum_version']
    published = r['now'] >= r['published']
    live = r['now'] < r['expires']
    covered = r['start'] <= r['query'] < r['end']
    status = 'identity' if not identity else ('version' if not version else ('future' if not published else ('expired' if not live else ('uncovered' if not covered else 'ok'))))
    shifted = r['query'] - r['offset'] if status == 'ok' else None
    remaining = max(0,r['expires'] - r['now'])
    left_margin = r['query'] - r['start']
    right_margin = r['end'] - r['query']
    return [status,shifted,remaining,[left_margin,right_margin] if covered else None]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 100, 'offset': 7}), ['ok', 107, 10, [0, 100]])
check('fixture 2', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 3, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['ok', 157, 5, [50, 50]])
check('fixture 3', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 1, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['version', None, 5, [50, 50]])
check('fixture 4', solve({'source': 'clock2', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['identity', None, 5, [50, 50]])
check('fixture 5', solve({'source': 'other', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['identity', None, 5, [50, 50]])
check('fixture 6', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 9, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['future', None, 11, [50, 50]])
check('fixture 7', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 20, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['expired', None, 0, [50, 50]])
check('fixture 8', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 21, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['expired', None, 0, [50, 50]])
check('fixture 9', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 200, 'offset': 7}), ['uncovered', None, 5, None])
check('fixture 10', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 99, 'offset': 7}), ['uncovered', None, 5, None])
check('fixture 11', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 199, 'offset': 7}), ['ok', 206, 5, [99, 1]])
check('fixture 12', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 100, 'offset': 7}), ['ok', 107, 5, [0, 100]])
variant = [({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 101, 'offset': 7}, ['ok', 108, 10, [1, 99]]), ({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 102, 'offset': 7}, ['ok', 109, 10, [2, 98]]), ({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 103, 'offset': 7}, ['ok', 110, 10, [3, 97]]), ({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 104, 'offset': 7}, ['ok', 111, 10, [4, 96]]), ({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 105, 'offset': 7}, ['ok', 112, 10, [5, 95]])]
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['ok', 93, 10, [0, 100]]['ok', 107, 10, [0, 100]]Failed
fixture 2['ok', 143, 5, [50, 50]]['ok', 157, 5, [50, 50]]Failed
fixture 3['version', None, 5, [50, 50]]['version', None, 5, [50, 50]]Passed
fixture 4['identity', None, 5, [50, 50]]['identity', None, 5, [50, 50]]Passed
fixture 5['identity', None, 5, [50, 50]]['identity', None, 5, [50, 50]]Passed
fixture 6['future', None, 11, [50, 50]]['future', None, 11, [50, 50]]Passed
fixture 7['expired', None, 0, [50, 50]]['expired', None, 0, [50, 50]]Passed
fixture 8['expired', None, 0, [50, 50]]['expired', None, 0, [50, 50]]Passed
fixture 9['uncovered', None, 5, None]['uncovered', None, 5, None]Passed
fixture 10['uncovered', None, 5, None]['uncovered', None, 5, None]Passed
fixture 11['ok', 192, 5, [99, 1]]['ok', 206, 5, [99, 1]]Failed
fixture 12['ok', 93, 5, [0, 100]]['ok', 107, 5, [0, 100]]Failed
variant capture['ok', 94, 10, [1, 99]]['ok', 108, 10, [1, 99]]Failed

SHA-256 / 2889464d7e88627c1fb2af7ba81b9790d4206fa88a2ff9835eca8149d2b3d2b8

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):
    identity = r['source'] == r['trusted_source']
    version = r['version'] >= r['minimum_version']
    published = r['now'] >= r['published']
    live = r['now'] < r['expires']
    covered = r['start'] <= r['query'] < r['end']
    status = 'identity' if not identity else ('version' if not version else ('future' if not published else ('expired' if not live else ('uncovered' if not covered else 'ok'))))
    shifted = r['query'] + r['offset'] if status == 'ok' else None
    remaining = max(0,r['expires'] - r['now'])
    left_margin = r['query'] - r['start']
    right_margin = r['end'] - r['query']
    return [status,shifted,remaining,[left_margin,right_margin] if covered else None]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 100, 'offset': 7}), ['ok', 107, 10, [0, 100]])
check('fixture 2', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 3, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['ok', 157, 5, [50, 50]])
check('fixture 3', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 1, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['version', None, 5, [50, 50]])
check('fixture 4', solve({'source': 'clock2', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['identity', None, 5, [50, 50]])
check('fixture 5', solve({'source': 'other', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['identity', None, 5, [50, 50]])
check('fixture 6', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 9, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['future', None, 11, [50, 50]])
check('fixture 7', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 20, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['expired', None, 0, [50, 50]])
check('fixture 8', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 21, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 150, 'offset': 7}), ['expired', None, 0, [50, 50]])
check('fixture 9', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 200, 'offset': 7}), ['uncovered', None, 5, None])
check('fixture 10', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 99, 'offset': 7}), ['uncovered', None, 5, None])
check('fixture 11', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 199, 'offset': 7}), ['ok', 206, 5, [99, 1]])
check('fixture 12', solve({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 15, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 100, 'offset': 7}), ['ok', 107, 5, [0, 100]])
variant = [({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 101, 'offset': 7}, ['ok', 108, 10, [1, 99]]), ({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 102, 'offset': 7}, ['ok', 109, 10, [2, 98]]), ({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 103, 'offset': 7}, ['ok', 110, 10, [3, 97]]), ({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 104, 'offset': 7}, ['ok', 111, 10, [4, 96]]), ({'source': 'clock', 'trusted_source': 'clock', 'version': 2, 'minimum_version': 2, 'now': 10, 'published': 10, 'expires': 20, 'start': 100, 'end': 200, 'query': 105, 'offset': 7}, ['ok', 112, 10, [5, 95]])]
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['ok', 107, 10, [0, 100]]['ok', 107, 10, [0, 100]]Passed
fixture 2['ok', 157, 5, [50, 50]]['ok', 157, 5, [50, 50]]Passed
fixture 3['version', None, 5, [50, 50]]['version', None, 5, [50, 50]]Passed
fixture 4['identity', None, 5, [50, 50]]['identity', None, 5, [50, 50]]Passed
fixture 5['identity', None, 5, [50, 50]]['identity', None, 5, [50, 50]]Passed
fixture 6['future', None, 11, [50, 50]]['future', None, 11, [50, 50]]Passed
fixture 7['expired', None, 0, [50, 50]]['expired', None, 0, [50, 50]]Passed
fixture 8['expired', None, 0, [50, 50]]['expired', None, 0, [50, 50]]Passed
fixture 9['uncovered', None, 5, None]['uncovered', None, 5, None]Passed
fixture 10['uncovered', None, 5, None]['uncovered', None, 5, None]Passed
fixture 11['ok', 206, 5, [99, 1]]['ok', 206, 5, [99, 1]]Passed
fixture 12['ok', 107, 5, [0, 100]]['ok', 107, 5, [0, 100]]Passed
variant capture['ok', 108, 10, [1, 99]]['ok', 108, 10, [1, 99]]Passed

SHA-256 / 7da6b4272da020fb83d3ca3a9b5267a88c7fdde9769ed1fc6c747161c29d8d1a

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

Case digest / a955c0ddb3e0f100e907ef48512ffd4f84f90f07640b4530726d9f7cec693498