FAILURE MAP
← Case archive

FA-10266 / Observability / Open access

Metric series identity: Dropped high-cardinality labels remain in identity · case 01

Dropped high-cardinality labels remain in identity.

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

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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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