FAILURE MAP
← Case archive

FA-24831 / Client state / Open access

A resource observer receives fields that belong to another observer selector · case 01

A resource observer receives fields that belong to another observer selector.

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

ROOT CAUSE

The faulty implementation violates Each cache observer receives only its declared existing fields and is notified only when that projection differs from its own previous snapshot; missing fields differ from explicit null.

VERIFIED REPAIR

Each cache observer receives only its declared existing fields and is notified only when that projection differs from its own previous snapshot; missing fields differ from explicit null.

Unsuccessful approach: The partial repair still violates at least one explicit regression oracle.

Case contract

Each cache observer receives only its declared existing fields and is notified only when that projection differs from its own previous snapshot; missing fields differ from explicit null.

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(resource, observers, previous):
    return [(name,dict(resource)) for name,fields in observers]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('selectors differ', solve({'a':N,'b':2},[('one',['a']),('two',['b'])],{}), [('one',{'a':N}),('two',{'b':2})])
check('unchanged observer suppressed', solve({'a':1},[('one',['a'])],{'one':{'a':1}}), [])
check('empty projection changed', solve({'a':1},[('one',['missing'])],{}), [('one',{})])
check('empty projection stable', solve({},[('one',[])],{'one':{}}), [])
check('missing vs null', solve({'a':None},[('one',['a'])],{'one':{}}), [('one',{'a':None})])
check('no observers', solve({'a':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 fixtureActualExpectedOutcome
selectors differ[['one', {'a': 1, 'b': 2}], ['two', {'a': 1, 'b': 2}]][['one', {'a': 1}], ['two', {'b': 2}]]Failed
unchanged observer suppressed[['one', {'a': 1}]][]Failed
empty projection changed[['one', {'a': 1}]][['one', {}]]Failed
empty projection stable[['one', {}]][]Failed
missing vs null[['one', {'a': None}]][['one', {'a': None}]]Passed
no observers[][]Passed

SHA-256 / ea7c7a1e8da3b57e5c9a760b2ee9eea616e07c3b9031bd917a38183c7392418b

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(resource, observers, previous):
    return [(name,{k:resource[k] for k in fields if k in resource}) for name,fields in observers]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('selectors differ', solve({'a':N,'b':2},[('one',['a']),('two',['b'])],{}), [('one',{'a':N}),('two',{'b':2})])
check('unchanged observer suppressed', solve({'a':1},[('one',['a'])],{'one':{'a':1}}), [])
check('empty projection changed', solve({'a':1},[('one',['missing'])],{}), [('one',{})])
check('empty projection stable', solve({},[('one',[])],{'one':{}}), [])
check('missing vs null', solve({'a':None},[('one',['a'])],{'one':{}}), [('one',{'a':None})])
check('no observers', solve({'a':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 fixtureActualExpectedOutcome
selectors differ[['one', {'a': 1}], ['two', {'b': 2}]][['one', {'a': 1}], ['two', {'b': 2}]]Passed
unchanged observer suppressed[['one', {'a': 1}]][]Failed
empty projection changed[['one', {}]][['one', {}]]Passed
empty projection stable[['one', {}]][]Failed
missing vs null[['one', {'a': None}]][['one', {'a': None}]]Passed
no observers[][]Passed

SHA-256 / d0f0e846369dc1010296ceff9f13177618fd30daac90dabb84fb2323ea49334f

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(resource, observers, previous):
    return [(name,{k:resource[k] for k in fields if k in resource}) for name,fields in observers if {k:resource[k] for k in fields if k in resource}!=previous.get(name)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('selectors differ', solve({'a':N,'b':2},[('one',['a']),('two',['b'])],{}), [('one',{'a':N}),('two',{'b':2})])
check('unchanged observer suppressed', solve({'a':1},[('one',['a'])],{'one':{'a':1}}), [])
check('empty projection changed', solve({'a':1},[('one',['missing'])],{}), [('one',{})])
check('empty projection stable', solve({},[('one',[])],{'one':{}}), [])
check('missing vs null', solve({'a':None},[('one',['a'])],{'one':{}}), [('one',{'a':None})])
check('no observers', solve({'a':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 fixtureActualExpectedOutcome
selectors differ[['one', {'a': 1}], ['two', {'b': 2}]][['one', {'a': 1}], ['two', {'b': 2}]]Passed
unchanged observer suppressed[][]Passed
empty projection changed[['one', {}]][['one', {}]]Passed
empty projection stable[][]Passed
missing vs null[['one', {'a': None}]][['one', {'a': None}]]Passed
no observers[][]Passed

SHA-256 / b4bd43db61659c07cca6e936650306e9d1327d6453778faded4a509a48e98a77

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:01.209249+00:00.

Case digest / b55b9077cf46909841a729c8083c3f2d94132e76a279f73a602c6e579de5b7a2