FA-18406 / Time representation / Open access
Offset parser admits non-ASCII decimal glyphs · case 01
The decoded time state disagrees with the explicit regression oracle for digits.
ROOT CAUSE
Offset parser admits non-ASCII decimal glyphs.
VERIFIED REPAIR
Preserve the declared coordinate and state contract at digits: digits = shape and all('0' <= c <= '9' for c in text[1:3]+text[4:6]).
Unsuccessful approach: The partial correction still substitutes shape and (text[1:3]+text[4:6]).isdecimal() at the same fault site.
Case contract
Controlled offset lexeme is Z or signed HH:MM with ASCII digits, hour<=14, minute<=59 and hour14 only minute00. Negative zero means unknown local offset and has no numeric UTC offset; positive zero and Z are known UTC. Return accepted, known, signed minute displacement and original negative-zero marker. No timezone database is consulted.
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):
text = r['text']
zulu = text == 'Z'
shape = len(text) == 6 and text[0] in '+-' and text[3] == ':'
digits = shape and (text[1:3]+text[4:6]).isdigit()
hour = int(text[1:3]) if digits else 0
minute = int(text[4:6]) if digits else 0
range_ok = hour <= 14 and minute <= 59 and (hour != 14 or minute == 0)
valid = zulu or (digits and range_ok)
unknown = valid and text == '-00:00'
offset = None if not valid or unknown else (0 if zulu else (-1 if text[0] == '-' else 1) * (hour * 60 + minute))
return [valid,valid and not unknown,offset,unknown]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve({'text': 'Z', 'probe': 0}), [True, True, 0, False])
check('fixture 2', solve({'text': 'z', 'probe': 0}), [False, False, None, False])
check('fixture 3', solve({'text': 'UTC', 'probe': 0}), [False, False, None, False])
check('fixture 4', solve({'text': '+00:00', 'probe': 0}), [True, True, 0, False])
check('fixture 5', solve({'text': '-00:00', 'probe': 0}), [True, False, None, True])
check('fixture 6', solve({'text': '-05:30', 'probe': 0}), [True, True, -330, False])
check('fixture 7', solve({'text': '+14:00', 'probe': 0}), [True, True, 840, False])
check('fixture 8', solve({'text': '+14:01', 'probe': 0}), [False, False, None, False])
check('fixture 9', solve({'text': '+12:59', 'probe': 0}), [True, True, 779, False])
check('fixture 10', solve({'text': '+12:60', 'probe': 0}), [False, False, None, False])
check('fixture 11', solve({'text': 'x01:00', 'probe': 0}), [False, False, None, False])
check('fixture 12', solve({'text': '+01x00', 'probe': 0}), [False, False, None, False])
check('fixture 13', solve({'text': '+٠١:٠٠', 'probe': 0}), [False, False, None, False])
check('fixture 14', solve({'text': ' Z ', 'probe': 0}), [False, False, None, False])
check('fixture 15', solve({'text': '+10:02', 'probe': 0}), [True, True, 602, False])
variant = [({'text': '+01:30', 'probe': 0}, [True, True, 90, False]), ({'text': '+02:30', 'probe': 0}, [True, True, 150, False]), ({'text': '+03:30', 'probe': 0}, [True, True, 210, False]), ({'text': '+04:30', 'probe': 0}, [True, True, 270, False]), ({'text': '+05:30', 'probe': 0}, [True, True, 330, False])]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| fixture 1 | [True, True, 0, False] | [True, True, 0, False] | Passed |
| fixture 2 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 3 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 4 | [True, True, 0, False] | [True, True, 0, False] | Passed |
| fixture 5 | [True, False, None, True] | [True, False, None, True] | Passed |
| fixture 6 | [True, True, -330, False] | [True, True, -330, False] | Passed |
| fixture 7 | [True, True, 840, False] | [True, True, 840, False] | Passed |
| fixture 8 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 9 | [True, True, 779, False] | [True, True, 779, False] | Passed |
| fixture 10 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 11 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 12 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 13 | [True, True, 60, False] | [False, False, None, False] | Failed |
| fixture 14 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 15 | [True, True, 602, False] | [True, True, 602, False] | Passed |
| variant capture | [True, True, 90, False] | [True, True, 90, False] | Passed |
SHA-256 / 62b9adbae0bc4ad2c5a24099154444d1ead1a087c903d79c29b39371928e0f6b
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):
text = r['text']
zulu = text == 'Z'
shape = len(text) == 6 and text[0] in '+-' and text[3] == ':'
digits = shape and (text[1:3]+text[4:6]).isdecimal()
hour = int(text[1:3]) if digits else 0
minute = int(text[4:6]) if digits else 0
range_ok = hour <= 14 and minute <= 59 and (hour != 14 or minute == 0)
valid = zulu or (digits and range_ok)
unknown = valid and text == '-00:00'
offset = None if not valid or unknown else (0 if zulu else (-1 if text[0] == '-' else 1) * (hour * 60 + minute))
return [valid,valid and not unknown,offset,unknown]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve({'text': 'Z', 'probe': 0}), [True, True, 0, False])
check('fixture 2', solve({'text': 'z', 'probe': 0}), [False, False, None, False])
check('fixture 3', solve({'text': 'UTC', 'probe': 0}), [False, False, None, False])
check('fixture 4', solve({'text': '+00:00', 'probe': 0}), [True, True, 0, False])
check('fixture 5', solve({'text': '-00:00', 'probe': 0}), [True, False, None, True])
check('fixture 6', solve({'text': '-05:30', 'probe': 0}), [True, True, -330, False])
check('fixture 7', solve({'text': '+14:00', 'probe': 0}), [True, True, 840, False])
check('fixture 8', solve({'text': '+14:01', 'probe': 0}), [False, False, None, False])
check('fixture 9', solve({'text': '+12:59', 'probe': 0}), [True, True, 779, False])
check('fixture 10', solve({'text': '+12:60', 'probe': 0}), [False, False, None, False])
check('fixture 11', solve({'text': 'x01:00', 'probe': 0}), [False, False, None, False])
check('fixture 12', solve({'text': '+01x00', 'probe': 0}), [False, False, None, False])
check('fixture 13', solve({'text': '+٠١:٠٠', 'probe': 0}), [False, False, None, False])
check('fixture 14', solve({'text': ' Z ', 'probe': 0}), [False, False, None, False])
check('fixture 15', solve({'text': '+10:02', 'probe': 0}), [True, True, 602, False])
variant = [({'text': '+01:30', 'probe': 0}, [True, True, 90, False]), ({'text': '+02:30', 'probe': 0}, [True, True, 150, False]), ({'text': '+03:30', 'probe': 0}, [True, True, 210, False]), ({'text': '+04:30', 'probe': 0}, [True, True, 270, False]), ({'text': '+05:30', 'probe': 0}, [True, True, 330, False])]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| fixture 1 | [True, True, 0, False] | [True, True, 0, False] | Passed |
| fixture 2 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 3 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 4 | [True, True, 0, False] | [True, True, 0, False] | Passed |
| fixture 5 | [True, False, None, True] | [True, False, None, True] | Passed |
| fixture 6 | [True, True, -330, False] | [True, True, -330, False] | Passed |
| fixture 7 | [True, True, 840, False] | [True, True, 840, False] | Passed |
| fixture 8 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 9 | [True, True, 779, False] | [True, True, 779, False] | Passed |
| fixture 10 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 11 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 12 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 13 | [True, True, 60, False] | [False, False, None, False] | Failed |
| fixture 14 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 15 | [True, True, 602, False] | [True, True, 602, False] | Passed |
| variant capture | [True, True, 90, False] | [True, True, 90, False] | Passed |
SHA-256 / ea15e197b34ac1b13177a8cdcd1f1b2cfd60b557b13ce7e74db8e2a671995a4d
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):
text = r['text']
zulu = text == 'Z'
shape = len(text) == 6 and text[0] in '+-' and text[3] == ':'
digits = shape and all('0' <= c <= '9' for c in text[1:3]+text[4:6])
hour = int(text[1:3]) if digits else 0
minute = int(text[4:6]) if digits else 0
range_ok = hour <= 14 and minute <= 59 and (hour != 14 or minute == 0)
valid = zulu or (digits and range_ok)
unknown = valid and text == '-00:00'
offset = None if not valid or unknown else (0 if zulu else (-1 if text[0] == '-' else 1) * (hour * 60 + minute))
return [valid,valid and not unknown,offset,unknown]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve({'text': 'Z', 'probe': 0}), [True, True, 0, False])
check('fixture 2', solve({'text': 'z', 'probe': 0}), [False, False, None, False])
check('fixture 3', solve({'text': 'UTC', 'probe': 0}), [False, False, None, False])
check('fixture 4', solve({'text': '+00:00', 'probe': 0}), [True, True, 0, False])
check('fixture 5', solve({'text': '-00:00', 'probe': 0}), [True, False, None, True])
check('fixture 6', solve({'text': '-05:30', 'probe': 0}), [True, True, -330, False])
check('fixture 7', solve({'text': '+14:00', 'probe': 0}), [True, True, 840, False])
check('fixture 8', solve({'text': '+14:01', 'probe': 0}), [False, False, None, False])
check('fixture 9', solve({'text': '+12:59', 'probe': 0}), [True, True, 779, False])
check('fixture 10', solve({'text': '+12:60', 'probe': 0}), [False, False, None, False])
check('fixture 11', solve({'text': 'x01:00', 'probe': 0}), [False, False, None, False])
check('fixture 12', solve({'text': '+01x00', 'probe': 0}), [False, False, None, False])
check('fixture 13', solve({'text': '+٠١:٠٠', 'probe': 0}), [False, False, None, False])
check('fixture 14', solve({'text': ' Z ', 'probe': 0}), [False, False, None, False])
check('fixture 15', solve({'text': '+10:02', 'probe': 0}), [True, True, 602, False])
variant = [({'text': '+01:30', 'probe': 0}, [True, True, 90, False]), ({'text': '+02:30', 'probe': 0}, [True, True, 150, False]), ({'text': '+03:30', 'probe': 0}, [True, True, 210, False]), ({'text': '+04:30', 'probe': 0}, [True, True, 270, False]), ({'text': '+05:30', 'probe': 0}, [True, True, 330, False])]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| fixture 1 | [True, True, 0, False] | [True, True, 0, False] | Passed |
| fixture 2 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 3 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 4 | [True, True, 0, False] | [True, True, 0, False] | Passed |
| fixture 5 | [True, False, None, True] | [True, False, None, True] | Passed |
| fixture 6 | [True, True, -330, False] | [True, True, -330, False] | Passed |
| fixture 7 | [True, True, 840, False] | [True, True, 840, False] | Passed |
| fixture 8 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 9 | [True, True, 779, False] | [True, True, 779, False] | Passed |
| fixture 10 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 11 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 12 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 13 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 14 | [False, False, None, False] | [False, False, None, False] | Passed |
| fixture 15 | [True, True, 602, False] | [True, True, 602, False] | Passed |
| variant capture | [True, True, 90, False] | [True, True, 90, False] | Passed |
SHA-256 / 959a41688549c1227741ecdf52779861b8419b7b806c5de6aacf34eeedfd25f1
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.410451+00:00.
Case digest / e9e5e0cae1b2f6d5d4bc6a7432d4a2d7d6dba59ed2e317999bc6479f63272b70