FA-96661 / Phone number formatting / Open access
PBX dial plan normalizer: extension length is hard-coded · case 01
Five-digit extensions at site B are treated as invalid numbers.
ROOT CAUSE
Internal numbers are recognized by a fixed length of four.
VERIFIED REPAIR
Use the site ext_len.
Unsuccessful approach: Accepting anything up to ext_len digits treats short garbage as an internal extension.
Case contract
Input [dialed, site] with site ext_len, outside prefix and intl prefix. "+" (after stripping) means international: outside + intl + digits. Otherwise on digits: exactly ext_len digits is internal; digits that start with the outside prefix and have 7 or 11 digits after it are already external; 7 digits get the outside prefix; 10 digits get outside + "1"; anything else is invalid.
Why this case matters
Desk phones and softphones share one dial plan; a wrong prefix rule either rings an internal extension or places an unintended external call.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
dialed, site = x
plus = dialed.strip().startswith('+')
d = ''.join(c for c in dialed if c.isdigit())
n_ext, out = site['ext_len'], site['outside']
if plus:
return ['external', out + site['intl'] + d] if d else ['invalid', '']
if len(d) == 4:
return ['internal', d]
if d.startswith(out) and len(d) - len(out) in (7, 11):
return ['external', d]
if len(d) == 7:
return ['external', out + d]
if len(d) == 10:
return ['external', out + '1' + d]
return ['invalid', d]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['international from site A', ['+42 555 0114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550114']], ['international with a leading space at site B', [' +42 555 0114', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550114']], ['four-digit extension', ['2111', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2111']], ['five-digit extension at site B', ['31111', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '31111']], ['three digits are not an extension', ['111', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '111']], ['already prefixed local number', ['95550114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550114']], ['already prefixed with two-digit outside code', ['815550114', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550114']], ['seven-digit local number', ['555-0114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550114']], ['ten-digit national number', ['202-555-0114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550114']], ['ten-digit number starting with the outside digit', ['955-555-0114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550114']]], [['international from site A', ['+42 555 0125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550125']], ['international with a leading space at site B', [' +42 555 0125', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550125']], ['four-digit extension', ['2222', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2222']], ['five-digit extension at site B', ['32222', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '32222']], ['three digits are not an extension', ['122', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '122']], ['already prefixed local number', ['95550125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550125']], ['already prefixed with two-digit outside code', ['815550125', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550125']], ['seven-digit local number', ['555-0125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550125']], ['ten-digit national number', ['202-555-0125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550125']], ['ten-digit number starting with the outside digit', ['955-555-0125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550125']]], [['international from site A', ['+42 555 0136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550136']], ['international with a leading space at site B', [' +42 555 0136', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550136']], ['four-digit extension', ['2333', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2333']], ['five-digit extension at site B', ['33333', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '33333']], ['three digits are not an extension', ['133', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '133']], ['already prefixed local number', ['95550136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550136']], ['already prefixed with two-digit outside code', ['815550136', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550136']], ['seven-digit local number', ['555-0136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550136']], ['ten-digit national number', ['202-555-0136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550136']], ['ten-digit number starting with the outside digit', ['955-555-0136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550136']]], [['international from site A', ['+42 555 0147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550147']], ['international with a leading space at site B', [' +42 555 0147', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550147']], ['four-digit extension', ['2444', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2444']], ['five-digit extension at site B', ['34444', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '34444']], ['three digits are not an extension', ['144', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '144']], ['already prefixed local number', ['95550147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550147']], ['already prefixed with two-digit outside code', ['815550147', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550147']], ['seven-digit local number', ['555-0147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550147']], ['ten-digit national number', ['202-555-0147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550147']], ['ten-digit number starting with the outside digit', ['955-555-0147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550147']]], [['international from site A', ['+42 555 0158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550158']], ['international with a leading space at site B', [' +42 555 0158', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550158']], ['four-digit extension', ['2555', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2555']], ['five-digit extension at site B', ['35555', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '35555']], ['three digits are not an extension', ['155', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '155']], ['already prefixed local number', ['95550158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550158']], ['already prefixed with two-digit outside code', ['815550158', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550158']], ['seven-digit local number', ['555-0158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550158']], ['ten-digit national number', ['202-555-0158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550158']], ['ten-digit number starting with the outside digit', ['955-555-0158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550158']]]]
for label, arg, expected in fixtures[N - 1]:
check(label, solve(arg), 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| international from site A | ['external', '9011425550114'] | ['external', '9011425550114'] | Passed |
| international with a leading space at site B | ['external', '8100425550114'] | ['external', '8100425550114'] | Passed |
| four-digit extension | ['internal', '2111'] | ['internal', '2111'] | Passed |
| five-digit extension at site B | ['invalid', '31111'] | ['internal', '31111'] | Failed |
| three digits are not an extension | ['invalid', '111'] | ['invalid', '111'] | Passed |
| already prefixed local number | ['external', '95550114'] | ['external', '95550114'] | Passed |
| already prefixed with two-digit outside code | ['external', '815550114'] | ['external', '815550114'] | Passed |
| seven-digit local number | ['external', '95550114'] | ['external', '95550114'] | Passed |
| ten-digit national number | ['external', '912025550114'] | ['external', '912025550114'] | Passed |
| ten-digit number starting with the outside digit | ['external', '919555550114'] | ['external', '919555550114'] | Passed |
SHA-256 / 22f3743b17713df2bbc89bf616c93889978f51a80207a9e16a51e9048ebb9dae
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
dialed, site = x
plus = dialed.strip().startswith('+')
d = ''.join(c for c in dialed if c.isdigit())
n_ext, out = site['ext_len'], site['outside']
if plus:
return ['external', out + site['intl'] + d] if d else ['invalid', '']
if len(d) <= n_ext:
return ['internal', d]
if d.startswith(out) and len(d) - len(out) in (7, 11):
return ['external', d]
if len(d) == 7:
return ['external', out + d]
if len(d) == 10:
return ['external', out + '1' + d]
return ['invalid', d]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['international from site A', ['+42 555 0114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550114']], ['international with a leading space at site B', [' +42 555 0114', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550114']], ['four-digit extension', ['2111', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2111']], ['five-digit extension at site B', ['31111', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '31111']], ['three digits are not an extension', ['111', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '111']], ['already prefixed local number', ['95550114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550114']], ['already prefixed with two-digit outside code', ['815550114', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550114']], ['seven-digit local number', ['555-0114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550114']], ['ten-digit national number', ['202-555-0114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550114']], ['ten-digit number starting with the outside digit', ['955-555-0114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550114']]], [['international from site A', ['+42 555 0125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550125']], ['international with a leading space at site B', [' +42 555 0125', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550125']], ['four-digit extension', ['2222', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2222']], ['five-digit extension at site B', ['32222', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '32222']], ['three digits are not an extension', ['122', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '122']], ['already prefixed local number', ['95550125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550125']], ['already prefixed with two-digit outside code', ['815550125', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550125']], ['seven-digit local number', ['555-0125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550125']], ['ten-digit national number', ['202-555-0125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550125']], ['ten-digit number starting with the outside digit', ['955-555-0125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550125']]], [['international from site A', ['+42 555 0136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550136']], ['international with a leading space at site B', [' +42 555 0136', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550136']], ['four-digit extension', ['2333', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2333']], ['five-digit extension at site B', ['33333', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '33333']], ['three digits are not an extension', ['133', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '133']], ['already prefixed local number', ['95550136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550136']], ['already prefixed with two-digit outside code', ['815550136', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550136']], ['seven-digit local number', ['555-0136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550136']], ['ten-digit national number', ['202-555-0136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550136']], ['ten-digit number starting with the outside digit', ['955-555-0136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550136']]], [['international from site A', ['+42 555 0147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550147']], ['international with a leading space at site B', [' +42 555 0147', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550147']], ['four-digit extension', ['2444', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2444']], ['five-digit extension at site B', ['34444', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '34444']], ['three digits are not an extension', ['144', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '144']], ['already prefixed local number', ['95550147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550147']], ['already prefixed with two-digit outside code', ['815550147', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550147']], ['seven-digit local number', ['555-0147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550147']], ['ten-digit national number', ['202-555-0147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550147']], ['ten-digit number starting with the outside digit', ['955-555-0147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550147']]], [['international from site A', ['+42 555 0158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550158']], ['international with a leading space at site B', [' +42 555 0158', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550158']], ['four-digit extension', ['2555', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2555']], ['five-digit extension at site B', ['35555', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '35555']], ['three digits are not an extension', ['155', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '155']], ['already prefixed local number', ['95550158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550158']], ['already prefixed with two-digit outside code', ['815550158', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550158']], ['seven-digit local number', ['555-0158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550158']], ['ten-digit national number', ['202-555-0158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550158']], ['ten-digit number starting with the outside digit', ['955-555-0158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550158']]]]
for label, arg, expected in fixtures[N - 1]:
check(label, solve(arg), 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| international from site A | ['external', '9011425550114'] | ['external', '9011425550114'] | Passed |
| international with a leading space at site B | ['external', '8100425550114'] | ['external', '8100425550114'] | Passed |
| four-digit extension | ['internal', '2111'] | ['internal', '2111'] | Passed |
| five-digit extension at site B | ['internal', '31111'] | ['internal', '31111'] | Passed |
| three digits are not an extension | ['internal', '111'] | ['invalid', '111'] | Failed |
| already prefixed local number | ['external', '95550114'] | ['external', '95550114'] | Passed |
| already prefixed with two-digit outside code | ['external', '815550114'] | ['external', '815550114'] | Passed |
| seven-digit local number | ['external', '95550114'] | ['external', '95550114'] | Passed |
| ten-digit national number | ['external', '912025550114'] | ['external', '912025550114'] | Passed |
| ten-digit number starting with the outside digit | ['external', '919555550114'] | ['external', '919555550114'] | Passed |
SHA-256 / a0671e6995c326e38d2b34e2408d25658004cfa5aebc4fa012eead1d931c2ba4
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
dialed, site = x
plus = dialed.strip().startswith('+')
d = ''.join(c for c in dialed if c.isdigit())
n_ext, out = site['ext_len'], site['outside']
if plus:
return ['external', out + site['intl'] + d] if d else ['invalid', '']
if len(d) == n_ext:
return ['internal', d]
if d.startswith(out) and len(d) - len(out) in (7, 11):
return ['external', d]
if len(d) == 7:
return ['external', out + d]
if len(d) == 10:
return ['external', out + '1' + d]
return ['invalid', d]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['international from site A', ['+42 555 0114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550114']], ['international with a leading space at site B', [' +42 555 0114', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550114']], ['four-digit extension', ['2111', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2111']], ['five-digit extension at site B', ['31111', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '31111']], ['three digits are not an extension', ['111', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '111']], ['already prefixed local number', ['95550114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550114']], ['already prefixed with two-digit outside code', ['815550114', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550114']], ['seven-digit local number', ['555-0114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550114']], ['ten-digit national number', ['202-555-0114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550114']], ['ten-digit number starting with the outside digit', ['955-555-0114', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550114']]], [['international from site A', ['+42 555 0125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550125']], ['international with a leading space at site B', [' +42 555 0125', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550125']], ['four-digit extension', ['2222', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2222']], ['five-digit extension at site B', ['32222', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '32222']], ['three digits are not an extension', ['122', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '122']], ['already prefixed local number', ['95550125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550125']], ['already prefixed with two-digit outside code', ['815550125', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550125']], ['seven-digit local number', ['555-0125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550125']], ['ten-digit national number', ['202-555-0125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550125']], ['ten-digit number starting with the outside digit', ['955-555-0125', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550125']]], [['international from site A', ['+42 555 0136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550136']], ['international with a leading space at site B', [' +42 555 0136', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550136']], ['four-digit extension', ['2333', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2333']], ['five-digit extension at site B', ['33333', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '33333']], ['three digits are not an extension', ['133', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '133']], ['already prefixed local number', ['95550136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550136']], ['already prefixed with two-digit outside code', ['815550136', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550136']], ['seven-digit local number', ['555-0136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550136']], ['ten-digit national number', ['202-555-0136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550136']], ['ten-digit number starting with the outside digit', ['955-555-0136', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550136']]], [['international from site A', ['+42 555 0147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550147']], ['international with a leading space at site B', [' +42 555 0147', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550147']], ['four-digit extension', ['2444', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2444']], ['five-digit extension at site B', ['34444', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '34444']], ['three digits are not an extension', ['144', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '144']], ['already prefixed local number', ['95550147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550147']], ['already prefixed with two-digit outside code', ['815550147', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550147']], ['seven-digit local number', ['555-0147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550147']], ['ten-digit national number', ['202-555-0147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550147']], ['ten-digit number starting with the outside digit', ['955-555-0147', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550147']]], [['international from site A', ['+42 555 0158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '9011425550158']], ['international with a leading space at site B', [' +42 555 0158', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '8100425550158']], ['four-digit extension', ['2555', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['internal', '2555']], ['five-digit extension at site B', ['35555', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['internal', '35555']], ['three digits are not an extension', ['155', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['invalid', '155']], ['already prefixed local number', ['95550158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550158']], ['already prefixed with two-digit outside code', ['815550158', {'ext_len': 5, 'outside': '81', 'intl': '00'}], ['external', '815550158']], ['seven-digit local number', ['555-0158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '95550158']], ['ten-digit national number', ['202-555-0158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '912025550158']], ['ten-digit number starting with the outside digit', ['955-555-0158', {'ext_len': 4, 'outside': '9', 'intl': '011'}], ['external', '919555550158']]]]
for label, arg, expected in fixtures[N - 1]:
check(label, solve(arg), 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| international from site A | ['external', '9011425550114'] | ['external', '9011425550114'] | Passed |
| international with a leading space at site B | ['external', '8100425550114'] | ['external', '8100425550114'] | Passed |
| four-digit extension | ['internal', '2111'] | ['internal', '2111'] | Passed |
| five-digit extension at site B | ['internal', '31111'] | ['internal', '31111'] | Passed |
| three digits are not an extension | ['invalid', '111'] | ['invalid', '111'] | Passed |
| already prefixed local number | ['external', '95550114'] | ['external', '95550114'] | Passed |
| already prefixed with two-digit outside code | ['external', '815550114'] | ['external', '815550114'] | Passed |
| seven-digit local number | ['external', '95550114'] | ['external', '95550114'] | Passed |
| ten-digit national number | ['external', '912025550114'] | ['external', '912025550114'] | Passed |
| ten-digit number starting with the outside digit | ['external', '919555550114'] | ['external', '919555550114'] | Passed |
SHA-256 / 8352764af9b8159288410c23161ebb18b0b3b95f033c9b133aef8cf5665a2e85
Verification & scope
A deterministic toy contract over synthetic, obviously fictitious telephone numbers and toy country tables. The rules are stipulated for this model only and make no claim of conformance with any numbering plan or telecommunications standard. 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:52:24.768174+00:00.
Case digest / 4abd1e890c30d5bc24c196f4d5b20da8e6181bc33fc1b49c594e0d8e4346bd40