k4bench.regression.lineage¶
k4bench.regression.lineage ¶
How platforms relate to each other over a migration.
Two independent facts, deliberately kept apart: which platform a young one may seed its baseline from, and when a platform stops being expected to run. A predecessor is not necessarily retired — a future migration may keep both compilers running in parallel — so neither map may be inferred from the other.
Regression history is scoped to (detector, platform, sample) and stays that
way — a platform is an identity, not a label for "the current one". The cost is
a cold start: a new platform's first
:data:~k4bench.regression.engine.MIN_BASELINE_RUNS nights have no baseline to
be judged against.
A platform may therefore name a predecessor whose measurements it borrows as baseline points only, while it has too few of its own. One-way and one hop; the new platform keeps its own directory, metadata, provenance and history, and no verdict is ever issued for a borrowed point.
BaselineSeed
dataclass
¶
One series' inherited baseline points, and the platform they came from.
history has the columns :func:~k4bench.regression.engine.evaluate_series
walks (run_id, run_date, value, reliable) — the predecessor
platform's rows for the same series.
baseline_predecessor ¶
The platform platform may seed its baseline from, or None.
One hop: a predecessor's own predecessor is not reached, since a seed has
to be a series measured on comparable software. A chain in the map is
legal and expected — gcc17 → gcc16 → gcc14 resolves gcc17 to gcc16 and
stops, and the older entry stays for backfills of gcc16's own early nights.
Source code in k4bench/regression/lineage.py
platform_retired ¶
Whether platform had stopped being benchmarked by night.
Both dates are ISO YYYY-MM-DD, which compares correctly as text.