broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(operation, s):
    pairs, defaults, route, fragment = s
    if operation == 'repeated-values-retention':
        return [v for k,v in pairs if k=='tag']
    if operation == 'empty-query-value':
        return next((v for k,v in pairs if k=='q'),defaults.get('q'))
    if operation == 'query-default-merge':
        return {**defaults,**dict(pairs)}
    if operation == 'fragment-null-preservation':
        return fragment if fragment is not None else 'absent'
    if operation == 'state-cache-key':
        return (route,tuple(pairs))
    if operation == 'remove-one-query-name':
        return [(k,v) for k,v in pairs if k!='q']
    if operation == 'first-value-precedence':
        return dict(pairs).get('q')
    if operation == 'debug-exclusion':
        return [(k,v) for k,v in pairs if k!='debug']
    if operation == 'explicit-query-key-set':
        return sorted({k for k,v in pairs})
    if operation == 'navigation-fragment-key':
        return (route,fragment)
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('repeated-values-retention scenario 1', solve('repeated-values-retention', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ['x','y'])
check('repeated-values-retention scenario 2', solve('repeated-values-retention', ([('q','')],{'q':'default'},'/a','')), [])
check('repeated-values-retention scenario 3', solve('repeated-values-retention', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('repeated-values-retention scenario 4', solve('repeated-values-retention', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [])
check('repeated-values-retention scenario 5', solve('repeated-values-retention', ([('page','0'),('tag','x')],{},'/a',None)), ['x'])
check('repeated-values-retention scenario 6', solve('repeated-values-retention', ([('q','a'),('q','b')],{},'/b','end')), [])
check('empty-query-value scenario 1', solve('empty-query-value', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'a')
check('empty-query-value scenario 2', solve('empty-query-value', ([('q','')],{'q':'default'},'/a','')), '')
check('empty-query-value scenario 3', solve('empty-query-value', ([] ,{'q':'default','page':'1'},'/a',None)), 'default')
check('empty-query-value scenario 4', solve('empty-query-value', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), '0')
check('empty-query-value scenario 5', solve('empty-query-value', ([('page','0'),('tag','x')],{},'/a',None)), None)
check('empty-query-value scenario 6', solve('empty-query-value', ([('q','a'),('q','b')],{},'/b','end')), 'a')
check('query-default-merge scenario 1', solve('query-default-merge', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), {'q':'a','tag':'y'})
check('query-default-merge scenario 2', solve('query-default-merge', ([('q','')],{'q':'default'},'/a','')), {'q':''})
check('query-default-merge scenario 3', solve('query-default-merge', ([] ,{'q':'default','page':'1'},'/a',None)), {'q':'default','page':'1'})
check('query-default-merge scenario 4', solve('query-default-merge', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), {'q':'0','page':'2','debug':'1'})
check('query-default-merge scenario 5', solve('query-default-merge', ([('page','0'),('tag','x')],{},'/a',None)), {'page':'0','tag':'x'})
check('query-default-merge scenario 6', solve('query-default-merge', ([('q','a'),('q','b')],{},'/b','end')), {'q':'b'})
check('fragment-null-preservation scenario 1', solve('fragment-null-preservation', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'part')
check('fragment-null-preservation scenario 2', solve('fragment-null-preservation', ([('q','')],{'q':'default'},'/a','')), '')
check('fragment-null-preservation scenario 3', solve('fragment-null-preservation', ([] ,{'q':'default','page':'1'},'/a',None)), 'absent')
check('fragment-null-preservation scenario 4', solve('fragment-null-preservation', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), 'x')
check('fragment-null-preservation scenario 5', solve('fragment-null-preservation', ([('page','0'),('tag','x')],{},'/a',None)), 'absent')
check('fragment-null-preservation scenario 6', solve('fragment-null-preservation', ([('q','a'),('q','b')],{},'/b','end')), 'end')
check('state-cache-key scenario 1', solve('state-cache-key', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ('/a/'+str(N),(('q','a'),('tag','x'),('tag','y'))))
check('state-cache-key scenario 2', solve('state-cache-key', ([('q','')],{'q':'default'},'/a','')), ('/a',(('q',''),)))
check('state-cache-key scenario 3', solve('state-cache-key', ([] ,{'q':'default','page':'1'},'/a',None)), ('/a',()))
check('state-cache-key scenario 4', solve('state-cache-key', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ('/b',(('q','0'),('page','2'),('debug','1'))))
check('state-cache-key scenario 5', solve('state-cache-key', ([('page','0'),('tag','x')],{},'/a',None)), ('/a',(('page','0'),('tag','x'))))
check('state-cache-key scenario 6', solve('state-cache-key', ([('q','a'),('q','b')],{},'/b','end')), ('/b',(('q','a'),('q','b'))))
check('remove-one-query-name scenario 1', solve('remove-one-query-name', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), [('tag','x'),('tag','y')])
check('remove-one-query-name scenario 2', solve('remove-one-query-name', ([('q','')],{'q':'default'},'/a','')), [])
check('remove-one-query-name scenario 3', solve('remove-one-query-name', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('remove-one-query-name scenario 4', solve('remove-one-query-name', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [('page','2'),('debug','1')])
check('remove-one-query-name scenario 5', solve('remove-one-query-name', ([('page','0'),('tag','x')],{},'/a',None)), [('page','0'),('tag','x')])
check('remove-one-query-name scenario 6', solve('remove-one-query-name', ([('q','a'),('q','b')],{},'/b','end')), [])
check('first-value-precedence scenario 1', solve('first-value-precedence', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'a')
check('first-value-precedence scenario 2', solve('first-value-precedence', ([('q','')],{'q':'default'},'/a','')), '')
check('first-value-precedence scenario 3', solve('first-value-precedence', ([] ,{'q':'default','page':'1'},'/a',None)), None)
check('first-value-precedence scenario 4', solve('first-value-precedence', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), '0')
check('first-value-precedence scenario 5', solve('first-value-precedence', ([('page','0'),('tag','x')],{},'/a',None)), None)
check('first-value-precedence scenario 6', solve('first-value-precedence', ([('q','a'),('q','b')],{},'/b','end')), 'a')
check('debug-exclusion scenario 1', solve('debug-exclusion', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), [('q','a'),('tag','x'),('tag','y')])
check('debug-exclusion scenario 2', solve('debug-exclusion', ([('q','')],{'q':'default'},'/a','')), [('q','')])
check('debug-exclusion scenario 3', solve('debug-exclusion', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('debug-exclusion scenario 4', solve('debug-exclusion', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [('q','0'),('page','2')])
check('debug-exclusion scenario 5', solve('debug-exclusion', ([('page','0'),('tag','x')],{},'/a',None)), [('page','0'),('tag','x')])
check('debug-exclusion scenario 6', solve('debug-exclusion', ([('q','a'),('q','b')],{},'/b','end')), [('q','a'),('q','b')])
check('explicit-query-key-set scenario 1', solve('explicit-query-key-set', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ['q','tag'])
check('explicit-query-key-set scenario 2', solve('explicit-query-key-set', ([('q','')],{'q':'default'},'/a','')), ['q'])
check('explicit-query-key-set scenario 3', solve('explicit-query-key-set', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('explicit-query-key-set scenario 4', solve('explicit-query-key-set', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ['debug','page','q'])
check('explicit-query-key-set scenario 5', solve('explicit-query-key-set', ([('page','0'),('tag','x')],{},'/a',None)), ['page','tag'])
check('explicit-query-key-set scenario 6', solve('explicit-query-key-set', ([('q','a'),('q','b')],{},'/b','end')), ['q'])
check('navigation-fragment-key scenario 1', solve('navigation-fragment-key', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ('/a/'+str(N),'part'))
check('navigation-fragment-key scenario 2', solve('navigation-fragment-key', ([('q','')],{'q':'default'},'/a','')), ('/a',''))
check('navigation-fragment-key scenario 3', solve('navigation-fragment-key', ([] ,{'q':'default','page':'1'},'/a',None)), ('/a',None))
check('navigation-fragment-key scenario 4', solve('navigation-fragment-key', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ('/b','x'))
check('navigation-fragment-key scenario 5', solve('navigation-fragment-key', ([('page','0'),('tag','x')],{},'/a',None)), ('/a',None))
check('navigation-fragment-key scenario 6', solve('navigation-fragment-key', ([('q','a'),('q','b')],{},'/b','end')), ('/b','end'))
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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(operation, s):
    pairs, defaults, route, fragment = s
    if operation == 'repeated-values-retention':
        return [v for k,v in pairs if k=='tag']
    if operation == 'empty-query-value':
        return next((v for k,v in pairs if k=='q'),defaults.get('q'))
    if operation == 'query-default-merge':
        return {**defaults,**dict(pairs)}
    if operation == 'fragment-null-preservation':
        return fragment if fragment is not None else 'absent'
    if operation == 'state-cache-key':
        return (route,tuple(pairs))
    if operation == 'remove-one-query-name':
        return [(k,v) for k,v in pairs if k!='q']
    if operation == 'first-value-precedence':
        return next((v for k,v in pairs if k=='q' and v),None)
    if operation == 'debug-exclusion':
        return [(k,v) for k,v in pairs if k!='debug']
    if operation == 'explicit-query-key-set':
        return sorted({k for k,v in pairs})
    if operation == 'navigation-fragment-key':
        return (route,fragment)
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('repeated-values-retention scenario 1', solve('repeated-values-retention', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ['x','y'])
check('repeated-values-retention scenario 2', solve('repeated-values-retention', ([('q','')],{'q':'default'},'/a','')), [])
check('repeated-values-retention scenario 3', solve('repeated-values-retention', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('repeated-values-retention scenario 4', solve('repeated-values-retention', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [])
check('repeated-values-retention scenario 5', solve('repeated-values-retention', ([('page','0'),('tag','x')],{},'/a',None)), ['x'])
check('repeated-values-retention scenario 6', solve('repeated-values-retention', ([('q','a'),('q','b')],{},'/b','end')), [])
check('empty-query-value scenario 1', solve('empty-query-value', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'a')
check('empty-query-value scenario 2', solve('empty-query-value', ([('q','')],{'q':'default'},'/a','')), '')
check('empty-query-value scenario 3', solve('empty-query-value', ([] ,{'q':'default','page':'1'},'/a',None)), 'default')
check('empty-query-value scenario 4', solve('empty-query-value', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), '0')
check('empty-query-value scenario 5', solve('empty-query-value', ([('page','0'),('tag','x')],{},'/a',None)), None)
check('empty-query-value scenario 6', solve('empty-query-value', ([('q','a'),('q','b')],{},'/b','end')), 'a')
check('query-default-merge scenario 1', solve('query-default-merge', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), {'q':'a','tag':'y'})
check('query-default-merge scenario 2', solve('query-default-merge', ([('q','')],{'q':'default'},'/a','')), {'q':''})
check('query-default-merge scenario 3', solve('query-default-merge', ([] ,{'q':'default','page':'1'},'/a',None)), {'q':'default','page':'1'})
check('query-default-merge scenario 4', solve('query-default-merge', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), {'q':'0','page':'2','debug':'1'})
check('query-default-merge scenario 5', solve('query-default-merge', ([('page','0'),('tag','x')],{},'/a',None)), {'page':'0','tag':'x'})
check('query-default-merge scenario 6', solve('query-default-merge', ([('q','a'),('q','b')],{},'/b','end')), {'q':'b'})
check('fragment-null-preservation scenario 1', solve('fragment-null-preservation', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'part')
check('fragment-null-preservation scenario 2', solve('fragment-null-preservation', ([('q','')],{'q':'default'},'/a','')), '')
check('fragment-null-preservation scenario 3', solve('fragment-null-preservation', ([] ,{'q':'default','page':'1'},'/a',None)), 'absent')
check('fragment-null-preservation scenario 4', solve('fragment-null-preservation', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), 'x')
check('fragment-null-preservation scenario 5', solve('fragment-null-preservation', ([('page','0'),('tag','x')],{},'/a',None)), 'absent')
check('fragment-null-preservation scenario 6', solve('fragment-null-preservation', ([('q','a'),('q','b')],{},'/b','end')), 'end')
check('state-cache-key scenario 1', solve('state-cache-key', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ('/a/'+str(N),(('q','a'),('tag','x'),('tag','y'))))
check('state-cache-key scenario 2', solve('state-cache-key', ([('q','')],{'q':'default'},'/a','')), ('/a',(('q',''),)))
check('state-cache-key scenario 3', solve('state-cache-key', ([] ,{'q':'default','page':'1'},'/a',None)), ('/a',()))
check('state-cache-key scenario 4', solve('state-cache-key', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ('/b',(('q','0'),('page','2'),('debug','1'))))
check('state-cache-key scenario 5', solve('state-cache-key', ([('page','0'),('tag','x')],{},'/a',None)), ('/a',(('page','0'),('tag','x'))))
check('state-cache-key scenario 6', solve('state-cache-key', ([('q','a'),('q','b')],{},'/b','end')), ('/b',(('q','a'),('q','b'))))
check('remove-one-query-name scenario 1', solve('remove-one-query-name', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), [('tag','x'),('tag','y')])
check('remove-one-query-name scenario 2', solve('remove-one-query-name', ([('q','')],{'q':'default'},'/a','')), [])
check('remove-one-query-name scenario 3', solve('remove-one-query-name', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('remove-one-query-name scenario 4', solve('remove-one-query-name', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [('page','2'),('debug','1')])
check('remove-one-query-name scenario 5', solve('remove-one-query-name', ([('page','0'),('tag','x')],{},'/a',None)), [('page','0'),('tag','x')])
check('remove-one-query-name scenario 6', solve('remove-one-query-name', ([('q','a'),('q','b')],{},'/b','end')), [])
check('first-value-precedence scenario 1', solve('first-value-precedence', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'a')
check('first-value-precedence scenario 2', solve('first-value-precedence', ([('q','')],{'q':'default'},'/a','')), '')
check('first-value-precedence scenario 3', solve('first-value-precedence', ([] ,{'q':'default','page':'1'},'/a',None)), None)
check('first-value-precedence scenario 4', solve('first-value-precedence', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), '0')
check('first-value-precedence scenario 5', solve('first-value-precedence', ([('page','0'),('tag','x')],{},'/a',None)), None)
check('first-value-precedence scenario 6', solve('first-value-precedence', ([('q','a'),('q','b')],{},'/b','end')), 'a')
check('debug-exclusion scenario 1', solve('debug-exclusion', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), [('q','a'),('tag','x'),('tag','y')])
check('debug-exclusion scenario 2', solve('debug-exclusion', ([('q','')],{'q':'default'},'/a','')), [('q','')])
check('debug-exclusion scenario 3', solve('debug-exclusion', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('debug-exclusion scenario 4', solve('debug-exclusion', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [('q','0'),('page','2')])
check('debug-exclusion scenario 5', solve('debug-exclusion', ([('page','0'),('tag','x')],{},'/a',None)), [('page','0'),('tag','x')])
check('debug-exclusion scenario 6', solve('debug-exclusion', ([('q','a'),('q','b')],{},'/b','end')), [('q','a'),('q','b')])
check('explicit-query-key-set scenario 1', solve('explicit-query-key-set', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ['q','tag'])
check('explicit-query-key-set scenario 2', solve('explicit-query-key-set', ([('q','')],{'q':'default'},'/a','')), ['q'])
check('explicit-query-key-set scenario 3', solve('explicit-query-key-set', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('explicit-query-key-set scenario 4', solve('explicit-query-key-set', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ['debug','page','q'])
check('explicit-query-key-set scenario 5', solve('explicit-query-key-set', ([('page','0'),('tag','x')],{},'/a',None)), ['page','tag'])
check('explicit-query-key-set scenario 6', solve('explicit-query-key-set', ([('q','a'),('q','b')],{},'/b','end')), ['q'])
check('navigation-fragment-key scenario 1', solve('navigation-fragment-key', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ('/a/'+str(N),'part'))
check('navigation-fragment-key scenario 2', solve('navigation-fragment-key', ([('q','')],{'q':'default'},'/a','')), ('/a',''))
check('navigation-fragment-key scenario 3', solve('navigation-fragment-key', ([] ,{'q':'default','page':'1'},'/a',None)), ('/a',None))
check('navigation-fragment-key scenario 4', solve('navigation-fragment-key', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ('/b','x'))
check('navigation-fragment-key scenario 5', solve('navigation-fragment-key', ([('page','0'),('tag','x')],{},'/a',None)), ('/a',None))
check('navigation-fragment-key scenario 6', solve('navigation-fragment-key', ([('q','a'),('q','b')],{},'/b','end')), ('/b','end'))
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)

prompt:
First value precedence.

This route-state adapter models already-decoded query pairs. Repeated pairs and insertion order remain significant, first occurrence is used by single-value readers, explicit empty values override defaults, and fragment absence differs from empty. Operation first-value-precedence has the six explicit input/output oracles below.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(operation, s):
    pairs, defaults, route, fragment = s
    if operation == 'repeated-values-retention':
        return [v for k,v in pairs if k=='tag']
    if operation == 'empty-query-value':
        return next((v for k,v in pairs if k=='q'),defaults.get('q'))
    if operation == 'query-default-merge':
        return {**defaults,**dict(pairs)}
    if operation == 'fragment-null-preservation':
        return fragment if fragment is not None else 'absent'
    if operation == 'state-cache-key':
        return (route,tuple(pairs))
    if operation == 'remove-one-query-name':
        return [(k,v) for k,v in pairs if k!='q']
    if operation == 'first-value-precedence':
        return next((v for k,v in pairs if k=='q'),None)
    if operation == 'debug-exclusion':
        return pairs
    if operation == 'explicit-query-key-set':
        return sorted({k for k,v in pairs})
    if operation == 'navigation-fragment-key':
        return (route,fragment)
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('repeated-values-retention scenario 1', solve('repeated-values-retention', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ['x','y'])
check('repeated-values-retention scenario 2', solve('repeated-values-retention', ([('q','')],{'q':'default'},'/a','')), [])
check('repeated-values-retention scenario 3', solve('repeated-values-retention', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('repeated-values-retention scenario 4', solve('repeated-values-retention', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [])
check('repeated-values-retention scenario 5', solve('repeated-values-retention', ([('page','0'),('tag','x')],{},'/a',None)), ['x'])
check('repeated-values-retention scenario 6', solve('repeated-values-retention', ([('q','a'),('q','b')],{},'/b','end')), [])
check('empty-query-value scenario 1', solve('empty-query-value', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'a')
check('empty-query-value scenario 2', solve('empty-query-value', ([('q','')],{'q':'default'},'/a','')), '')
check('empty-query-value scenario 3', solve('empty-query-value', ([] ,{'q':'default','page':'1'},'/a',None)), 'default')
check('empty-query-value scenario 4', solve('empty-query-value', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), '0')
check('empty-query-value scenario 5', solve('empty-query-value', ([('page','0'),('tag','x')],{},'/a',None)), None)
check('empty-query-value scenario 6', solve('empty-query-value', ([('q','a'),('q','b')],{},'/b','end')), 'a')
check('query-default-merge scenario 1', solve('query-default-merge', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), {'q':'a','tag':'y'})
check('query-default-merge scenario 2', solve('query-default-merge', ([('q','')],{'q':'default'},'/a','')), {'q':''})
check('query-default-merge scenario 3', solve('query-default-merge', ([] ,{'q':'default','page':'1'},'/a',None)), {'q':'default','page':'1'})
check('query-default-merge scenario 4', solve('query-default-merge', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), {'q':'0','page':'2','debug':'1'})
check('query-default-merge scenario 5', solve('query-default-merge', ([('page','0'),('tag','x')],{},'/a',None)), {'page':'0','tag':'x'})
check('query-default-merge scenario 6', solve('query-default-merge', ([('q','a'),('q','b')],{},'/b','end')), {'q':'b'})
check('fragment-null-preservation scenario 1', solve('fragment-null-preservation', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'part')
check('fragment-null-preservation scenario 2', solve('fragment-null-preservation', ([('q','')],{'q':'default'},'/a','')), '')
check('fragment-null-preservation scenario 3', solve('fragment-null-preservation', ([] ,{'q':'default','page':'1'},'/a',None)), 'absent')
check('fragment-null-preservation scenario 4', solve('fragment-null-preservation', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), 'x')
check('fragment-null-preservation scenario 5', solve('fragment-null-preservation', ([('page','0'),('tag','x')],{},'/a',None)), 'absent')
check('fragment-null-preservation scenario 6', solve('fragment-null-preservation', ([('q','a'),('q','b')],{},'/b','end')), 'end')
check('state-cache-key scenario 1', solve('state-cache-key', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ('/a/'+str(N),(('q','a'),('tag','x'),('tag','y'))))
check('state-cache-key scenario 2', solve('state-cache-key', ([('q','')],{'q':'default'},'/a','')), ('/a',(('q',''),)))
check('state-cache-key scenario 3', solve('state-cache-key', ([] ,{'q':'default','page':'1'},'/a',None)), ('/a',()))
check('state-cache-key scenario 4', solve('state-cache-key', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ('/b',(('q','0'),('page','2'),('debug','1'))))
check('state-cache-key scenario 5', solve('state-cache-key', ([('page','0'),('tag','x')],{},'/a',None)), ('/a',(('page','0'),('tag','x'))))
check('state-cache-key scenario 6', solve('state-cache-key', ([('q','a'),('q','b')],{},'/b','end')), ('/b',(('q','a'),('q','b'))))
check('remove-one-query-name scenario 1', solve('remove-one-query-name', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), [('tag','x'),('tag','y')])
check('remove-one-query-name scenario 2', solve('remove-one-query-name', ([('q','')],{'q':'default'},'/a','')), [])
check('remove-one-query-name scenario 3', solve('remove-one-query-name', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('remove-one-query-name scenario 4', solve('remove-one-query-name', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [('page','2'),('debug','1')])
check('remove-one-query-name scenario 5', solve('remove-one-query-name', ([('page','0'),('tag','x')],{},'/a',None)), [('page','0'),('tag','x')])
check('remove-one-query-name scenario 6', solve('remove-one-query-name', ([('q','a'),('q','b')],{},'/b','end')), [])
check('first-value-precedence scenario 1', solve('first-value-precedence', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'a')
check('first-value-precedence scenario 2', solve('first-value-precedence', ([('q','')],{'q':'default'},'/a','')), '')
check('first-value-precedence scenario 3', solve('first-value-precedence', ([] ,{'q':'default','page':'1'},'/a',None)), None)
check('first-value-precedence scenario 4', solve('first-value-precedence', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), '0')
check('first-value-precedence scenario 5', solve('first-value-precedence', ([('page','0'),('tag','x')],{},'/a',None)), None)
check('first-value-precedence scenario 6', solve('first-value-precedence', ([('q','a'),('q','b')],{},'/b','end')), 'a')
check('debug-exclusion scenario 1', solve('debug-exclusion', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), [('q','a'),('tag','x'),('tag','y')])
check('debug-exclusion scenario 2', solve('debug-exclusion', ([('q','')],{'q':'default'},'/a','')), [('q','')])
check('debug-exclusion scenario 3', solve('debug-exclusion', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('debug-exclusion scenario 4', solve('debug-exclusion', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [('q','0'),('page','2')])
check('debug-exclusion scenario 5', solve('debug-exclusion', ([('page','0'),('tag','x')],{},'/a',None)), [('page','0'),('tag','x')])
check('debug-exclusion scenario 6', solve('debug-exclusion', ([('q','a'),('q','b')],{},'/b','end')), [('q','a'),('q','b')])
check('explicit-query-key-set scenario 1', solve('explicit-query-key-set', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ['q','tag'])
check('explicit-query-key-set scenario 2', solve('explicit-query-key-set', ([('q','')],{'q':'default'},'/a','')), ['q'])
check('explicit-query-key-set scenario 3', solve('explicit-query-key-set', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('explicit-query-key-set scenario 4', solve('explicit-query-key-set', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ['debug','page','q'])
check('explicit-query-key-set scenario 5', solve('explicit-query-key-set', ([('page','0'),('tag','x')],{},'/a',None)), ['page','tag'])
check('explicit-query-key-set scenario 6', solve('explicit-query-key-set', ([('q','a'),('q','b')],{},'/b','end')), ['q'])
check('navigation-fragment-key scenario 1', solve('navigation-fragment-key', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ('/a/'+str(N),'part'))
check('navigation-fragment-key scenario 2', solve('navigation-fragment-key', ([('q','')],{'q':'default'},'/a','')), ('/a',''))
check('navigation-fragment-key scenario 3', solve('navigation-fragment-key', ([] ,{'q':'default','page':'1'},'/a',None)), ('/a',None))
check('navigation-fragment-key scenario 4', solve('navigation-fragment-key', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ('/b','x'))
check('navigation-fragment-key scenario 5', solve('navigation-fragment-key', ([('page','0'),('tag','x')],{},'/a',None)), ('/a',None))
check('navigation-fragment-key scenario 6', solve('navigation-fragment-key', ([('q','a'),('q','b')],{},'/b','end')), ('/b','end'))
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)

meaning: Fixture-count band, not measured model difficulty

deps: stdlib

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(operation, s):
    pairs, defaults, route, fragment = s
    if operation == 'repeated-values-retention':
        return [v for k,v in pairs if k=='tag']
    if operation == 'empty-query-value':
        return next((v for k,v in pairs if k=='q'),defaults.get('q'))
    if operation == 'query-default-merge':
        return {**defaults,**dict(pairs)}
    if operation == 'fragment-null-preservation':
        return fragment if fragment is not None else 'absent'
    if operation == 'state-cache-key':
        return (route,tuple(pairs))
    if operation == 'remove-one-query-name':
        return [(k,v) for k,v in pairs if k!='q']
    if operation == 'first-value-precedence':
        return next((v for k,v in pairs if k=='q'),None)
    if operation == 'debug-exclusion':
        return [(k,v) for k,v in pairs if k in defaults]
    if operation == 'explicit-query-key-set':
        return sorted({k for k,v in pairs})
    if operation == 'navigation-fragment-key':
        return (route,fragment)
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('repeated-values-retention scenario 1', solve('repeated-values-retention', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ['x','y'])
check('repeated-values-retention scenario 2', solve('repeated-values-retention', ([('q','')],{'q':'default'},'/a','')), [])
check('repeated-values-retention scenario 3', solve('repeated-values-retention', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('repeated-values-retention scenario 4', solve('repeated-values-retention', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [])
check('repeated-values-retention scenario 5', solve('repeated-values-retention', ([('page','0'),('tag','x')],{},'/a',None)), ['x'])
check('repeated-values-retention scenario 6', solve('repeated-values-retention', ([('q','a'),('q','b')],{},'/b','end')), [])
check('empty-query-value scenario 1', solve('empty-query-value', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'a')
check('empty-query-value scenario 2', solve('empty-query-value', ([('q','')],{'q':'default'},'/a','')), '')
check('empty-query-value scenario 3', solve('empty-query-value', ([] ,{'q':'default','page':'1'},'/a',None)), 'default')
check('empty-query-value scenario 4', solve('empty-query-value', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), '0')
check('empty-query-value scenario 5', solve('empty-query-value', ([('page','0'),('tag','x')],{},'/a',None)), None)
check('empty-query-value scenario 6', solve('empty-query-value', ([('q','a'),('q','b')],{},'/b','end')), 'a')
check('query-default-merge scenario 1', solve('query-default-merge', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), {'q':'a','tag':'y'})
check('query-default-merge scenario 2', solve('query-default-merge', ([('q','')],{'q':'default'},'/a','')), {'q':''})
check('query-default-merge scenario 3', solve('query-default-merge', ([] ,{'q':'default','page':'1'},'/a',None)), {'q':'default','page':'1'})
check('query-default-merge scenario 4', solve('query-default-merge', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), {'q':'0','page':'2','debug':'1'})
check('query-default-merge scenario 5', solve('query-default-merge', ([('page','0'),('tag','x')],{},'/a',None)), {'page':'0','tag':'x'})
check('query-default-merge scenario 6', solve('query-default-merge', ([('q','a'),('q','b')],{},'/b','end')), {'q':'b'})
check('fragment-null-preservation scenario 1', solve('fragment-null-preservation', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'part')
check('fragment-null-preservation scenario 2', solve('fragment-null-preservation', ([('q','')],{'q':'default'},'/a','')), '')
check('fragment-null-preservation scenario 3', solve('fragment-null-preservation', ([] ,{'q':'default','page':'1'},'/a',None)), 'absent')
check('fragment-null-preservation scenario 4', solve('fragment-null-preservation', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), 'x')
check('fragment-null-preservation scenario 5', solve('fragment-null-preservation', ([('page','0'),('tag','x')],{},'/a',None)), 'absent')
check('fragment-null-preservation scenario 6', solve('fragment-null-preservation', ([('q','a'),('q','b')],{},'/b','end')), 'end')
check('state-cache-key scenario 1', solve('state-cache-key', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ('/a/'+str(N),(('q','a'),('tag','x'),('tag','y'))))
check('state-cache-key scenario 2', solve('state-cache-key', ([('q','')],{'q':'default'},'/a','')), ('/a',(('q',''),)))
check('state-cache-key scenario 3', solve('state-cache-key', ([] ,{'q':'default','page':'1'},'/a',None)), ('/a',()))
check('state-cache-key scenario 4', solve('state-cache-key', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ('/b',(('q','0'),('page','2'),('debug','1'))))
check('state-cache-key scenario 5', solve('state-cache-key', ([('page','0'),('tag','x')],{},'/a',None)), ('/a',(('page','0'),('tag','x'))))
check('state-cache-key scenario 6', solve('state-cache-key', ([('q','a'),('q','b')],{},'/b','end')), ('/b',(('q','a'),('q','b'))))
check('remove-one-query-name scenario 1', solve('remove-one-query-name', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), [('tag','x'),('tag','y')])
check('remove-one-query-name scenario 2', solve('remove-one-query-name', ([('q','')],{'q':'default'},'/a','')), [])
check('remove-one-query-name scenario 3', solve('remove-one-query-name', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('remove-one-query-name scenario 4', solve('remove-one-query-name', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [('page','2'),('debug','1')])
check('remove-one-query-name scenario 5', solve('remove-one-query-name', ([('page','0'),('tag','x')],{},'/a',None)), [('page','0'),('tag','x')])
check('remove-one-query-name scenario 6', solve('remove-one-query-name', ([('q','a'),('q','b')],{},'/b','end')), [])
check('first-value-precedence scenario 1', solve('first-value-precedence', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'a')
check('first-value-precedence scenario 2', solve('first-value-precedence', ([('q','')],{'q':'default'},'/a','')), '')
check('first-value-precedence scenario 3', solve('first-value-precedence', ([] ,{'q':'default','page':'1'},'/a',None)), None)
check('first-value-precedence scenario 4', solve('first-value-precedence', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), '0')
check('first-value-precedence scenario 5', solve('first-value-precedence', ([('page','0'),('tag','x')],{},'/a',None)), None)
check('first-value-precedence scenario 6', solve('first-value-precedence', ([('q','a'),('q','b')],{},'/b','end')), 'a')
check('debug-exclusion scenario 1', solve('debug-exclusion', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), [('q','a'),('tag','x'),('tag','y')])
check('debug-exclusion scenario 2', solve('debug-exclusion', ([('q','')],{'q':'default'},'/a','')), [('q','')])
check('debug-exclusion scenario 3', solve('debug-exclusion', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('debug-exclusion scenario 4', solve('debug-exclusion', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [('q','0'),('page','2')])
check('debug-exclusion scenario 5', solve('debug-exclusion', ([('page','0'),('tag','x')],{},'/a',None)), [('page','0'),('tag','x')])
check('debug-exclusion scenario 6', solve('debug-exclusion', ([('q','a'),('q','b')],{},'/b','end')), [('q','a'),('q','b')])
check('explicit-query-key-set scenario 1', solve('explicit-query-key-set', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ['q','tag'])
check('explicit-query-key-set scenario 2', solve('explicit-query-key-set', ([('q','')],{'q':'default'},'/a','')), ['q'])
check('explicit-query-key-set scenario 3', solve('explicit-query-key-set', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('explicit-query-key-set scenario 4', solve('explicit-query-key-set', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ['debug','page','q'])
check('explicit-query-key-set scenario 5', solve('explicit-query-key-set', ([('page','0'),('tag','x')],{},'/a',None)), ['page','tag'])
check('explicit-query-key-set scenario 6', solve('explicit-query-key-set', ([('q','a'),('q','b')],{},'/b','end')), ['q'])
check('navigation-fragment-key scenario 1', solve('navigation-fragment-key', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ('/a/'+str(N),'part'))
check('navigation-fragment-key scenario 2', solve('navigation-fragment-key', ([('q','')],{'q':'default'},'/a','')), ('/a',''))
check('navigation-fragment-key scenario 3', solve('navigation-fragment-key', ([] ,{'q':'default','page':'1'},'/a',None)), ('/a',None))
check('navigation-fragment-key scenario 4', solve('navigation-fragment-key', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ('/b','x'))
check('navigation-fragment-key scenario 5', solve('navigation-fragment-key', ([('page','0'),('tag','x')],{},'/a',None)), ('/a',None))
check('navigation-fragment-key scenario 6', solve('navigation-fragment-key', ([('q','a'),('q','b')],{},'/b','end')), ('/b','end'))
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)

prompt:
Debug exclusion.

This route-state adapter models already-decoded query pairs. Repeated pairs and insertion order remain significant, first occurrence is used by single-value readers, explicit empty values override defaults, and fragment absence differs from empty. Operation debug-exclusion has the six explicit input/output oracles below.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(operation, s):
    pairs, defaults, route, fragment = s
    if operation == 'repeated-values-retention':
        return [v for k,v in pairs if k=='tag']
    if operation == 'empty-query-value':
        return next((v for k,v in pairs if k=='q'),defaults.get('q'))
    if operation == 'query-default-merge':
        return {**defaults,**dict(pairs)}
    if operation == 'fragment-null-preservation':
        return fragment if fragment is not None else 'absent'
    if operation == 'state-cache-key':
        return (route,tuple(pairs))
    if operation == 'remove-one-query-name':
        return [(k,v) for k,v in pairs if k!='q']
    if operation == 'first-value-precedence':
        return next((v for k,v in pairs if k=='q'),None)
    if operation == 'debug-exclusion':
        return [(k,v) for k,v in pairs if k!='debug']
    if operation == 'explicit-query-key-set':
        return sorted(defaults)
    if operation == 'navigation-fragment-key':
        return (route,fragment)
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('repeated-values-retention scenario 1', solve('repeated-values-retention', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ['x','y'])
check('repeated-values-retention scenario 2', solve('repeated-values-retention', ([('q','')],{'q':'default'},'/a','')), [])
check('repeated-values-retention scenario 3', solve('repeated-values-retention', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('repeated-values-retention scenario 4', solve('repeated-values-retention', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [])
check('repeated-values-retention scenario 5', solve('repeated-values-retention', ([('page','0'),('tag','x')],{},'/a',None)), ['x'])
check('repeated-values-retention scenario 6', solve('repeated-values-retention', ([('q','a'),('q','b')],{},'/b','end')), [])
check('empty-query-value scenario 1', solve('empty-query-value', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'a')
check('empty-query-value scenario 2', solve('empty-query-value', ([('q','')],{'q':'default'},'/a','')), '')
check('empty-query-value scenario 3', solve('empty-query-value', ([] ,{'q':'default','page':'1'},'/a',None)), 'default')
check('empty-query-value scenario 4', solve('empty-query-value', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), '0')
check('empty-query-value scenario 5', solve('empty-query-value', ([('page','0'),('tag','x')],{},'/a',None)), None)
check('empty-query-value scenario 6', solve('empty-query-value', ([('q','a'),('q','b')],{},'/b','end')), 'a')
check('query-default-merge scenario 1', solve('query-default-merge', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), {'q':'a','tag':'y'})
check('query-default-merge scenario 2', solve('query-default-merge', ([('q','')],{'q':'default'},'/a','')), {'q':''})
check('query-default-merge scenario 3', solve('query-default-merge', ([] ,{'q':'default','page':'1'},'/a',None)), {'q':'default','page':'1'})
check('query-default-merge scenario 4', solve('query-default-merge', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), {'q':'0','page':'2','debug':'1'})
check('query-default-merge scenario 5', solve('query-default-merge', ([('page','0'),('tag','x')],{},'/a',None)), {'page':'0','tag':'x'})
check('query-default-merge scenario 6', solve('query-default-merge', ([('q','a'),('q','b')],{},'/b','end')), {'q':'b'})
check('fragment-null-preservation scenario 1', solve('fragment-null-preservation', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'part')
check('fragment-null-preservation scenario 2', solve('fragment-null-preservation', ([('q','')],{'q':'default'},'/a','')), '')
check('fragment-null-preservation scenario 3', solve('fragment-null-preservation', ([] ,{'q':'default','page':'1'},'/a',None)), 'absent')
check('fragment-null-preservation scenario 4', solve('fragment-null-preservation', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), 'x')
check('fragment-null-preservation scenario 5', solve('fragment-null-preservation', ([('page','0'),('tag','x')],{},'/a',None)), 'absent')
check('fragment-null-preservation scenario 6', solve('fragment-null-preservation', ([('q','a'),('q','b')],{},'/b','end')), 'end')
check('state-cache-key scenario 1', solve('state-cache-key', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ('/a/'+str(N),(('q','a'),('tag','x'),('tag','y'))))
check('state-cache-key scenario 2', solve('state-cache-key', ([('q','')],{'q':'default'},'/a','')), ('/a',(('q',''),)))
check('state-cache-key scenario 3', solve('state-cache-key', ([] ,{'q':'default','page':'1'},'/a',None)), ('/a',()))
check('state-cache-key scenario 4', solve('state-cache-key', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ('/b',(('q','0'),('page','2'),('debug','1'))))
check('state-cache-key scenario 5', solve('state-cache-key', ([('page','0'),('tag','x')],{},'/a',None)), ('/a',(('page','0'),('tag','x'))))
check('state-cache-key scenario 6', solve('state-cache-key', ([('q','a'),('q','b')],{},'/b','end')), ('/b',(('q','a'),('q','b'))))
check('remove-one-query-name scenario 1', solve('remove-one-query-name', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), [('tag','x'),('tag','y')])
check('remove-one-query-name scenario 2', solve('remove-one-query-name', ([('q','')],{'q':'default'},'/a','')), [])
check('remove-one-query-name scenario 3', solve('remove-one-query-name', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('remove-one-query-name scenario 4', solve('remove-one-query-name', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [('page','2'),('debug','1')])
check('remove-one-query-name scenario 5', solve('remove-one-query-name', ([('page','0'),('tag','x')],{},'/a',None)), [('page','0'),('tag','x')])
check('remove-one-query-name scenario 6', solve('remove-one-query-name', ([('q','a'),('q','b')],{},'/b','end')), [])
check('first-value-precedence scenario 1', solve('first-value-precedence', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'a')
check('first-value-precedence scenario 2', solve('first-value-precedence', ([('q','')],{'q':'default'},'/a','')), '')
check('first-value-precedence scenario 3', solve('first-value-precedence', ([] ,{'q':'default','page':'1'},'/a',None)), None)
check('first-value-precedence scenario 4', solve('first-value-precedence', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), '0')
check('first-value-precedence scenario 5', solve('first-value-precedence', ([('page','0'),('tag','x')],{},'/a',None)), None)
check('first-value-precedence scenario 6', solve('first-value-precedence', ([('q','a'),('q','b')],{},'/b','end')), 'a')
check('debug-exclusion scenario 1', solve('debug-exclusion', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), [('q','a'),('tag','x'),('tag','y')])
check('debug-exclusion scenario 2', solve('debug-exclusion', ([('q','')],{'q':'default'},'/a','')), [('q','')])
check('debug-exclusion scenario 3', solve('debug-exclusion', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('debug-exclusion scenario 4', solve('debug-exclusion', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [('q','0'),('page','2')])
check('debug-exclusion scenario 5', solve('debug-exclusion', ([('page','0'),('tag','x')],{},'/a',None)), [('page','0'),('tag','x')])
check('debug-exclusion scenario 6', solve('debug-exclusion', ([('q','a'),('q','b')],{},'/b','end')), [('q','a'),('q','b')])
check('explicit-query-key-set scenario 1', solve('explicit-query-key-set', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ['q','tag'])
check('explicit-query-key-set scenario 2', solve('explicit-query-key-set', ([('q','')],{'q':'default'},'/a','')), ['q'])
check('explicit-query-key-set scenario 3', solve('explicit-query-key-set', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('explicit-query-key-set scenario 4', solve('explicit-query-key-set', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ['debug','page','q'])
check('explicit-query-key-set scenario 5', solve('explicit-query-key-set', ([('page','0'),('tag','x')],{},'/a',None)), ['page','tag'])
check('explicit-query-key-set scenario 6', solve('explicit-query-key-set', ([('q','a'),('q','b')],{},'/b','end')), ['q'])
check('navigation-fragment-key scenario 1', solve('navigation-fragment-key', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ('/a/'+str(N),'part'))
check('navigation-fragment-key scenario 2', solve('navigation-fragment-key', ([('q','')],{'q':'default'},'/a','')), ('/a',''))
check('navigation-fragment-key scenario 3', solve('navigation-fragment-key', ([] ,{'q':'default','page':'1'},'/a',None)), ('/a',None))
check('navigation-fragment-key scenario 4', solve('navigation-fragment-key', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ('/b','x'))
check('navigation-fragment-key scenario 5', solve('navigation-fragment-key', ([('page','0'),('tag','x')],{},'/a',None)), ('/a',None))
check('navigation-fragment-key scenario 6', solve('navigation-fragment-key', ([('q','a'),('q','b')],{},'/b','end')), ('/b','end'))
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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(operation, s):
    pairs, defaults, route, fragment = s
    if operation == 'repeated-values-retention':
        return [v for k,v in pairs if k=='tag']
    if operation == 'empty-query-value':
        return next((v for k,v in pairs if k=='q'),defaults.get('q'))
    if operation == 'query-default-merge':
        return {**defaults,**dict(pairs)}
    if operation == 'fragment-null-preservation':
        return fragment if fragment is not None else 'absent'
    if operation == 'state-cache-key':
        return (route,tuple(pairs))
    if operation == 'remove-one-query-name':
        return [(k,v) for k,v in pairs if k!='q']
    if operation == 'first-value-precedence':
        return next((v for k,v in pairs if k=='q'),None)
    if operation == 'debug-exclusion':
        return [(k,v) for k,v in pairs if k!='debug']
    if operation == 'explicit-query-key-set':
        return [k for k,v in pairs]
    if operation == 'navigation-fragment-key':
        return (route,fragment)
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('repeated-values-retention scenario 1', solve('repeated-values-retention', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ['x','y'])
check('repeated-values-retention scenario 2', solve('repeated-values-retention', ([('q','')],{'q':'default'},'/a','')), [])
check('repeated-values-retention scenario 3', solve('repeated-values-retention', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('repeated-values-retention scenario 4', solve('repeated-values-retention', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [])
check('repeated-values-retention scenario 5', solve('repeated-values-retention', ([('page','0'),('tag','x')],{},'/a',None)), ['x'])
check('repeated-values-retention scenario 6', solve('repeated-values-retention', ([('q','a'),('q','b')],{},'/b','end')), [])
check('empty-query-value scenario 1', solve('empty-query-value', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'a')
check('empty-query-value scenario 2', solve('empty-query-value', ([('q','')],{'q':'default'},'/a','')), '')
check('empty-query-value scenario 3', solve('empty-query-value', ([] ,{'q':'default','page':'1'},'/a',None)), 'default')
check('empty-query-value scenario 4', solve('empty-query-value', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), '0')
check('empty-query-value scenario 5', solve('empty-query-value', ([('page','0'),('tag','x')],{},'/a',None)), None)
check('empty-query-value scenario 6', solve('empty-query-value', ([('q','a'),('q','b')],{},'/b','end')), 'a')
check('query-default-merge scenario 1', solve('query-default-merge', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), {'q':'a','tag':'y'})
check('query-default-merge scenario 2', solve('query-default-merge', ([('q','')],{'q':'default'},'/a','')), {'q':''})
check('query-default-merge scenario 3', solve('query-default-merge', ([] ,{'q':'default','page':'1'},'/a',None)), {'q':'default','page':'1'})
check('query-default-merge scenario 4', solve('query-default-merge', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), {'q':'0','page':'2','debug':'1'})
check('query-default-merge scenario 5', solve('query-default-merge', ([('page','0'),('tag','x')],{},'/a',None)), {'page':'0','tag':'x'})
check('query-default-merge scenario 6', solve('query-default-merge', ([('q','a'),('q','b')],{},'/b','end')), {'q':'b'})
check('fragment-null-preservation scenario 1', solve('fragment-null-preservation', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'part')
check('fragment-null-preservation scenario 2', solve('fragment-null-preservation', ([('q','')],{'q':'default'},'/a','')), '')
check('fragment-null-preservation scenario 3', solve('fragment-null-preservation', ([] ,{'q':'default','page':'1'},'/a',None)), 'absent')
check('fragment-null-preservation scenario 4', solve('fragment-null-preservation', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), 'x')
check('fragment-null-preservation scenario 5', solve('fragment-null-preservation', ([('page','0'),('tag','x')],{},'/a',None)), 'absent')
check('fragment-null-preservation scenario 6', solve('fragment-null-preservation', ([('q','a'),('q','b')],{},'/b','end')), 'end')
check('state-cache-key scenario 1', solve('state-cache-key', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ('/a/'+str(N),(('q','a'),('tag','x'),('tag','y'))))
check('state-cache-key scenario 2', solve('state-cache-key', ([('q','')],{'q':'default'},'/a','')), ('/a',(('q',''),)))
check('state-cache-key scenario 3', solve('state-cache-key', ([] ,{'q':'default','page':'1'},'/a',None)), ('/a',()))
check('state-cache-key scenario 4', solve('state-cache-key', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ('/b',(('q','0'),('page','2'),('debug','1'))))
check('state-cache-key scenario 5', solve('state-cache-key', ([('page','0'),('tag','x')],{},'/a',None)), ('/a',(('page','0'),('tag','x'))))
check('state-cache-key scenario 6', solve('state-cache-key', ([('q','a'),('q','b')],{},'/b','end')), ('/b',(('q','a'),('q','b'))))
check('remove-one-query-name scenario 1', solve('remove-one-query-name', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), [('tag','x'),('tag','y')])
check('remove-one-query-name scenario 2', solve('remove-one-query-name', ([('q','')],{'q':'default'},'/a','')), [])
check('remove-one-query-name scenario 3', solve('remove-one-query-name', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('remove-one-query-name scenario 4', solve('remove-one-query-name', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [('page','2'),('debug','1')])
check('remove-one-query-name scenario 5', solve('remove-one-query-name', ([('page','0'),('tag','x')],{},'/a',None)), [('page','0'),('tag','x')])
check('remove-one-query-name scenario 6', solve('remove-one-query-name', ([('q','a'),('q','b')],{},'/b','end')), [])
check('first-value-precedence scenario 1', solve('first-value-precedence', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), 'a')
check('first-value-precedence scenario 2', solve('first-value-precedence', ([('q','')],{'q':'default'},'/a','')), '')
check('first-value-precedence scenario 3', solve('first-value-precedence', ([] ,{'q':'default','page':'1'},'/a',None)), None)
check('first-value-precedence scenario 4', solve('first-value-precedence', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), '0')
check('first-value-precedence scenario 5', solve('first-value-precedence', ([('page','0'),('tag','x')],{},'/a',None)), None)
check('first-value-precedence scenario 6', solve('first-value-precedence', ([('q','a'),('q','b')],{},'/b','end')), 'a')
check('debug-exclusion scenario 1', solve('debug-exclusion', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), [('q','a'),('tag','x'),('tag','y')])
check('debug-exclusion scenario 2', solve('debug-exclusion', ([('q','')],{'q':'default'},'/a','')), [('q','')])
check('debug-exclusion scenario 3', solve('debug-exclusion', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('debug-exclusion scenario 4', solve('debug-exclusion', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), [('q','0'),('page','2')])
check('debug-exclusion scenario 5', solve('debug-exclusion', ([('page','0'),('tag','x')],{},'/a',None)), [('page','0'),('tag','x')])
check('debug-exclusion scenario 6', solve('debug-exclusion', ([('q','a'),('q','b')],{},'/b','end')), [('q','a'),('q','b')])
check('explicit-query-key-set scenario 1', solve('explicit-query-key-set', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ['q','tag'])
check('explicit-query-key-set scenario 2', solve('explicit-query-key-set', ([('q','')],{'q':'default'},'/a','')), ['q'])
check('explicit-query-key-set scenario 3', solve('explicit-query-key-set', ([] ,{'q':'default','page':'1'},'/a',None)), [])
check('explicit-query-key-set scenario 4', solve('explicit-query-key-set', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ['debug','page','q'])
check('explicit-query-key-set scenario 5', solve('explicit-query-key-set', ([('page','0'),('tag','x')],{},'/a',None)), ['page','tag'])
check('explicit-query-key-set scenario 6', solve('explicit-query-key-set', ([('q','a'),('q','b')],{},'/b','end')), ['q'])
check('navigation-fragment-key scenario 1', solve('navigation-fragment-key', ([('q','a'),('tag','x'),('tag','y')],{'q':'default'},'/a/'+str(N),'part')), ('/a/'+str(N),'part'))
check('navigation-fragment-key scenario 2', solve('navigation-fragment-key', ([('q','')],{'q':'default'},'/a','')), ('/a',''))
check('navigation-fragment-key scenario 3', solve('navigation-fragment-key', ([] ,{'q':'default','page':'1'},'/a',None)), ('/a',None))
check('navigation-fragment-key scenario 4', solve('navigation-fragment-key', ([('q','0'),('page','2'),('debug','1')],{'q':'default'},'/b','x')), ('/b','x'))
check('navigation-fragment-key scenario 5', solve('navigation-fragment-key', ([('page','0'),('tag','x')],{},'/a',None)), ('/a',None))
check('navigation-fragment-key scenario 6', solve('navigation-fragment-key', ([('q','a'),('q','b')],{},'/b','end')), ('/b','end'))
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)

prompt:
Explicit query key set.

This route-state adapter models already-decoded query pairs. Repeated pairs and insertion order remain significant, first occurrence is used by single-value readers, explicit empty values override defaults, and fragment absence differs from empty. Operation explicit-query-key-set has the six explicit input/output oracles below.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(operation, s):
    route, cached_route, version, cached_version, expires, now, status, subscribers = s
    if operation == 'adopt-exact-route-version':
        return route==cached_route
    if operation == 'expiry-at-boundary':
        return expires is None or now<expires
    if operation == 'ready-resource-adoption':
        return status=='ready'
    if operation == 'pending-resource-sharing':
        return status=='pending' and route==cached_route
    if operation == 'unobserved-cancel':
        return not subscribers and status=='pending'
    if operation == 'subscriber-reference-count':
        return len(subscribers)
    if operation == 'failed-prefetch-retry':
        return status=='failed'
    if operation == 'prefetch-promote-consumer':
        return subscribers+['navigation']
    if operation == 'remaining-resource-life':
        return None if expires is None else max(0,expires-now)
    if operation == 'refresh-old-build':
        return version!=cached_version
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('adopt-exact-route-version scenario 1', solve('adopt-exact-route-version', ('/a','/a',N,N,10,9,'ready',['screen'])), True)
check('adopt-exact-route-version scenario 2', solve('adopt-exact-route-version', ('/a','/a',1,1,10,10,'ready',[])), True)
check('adopt-exact-route-version scenario 3', solve('adopt-exact-route-version', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('adopt-exact-route-version scenario 4', solve('adopt-exact-route-version', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('adopt-exact-route-version scenario 5', solve('adopt-exact-route-version', ('/b','/b',1,1,12,10,'failed',[])), True)
check('adopt-exact-route-version scenario 6', solve('adopt-exact-route-version', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), True)
check('expiry-at-boundary scenario 1', solve('expiry-at-boundary', ('/a','/a',N,N,10,9,'ready',['screen'])), True)
check('expiry-at-boundary scenario 2', solve('expiry-at-boundary', ('/a','/a',1,1,10,10,'ready',[])), False)
check('expiry-at-boundary scenario 3', solve('expiry-at-boundary', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), True)
check('expiry-at-boundary scenario 4', solve('expiry-at-boundary', ('/a','/a',2,1,12,10,'pending',['screen'])), True)
check('expiry-at-boundary scenario 5', solve('expiry-at-boundary', ('/b','/b',1,1,12,10,'failed',[])), True)
check('expiry-at-boundary scenario 6', solve('expiry-at-boundary', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), True)
check('ready-resource-adoption scenario 1', solve('ready-resource-adoption', ('/a','/a',N,N,10,9,'ready',['screen'])), True)
check('ready-resource-adoption scenario 2', solve('ready-resource-adoption', ('/a','/a',1,1,10,10,'ready',[])), True)
check('ready-resource-adoption scenario 3', solve('ready-resource-adoption', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), True)
check('ready-resource-adoption scenario 4', solve('ready-resource-adoption', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('ready-resource-adoption scenario 5', solve('ready-resource-adoption', ('/b','/b',1,1,12,10,'failed',[])), False)
check('ready-resource-adoption scenario 6', solve('ready-resource-adoption', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), True)
check('pending-resource-sharing scenario 1', solve('pending-resource-sharing', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('pending-resource-sharing scenario 2', solve('pending-resource-sharing', ('/a','/a',1,1,10,10,'ready',[])), False)
check('pending-resource-sharing scenario 3', solve('pending-resource-sharing', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('pending-resource-sharing scenario 4', solve('pending-resource-sharing', ('/a','/a',2,1,12,10,'pending',['screen'])), True)
check('pending-resource-sharing scenario 5', solve('pending-resource-sharing', ('/b','/b',1,1,12,10,'failed',[])), False)
check('pending-resource-sharing scenario 6', solve('pending-resource-sharing', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
check('unobserved-cancel scenario 1', solve('unobserved-cancel', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('unobserved-cancel scenario 2', solve('unobserved-cancel', ('/a','/a',1,1,10,10,'ready',[])), False)
check('unobserved-cancel scenario 3', solve('unobserved-cancel', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('unobserved-cancel scenario 4', solve('unobserved-cancel', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('unobserved-cancel scenario 5', solve('unobserved-cancel', ('/b','/b',1,1,12,10,'failed',[])), False)
check('unobserved-cancel scenario 6', solve('unobserved-cancel', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
check('subscriber-reference-count scenario 1', solve('subscriber-reference-count', ('/a','/a',N,N,10,9,'ready',['screen'])), 1)
check('subscriber-reference-count scenario 2', solve('subscriber-reference-count', ('/a','/a',1,1,10,10,'ready',[])), 0)
check('subscriber-reference-count scenario 3', solve('subscriber-reference-count', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), 2)
check('subscriber-reference-count scenario 4', solve('subscriber-reference-count', ('/a','/a',2,1,12,10,'pending',['screen'])), 1)
check('subscriber-reference-count scenario 5', solve('subscriber-reference-count', ('/b','/b',1,1,12,10,'failed',[])), 0)
check('subscriber-reference-count scenario 6', solve('subscriber-reference-count', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), 2)
check('failed-prefetch-retry scenario 1', solve('failed-prefetch-retry', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('failed-prefetch-retry scenario 2', solve('failed-prefetch-retry', ('/a','/a',1,1,10,10,'ready',[])), False)
check('failed-prefetch-retry scenario 3', solve('failed-prefetch-retry', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('failed-prefetch-retry scenario 4', solve('failed-prefetch-retry', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('failed-prefetch-retry scenario 5', solve('failed-prefetch-retry', ('/b','/b',1,1,12,10,'failed',[])), True)
check('failed-prefetch-retry scenario 6', solve('failed-prefetch-retry', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
check('prefetch-promote-consumer scenario 1', solve('prefetch-promote-consumer', ('/a','/a',N,N,10,9,'ready',['screen'])), ['screen','navigation'])
check('prefetch-promote-consumer scenario 2', solve('prefetch-promote-consumer', ('/a','/a',1,1,10,10,'ready',[])), ['navigation'])
check('prefetch-promote-consumer scenario 3', solve('prefetch-promote-consumer', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), ['screen','preview','navigation'])
check('prefetch-promote-consumer scenario 4', solve('prefetch-promote-consumer', ('/a','/a',2,1,12,10,'pending',['screen'])), ['screen','navigation'])
check('prefetch-promote-consumer scenario 5', solve('prefetch-promote-consumer', ('/b','/b',1,1,12,10,'failed',[])), ['navigation'])
check('prefetch-promote-consumer scenario 6', solve('prefetch-promote-consumer', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), ['screen','screen','navigation'])
check('remaining-resource-life scenario 1', solve('remaining-resource-life', ('/a','/a',N,N,10,9,'ready',['screen'])), 1)
check('remaining-resource-life scenario 2', solve('remaining-resource-life', ('/a','/a',1,1,10,10,'ready',[])), 0)
check('remaining-resource-life scenario 3', solve('remaining-resource-life', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), 2)
check('remaining-resource-life scenario 4', solve('remaining-resource-life', ('/a','/a',2,1,12,10,'pending',['screen'])), 2)
check('remaining-resource-life scenario 5', solve('remaining-resource-life', ('/b','/b',1,1,12,10,'failed',[])), 2)
check('remaining-resource-life scenario 6', solve('remaining-resource-life', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), None)
check('refresh-old-build scenario 1', solve('refresh-old-build', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('refresh-old-build scenario 2', solve('refresh-old-build', ('/a','/a',1,1,10,10,'ready',[])), False)
check('refresh-old-build scenario 3', solve('refresh-old-build', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('refresh-old-build scenario 4', solve('refresh-old-build', ('/a','/a',2,1,12,10,'pending',['screen'])), True)
check('refresh-old-build scenario 5', solve('refresh-old-build', ('/b','/b',1,1,12,10,'failed',[])), False)
check('refresh-old-build scenario 6', solve('refresh-old-build', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(operation, s):
    route, cached_route, version, cached_version, expires, now, status, subscribers = s
    if operation == 'adopt-exact-route-version':
        return version==cached_version
    if operation == 'expiry-at-boundary':
        return expires is None or now<expires
    if operation == 'ready-resource-adoption':
        return status=='ready'
    if operation == 'pending-resource-sharing':
        return status=='pending' and route==cached_route
    if operation == 'unobserved-cancel':
        return not subscribers and status=='pending'
    if operation == 'subscriber-reference-count':
        return len(subscribers)
    if operation == 'failed-prefetch-retry':
        return status=='failed'
    if operation == 'prefetch-promote-consumer':
        return subscribers+['navigation']
    if operation == 'remaining-resource-life':
        return None if expires is None else max(0,expires-now)
    if operation == 'refresh-old-build':
        return version!=cached_version
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('adopt-exact-route-version scenario 1', solve('adopt-exact-route-version', ('/a','/a',N,N,10,9,'ready',['screen'])), True)
check('adopt-exact-route-version scenario 2', solve('adopt-exact-route-version', ('/a','/a',1,1,10,10,'ready',[])), True)
check('adopt-exact-route-version scenario 3', solve('adopt-exact-route-version', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('adopt-exact-route-version scenario 4', solve('adopt-exact-route-version', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('adopt-exact-route-version scenario 5', solve('adopt-exact-route-version', ('/b','/b',1,1,12,10,'failed',[])), True)
check('adopt-exact-route-version scenario 6', solve('adopt-exact-route-version', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), True)
check('expiry-at-boundary scenario 1', solve('expiry-at-boundary', ('/a','/a',N,N,10,9,'ready',['screen'])), True)
check('expiry-at-boundary scenario 2', solve('expiry-at-boundary', ('/a','/a',1,1,10,10,'ready',[])), False)
check('expiry-at-boundary scenario 3', solve('expiry-at-boundary', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), True)
check('expiry-at-boundary scenario 4', solve('expiry-at-boundary', ('/a','/a',2,1,12,10,'pending',['screen'])), True)
check('expiry-at-boundary scenario 5', solve('expiry-at-boundary', ('/b','/b',1,1,12,10,'failed',[])), True)
check('expiry-at-boundary scenario 6', solve('expiry-at-boundary', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), True)
check('ready-resource-adoption scenario 1', solve('ready-resource-adoption', ('/a','/a',N,N,10,9,'ready',['screen'])), True)
check('ready-resource-adoption scenario 2', solve('ready-resource-adoption', ('/a','/a',1,1,10,10,'ready',[])), True)
check('ready-resource-adoption scenario 3', solve('ready-resource-adoption', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), True)
check('ready-resource-adoption scenario 4', solve('ready-resource-adoption', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('ready-resource-adoption scenario 5', solve('ready-resource-adoption', ('/b','/b',1,1,12,10,'failed',[])), False)
check('ready-resource-adoption scenario 6', solve('ready-resource-adoption', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), True)
check('pending-resource-sharing scenario 1', solve('pending-resource-sharing', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('pending-resource-sharing scenario 2', solve('pending-resource-sharing', ('/a','/a',1,1,10,10,'ready',[])), False)
check('pending-resource-sharing scenario 3', solve('pending-resource-sharing', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('pending-resource-sharing scenario 4', solve('pending-resource-sharing', ('/a','/a',2,1,12,10,'pending',['screen'])), True)
check('pending-resource-sharing scenario 5', solve('pending-resource-sharing', ('/b','/b',1,1,12,10,'failed',[])), False)
check('pending-resource-sharing scenario 6', solve('pending-resource-sharing', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
check('unobserved-cancel scenario 1', solve('unobserved-cancel', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('unobserved-cancel scenario 2', solve('unobserved-cancel', ('/a','/a',1,1,10,10,'ready',[])), False)
check('unobserved-cancel scenario 3', solve('unobserved-cancel', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('unobserved-cancel scenario 4', solve('unobserved-cancel', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('unobserved-cancel scenario 5', solve('unobserved-cancel', ('/b','/b',1,1,12,10,'failed',[])), False)
check('unobserved-cancel scenario 6', solve('unobserved-cancel', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
check('subscriber-reference-count scenario 1', solve('subscriber-reference-count', ('/a','/a',N,N,10,9,'ready',['screen'])), 1)
check('subscriber-reference-count scenario 2', solve('subscriber-reference-count', ('/a','/a',1,1,10,10,'ready',[])), 0)
check('subscriber-reference-count scenario 3', solve('subscriber-reference-count', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), 2)
check('subscriber-reference-count scenario 4', solve('subscriber-reference-count', ('/a','/a',2,1,12,10,'pending',['screen'])), 1)
check('subscriber-reference-count scenario 5', solve('subscriber-reference-count', ('/b','/b',1,1,12,10,'failed',[])), 0)
check('subscriber-reference-count scenario 6', solve('subscriber-reference-count', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), 2)
check('failed-prefetch-retry scenario 1', solve('failed-prefetch-retry', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('failed-prefetch-retry scenario 2', solve('failed-prefetch-retry', ('/a','/a',1,1,10,10,'ready',[])), False)
check('failed-prefetch-retry scenario 3', solve('failed-prefetch-retry', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('failed-prefetch-retry scenario 4', solve('failed-prefetch-retry', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('failed-prefetch-retry scenario 5', solve('failed-prefetch-retry', ('/b','/b',1,1,12,10,'failed',[])), True)
check('failed-prefetch-retry scenario 6', solve('failed-prefetch-retry', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
check('prefetch-promote-consumer scenario 1', solve('prefetch-promote-consumer', ('/a','/a',N,N,10,9,'ready',['screen'])), ['screen','navigation'])
check('prefetch-promote-consumer scenario 2', solve('prefetch-promote-consumer', ('/a','/a',1,1,10,10,'ready',[])), ['navigation'])
check('prefetch-promote-consumer scenario 3', solve('prefetch-promote-consumer', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), ['screen','preview','navigation'])
check('prefetch-promote-consumer scenario 4', solve('prefetch-promote-consumer', ('/a','/a',2,1,12,10,'pending',['screen'])), ['screen','navigation'])
check('prefetch-promote-consumer scenario 5', solve('prefetch-promote-consumer', ('/b','/b',1,1,12,10,'failed',[])), ['navigation'])
check('prefetch-promote-consumer scenario 6', solve('prefetch-promote-consumer', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), ['screen','screen','navigation'])
check('remaining-resource-life scenario 1', solve('remaining-resource-life', ('/a','/a',N,N,10,9,'ready',['screen'])), 1)
check('remaining-resource-life scenario 2', solve('remaining-resource-life', ('/a','/a',1,1,10,10,'ready',[])), 0)
check('remaining-resource-life scenario 3', solve('remaining-resource-life', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), 2)
check('remaining-resource-life scenario 4', solve('remaining-resource-life', ('/a','/a',2,1,12,10,'pending',['screen'])), 2)
check('remaining-resource-life scenario 5', solve('remaining-resource-life', ('/b','/b',1,1,12,10,'failed',[])), 2)
check('remaining-resource-life scenario 6', solve('remaining-resource-life', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), None)
check('refresh-old-build scenario 1', solve('refresh-old-build', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('refresh-old-build scenario 2', solve('refresh-old-build', ('/a','/a',1,1,10,10,'ready',[])), False)
check('refresh-old-build scenario 3', solve('refresh-old-build', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('refresh-old-build scenario 4', solve('refresh-old-build', ('/a','/a',2,1,12,10,'pending',['screen'])), True)
check('refresh-old-build scenario 5', solve('refresh-old-build', ('/b','/b',1,1,12,10,'failed',[])), False)
check('refresh-old-build scenario 6', solve('refresh-old-build', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
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)

prompt:
Adopt exact route version.

A prefetch handle is keyed by route and build version, has an exclusive expiration deadline, shares pending work, and is adopted only when ready. Consumer registrations are counted, including repeated registrations. Operation adopt-exact-route-version has the six explicit input/output oracles below.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(operation, s):
    route, cached_route, version, cached_version, expires, now, status, subscribers = s
    if operation == 'adopt-exact-route-version':
        return route==cached_route and version==cached_version
    if operation == 'expiry-at-boundary':
        return expires is None or now<=expires
    if operation == 'ready-resource-adoption':
        return status=='ready'
    if operation == 'pending-resource-sharing':
        return status=='pending' and route==cached_route
    if operation == 'unobserved-cancel':
        return not subscribers and status=='pending'
    if operation == 'subscriber-reference-count':
        return len(subscribers)
    if operation == 'failed-prefetch-retry':
        return status=='failed'
    if operation == 'prefetch-promote-consumer':
        return subscribers+['navigation']
    if operation == 'remaining-resource-life':
        return None if expires is None else max(0,expires-now)
    if operation == 'refresh-old-build':
        return version!=cached_version
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('adopt-exact-route-version scenario 1', solve('adopt-exact-route-version', ('/a','/a',N,N,10,9,'ready',['screen'])), True)
check('adopt-exact-route-version scenario 2', solve('adopt-exact-route-version', ('/a','/a',1,1,10,10,'ready',[])), True)
check('adopt-exact-route-version scenario 3', solve('adopt-exact-route-version', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('adopt-exact-route-version scenario 4', solve('adopt-exact-route-version', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('adopt-exact-route-version scenario 5', solve('adopt-exact-route-version', ('/b','/b',1,1,12,10,'failed',[])), True)
check('adopt-exact-route-version scenario 6', solve('adopt-exact-route-version', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), True)
check('expiry-at-boundary scenario 1', solve('expiry-at-boundary', ('/a','/a',N,N,10,9,'ready',['screen'])), True)
check('expiry-at-boundary scenario 2', solve('expiry-at-boundary', ('/a','/a',1,1,10,10,'ready',[])), False)
check('expiry-at-boundary scenario 3', solve('expiry-at-boundary', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), True)
check('expiry-at-boundary scenario 4', solve('expiry-at-boundary', ('/a','/a',2,1,12,10,'pending',['screen'])), True)
check('expiry-at-boundary scenario 5', solve('expiry-at-boundary', ('/b','/b',1,1,12,10,'failed',[])), True)
check('expiry-at-boundary scenario 6', solve('expiry-at-boundary', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), True)
check('ready-resource-adoption scenario 1', solve('ready-resource-adoption', ('/a','/a',N,N,10,9,'ready',['screen'])), True)
check('ready-resource-adoption scenario 2', solve('ready-resource-adoption', ('/a','/a',1,1,10,10,'ready',[])), True)
check('ready-resource-adoption scenario 3', solve('ready-resource-adoption', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), True)
check('ready-resource-adoption scenario 4', solve('ready-resource-adoption', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('ready-resource-adoption scenario 5', solve('ready-resource-adoption', ('/b','/b',1,1,12,10,'failed',[])), False)
check('ready-resource-adoption scenario 6', solve('ready-resource-adoption', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), True)
check('pending-resource-sharing scenario 1', solve('pending-resource-sharing', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('pending-resource-sharing scenario 2', solve('pending-resource-sharing', ('/a','/a',1,1,10,10,'ready',[])), False)
check('pending-resource-sharing scenario 3', solve('pending-resource-sharing', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('pending-resource-sharing scenario 4', solve('pending-resource-sharing', ('/a','/a',2,1,12,10,'pending',['screen'])), True)
check('pending-resource-sharing scenario 5', solve('pending-resource-sharing', ('/b','/b',1,1,12,10,'failed',[])), False)
check('pending-resource-sharing scenario 6', solve('pending-resource-sharing', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
check('unobserved-cancel scenario 1', solve('unobserved-cancel', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('unobserved-cancel scenario 2', solve('unobserved-cancel', ('/a','/a',1,1,10,10,'ready',[])), False)
check('unobserved-cancel scenario 3', solve('unobserved-cancel', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('unobserved-cancel scenario 4', solve('unobserved-cancel', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('unobserved-cancel scenario 5', solve('unobserved-cancel', ('/b','/b',1,1,12,10,'failed',[])), False)
check('unobserved-cancel scenario 6', solve('unobserved-cancel', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
check('subscriber-reference-count scenario 1', solve('subscriber-reference-count', ('/a','/a',N,N,10,9,'ready',['screen'])), 1)
check('subscriber-reference-count scenario 2', solve('subscriber-reference-count', ('/a','/a',1,1,10,10,'ready',[])), 0)
check('subscriber-reference-count scenario 3', solve('subscriber-reference-count', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), 2)
check('subscriber-reference-count scenario 4', solve('subscriber-reference-count', ('/a','/a',2,1,12,10,'pending',['screen'])), 1)
check('subscriber-reference-count scenario 5', solve('subscriber-reference-count', ('/b','/b',1,1,12,10,'failed',[])), 0)
check('subscriber-reference-count scenario 6', solve('subscriber-reference-count', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), 2)
check('failed-prefetch-retry scenario 1', solve('failed-prefetch-retry', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('failed-prefetch-retry scenario 2', solve('failed-prefetch-retry', ('/a','/a',1,1,10,10,'ready',[])), False)
check('failed-prefetch-retry scenario 3', solve('failed-prefetch-retry', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('failed-prefetch-retry scenario 4', solve('failed-prefetch-retry', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('failed-prefetch-retry scenario 5', solve('failed-prefetch-retry', ('/b','/b',1,1,12,10,'failed',[])), True)
check('failed-prefetch-retry scenario 6', solve('failed-prefetch-retry', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
check('prefetch-promote-consumer scenario 1', solve('prefetch-promote-consumer', ('/a','/a',N,N,10,9,'ready',['screen'])), ['screen','navigation'])
check('prefetch-promote-consumer scenario 2', solve('prefetch-promote-consumer', ('/a','/a',1,1,10,10,'ready',[])), ['navigation'])
check('prefetch-promote-consumer scenario 3', solve('prefetch-promote-consumer', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), ['screen','preview','navigation'])
check('prefetch-promote-consumer scenario 4', solve('prefetch-promote-consumer', ('/a','/a',2,1,12,10,'pending',['screen'])), ['screen','navigation'])
check('prefetch-promote-consumer scenario 5', solve('prefetch-promote-consumer', ('/b','/b',1,1,12,10,'failed',[])), ['navigation'])
check('prefetch-promote-consumer scenario 6', solve('prefetch-promote-consumer', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), ['screen','screen','navigation'])
check('remaining-resource-life scenario 1', solve('remaining-resource-life', ('/a','/a',N,N,10,9,'ready',['screen'])), 1)
check('remaining-resource-life scenario 2', solve('remaining-resource-life', ('/a','/a',1,1,10,10,'ready',[])), 0)
check('remaining-resource-life scenario 3', solve('remaining-resource-life', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), 2)
check('remaining-resource-life scenario 4', solve('remaining-resource-life', ('/a','/a',2,1,12,10,'pending',['screen'])), 2)
check('remaining-resource-life scenario 5', solve('remaining-resource-life', ('/b','/b',1,1,12,10,'failed',[])), 2)
check('remaining-resource-life scenario 6', solve('remaining-resource-life', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), None)
check('refresh-old-build scenario 1', solve('refresh-old-build', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('refresh-old-build scenario 2', solve('refresh-old-build', ('/a','/a',1,1,10,10,'ready',[])), False)
check('refresh-old-build scenario 3', solve('refresh-old-build', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('refresh-old-build scenario 4', solve('refresh-old-build', ('/a','/a',2,1,12,10,'pending',['screen'])), True)
check('refresh-old-build scenario 5', solve('refresh-old-build', ('/b','/b',1,1,12,10,'failed',[])), False)
check('refresh-old-build scenario 6', solve('refresh-old-build', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(operation, s):
    route, cached_route, version, cached_version, expires, now, status, subscribers = s
    if operation == 'adopt-exact-route-version':
        return route==cached_route and version==cached_version
    if operation == 'expiry-at-boundary':
        return expires is not None and now<expires
    if operation == 'ready-resource-adoption':
        return status=='ready'
    if operation == 'pending-resource-sharing':
        return status=='pending' and route==cached_route
    if operation == 'unobserved-cancel':
        return not subscribers and status=='pending'
    if operation == 'subscriber-reference-count':
        return len(subscribers)
    if operation == 'failed-prefetch-retry':
        return status=='failed'
    if operation == 'prefetch-promote-consumer':
        return subscribers+['navigation']
    if operation == 'remaining-resource-life':
        return None if expires is None else max(0,expires-now)
    if operation == 'refresh-old-build':
        return version!=cached_version
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('adopt-exact-route-version scenario 1', solve('adopt-exact-route-version', ('/a','/a',N,N,10,9,'ready',['screen'])), True)
check('adopt-exact-route-version scenario 2', solve('adopt-exact-route-version', ('/a','/a',1,1,10,10,'ready',[])), True)
check('adopt-exact-route-version scenario 3', solve('adopt-exact-route-version', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('adopt-exact-route-version scenario 4', solve('adopt-exact-route-version', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('adopt-exact-route-version scenario 5', solve('adopt-exact-route-version', ('/b','/b',1,1,12,10,'failed',[])), True)
check('adopt-exact-route-version scenario 6', solve('adopt-exact-route-version', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), True)
check('expiry-at-boundary scenario 1', solve('expiry-at-boundary', ('/a','/a',N,N,10,9,'ready',['screen'])), True)
check('expiry-at-boundary scenario 2', solve('expiry-at-boundary', ('/a','/a',1,1,10,10,'ready',[])), False)
check('expiry-at-boundary scenario 3', solve('expiry-at-boundary', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), True)
check('expiry-at-boundary scenario 4', solve('expiry-at-boundary', ('/a','/a',2,1,12,10,'pending',['screen'])), True)
check('expiry-at-boundary scenario 5', solve('expiry-at-boundary', ('/b','/b',1,1,12,10,'failed',[])), True)
check('expiry-at-boundary scenario 6', solve('expiry-at-boundary', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), True)
check('ready-resource-adoption scenario 1', solve('ready-resource-adoption', ('/a','/a',N,N,10,9,'ready',['screen'])), True)
check('ready-resource-adoption scenario 2', solve('ready-resource-adoption', ('/a','/a',1,1,10,10,'ready',[])), True)
check('ready-resource-adoption scenario 3', solve('ready-resource-adoption', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), True)
check('ready-resource-adoption scenario 4', solve('ready-resource-adoption', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('ready-resource-adoption scenario 5', solve('ready-resource-adoption', ('/b','/b',1,1,12,10,'failed',[])), False)
check('ready-resource-adoption scenario 6', solve('ready-resource-adoption', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), True)
check('pending-resource-sharing scenario 1', solve('pending-resource-sharing', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('pending-resource-sharing scenario 2', solve('pending-resource-sharing', ('/a','/a',1,1,10,10,'ready',[])), False)
check('pending-resource-sharing scenario 3', solve('pending-resource-sharing', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('pending-resource-sharing scenario 4', solve('pending-resource-sharing', ('/a','/a',2,1,12,10,'pending',['screen'])), True)
check('pending-resource-sharing scenario 5', solve('pending-resource-sharing', ('/b','/b',1,1,12,10,'failed',[])), False)
check('pending-resource-sharing scenario 6', solve('pending-resource-sharing', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
check('unobserved-cancel scenario 1', solve('unobserved-cancel', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('unobserved-cancel scenario 2', solve('unobserved-cancel', ('/a','/a',1,1,10,10,'ready',[])), False)
check('unobserved-cancel scenario 3', solve('unobserved-cancel', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('unobserved-cancel scenario 4', solve('unobserved-cancel', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('unobserved-cancel scenario 5', solve('unobserved-cancel', ('/b','/b',1,1,12,10,'failed',[])), False)
check('unobserved-cancel scenario 6', solve('unobserved-cancel', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
check('subscriber-reference-count scenario 1', solve('subscriber-reference-count', ('/a','/a',N,N,10,9,'ready',['screen'])), 1)
check('subscriber-reference-count scenario 2', solve('subscriber-reference-count', ('/a','/a',1,1,10,10,'ready',[])), 0)
check('subscriber-reference-count scenario 3', solve('subscriber-reference-count', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), 2)
check('subscriber-reference-count scenario 4', solve('subscriber-reference-count', ('/a','/a',2,1,12,10,'pending',['screen'])), 1)
check('subscriber-reference-count scenario 5', solve('subscriber-reference-count', ('/b','/b',1,1,12,10,'failed',[])), 0)
check('subscriber-reference-count scenario 6', solve('subscriber-reference-count', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), 2)
check('failed-prefetch-retry scenario 1', solve('failed-prefetch-retry', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('failed-prefetch-retry scenario 2', solve('failed-prefetch-retry', ('/a','/a',1,1,10,10,'ready',[])), False)
check('failed-prefetch-retry scenario 3', solve('failed-prefetch-retry', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('failed-prefetch-retry scenario 4', solve('failed-prefetch-retry', ('/a','/a',2,1,12,10,'pending',['screen'])), False)
check('failed-prefetch-retry scenario 5', solve('failed-prefetch-retry', ('/b','/b',1,1,12,10,'failed',[])), True)
check('failed-prefetch-retry scenario 6', solve('failed-prefetch-retry', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
check('prefetch-promote-consumer scenario 1', solve('prefetch-promote-consumer', ('/a','/a',N,N,10,9,'ready',['screen'])), ['screen','navigation'])
check('prefetch-promote-consumer scenario 2', solve('prefetch-promote-consumer', ('/a','/a',1,1,10,10,'ready',[])), ['navigation'])
check('prefetch-promote-consumer scenario 3', solve('prefetch-promote-consumer', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), ['screen','preview','navigation'])
check('prefetch-promote-consumer scenario 4', solve('prefetch-promote-consumer', ('/a','/a',2,1,12,10,'pending',['screen'])), ['screen','navigation'])
check('prefetch-promote-consumer scenario 5', solve('prefetch-promote-consumer', ('/b','/b',1,1,12,10,'failed',[])), ['navigation'])
check('prefetch-promote-consumer scenario 6', solve('prefetch-promote-consumer', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), ['screen','screen','navigation'])
check('remaining-resource-life scenario 1', solve('remaining-resource-life', ('/a','/a',N,N,10,9,'ready',['screen'])), 1)
check('remaining-resource-life scenario 2', solve('remaining-resource-life', ('/a','/a',1,1,10,10,'ready',[])), 0)
check('remaining-resource-life scenario 3', solve('remaining-resource-life', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), 2)
check('remaining-resource-life scenario 4', solve('remaining-resource-life', ('/a','/a',2,1,12,10,'pending',['screen'])), 2)
check('remaining-resource-life scenario 5', solve('remaining-resource-life', ('/b','/b',1,1,12,10,'failed',[])), 2)
check('remaining-resource-life scenario 6', solve('remaining-resource-life', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), None)
check('refresh-old-build scenario 1', solve('refresh-old-build', ('/a','/a',N,N,10,9,'ready',['screen'])), False)
check('refresh-old-build scenario 2', solve('refresh-old-build', ('/a','/a',1,1,10,10,'ready',[])), False)
check('refresh-old-build scenario 3', solve('refresh-old-build', ('/a','/b',1,1,12,10,'ready',['screen','preview'])), False)
check('refresh-old-build scenario 4', solve('refresh-old-build', ('/a','/a',2,1,12,10,'pending',['screen'])), True)
check('refresh-old-build scenario 5', solve('refresh-old-build', ('/b','/b',1,1,12,10,'failed',[])), False)
check('refresh-old-build scenario 6', solve('refresh-old-build', ('/a','/a',1,1,None,10,'ready',['screen','screen'])), False)
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)

prompt:
Expiry at boundary.

A prefetch handle is keyed by route and build version, has an exclusive expiration deadline, shares pending work, and is adopted only when ready. Consumer registrations are counted, including repeated registrations. Operation expiry-at-boundary has the six explicit input/output oracles below.

split: open-access