FAILURE MAP
← Case archive

FA-24736 / Client state / Open access

External-store selectors rerun for unrelated changed paths · case 01

External-store selectors rerun for unrelated changed paths.

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

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 fixtureActualExpectedOutcome
ancestor changedTrueTruePassed
descendant changedTrueTruePassed
segment boundaryTrueFalseFailed
unrelatedTrueFalseFailed
empty changeFalseFalsePassed
parameterized descendantTrueTruePassed

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 fixtureActualExpectedOutcome
ancestor changedFalseTrueFailed
descendant changedFalseTrueFailed
segment boundaryFalseFalsePassed
unrelatedFalseFalsePassed
empty changeFalseFalsePassed
parameterized descendantFalseTrueFailed

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 fixtureActualExpectedOutcome
ancestor changedTrueTruePassed
descendant changedTrueTruePassed
segment boundaryFalseFalsePassed
unrelatedFalseFalsePassed
empty changeFalseFalsePassed
parameterized descendantTrueTruePassed

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