FA-24741 / Client state / Open access
A child loader is started before its parent route data is available · case 01
A child loader is started before its parent route data is available.
ROOT CAUSE
The faulty implementation violates A route loader starts only after its immediate parent data is resolved; settled loaders do not restart, and siblings preserve declaration order.
VERIFIED REPAIR
A route loader starts only after its immediate parent data is resolved; settled loaders do not restart, and siblings preserve declaration order.
Unsuccessful approach: The partial repair still violates at least one explicit regression oracle.
Case contract
A route loader starts only after its immediate parent data is resolved; settled loaders do not restart, and siblings preserve declaration order.
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(routes, resolved):
return [key for key,parent in routes if key not in resolved]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('root ready only', solve([('root',None),('child','root')],[]), ['root'])
check('child after parent', solve([('root',None),('child','root')],['root']), ['child'])
check('siblings', solve([('a','root'),('b','root')],['root']), ['a','b'])
check('all settled', solve([('a',None)],['a']), [])
check('missing parent', solve([('a','missing')],[]), [])
check('parameterized chain', solve([(str(i),None if i==0 else str(i-1)) for i in range(N+2)],[str(i) for i in range(N)]), [str(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 |
|---|---|---|---|
| root ready only | ['root', 'child'] | ['root'] | Failed |
| child after parent | ['child'] | ['child'] | Passed |
| siblings | ['a', 'b'] | ['a', 'b'] | Passed |
| all settled | [] | [] | Passed |
| missing parent | ['a'] | [] | Failed |
| parameterized chain | ['1', '2'] | ['1'] | Failed |
SHA-256 / 06ac6554abd65e6e13d31884777802dd3b75e4c7b19a2b9e0942e261f3a303e0
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(routes, resolved):
return [key for key,parent in routes if key not in resolved and parent is None]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('root ready only', solve([('root',None),('child','root')],[]), ['root'])
check('child after parent', solve([('root',None),('child','root')],['root']), ['child'])
check('siblings', solve([('a','root'),('b','root')],['root']), ['a','b'])
check('all settled', solve([('a',None)],['a']), [])
check('missing parent', solve([('a','missing')],[]), [])
check('parameterized chain', solve([(str(i),None if i==0 else str(i-1)) for i in range(N+2)],[str(i) for i in range(N)]), [str(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 |
|---|---|---|---|
| root ready only | ['root'] | ['root'] | Passed |
| child after parent | [] | ['child'] | Failed |
| siblings | [] | ['a', 'b'] | Failed |
| all settled | [] | [] | Passed |
| missing parent | [] | [] | Passed |
| parameterized chain | [] | ['1'] | Failed |
SHA-256 / c932356756ff99a8bc854bb95a515169223b8871c35ed2efee6207a6d0986d7f
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(routes, resolved):
return [key for key,parent in routes if key not in resolved and (parent is None or parent in resolved)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('root ready only', solve([('root',None),('child','root')],[]), ['root'])
check('child after parent', solve([('root',None),('child','root')],['root']), ['child'])
check('siblings', solve([('a','root'),('b','root')],['root']), ['a','b'])
check('all settled', solve([('a',None)],['a']), [])
check('missing parent', solve([('a','missing')],[]), [])
check('parameterized chain', solve([(str(i),None if i==0 else str(i-1)) for i in range(N+2)],[str(i) for i in range(N)]), [str(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 |
|---|---|---|---|
| root ready only | ['root'] | ['root'] | Passed |
| child after parent | ['child'] | ['child'] | Passed |
| siblings | ['a', 'b'] | ['a', 'b'] | Passed |
| all settled | [] | [] | Passed |
| missing parent | [] | [] | Passed |
| parameterized chain | ['1'] | ['1'] | Passed |
SHA-256 / cd2bceebff51ef53a128fef9bc45af9eb58556121f53894221579b51b364b593
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.332076+00:00.
Case digest / ed46b72f683d3eb7d4f876ec5b01f5dc33369a9c18e14df0c3f0752dec7abca6