FA-24801 / Client state / Open access
Navigating between routes retains resource tags from the abandoned route · case 01
Navigating between routes retains resource tags from the abandoned route.
ROOT CAUSE
The faulty implementation violates Route resource-tag adoption removes the leaving route binding, replaces the entering binding with stable deduplicated incoming tags, and preserves independently mounted route bindings.
VERIFIED REPAIR
Route resource-tag adoption removes the leaving route binding, replaces the entering binding with stable deduplicated incoming tags, and preserves independently mounted route bindings.
Unsuccessful approach: The partial repair still violates at least one explicit regression oracle.
Case contract
Route resource-tag adoption removes the leaving route binding, replaces the entering binding with stable deduplicated incoming tags, and preserves independently mounted route bindings.
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(bindings, leaving, entering, incoming_tags):
return {**bindings,entering:incoming_tags}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('remove outgoing retain side route', solve({'a':['x'],'side':['s']},'a','b',['y']), {'side':['s'],'b':['y']})
check('same route refresh', solve({'a':['old']},'a','a',['new']), {'a':['new']})
check('new route no outgoing', solve({},'a','b',[]), {'b':[]})
check('shared resource tag preserved other route', solve({'a':['x'],'side':['x']},'a','b',['x']), {'side':['x'],'b':['x']})
check('duplicate incoming tags', solve({},'a','b',['x','x','y']), {'b':['x','y']})
check('parameterized resource tags', solve({'old':['gone'],'side':['s']},'old','new',[str(i) for i in range(N)]), {'side':['s'],'new':[str(i) for i in range(N)]})
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 |
|---|---|---|---|
| remove outgoing retain side route | {'a': ['x'], 'b': ['y'], 'side': ['s']} | {'b': ['y'], 'side': ['s']} | Failed |
| same route refresh | {'a': ['new']} | {'a': ['new']} | Passed |
| new route no outgoing | {'b': []} | {'b': []} | Passed |
| shared resource tag preserved other route | {'a': ['x'], 'b': ['x'], 'side': ['x']} | {'b': ['x'], 'side': ['x']} | Failed |
| duplicate incoming tags | {'b': ['x', 'x', 'y']} | {'b': ['x', 'y']} | Failed |
| parameterized resource tags | {'new': ['0'], 'old': ['gone'], 'side': ['s']} | {'new': ['0'], 'side': ['s']} | Failed |
SHA-256 / 1b4bb0619ac8c33e29a6ab9f1ad637b09fe733b8a8eac3120ce895e1630470b2
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(bindings, leaving, entering, incoming_tags):
return {entering:list(dict.fromkeys(incoming_tags))}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('remove outgoing retain side route', solve({'a':['x'],'side':['s']},'a','b',['y']), {'side':['s'],'b':['y']})
check('same route refresh', solve({'a':['old']},'a','a',['new']), {'a':['new']})
check('new route no outgoing', solve({},'a','b',[]), {'b':[]})
check('shared resource tag preserved other route', solve({'a':['x'],'side':['x']},'a','b',['x']), {'side':['x'],'b':['x']})
check('duplicate incoming tags', solve({},'a','b',['x','x','y']), {'b':['x','y']})
check('parameterized resource tags', solve({'old':['gone'],'side':['s']},'old','new',[str(i) for i in range(N)]), {'side':['s'],'new':[str(i) for i in range(N)]})
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 |
|---|---|---|---|
| remove outgoing retain side route | {'b': ['y']} | {'b': ['y'], 'side': ['s']} | Failed |
| same route refresh | {'a': ['new']} | {'a': ['new']} | Passed |
| new route no outgoing | {'b': []} | {'b': []} | Passed |
| shared resource tag preserved other route | {'b': ['x']} | {'b': ['x'], 'side': ['x']} | Failed |
| duplicate incoming tags | {'b': ['x', 'y']} | {'b': ['x', 'y']} | Passed |
| parameterized resource tags | {'new': ['0']} | {'new': ['0'], 'side': ['s']} | Failed |
SHA-256 / 3d95f61ce22a24dc75fd3531e8bb2b31701716a97106507af6613dba5238af8e
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(bindings, leaving, entering, incoming_tags):
out={route:list(tags) for route,tags in bindings.items() if route!=leaving}
out[entering]=list(dict.fromkeys(incoming_tags))
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('remove outgoing retain side route', solve({'a':['x'],'side':['s']},'a','b',['y']), {'side':['s'],'b':['y']})
check('same route refresh', solve({'a':['old']},'a','a',['new']), {'a':['new']})
check('new route no outgoing', solve({},'a','b',[]), {'b':[]})
check('shared resource tag preserved other route', solve({'a':['x'],'side':['x']},'a','b',['x']), {'side':['x'],'b':['x']})
check('duplicate incoming tags', solve({},'a','b',['x','x','y']), {'b':['x','y']})
check('parameterized resource tags', solve({'old':['gone'],'side':['s']},'old','new',[str(i) for i in range(N)]), {'side':['s'],'new':[str(i) for i in range(N)]})
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 |
|---|---|---|---|
| remove outgoing retain side route | {'b': ['y'], 'side': ['s']} | {'b': ['y'], 'side': ['s']} | Passed |
| same route refresh | {'a': ['new']} | {'a': ['new']} | Passed |
| new route no outgoing | {'b': []} | {'b': []} | Passed |
| shared resource tag preserved other route | {'b': ['x'], 'side': ['x']} | {'b': ['x'], 'side': ['x']} | Passed |
| duplicate incoming tags | {'b': ['x', 'y']} | {'b': ['x', 'y']} | Passed |
| parameterized resource tags | {'new': ['0'], 'side': ['s']} | {'new': ['0'], 'side': ['s']} | Passed |
SHA-256 / b00905ab4811b84af74e5ff28b115bd2425b0a812ac56f557aa86a6a1ab1aad3
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.821219+00:00.
Case digest / 663a7912be5246ba49e878107a79c3ce422725a61ca420f41baf88a510a10f25