FA-24806 / Client state / Open access
A new navigation inherits transient route-state notices from the previous entry · case 01
A new navigation inherits transient route-state notices from the previous entry.
ROOT CAUSE
The faulty implementation violates The stipulated navigation state policy preserves all entry-local state on pop, but push/replace carry forward only declared persistent keys including null/falsy values.
VERIFIED REPAIR
The stipulated navigation state policy preserves all entry-local state on pop, but push/replace carry forward only declared persistent keys including null/falsy values.
Unsuccessful approach: The partial repair still violates at least one explicit regression oracle.
Case contract
The stipulated navigation state policy preserves all entry-local state on pop, but push/replace carry forward only declared persistent keys including null/falsy values.
Why this case matters
A bounded offline client-state transition with explicit lifecycle inputs.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(state, persistent, event):
return dict(state)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('push drops transient', solve({'notice':'saved','context':N},['context'],'push'), {'context':N})
check('pop restores transient', solve({'notice':'saved','context':N},['context'],'pop'), {'notice':'saved','context':N})
check('replace cleans', solve({'notice':''},[],'replace'), {})
check('persistent null', solve({'context':None},['context'],'push'), {'context':None})
check('unknown persistent key', solve({'notice':'x'},['missing'],'push'), {})
check('empty state', solve({},['context'],'pop'), {})
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| push drops transient | {'context': 1, 'notice': 'saved'} | {'context': 1} | Failed |
| pop restores transient | {'context': 1, 'notice': 'saved'} | {'context': 1, 'notice': 'saved'} | Passed |
| replace cleans | {'notice': ''} | {} | Failed |
| persistent null | {'context': None} | {'context': None} | Passed |
| unknown persistent key | {'notice': 'x'} | {} | Failed |
| empty state | {} | {} | Passed |
SHA-256 / f717cba89af5318379f924c53e9ac84a79ca0a3126a0d01da35e0da0fa4f12b7
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(state, persistent, event):
return {k:v for k,v in state.items() if k in persistent}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('push drops transient', solve({'notice':'saved','context':N},['context'],'push'), {'context':N})
check('pop restores transient', solve({'notice':'saved','context':N},['context'],'pop'), {'notice':'saved','context':N})
check('replace cleans', solve({'notice':''},[],'replace'), {})
check('persistent null', solve({'context':None},['context'],'push'), {'context':None})
check('unknown persistent key', solve({'notice':'x'},['missing'],'push'), {})
check('empty state', solve({},['context'],'pop'), {})
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| push drops transient | {'context': 1} | {'context': 1} | Passed |
| pop restores transient | {'context': 1} | {'context': 1, 'notice': 'saved'} | Failed |
| replace cleans | {} | {} | Passed |
| persistent null | {'context': None} | {'context': None} | Passed |
| unknown persistent key | {} | {} | Passed |
| empty state | {} | {} | Passed |
SHA-256 / 7e0e2caa2f9c832503bebac04723aee3e7881af3d7004ff232ec84c40bd5ea3e
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(state, persistent, event):
return dict(state) if event=='pop' else {k:v for k,v in state.items() if k in persistent}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('push drops transient', solve({'notice':'saved','context':N},['context'],'push'), {'context':N})
check('pop restores transient', solve({'notice':'saved','context':N},['context'],'pop'), {'notice':'saved','context':N})
check('replace cleans', solve({'notice':''},[],'replace'), {})
check('persistent null', solve({'context':None},['context'],'push'), {'context':None})
check('unknown persistent key', solve({'notice':'x'},['missing'],'push'), {})
check('empty state', solve({},['context'],'pop'), {})
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| push drops transient | {'context': 1} | {'context': 1} | Passed |
| pop restores transient | {'context': 1, 'notice': 'saved'} | {'context': 1, 'notice': 'saved'} | Passed |
| replace cleans | {} | {} | Passed |
| persistent null | {'context': None} | {'context': None} | Passed |
| unknown persistent key | {} | {} | Passed |
| empty state | {} | {} | Passed |
SHA-256 / b9498b43845e3ef47263651c1439247a9bc6a73deae159591cd3c27b97b76989
Verification & scope
This models the stated application policy only; 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:41:00.906666+00:00.
Case digest / 20078ac2832de269439999adefae2b6b71f71161b87cb70a080eb7bf002235c1