Skip to content

Commit daaf4e0

Browse files
committed
fix(verify): stop comparing PassMark's two scales
`passmark_multi_ge_single` asserted cpu_mark >= passmark_single, but CPU Mark and Single Thread Rating are separately normalised PassMark scales — their magnitudes are not comparable, so the check read a scale difference as a defect. Of 866 CPU records holding both figures, 123 fail. All 51 single-core parts fail, and failure tracks absolute weakness rather than parallelism: failing CPU Mark median 641 against 19,657 for passing, with near-ties at the boundary (Core 2 Duo E8600, 1378 vs 1388). The check only ever held because modern CPU Marks are large. Cinebench and Geekbench keep their multi >= single checks: those report both figures on one scale, so a violation there is a real defect. Refs #1
1 parent 5a2ceec commit daaf4e0

2 files changed

Lines changed: 23 additions & 2 deletions

File tree

app/verify/signals.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,15 @@ def cpu_signals(rec: dict[str, Any], now_year: int) -> list[Signal]:
110110
_cmp_ge("threads_ge_cores", rec.get("threads"), rec.get("cores"), hard=True),
111111
_cmp_ge("boost_ge_base", rec.get("boost_clock_ghz"), rec.get("base_clock_ghz"), hard=True),
112112
_cmp_ge("max_tdp_ge_tdp", rec.get("max_tdp_w"), rec.get("tdp_w"), hard=False),
113-
_cmp_ge("passmark_multi_ge_single", rec.get("passmark_cpu_mark"),
114-
rec.get("passmark_single"), hard=False),
113+
# No passmark_cpu_mark vs passmark_single check: PassMark's CPU Mark and
114+
# its Single Thread Rating are separately normalised scales, so their
115+
# magnitudes are not comparable. The old check read that as a defect —
116+
# it failed 51 of 51 single-core parts, and its failures tracked absolute
117+
# weakness rather than parallelism (failing median CPU Mark 641 vs 19,657
118+
# for passing), with near-ties at the boundary (Core 2 Duo E8600: 1378 vs
119+
# 1388). It only ever "held" because modern CPU Marks are large.
120+
# Cinebench and Geekbench below DO report both figures on one scale, so
121+
# multi >= single is a real expectation there.
115122
_cmp_ge("cb23_multi_ge_single", rec.get("cinebench_r23_multi"),
116123
rec.get("cinebench_r23_single"), hard=False),
117124
_cmp_ge("gb_multi_ge_single", rec.get("geekbench_multi"),

tests/verify/test_signals.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,3 +122,17 @@ def test_core_count_under_the_wrong_vendor_field_fails():
122122
def test_core_count_in_the_right_field_passes():
123123
rec = {"manufacturer": "amd", "stream_processors": 2048, "release_date": "2020-01-01"}
124124
assert _named(signals.gpu_signals(rec, NOW), "vendor_core_field").result == "pass"
125+
126+
127+
def test_passmark_figures_are_not_compared():
128+
"""CPU Mark and Single Thread Rating are separately normalised PassMark
129+
scales; a single-core part legitimately scores lower on the first."""
130+
rec = {"cores": 1, "threads": 1, "passmark_cpu_mark": 195, "passmark_single": 301}
131+
names = {s.name for s in signals.cpu_signals(rec, NOW)}
132+
assert "passmark_multi_ge_single" not in names
133+
134+
135+
def test_cinebench_multi_below_single_still_fails():
136+
"""One scale, so multi < single there really is a defect."""
137+
rec = {"cores": 8, "threads": 16, "cinebench_r23_multi": 900, "cinebench_r23_single": 1500}
138+
assert _named(signals.cpu_signals(rec, NOW), "cb23_multi_ge_single").result == "fail"

0 commit comments

Comments
 (0)