FAILURE MAP
← Case archive

FA-23991 / Client state / Open access

Deferred render transition state: Stale transition result · case 01

Stale transition result.

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

ROOT CAUSE

The stale-transition-result client decision evaluates `True` instead of `result_generation==active_generation`.

VERIFIED REPAIR

Apply the modeled stale-transition-result rule: `result_generation==active_generation`.

Unsuccessful approach: The partial repair `result_generation<=active_generation` still violates the explicit fixture contract.

Case contract

Urgent input echoes immediately while deferred content may lag. Only the active transition can commit or clear pending work. A suspended update retains any prior screen, including empty text; first render uses fallback. Operation stale-transition-result has the six explicit input/output oracles below.

Why this case matters

An offline client lifecycle model that isolates a state-management defect without DOM rendering or network services.

1 / The failure

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

N = 1
observations = []
def solve(operation, s):
    urgent, deferred, pending, active_generation, result_generation, suspended, previous, fallback = s
    if operation == 'urgent-value-echo':
        return urgent
    if operation == 'deferred-content-during-pending':
        return deferred if pending else urgent
    if operation == 'stale-transition-result':
        return True
    if operation == 'suspension-preserves-prior-screen':
        return previous if suspended and previous is not None else (fallback if suspended else urgent)
    if operation == 'pending-indicator-not-equality':
        return pending
    if operation == 'commit-clears-only-current-pending':
        return pending and result_generation!=active_generation
    if operation == 'deferred-value-commit':
        return urgent if result_generation==active_generation and not suspended else deferred
    if operation == 'fallback-first-render':
        return suspended and previous is None
    if operation == 'transition-target-identity':
        return (active_generation,urgent)
    if operation == 'previous-empty-screen':
        return previous is not None
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('urgent-value-echo scenario 1', solve('urgent-value-echo', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), 'q'+str(N))
check('urgent-value-echo scenario 2', solve('urgent-value-echo', ('','',False,1,1,False,'old','wait')), '')
check('urgent-value-echo scenario 3', solve('urgent-value-echo', ('new','old',True,2,2,True,'screen','spinner')), 'new')
check('urgent-value-echo scenario 4', solve('urgent-value-echo', ('new','old',True,2,2,False,None,'spinner')), 'new')
check('urgent-value-echo scenario 5', solve('urgent-value-echo', ('x','x',False,3,2,True,None,'spinner')), 'x')
check('urgent-value-echo scenario 6', solve('urgent-value-echo', ('','old',False,3,3,True,'','spinner')), '')
check('deferred-content-during-pending scenario 1', solve('deferred-content-during-pending', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), 'old')
check('deferred-content-during-pending scenario 2', solve('deferred-content-during-pending', ('','',False,1,1,False,'old','wait')), '')
check('deferred-content-during-pending scenario 3', solve('deferred-content-during-pending', ('new','old',True,2,2,True,'screen','spinner')), 'old')
check('deferred-content-during-pending scenario 4', solve('deferred-content-during-pending', ('new','old',True,2,2,False,None,'spinner')), 'old')
check('deferred-content-during-pending scenario 5', solve('deferred-content-during-pending', ('x','x',False,3,2,True,None,'spinner')), 'x')
check('deferred-content-during-pending scenario 6', solve('deferred-content-during-pending', ('','old',False,3,3,True,'','spinner')), '')
check('stale-transition-result scenario 1', solve('stale-transition-result', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), False)
check('stale-transition-result scenario 2', solve('stale-transition-result', ('','',False,1,1,False,'old','wait')), True)
check('stale-transition-result scenario 3', solve('stale-transition-result', ('new','old',True,2,2,True,'screen','spinner')), True)
check('stale-transition-result scenario 4', solve('stale-transition-result', ('new','old',True,2,2,False,None,'spinner')), True)
check('stale-transition-result scenario 5', solve('stale-transition-result', ('x','x',False,3,2,True,None,'spinner')), False)
check('stale-transition-result scenario 6', solve('stale-transition-result', ('','old',False,3,3,True,'','spinner')), True)
check('suspension-preserves-prior-screen scenario 1', solve('suspension-preserves-prior-screen', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), 'q'+str(N))
check('suspension-preserves-prior-screen scenario 2', solve('suspension-preserves-prior-screen', ('','',False,1,1,False,'old','wait')), '')
check('suspension-preserves-prior-screen scenario 3', solve('suspension-preserves-prior-screen', ('new','old',True,2,2,True,'screen','spinner')), 'screen')
check('suspension-preserves-prior-screen scenario 4', solve('suspension-preserves-prior-screen', ('new','old',True,2,2,False,None,'spinner')), 'new')
check('suspension-preserves-prior-screen scenario 5', solve('suspension-preserves-prior-screen', ('x','x',False,3,2,True,None,'spinner')), 'spinner')
check('suspension-preserves-prior-screen scenario 6', solve('suspension-preserves-prior-screen', ('','old',False,3,3,True,'','spinner')), '')
check('pending-indicator-not-equality scenario 1', solve('pending-indicator-not-equality', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), True)
check('pending-indicator-not-equality scenario 2', solve('pending-indicator-not-equality', ('','',False,1,1,False,'old','wait')), False)
check('pending-indicator-not-equality scenario 3', solve('pending-indicator-not-equality', ('new','old',True,2,2,True,'screen','spinner')), True)
check('pending-indicator-not-equality scenario 4', solve('pending-indicator-not-equality', ('new','old',True,2,2,False,None,'spinner')), True)
check('pending-indicator-not-equality scenario 5', solve('pending-indicator-not-equality', ('x','x',False,3,2,True,None,'spinner')), False)
check('pending-indicator-not-equality scenario 6', solve('pending-indicator-not-equality', ('','old',False,3,3,True,'','spinner')), False)
check('commit-clears-only-current-pending scenario 1', solve('commit-clears-only-current-pending', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), True)
check('commit-clears-only-current-pending scenario 2', solve('commit-clears-only-current-pending', ('','',False,1,1,False,'old','wait')), False)
check('commit-clears-only-current-pending scenario 3', solve('commit-clears-only-current-pending', ('new','old',True,2,2,True,'screen','spinner')), False)
check('commit-clears-only-current-pending scenario 4', solve('commit-clears-only-current-pending', ('new','old',True,2,2,False,None,'spinner')), False)
check('commit-clears-only-current-pending scenario 5', solve('commit-clears-only-current-pending', ('x','x',False,3,2,True,None,'spinner')), False)
check('commit-clears-only-current-pending scenario 6', solve('commit-clears-only-current-pending', ('','old',False,3,3,True,'','spinner')), False)
check('deferred-value-commit scenario 1', solve('deferred-value-commit', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), 'old')
check('deferred-value-commit scenario 2', solve('deferred-value-commit', ('','',False,1,1,False,'old','wait')), '')
check('deferred-value-commit scenario 3', solve('deferred-value-commit', ('new','old',True,2,2,True,'screen','spinner')), 'old')
check('deferred-value-commit scenario 4', solve('deferred-value-commit', ('new','old',True,2,2,False,None,'spinner')), 'new')
check('deferred-value-commit scenario 5', solve('deferred-value-commit', ('x','x',False,3,2,True,None,'spinner')), 'x')
check('deferred-value-commit scenario 6', solve('deferred-value-commit', ('','old',False,3,3,True,'','spinner')), 'old')
check('fallback-first-render scenario 1', solve('fallback-first-render', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), False)
check('fallback-first-render scenario 2', solve('fallback-first-render', ('','',False,1,1,False,'old','wait')), False)
check('fallback-first-render scenario 3', solve('fallback-first-render', ('new','old',True,2,2,True,'screen','spinner')), False)
check('fallback-first-render scenario 4', solve('fallback-first-render', ('new','old',True,2,2,False,None,'spinner')), False)
check('fallback-first-render scenario 5', solve('fallback-first-render', ('x','x',False,3,2,True,None,'spinner')), True)
check('fallback-first-render scenario 6', solve('fallback-first-render', ('','old',False,3,3,True,'','spinner')), False)
check('transition-target-identity scenario 1', solve('transition-target-identity', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), (2,'q'+str(N)))
check('transition-target-identity scenario 2', solve('transition-target-identity', ('','',False,1,1,False,'old','wait')), (1,''))
check('transition-target-identity scenario 3', solve('transition-target-identity', ('new','old',True,2,2,True,'screen','spinner')), (2,'new'))
check('transition-target-identity scenario 4', solve('transition-target-identity', ('new','old',True,2,2,False,None,'spinner')), (2,'new'))
check('transition-target-identity scenario 5', solve('transition-target-identity', ('x','x',False,3,2,True,None,'spinner')), (3,'x'))
check('transition-target-identity scenario 6', solve('transition-target-identity', ('','old',False,3,3,True,'','spinner')), (3,''))
check('previous-empty-screen scenario 1', solve('previous-empty-screen', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), True)
check('previous-empty-screen scenario 2', solve('previous-empty-screen', ('','',False,1,1,False,'old','wait')), True)
check('previous-empty-screen scenario 3', solve('previous-empty-screen', ('new','old',True,2,2,True,'screen','spinner')), True)
check('previous-empty-screen scenario 4', solve('previous-empty-screen', ('new','old',True,2,2,False,None,'spinner')), False)
check('previous-empty-screen scenario 5', solve('previous-empty-screen', ('x','x',False,3,2,True,None,'spinner')), False)
check('previous-empty-screen scenario 6', solve('previous-empty-screen', ('','old',False,3,3,True,'','spinner')), True)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
urgent-value-echo scenario 1q1q1Passed
urgent-value-echo scenario 2Passed
urgent-value-echo scenario 3newnewPassed
urgent-value-echo scenario 4newnewPassed
urgent-value-echo scenario 5xxPassed
urgent-value-echo scenario 6Passed
deferred-content-during-pending scenario 1oldoldPassed
deferred-content-during-pending scenario 2Passed
deferred-content-during-pending scenario 3oldoldPassed
deferred-content-during-pending scenario 4oldoldPassed
deferred-content-during-pending scenario 5xxPassed
deferred-content-during-pending scenario 6Passed
stale-transition-result scenario 1TrueFalseFailed
stale-transition-result scenario 2TrueTruePassed
stale-transition-result scenario 3TrueTruePassed
stale-transition-result scenario 4TrueTruePassed
stale-transition-result scenario 5TrueFalseFailed
stale-transition-result scenario 6TrueTruePassed
suspension-preserves-prior-screen scenario 1q1q1Passed
suspension-preserves-prior-screen scenario 2Passed
suspension-preserves-prior-screen scenario 3screenscreenPassed
suspension-preserves-prior-screen scenario 4newnewPassed
suspension-preserves-prior-screen scenario 5spinnerspinnerPassed
suspension-preserves-prior-screen scenario 6Passed
pending-indicator-not-equality scenario 1TrueTruePassed
pending-indicator-not-equality scenario 2FalseFalsePassed
pending-indicator-not-equality scenario 3TrueTruePassed
pending-indicator-not-equality scenario 4TrueTruePassed
pending-indicator-not-equality scenario 5FalseFalsePassed
pending-indicator-not-equality scenario 6FalseFalsePassed
commit-clears-only-current-pending scenario 1TrueTruePassed
commit-clears-only-current-pending scenario 2FalseFalsePassed
commit-clears-only-current-pending scenario 3FalseFalsePassed
commit-clears-only-current-pending scenario 4FalseFalsePassed
commit-clears-only-current-pending scenario 5FalseFalsePassed
commit-clears-only-current-pending scenario 6FalseFalsePassed
deferred-value-commit scenario 1oldoldPassed
deferred-value-commit scenario 2Passed
deferred-value-commit scenario 3oldoldPassed
deferred-value-commit scenario 4newnewPassed
deferred-value-commit scenario 5xxPassed
deferred-value-commit scenario 6oldoldPassed
fallback-first-render scenario 1FalseFalsePassed
fallback-first-render scenario 2FalseFalsePassed
fallback-first-render scenario 3FalseFalsePassed
fallback-first-render scenario 4FalseFalsePassed
fallback-first-render scenario 5TrueTruePassed
fallback-first-render scenario 6FalseFalsePassed
transition-target-identity scenario 1[2, 'q1'][2, 'q1']Passed
transition-target-identity scenario 2[1, ''][1, '']Passed
transition-target-identity scenario 3[2, 'new'][2, 'new']Passed
transition-target-identity scenario 4[2, 'new'][2, 'new']Passed
transition-target-identity scenario 5[3, 'x'][3, 'x']Passed
transition-target-identity scenario 6[3, ''][3, '']Passed
previous-empty-screen scenario 1TrueTruePassed
previous-empty-screen scenario 2TrueTruePassed
previous-empty-screen scenario 3TrueTruePassed
previous-empty-screen scenario 4FalseFalsePassed
previous-empty-screen scenario 5FalseFalsePassed
previous-empty-screen scenario 6TrueTruePassed

SHA-256 / 655821a37c39507cc6427613c302b2ef1c4209fb012bb765acab749b82c100c7

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(operation, s):
    urgent, deferred, pending, active_generation, result_generation, suspended, previous, fallback = s
    if operation == 'urgent-value-echo':
        return urgent
    if operation == 'deferred-content-during-pending':
        return deferred if pending else urgent
    if operation == 'stale-transition-result':
        return result_generation<=active_generation
    if operation == 'suspension-preserves-prior-screen':
        return previous if suspended and previous is not None else (fallback if suspended else urgent)
    if operation == 'pending-indicator-not-equality':
        return pending
    if operation == 'commit-clears-only-current-pending':
        return pending and result_generation!=active_generation
    if operation == 'deferred-value-commit':
        return urgent if result_generation==active_generation and not suspended else deferred
    if operation == 'fallback-first-render':
        return suspended and previous is None
    if operation == 'transition-target-identity':
        return (active_generation,urgent)
    if operation == 'previous-empty-screen':
        return previous is not None
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('urgent-value-echo scenario 1', solve('urgent-value-echo', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), 'q'+str(N))
check('urgent-value-echo scenario 2', solve('urgent-value-echo', ('','',False,1,1,False,'old','wait')), '')
check('urgent-value-echo scenario 3', solve('urgent-value-echo', ('new','old',True,2,2,True,'screen','spinner')), 'new')
check('urgent-value-echo scenario 4', solve('urgent-value-echo', ('new','old',True,2,2,False,None,'spinner')), 'new')
check('urgent-value-echo scenario 5', solve('urgent-value-echo', ('x','x',False,3,2,True,None,'spinner')), 'x')
check('urgent-value-echo scenario 6', solve('urgent-value-echo', ('','old',False,3,3,True,'','spinner')), '')
check('deferred-content-during-pending scenario 1', solve('deferred-content-during-pending', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), 'old')
check('deferred-content-during-pending scenario 2', solve('deferred-content-during-pending', ('','',False,1,1,False,'old','wait')), '')
check('deferred-content-during-pending scenario 3', solve('deferred-content-during-pending', ('new','old',True,2,2,True,'screen','spinner')), 'old')
check('deferred-content-during-pending scenario 4', solve('deferred-content-during-pending', ('new','old',True,2,2,False,None,'spinner')), 'old')
check('deferred-content-during-pending scenario 5', solve('deferred-content-during-pending', ('x','x',False,3,2,True,None,'spinner')), 'x')
check('deferred-content-during-pending scenario 6', solve('deferred-content-during-pending', ('','old',False,3,3,True,'','spinner')), '')
check('stale-transition-result scenario 1', solve('stale-transition-result', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), False)
check('stale-transition-result scenario 2', solve('stale-transition-result', ('','',False,1,1,False,'old','wait')), True)
check('stale-transition-result scenario 3', solve('stale-transition-result', ('new','old',True,2,2,True,'screen','spinner')), True)
check('stale-transition-result scenario 4', solve('stale-transition-result', ('new','old',True,2,2,False,None,'spinner')), True)
check('stale-transition-result scenario 5', solve('stale-transition-result', ('x','x',False,3,2,True,None,'spinner')), False)
check('stale-transition-result scenario 6', solve('stale-transition-result', ('','old',False,3,3,True,'','spinner')), True)
check('suspension-preserves-prior-screen scenario 1', solve('suspension-preserves-prior-screen', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), 'q'+str(N))
check('suspension-preserves-prior-screen scenario 2', solve('suspension-preserves-prior-screen', ('','',False,1,1,False,'old','wait')), '')
check('suspension-preserves-prior-screen scenario 3', solve('suspension-preserves-prior-screen', ('new','old',True,2,2,True,'screen','spinner')), 'screen')
check('suspension-preserves-prior-screen scenario 4', solve('suspension-preserves-prior-screen', ('new','old',True,2,2,False,None,'spinner')), 'new')
check('suspension-preserves-prior-screen scenario 5', solve('suspension-preserves-prior-screen', ('x','x',False,3,2,True,None,'spinner')), 'spinner')
check('suspension-preserves-prior-screen scenario 6', solve('suspension-preserves-prior-screen', ('','old',False,3,3,True,'','spinner')), '')
check('pending-indicator-not-equality scenario 1', solve('pending-indicator-not-equality', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), True)
check('pending-indicator-not-equality scenario 2', solve('pending-indicator-not-equality', ('','',False,1,1,False,'old','wait')), False)
check('pending-indicator-not-equality scenario 3', solve('pending-indicator-not-equality', ('new','old',True,2,2,True,'screen','spinner')), True)
check('pending-indicator-not-equality scenario 4', solve('pending-indicator-not-equality', ('new','old',True,2,2,False,None,'spinner')), True)
check('pending-indicator-not-equality scenario 5', solve('pending-indicator-not-equality', ('x','x',False,3,2,True,None,'spinner')), False)
check('pending-indicator-not-equality scenario 6', solve('pending-indicator-not-equality', ('','old',False,3,3,True,'','spinner')), False)
check('commit-clears-only-current-pending scenario 1', solve('commit-clears-only-current-pending', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), True)
check('commit-clears-only-current-pending scenario 2', solve('commit-clears-only-current-pending', ('','',False,1,1,False,'old','wait')), False)
check('commit-clears-only-current-pending scenario 3', solve('commit-clears-only-current-pending', ('new','old',True,2,2,True,'screen','spinner')), False)
check('commit-clears-only-current-pending scenario 4', solve('commit-clears-only-current-pending', ('new','old',True,2,2,False,None,'spinner')), False)
check('commit-clears-only-current-pending scenario 5', solve('commit-clears-only-current-pending', ('x','x',False,3,2,True,None,'spinner')), False)
check('commit-clears-only-current-pending scenario 6', solve('commit-clears-only-current-pending', ('','old',False,3,3,True,'','spinner')), False)
check('deferred-value-commit scenario 1', solve('deferred-value-commit', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), 'old')
check('deferred-value-commit scenario 2', solve('deferred-value-commit', ('','',False,1,1,False,'old','wait')), '')
check('deferred-value-commit scenario 3', solve('deferred-value-commit', ('new','old',True,2,2,True,'screen','spinner')), 'old')
check('deferred-value-commit scenario 4', solve('deferred-value-commit', ('new','old',True,2,2,False,None,'spinner')), 'new')
check('deferred-value-commit scenario 5', solve('deferred-value-commit', ('x','x',False,3,2,True,None,'spinner')), 'x')
check('deferred-value-commit scenario 6', solve('deferred-value-commit', ('','old',False,3,3,True,'','spinner')), 'old')
check('fallback-first-render scenario 1', solve('fallback-first-render', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), False)
check('fallback-first-render scenario 2', solve('fallback-first-render', ('','',False,1,1,False,'old','wait')), False)
check('fallback-first-render scenario 3', solve('fallback-first-render', ('new','old',True,2,2,True,'screen','spinner')), False)
check('fallback-first-render scenario 4', solve('fallback-first-render', ('new','old',True,2,2,False,None,'spinner')), False)
check('fallback-first-render scenario 5', solve('fallback-first-render', ('x','x',False,3,2,True,None,'spinner')), True)
check('fallback-first-render scenario 6', solve('fallback-first-render', ('','old',False,3,3,True,'','spinner')), False)
check('transition-target-identity scenario 1', solve('transition-target-identity', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), (2,'q'+str(N)))
check('transition-target-identity scenario 2', solve('transition-target-identity', ('','',False,1,1,False,'old','wait')), (1,''))
check('transition-target-identity scenario 3', solve('transition-target-identity', ('new','old',True,2,2,True,'screen','spinner')), (2,'new'))
check('transition-target-identity scenario 4', solve('transition-target-identity', ('new','old',True,2,2,False,None,'spinner')), (2,'new'))
check('transition-target-identity scenario 5', solve('transition-target-identity', ('x','x',False,3,2,True,None,'spinner')), (3,'x'))
check('transition-target-identity scenario 6', solve('transition-target-identity', ('','old',False,3,3,True,'','spinner')), (3,''))
check('previous-empty-screen scenario 1', solve('previous-empty-screen', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), True)
check('previous-empty-screen scenario 2', solve('previous-empty-screen', ('','',False,1,1,False,'old','wait')), True)
check('previous-empty-screen scenario 3', solve('previous-empty-screen', ('new','old',True,2,2,True,'screen','spinner')), True)
check('previous-empty-screen scenario 4', solve('previous-empty-screen', ('new','old',True,2,2,False,None,'spinner')), False)
check('previous-empty-screen scenario 5', solve('previous-empty-screen', ('x','x',False,3,2,True,None,'spinner')), False)
check('previous-empty-screen scenario 6', solve('previous-empty-screen', ('','old',False,3,3,True,'','spinner')), True)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
urgent-value-echo scenario 1q1q1Passed
urgent-value-echo scenario 2Passed
urgent-value-echo scenario 3newnewPassed
urgent-value-echo scenario 4newnewPassed
urgent-value-echo scenario 5xxPassed
urgent-value-echo scenario 6Passed
deferred-content-during-pending scenario 1oldoldPassed
deferred-content-during-pending scenario 2Passed
deferred-content-during-pending scenario 3oldoldPassed
deferred-content-during-pending scenario 4oldoldPassed
deferred-content-during-pending scenario 5xxPassed
deferred-content-during-pending scenario 6Passed
stale-transition-result scenario 1TrueFalseFailed
stale-transition-result scenario 2TrueTruePassed
stale-transition-result scenario 3TrueTruePassed
stale-transition-result scenario 4TrueTruePassed
stale-transition-result scenario 5TrueFalseFailed
stale-transition-result scenario 6TrueTruePassed
suspension-preserves-prior-screen scenario 1q1q1Passed
suspension-preserves-prior-screen scenario 2Passed
suspension-preserves-prior-screen scenario 3screenscreenPassed
suspension-preserves-prior-screen scenario 4newnewPassed
suspension-preserves-prior-screen scenario 5spinnerspinnerPassed
suspension-preserves-prior-screen scenario 6Passed
pending-indicator-not-equality scenario 1TrueTruePassed
pending-indicator-not-equality scenario 2FalseFalsePassed
pending-indicator-not-equality scenario 3TrueTruePassed
pending-indicator-not-equality scenario 4TrueTruePassed
pending-indicator-not-equality scenario 5FalseFalsePassed
pending-indicator-not-equality scenario 6FalseFalsePassed
commit-clears-only-current-pending scenario 1TrueTruePassed
commit-clears-only-current-pending scenario 2FalseFalsePassed
commit-clears-only-current-pending scenario 3FalseFalsePassed
commit-clears-only-current-pending scenario 4FalseFalsePassed
commit-clears-only-current-pending scenario 5FalseFalsePassed
commit-clears-only-current-pending scenario 6FalseFalsePassed
deferred-value-commit scenario 1oldoldPassed
deferred-value-commit scenario 2Passed
deferred-value-commit scenario 3oldoldPassed
deferred-value-commit scenario 4newnewPassed
deferred-value-commit scenario 5xxPassed
deferred-value-commit scenario 6oldoldPassed
fallback-first-render scenario 1FalseFalsePassed
fallback-first-render scenario 2FalseFalsePassed
fallback-first-render scenario 3FalseFalsePassed
fallback-first-render scenario 4FalseFalsePassed
fallback-first-render scenario 5TrueTruePassed
fallback-first-render scenario 6FalseFalsePassed
transition-target-identity scenario 1[2, 'q1'][2, 'q1']Passed
transition-target-identity scenario 2[1, ''][1, '']Passed
transition-target-identity scenario 3[2, 'new'][2, 'new']Passed
transition-target-identity scenario 4[2, 'new'][2, 'new']Passed
transition-target-identity scenario 5[3, 'x'][3, 'x']Passed
transition-target-identity scenario 6[3, ''][3, '']Passed
previous-empty-screen scenario 1TrueTruePassed
previous-empty-screen scenario 2TrueTruePassed
previous-empty-screen scenario 3TrueTruePassed
previous-empty-screen scenario 4FalseFalsePassed
previous-empty-screen scenario 5FalseFalsePassed
previous-empty-screen scenario 6TrueTruePassed

SHA-256 / e2baf765cd2aaa851f90fbc2cd731ab1e702a1db8991a182aae3a626bf3ecac0

3 / The verified repair

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

N = 1
observations = []
def solve(operation, s):
    urgent, deferred, pending, active_generation, result_generation, suspended, previous, fallback = s
    if operation == 'urgent-value-echo':
        return urgent
    if operation == 'deferred-content-during-pending':
        return deferred if pending else urgent
    if operation == 'stale-transition-result':
        return result_generation==active_generation
    if operation == 'suspension-preserves-prior-screen':
        return previous if suspended and previous is not None else (fallback if suspended else urgent)
    if operation == 'pending-indicator-not-equality':
        return pending
    if operation == 'commit-clears-only-current-pending':
        return pending and result_generation!=active_generation
    if operation == 'deferred-value-commit':
        return urgent if result_generation==active_generation and not suspended else deferred
    if operation == 'fallback-first-render':
        return suspended and previous is None
    if operation == 'transition-target-identity':
        return (active_generation,urgent)
    if operation == 'previous-empty-screen':
        return previous is not None
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('urgent-value-echo scenario 1', solve('urgent-value-echo', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), 'q'+str(N))
check('urgent-value-echo scenario 2', solve('urgent-value-echo', ('','',False,1,1,False,'old','wait')), '')
check('urgent-value-echo scenario 3', solve('urgent-value-echo', ('new','old',True,2,2,True,'screen','spinner')), 'new')
check('urgent-value-echo scenario 4', solve('urgent-value-echo', ('new','old',True,2,2,False,None,'spinner')), 'new')
check('urgent-value-echo scenario 5', solve('urgent-value-echo', ('x','x',False,3,2,True,None,'spinner')), 'x')
check('urgent-value-echo scenario 6', solve('urgent-value-echo', ('','old',False,3,3,True,'','spinner')), '')
check('deferred-content-during-pending scenario 1', solve('deferred-content-during-pending', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), 'old')
check('deferred-content-during-pending scenario 2', solve('deferred-content-during-pending', ('','',False,1,1,False,'old','wait')), '')
check('deferred-content-during-pending scenario 3', solve('deferred-content-during-pending', ('new','old',True,2,2,True,'screen','spinner')), 'old')
check('deferred-content-during-pending scenario 4', solve('deferred-content-during-pending', ('new','old',True,2,2,False,None,'spinner')), 'old')
check('deferred-content-during-pending scenario 5', solve('deferred-content-during-pending', ('x','x',False,3,2,True,None,'spinner')), 'x')
check('deferred-content-during-pending scenario 6', solve('deferred-content-during-pending', ('','old',False,3,3,True,'','spinner')), '')
check('stale-transition-result scenario 1', solve('stale-transition-result', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), False)
check('stale-transition-result scenario 2', solve('stale-transition-result', ('','',False,1,1,False,'old','wait')), True)
check('stale-transition-result scenario 3', solve('stale-transition-result', ('new','old',True,2,2,True,'screen','spinner')), True)
check('stale-transition-result scenario 4', solve('stale-transition-result', ('new','old',True,2,2,False,None,'spinner')), True)
check('stale-transition-result scenario 5', solve('stale-transition-result', ('x','x',False,3,2,True,None,'spinner')), False)
check('stale-transition-result scenario 6', solve('stale-transition-result', ('','old',False,3,3,True,'','spinner')), True)
check('suspension-preserves-prior-screen scenario 1', solve('suspension-preserves-prior-screen', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), 'q'+str(N))
check('suspension-preserves-prior-screen scenario 2', solve('suspension-preserves-prior-screen', ('','',False,1,1,False,'old','wait')), '')
check('suspension-preserves-prior-screen scenario 3', solve('suspension-preserves-prior-screen', ('new','old',True,2,2,True,'screen','spinner')), 'screen')
check('suspension-preserves-prior-screen scenario 4', solve('suspension-preserves-prior-screen', ('new','old',True,2,2,False,None,'spinner')), 'new')
check('suspension-preserves-prior-screen scenario 5', solve('suspension-preserves-prior-screen', ('x','x',False,3,2,True,None,'spinner')), 'spinner')
check('suspension-preserves-prior-screen scenario 6', solve('suspension-preserves-prior-screen', ('','old',False,3,3,True,'','spinner')), '')
check('pending-indicator-not-equality scenario 1', solve('pending-indicator-not-equality', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), True)
check('pending-indicator-not-equality scenario 2', solve('pending-indicator-not-equality', ('','',False,1,1,False,'old','wait')), False)
check('pending-indicator-not-equality scenario 3', solve('pending-indicator-not-equality', ('new','old',True,2,2,True,'screen','spinner')), True)
check('pending-indicator-not-equality scenario 4', solve('pending-indicator-not-equality', ('new','old',True,2,2,False,None,'spinner')), True)
check('pending-indicator-not-equality scenario 5', solve('pending-indicator-not-equality', ('x','x',False,3,2,True,None,'spinner')), False)
check('pending-indicator-not-equality scenario 6', solve('pending-indicator-not-equality', ('','old',False,3,3,True,'','spinner')), False)
check('commit-clears-only-current-pending scenario 1', solve('commit-clears-only-current-pending', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), True)
check('commit-clears-only-current-pending scenario 2', solve('commit-clears-only-current-pending', ('','',False,1,1,False,'old','wait')), False)
check('commit-clears-only-current-pending scenario 3', solve('commit-clears-only-current-pending', ('new','old',True,2,2,True,'screen','spinner')), False)
check('commit-clears-only-current-pending scenario 4', solve('commit-clears-only-current-pending', ('new','old',True,2,2,False,None,'spinner')), False)
check('commit-clears-only-current-pending scenario 5', solve('commit-clears-only-current-pending', ('x','x',False,3,2,True,None,'spinner')), False)
check('commit-clears-only-current-pending scenario 6', solve('commit-clears-only-current-pending', ('','old',False,3,3,True,'','spinner')), False)
check('deferred-value-commit scenario 1', solve('deferred-value-commit', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), 'old')
check('deferred-value-commit scenario 2', solve('deferred-value-commit', ('','',False,1,1,False,'old','wait')), '')
check('deferred-value-commit scenario 3', solve('deferred-value-commit', ('new','old',True,2,2,True,'screen','spinner')), 'old')
check('deferred-value-commit scenario 4', solve('deferred-value-commit', ('new','old',True,2,2,False,None,'spinner')), 'new')
check('deferred-value-commit scenario 5', solve('deferred-value-commit', ('x','x',False,3,2,True,None,'spinner')), 'x')
check('deferred-value-commit scenario 6', solve('deferred-value-commit', ('','old',False,3,3,True,'','spinner')), 'old')
check('fallback-first-render scenario 1', solve('fallback-first-render', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), False)
check('fallback-first-render scenario 2', solve('fallback-first-render', ('','',False,1,1,False,'old','wait')), False)
check('fallback-first-render scenario 3', solve('fallback-first-render', ('new','old',True,2,2,True,'screen','spinner')), False)
check('fallback-first-render scenario 4', solve('fallback-first-render', ('new','old',True,2,2,False,None,'spinner')), False)
check('fallback-first-render scenario 5', solve('fallback-first-render', ('x','x',False,3,2,True,None,'spinner')), True)
check('fallback-first-render scenario 6', solve('fallback-first-render', ('','old',False,3,3,True,'','spinner')), False)
check('transition-target-identity scenario 1', solve('transition-target-identity', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), (2,'q'+str(N)))
check('transition-target-identity scenario 2', solve('transition-target-identity', ('','',False,1,1,False,'old','wait')), (1,''))
check('transition-target-identity scenario 3', solve('transition-target-identity', ('new','old',True,2,2,True,'screen','spinner')), (2,'new'))
check('transition-target-identity scenario 4', solve('transition-target-identity', ('new','old',True,2,2,False,None,'spinner')), (2,'new'))
check('transition-target-identity scenario 5', solve('transition-target-identity', ('x','x',False,3,2,True,None,'spinner')), (3,'x'))
check('transition-target-identity scenario 6', solve('transition-target-identity', ('','old',False,3,3,True,'','spinner')), (3,''))
check('previous-empty-screen scenario 1', solve('previous-empty-screen', ('q'+str(N),'old',True,2,1,False,'screen','spinner')), True)
check('previous-empty-screen scenario 2', solve('previous-empty-screen', ('','',False,1,1,False,'old','wait')), True)
check('previous-empty-screen scenario 3', solve('previous-empty-screen', ('new','old',True,2,2,True,'screen','spinner')), True)
check('previous-empty-screen scenario 4', solve('previous-empty-screen', ('new','old',True,2,2,False,None,'spinner')), False)
check('previous-empty-screen scenario 5', solve('previous-empty-screen', ('x','x',False,3,2,True,None,'spinner')), False)
check('previous-empty-screen scenario 6', solve('previous-empty-screen', ('','old',False,3,3,True,'','spinner')), True)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
urgent-value-echo scenario 1q1q1Passed
urgent-value-echo scenario 2Passed
urgent-value-echo scenario 3newnewPassed
urgent-value-echo scenario 4newnewPassed
urgent-value-echo scenario 5xxPassed
urgent-value-echo scenario 6Passed
deferred-content-during-pending scenario 1oldoldPassed
deferred-content-during-pending scenario 2Passed
deferred-content-during-pending scenario 3oldoldPassed
deferred-content-during-pending scenario 4oldoldPassed
deferred-content-during-pending scenario 5xxPassed
deferred-content-during-pending scenario 6Passed
stale-transition-result scenario 1FalseFalsePassed
stale-transition-result scenario 2TrueTruePassed
stale-transition-result scenario 3TrueTruePassed
stale-transition-result scenario 4TrueTruePassed
stale-transition-result scenario 5FalseFalsePassed
stale-transition-result scenario 6TrueTruePassed
suspension-preserves-prior-screen scenario 1q1q1Passed
suspension-preserves-prior-screen scenario 2Passed
suspension-preserves-prior-screen scenario 3screenscreenPassed
suspension-preserves-prior-screen scenario 4newnewPassed
suspension-preserves-prior-screen scenario 5spinnerspinnerPassed
suspension-preserves-prior-screen scenario 6Passed
pending-indicator-not-equality scenario 1TrueTruePassed
pending-indicator-not-equality scenario 2FalseFalsePassed
pending-indicator-not-equality scenario 3TrueTruePassed
pending-indicator-not-equality scenario 4TrueTruePassed
pending-indicator-not-equality scenario 5FalseFalsePassed
pending-indicator-not-equality scenario 6FalseFalsePassed
commit-clears-only-current-pending scenario 1TrueTruePassed
commit-clears-only-current-pending scenario 2FalseFalsePassed
commit-clears-only-current-pending scenario 3FalseFalsePassed
commit-clears-only-current-pending scenario 4FalseFalsePassed
commit-clears-only-current-pending scenario 5FalseFalsePassed
commit-clears-only-current-pending scenario 6FalseFalsePassed
deferred-value-commit scenario 1oldoldPassed
deferred-value-commit scenario 2Passed
deferred-value-commit scenario 3oldoldPassed
deferred-value-commit scenario 4newnewPassed
deferred-value-commit scenario 5xxPassed
deferred-value-commit scenario 6oldoldPassed
fallback-first-render scenario 1FalseFalsePassed
fallback-first-render scenario 2FalseFalsePassed
fallback-first-render scenario 3FalseFalsePassed
fallback-first-render scenario 4FalseFalsePassed
fallback-first-render scenario 5TrueTruePassed
fallback-first-render scenario 6FalseFalsePassed
transition-target-identity scenario 1[2, 'q1'][2, 'q1']Passed
transition-target-identity scenario 2[1, ''][1, '']Passed
transition-target-identity scenario 3[2, 'new'][2, 'new']Passed
transition-target-identity scenario 4[2, 'new'][2, 'new']Passed
transition-target-identity scenario 5[3, 'x'][3, 'x']Passed
transition-target-identity scenario 6[3, ''][3, '']Passed
previous-empty-screen scenario 1TrueTruePassed
previous-empty-screen scenario 2TrueTruePassed
previous-empty-screen scenario 3TrueTruePassed
previous-empty-screen scenario 4FalseFalsePassed
previous-empty-screen scenario 5FalseFalsePassed
previous-empty-screen scenario 6TrueTruePassed

SHA-256 / 437c41959e774c2ae83d2c1f571c8bb2c244e1c238f780871a0c8c8174e4262c

Verification & scope

Only the explicitly specified operations and finite deterministic records are modeled; no browser or framework conformance is claimed. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.

Observations recorded using Python 3.12.14 at 2026-09-29T14:40:53.105618+00:00.

Case digest / 70fdd9e1940b254cad1428abbcae686126eaba6aa8b24462b2002384b0f15081