FA-10266 / Observability / Open access
Metric series identity: Dropped high-cardinality labels remain in identity · case 01
Dropped high-cardinality labels remain in identity.
ROOT CAUSE
The implementation substitutes if True for if k not in dropped, so dropped high-cardinality labels remain in identity.
VERIFIED REPAIR
Filter by label key, not value.
Unsuccessful approach: The attempted repair substitutes if v not in dropped. Fixture 3 still yields ('requests', (('a', '2'), ('z', '1')), 'count', 'counter') instead of ('requests', (('a', '2'),), 'count', 'counter').
Case contract
A series identity includes metric name, sorted label key-value pairs excluding configured dropped keys, measurement unit, and instrument kind. Dropping values never drops other equal-valued labels.
Why this case matters
An offline model of metric series identity, suitable for testing build and release tooling without external services.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(name, labels, dropped, unit, kind):
return (name, tuple(sorted((k,v) for k,v in labels.items() if True)), unit, kind)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve('requests', {'z': '1', 'a': '2'}, [], 'count', 'counter'), ('requests', (('a', '2'), ('z', '1')), 'count', 'counter'))
check('fixture 2', solve('requests', {'a': '2', 'z': '1'}, [], 'count', 'counter'), ('requests', (('a', '2'), ('z', '1')), 'count', 'counter'))
check('fixture 3', solve('requests', {'a': '2', 'z': '1'}, ['z'], 'count', 'counter'), ('requests', (('a', '2'),), 'count', 'counter'))
check('fixture 4', solve('requests', {'a': 'same', 'b': 'same'}, ['a'], 'count', 'counter'), ('requests', (('b', 'same'),), 'count', 'counter'))
check('fixture 5', solve('latency', {}, [], 'seconds', 'histogram'), ('latency', (), 'seconds', 'histogram'))
check('fixture 6', solve('latency', {}, [], 'milliseconds', 'gauge'), ('latency', (), 'milliseconds', 'gauge'))
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 |
|---|---|---|---|
| fixture 1 | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | Passed |
| fixture 2 | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | Passed |
| fixture 3 | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | ['requests', [['a', '2']], 'count', 'counter'] | Failed |
| fixture 4 | ['requests', [['a', 'same'], ['b', 'same']], 'count', 'counter'] | ['requests', [['b', 'same']], 'count', 'counter'] | Failed |
| fixture 5 | ['latency', [], 'seconds', 'histogram'] | ['latency', [], 'seconds', 'histogram'] | Passed |
| fixture 6 | ['latency', [], 'milliseconds', 'gauge'] | ['latency', [], 'milliseconds', 'gauge'] | Passed |
SHA-256 / dafc64376c35a4448cdb8cd8e558d14800602f8159f9872b33fca72c9a976329
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(name, labels, dropped, unit, kind):
return (name, tuple(sorted((k,v) for k,v in labels.items() if v not in dropped)), unit, kind)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve('requests', {'z': '1', 'a': '2'}, [], 'count', 'counter'), ('requests', (('a', '2'), ('z', '1')), 'count', 'counter'))
check('fixture 2', solve('requests', {'a': '2', 'z': '1'}, [], 'count', 'counter'), ('requests', (('a', '2'), ('z', '1')), 'count', 'counter'))
check('fixture 3', solve('requests', {'a': '2', 'z': '1'}, ['z'], 'count', 'counter'), ('requests', (('a', '2'),), 'count', 'counter'))
check('fixture 4', solve('requests', {'a': 'same', 'b': 'same'}, ['a'], 'count', 'counter'), ('requests', (('b', 'same'),), 'count', 'counter'))
check('fixture 5', solve('latency', {}, [], 'seconds', 'histogram'), ('latency', (), 'seconds', 'histogram'))
check('fixture 6', solve('latency', {}, [], 'milliseconds', 'gauge'), ('latency', (), 'milliseconds', 'gauge'))
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 |
|---|---|---|---|
| fixture 1 | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | Passed |
| fixture 2 | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | Passed |
| fixture 3 | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | ['requests', [['a', '2']], 'count', 'counter'] | Failed |
| fixture 4 | ['requests', [['a', 'same'], ['b', 'same']], 'count', 'counter'] | ['requests', [['b', 'same']], 'count', 'counter'] | Failed |
| fixture 5 | ['latency', [], 'seconds', 'histogram'] | ['latency', [], 'seconds', 'histogram'] | Passed |
| fixture 6 | ['latency', [], 'milliseconds', 'gauge'] | ['latency', [], 'milliseconds', 'gauge'] | Passed |
SHA-256 / 76dee1420f50ab6947c58124dabca8b341fded5eff0ed273dd035699c6f30777
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(name, labels, dropped, unit, kind):
return (name, tuple(sorted((k,v) for k,v in labels.items() if k not in dropped)), unit, kind)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve('requests', {'z': '1', 'a': '2'}, [], 'count', 'counter'), ('requests', (('a', '2'), ('z', '1')), 'count', 'counter'))
check('fixture 2', solve('requests', {'a': '2', 'z': '1'}, [], 'count', 'counter'), ('requests', (('a', '2'), ('z', '1')), 'count', 'counter'))
check('fixture 3', solve('requests', {'a': '2', 'z': '1'}, ['z'], 'count', 'counter'), ('requests', (('a', '2'),), 'count', 'counter'))
check('fixture 4', solve('requests', {'a': 'same', 'b': 'same'}, ['a'], 'count', 'counter'), ('requests', (('b', 'same'),), 'count', 'counter'))
check('fixture 5', solve('latency', {}, [], 'seconds', 'histogram'), ('latency', (), 'seconds', 'histogram'))
check('fixture 6', solve('latency', {}, [], 'milliseconds', 'gauge'), ('latency', (), 'milliseconds', 'gauge'))
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 |
|---|---|---|---|
| fixture 1 | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | Passed |
| fixture 2 | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | ['requests', [['a', '2'], ['z', '1']], 'count', 'counter'] | Passed |
| fixture 3 | ['requests', [['a', '2']], 'count', 'counter'] | ['requests', [['a', '2']], 'count', 'counter'] | Passed |
| fixture 4 | ['requests', [['b', 'same']], 'count', 'counter'] | ['requests', [['b', 'same']], 'count', 'counter'] | Passed |
| fixture 5 | ['latency', [], 'seconds', 'histogram'] | ['latency', [], 'seconds', 'histogram'] | Passed |
| fixture 6 | ['latency', [], 'milliseconds', 'gauge'] | ['latency', [], 'milliseconds', 'gauge'] | Passed |
SHA-256 / 9e2ad6d4ea502456262bee663f6abc3f165cc50c3dc77f1f1d028f1f461a694b
Verification & scope
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:38:37.410085+00:00.
Case digest / ed6132e1bebc90c5ddd37aff88107fe7909d9988730549da8fd4dd091ad4c766