FAILURE MAP
← Case archive

FA-25341 / Filter interfaces / Open access

Integer-only facet inputs flag all decimal points specifically · case 01

Integer-only facet inputs flag all decimal points specifically is violated by the widget projection.

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

ROOT CAUSE

The fraction-rejection decision uses `d['text'].strip().endswith('.0')` instead of the stipulated numeric-text-editor projection.

VERIFIED REPAIR

Implement the declared fraction-rejection projection: `'.' in d['text'].strip()`.

Unsuccessful approach: The attempted correction `not d['text'].strip().isdigit()` still violates the explicit contract fixtures.

Case contract

This bounded numeric editor accepts ASCII signed integers with surrounding spaces, preserving incomplete drafts and disallowing exponent, decimal and non-ASCII forms. This example checks: Integer-only facet inputs flag all decimal points specifically.

Why this case matters

Filter-widget state and serialization must preserve user constraints while the view changes.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'trim-draft':(d['text'].strip()), 'complete-integer':(bool(d['text'].strip()) and d['text'].strip().lstrip('+-').isascii() and d['text'].strip().lstrip('+-').isdigit() and d['text'].strip().count('+')+d['text'].strip().count('-')<=1), 'incomplete-sign':(d['text'].strip() in ('+','-')), 'blank-open':(d['text'].strip()==''), 'fraction-rejection':(d['text'].strip().endswith('.0')), 'exponent-rejection':('e' in d['text'].lower())}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '+2'}, {'trim-draft': '+2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' + '}, {'trim-draft': '+', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-'}, {'trim-draft': '-', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '1.0'}, {'trim-draft': '1.0', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '1e2'}, {'trim-draft': '1e2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '1E2'}, {'trim-draft': '1E2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '++2'}, {'trim-draft': '++2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ''}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False})], 2: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '-'}, {'trim-draft': '-', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ''}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' '}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '0'}, {'trim-draft': '0', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' 2 '}, {'trim-draft': '2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '1 2'}, {'trim-draft': '1 2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '+2'}, {'trim-draft': '+2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-3'}, {'trim-draft': '-3', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False})], 3: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '++2'}, {'trim-draft': '++2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-3'}, {'trim-draft': '-3', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' + '}, {'trim-draft': '+', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-'}, {'trim-draft': '-', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '1.0'}, {'trim-draft': '1.0', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '1e2'}, {'trim-draft': '1e2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '1E2'}, {'trim-draft': '1E2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ''}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False})], 4: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '1 2'}, {'trim-draft': '1 2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '++2'}, {'trim-draft': '++2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ''}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' '}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '0'}, {'trim-draft': '0', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' 2 '}, {'trim-draft': '2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '+2'}, {'trim-draft': '+2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-3'}, {'trim-draft': '-3', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False})], 5: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': ' + '}, {'trim-draft': '+', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '+2'}, {'trim-draft': '+2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-3'}, {'trim-draft': '-3', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-'}, {'trim-draft': '-', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '1.0'}, {'trim-draft': '1.0', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '1e2'}, {'trim-draft': '1e2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '1E2'}, {'trim-draft': '1E2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '++2'}, {'trim-draft': '++2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False})]}
for index, (data, expected) in enumerate(fixtures[N]):
    check("contract fixture " + str(index), solve(data), expected)
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
contract fixture 0{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '1.5'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '1.5'}Failed
contract fixture 1{'blank-open': False, 'complete-integer': True, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '+2'}{'blank-open': False, 'complete-integer': True, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '+2'}Passed
contract fixture 2{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': True, 'trim-draft': '+'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': True, 'trim-draft': '+'}Passed
contract fixture 3{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': True, 'trim-draft': '-'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': True, 'trim-draft': '-'}Passed
contract fixture 4{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '1.0'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '1.0'}Passed
contract fixture 5{'blank-open': False, 'complete-integer': False, 'exponent-rejection': True, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '1e2'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': True, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '1e2'}Passed
contract fixture 6{'blank-open': False, 'complete-integer': False, 'exponent-rejection': True, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '1E2'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': True, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '1E2'}Passed
contract fixture 7{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '++2'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '++2'}Passed
contract fixture 8{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '٢'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '٢'}Passed
contract fixture 9{'blank-open': True, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': ''}{'blank-open': True, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': ''}Passed

SHA-256 / 86c51b6b21ee6166a801a786ec92e9f4eeb54c65e46c1293eeab391881e47e80

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'trim-draft':(d['text'].strip()), 'complete-integer':(bool(d['text'].strip()) and d['text'].strip().lstrip('+-').isascii() and d['text'].strip().lstrip('+-').isdigit() and d['text'].strip().count('+')+d['text'].strip().count('-')<=1), 'incomplete-sign':(d['text'].strip() in ('+','-')), 'blank-open':(d['text'].strip()==''), 'fraction-rejection':(not d['text'].strip().isdigit()), 'exponent-rejection':('e' in d['text'].lower())}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '+2'}, {'trim-draft': '+2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' + '}, {'trim-draft': '+', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-'}, {'trim-draft': '-', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '1.0'}, {'trim-draft': '1.0', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '1e2'}, {'trim-draft': '1e2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '1E2'}, {'trim-draft': '1E2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '++2'}, {'trim-draft': '++2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ''}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False})], 2: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '-'}, {'trim-draft': '-', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ''}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' '}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '0'}, {'trim-draft': '0', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' 2 '}, {'trim-draft': '2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '1 2'}, {'trim-draft': '1 2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '+2'}, {'trim-draft': '+2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-3'}, {'trim-draft': '-3', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False})], 3: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '++2'}, {'trim-draft': '++2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-3'}, {'trim-draft': '-3', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' + '}, {'trim-draft': '+', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-'}, {'trim-draft': '-', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '1.0'}, {'trim-draft': '1.0', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '1e2'}, {'trim-draft': '1e2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '1E2'}, {'trim-draft': '1E2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ''}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False})], 4: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '1 2'}, {'trim-draft': '1 2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '++2'}, {'trim-draft': '++2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ''}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' '}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '0'}, {'trim-draft': '0', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' 2 '}, {'trim-draft': '2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '+2'}, {'trim-draft': '+2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-3'}, {'trim-draft': '-3', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False})], 5: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': ' + '}, {'trim-draft': '+', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '+2'}, {'trim-draft': '+2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-3'}, {'trim-draft': '-3', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-'}, {'trim-draft': '-', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '1.0'}, {'trim-draft': '1.0', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '1e2'}, {'trim-draft': '1e2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '1E2'}, {'trim-draft': '1E2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '++2'}, {'trim-draft': '++2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False})]}
for index, (data, expected) in enumerate(fixtures[N]):
    check("contract fixture " + str(index), solve(data), expected)
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
contract fixture 0{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '1.5'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '1.5'}Passed
contract fixture 1{'blank-open': False, 'complete-integer': True, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '+2'}{'blank-open': False, 'complete-integer': True, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '+2'}Failed
contract fixture 2{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': True, 'trim-draft': '+'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': True, 'trim-draft': '+'}Failed
contract fixture 3{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': True, 'trim-draft': '-'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': True, 'trim-draft': '-'}Failed
contract fixture 4{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '1.0'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '1.0'}Passed
contract fixture 5{'blank-open': False, 'complete-integer': False, 'exponent-rejection': True, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '1e2'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': True, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '1e2'}Failed
contract fixture 6{'blank-open': False, 'complete-integer': False, 'exponent-rejection': True, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '1E2'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': True, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '1E2'}Failed
contract fixture 7{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '++2'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '++2'}Failed
contract fixture 8{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '٢'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '٢'}Passed
contract fixture 9{'blank-open': True, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': ''}{'blank-open': True, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': ''}Failed

SHA-256 / 65ccdbf21b0dd21e2c9897807ebb558a6948b2edb0beca6428fda8ba85ef92a7

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'trim-draft':(d['text'].strip()), 'complete-integer':(bool(d['text'].strip()) and d['text'].strip().lstrip('+-').isascii() and d['text'].strip().lstrip('+-').isdigit() and d['text'].strip().count('+')+d['text'].strip().count('-')<=1), 'incomplete-sign':(d['text'].strip() in ('+','-')), 'blank-open':(d['text'].strip()==''), 'fraction-rejection':('.' in d['text'].strip()), 'exponent-rejection':('e' in d['text'].lower())}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '+2'}, {'trim-draft': '+2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' + '}, {'trim-draft': '+', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-'}, {'trim-draft': '-', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '1.0'}, {'trim-draft': '1.0', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '1e2'}, {'trim-draft': '1e2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '1E2'}, {'trim-draft': '1E2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '++2'}, {'trim-draft': '++2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ''}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False})], 2: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '-'}, {'trim-draft': '-', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ''}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' '}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '0'}, {'trim-draft': '0', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' 2 '}, {'trim-draft': '2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '1 2'}, {'trim-draft': '1 2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '+2'}, {'trim-draft': '+2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-3'}, {'trim-draft': '-3', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False})], 3: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '++2'}, {'trim-draft': '++2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-3'}, {'trim-draft': '-3', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' + '}, {'trim-draft': '+', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-'}, {'trim-draft': '-', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '1.0'}, {'trim-draft': '1.0', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '1e2'}, {'trim-draft': '1e2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '1E2'}, {'trim-draft': '1E2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ''}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False})], 4: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '1 2'}, {'trim-draft': '1 2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '++2'}, {'trim-draft': '++2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ''}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' '}, {'trim-draft': '', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': True, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '0'}, {'trim-draft': '0', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': ' 2 '}, {'trim-draft': '2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '+2'}, {'trim-draft': '+2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-3'}, {'trim-draft': '-3', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False})], 5: [({'text': '1.5'}, {'trim-draft': '1.5', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': ' + '}, {'trim-draft': '+', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '+2'}, {'trim-draft': '+2', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-3'}, {'trim-draft': '-3', 'complete-integer': True, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '-'}, {'trim-draft': '-', 'complete-integer': False, 'incomplete-sign': True, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '1.0'}, {'trim-draft': '1.0', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': True, 'exponent-rejection': False}), ({'text': '1e2'}, {'trim-draft': '1e2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '1E2'}, {'trim-draft': '1E2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': True}), ({'text': '++2'}, {'trim-draft': '++2', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False}), ({'text': '٢'}, {'trim-draft': '٢', 'complete-integer': False, 'incomplete-sign': False, 'blank-open': False, 'fraction-rejection': False, 'exponent-rejection': False})]}
for index, (data, expected) in enumerate(fixtures[N]):
    check("contract fixture " + str(index), solve(data), expected)
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
contract fixture 0{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '1.5'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '1.5'}Passed
contract fixture 1{'blank-open': False, 'complete-integer': True, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '+2'}{'blank-open': False, 'complete-integer': True, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '+2'}Passed
contract fixture 2{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': True, 'trim-draft': '+'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': True, 'trim-draft': '+'}Passed
contract fixture 3{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': True, 'trim-draft': '-'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': True, 'trim-draft': '-'}Passed
contract fixture 4{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '1.0'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': True, 'incomplete-sign': False, 'trim-draft': '1.0'}Passed
contract fixture 5{'blank-open': False, 'complete-integer': False, 'exponent-rejection': True, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '1e2'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': True, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '1e2'}Passed
contract fixture 6{'blank-open': False, 'complete-integer': False, 'exponent-rejection': True, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '1E2'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': True, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '1E2'}Passed
contract fixture 7{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '++2'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '++2'}Passed
contract fixture 8{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '٢'}{'blank-open': False, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': '٢'}Passed
contract fixture 9{'blank-open': True, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': ''}{'blank-open': True, 'complete-integer': False, 'exponent-rejection': False, 'fraction-rejection': False, 'incomplete-sign': False, 'trim-draft': ''}Passed

SHA-256 / c4968d27ed504f8e480b90c921adca9382478b8fd9599e6549593c7edc720631

Verification & scope

Deterministic bounded UI-state model only; no browser, query engine, network, or production-standard conformance is claimed. 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:41:05.798565+00:00.

Case digest / 7a092e0584a180779e1723c6b88a1c29d36bb7a3dc018273ca7b864c16da13a4