FA-24736 / Client state / Open access
External-store selectors rerun for unrelated changed paths · case 01
External-store selectors rerun for unrelated changed paths.
ROOT CAUSE
The faulty implementation violates A selector invalidates only when a changed dot-separated path equals, contains, or is contained by one of its declared dependency paths at a segment boundary.
VERIFIED REPAIR
A selector invalidates only when a changed dot-separated path equals, contains, or is contained by one of its declared dependency paths at a segment boundary.
Unsuccessful approach: The partial repair still violates at least one explicit regression oracle.
Case contract
A selector invalidates only when a changed dot-separated path equals, contains, or is contained by one of its declared dependency paths at a segment boundary.
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(dependencies, changed):
return bool(changed)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('ancestor changed', solve(['user.name'],['user']), True)
check('descendant changed', solve(['user'],['user.name']), True)
check('segment boundary', solve(['user'],['username']), False)
check('unrelated', solve(['user.name'],['count']), False)
check('empty change', solve(['a'],[]), False)
check('parameterized descendant', solve(['a'],['a.'+'.'.join(['x']*N)]), 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| ancestor changed | True | True | Passed |
| descendant changed | True | True | Passed |
| segment boundary | True | False | Failed |
| unrelated | True | False | Failed |
| empty change | False | False | Passed |
| parameterized descendant | True | True | Passed |
SHA-256 / ef2ae09deeef65bc1303fba218b8c9d462f35418b6c2541cfa591b964f03a9fc
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(dependencies, changed):
return any(d==c for d in dependencies for c in changed)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('ancestor changed', solve(['user.name'],['user']), True)
check('descendant changed', solve(['user'],['user.name']), True)
check('segment boundary', solve(['user'],['username']), False)
check('unrelated', solve(['user.name'],['count']), False)
check('empty change', solve(['a'],[]), False)
check('parameterized descendant', solve(['a'],['a.'+'.'.join(['x']*N)]), 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| ancestor changed | False | True | Failed |
| descendant changed | False | True | Failed |
| segment boundary | False | False | Passed |
| unrelated | False | False | Passed |
| empty change | False | False | Passed |
| parameterized descendant | False | True | Failed |
SHA-256 / 9367a00131be37ae64721a96d051f547953054bc414d4bfe5acd39b60b19de8b
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(dependencies, changed):
return any(d==c or d.startswith(c+'.') or c.startswith(d+'.') for d in dependencies for c in changed)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('ancestor changed', solve(['user.name'],['user']), True)
check('descendant changed', solve(['user'],['user.name']), True)
check('segment boundary', solve(['user'],['username']), False)
check('unrelated', solve(['user.name'],['count']), False)
check('empty change', solve(['a'],[]), False)
check('parameterized descendant', solve(['a'],['a.'+'.'.join(['x']*N)]), 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| ancestor changed | True | True | Passed |
| descendant changed | True | True | Passed |
| segment boundary | False | False | Passed |
| unrelated | False | False | Passed |
| empty change | False | False | Passed |
| parameterized descendant | True | True | Passed |
SHA-256 / 7f66712147a39ba49128a5c4b9019974833acc1ca24e21a1cfdb14a9e79acb38
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.245730+00:00.
Case digest / 5127994db14998bb234e73974d45ee7ff848f3d9de9f93311395ffc499fa27cf