You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ci: the lint gate cannot pass — Cargo.toml is a tracked public-benchmark input, so every merge train invalidates it (red on main; merged PRs are red too) #10799
lint is red on untouched main, and it is red for a reason that cannot be cleared: Cargo.toml is a tracked input of the public benchmark baseline, and every merge train's release commit bumps the version in it.
Verified on a clean checkout of main 1a4fa6507 (v0.5.1617), no local modifications:
$ python3 benchmarks/ci_public_baseline_check.py
public baseline error: public artifact benchmark inputs changed; regenerate it with ./benchmarks/run_public_baseline.sh
$ echo $?
2
validate_public compares freshness.source_fingerprint recorded in benchmarks/results/public-node-bun-v1.json against tracked_fingerprint(SOURCE_PATHS).
That artifact was generated 2026-09-01. Since then, of the tracked inputs:
tracked path
commits since artifact
newest
Cargo.toml
122
1a4fa6507 chore: release merge train 238 as v0.5.1617
The workspace version lives in Cargo.toml, so every release commit changes the fingerprint. Regenerating costs a ~2-hour quiet-host run (policy.quiet_host plus pinned per-runtime versions), and the very next merge train invalidates it again. There is no state in which this gate is green for more than one train.
Why this matters more than one red check
lint is red on every open PR, and — the part that makes it corrosive — it is equally red on PRs that merged. #10789, #10785 and #10781 all show the same triple lint, e2e-scoped, pr-gate and all three are in main. The train merges straight through.
So three checks are permanently red, carry no signal, and train everyone to ignore them as a block. Anything they would legitimately catch is now invisible. (I lost time myself concluding a PR was blocked by this before checking whether merged PRs showed the same failures — they do.)
Several lanes have already hit it and worked around it in their own evidence rather than fixing it: benchmarks/native_property_get/evidence/base-gate-comparison.json literally records the string under a key named public_freshness_base, and there are *fingerprint* / *public-freshness* artifacts in at least four benchmark trees.
Suggested fix
Cargo.toml is in SOURCE_PATHS to catch dependency/profile changes that could alter what is measured — but the version field cannot. Options, cheapest first:
Fingerprint Cargo.toml with the version field normalised out (or hash only [profile.*], [workspace.dependencies] and feature tables). Keeps the real signal, drops the one field that changes every release.
Move the version bump out of the fingerprinted file.
Drop Cargo.toml from SOURCE_PATHS and rely on HARNESS_PATHS + the recorded toolchain versions.
(1) matches the precedent already in the file: #7282 narrowed HARNESS_PATHS for exactly this reason — "the large shell/Python drivers are plumbing … must not demand a two-hour rerun" — and added an explicit digest migration so the bookkeeping change did not itself force a regeneration. The same migration mechanism (_SOURCE_FINGERPRINT_MIGRATION) can carry this one.
Separately: the e2e-scoped red
That one is perry-codegen --test manifest_consistency: "Add the missing rows to crates/perry-api-manifest/src/entries.rs". Another lane already characterised it as base drift with api_manifest_source_identical: true and an api_docs_drift note ("generated docs add bun-pty from unchanged manifest"). Filing here only as a pointer — it wants its own issue if it is not already tracked.
Fixed on main. lint passes: train 258's CI on the tree that became main e27f0a068a was 22 jobs green, zero failures, including the public-baseline freshness step — the first fully green train run since this issue was filed.
Two things resolved it, and one correction to the root cause stated here:
The stated cause is not quite right.Cargo.toml is in SOURCE_PATHS, but it was never hashed whole: _cargo_profile_tables (#7282) reduced it to its [profile.*] tables before hashing, so a release bump did not invalidate the artifact. Trains were not the cause. The real divergence was e3bd92bf65 (2026-09-01), which edited benchmarks/suite/*.ts and polyglot/bench.* — genuine benchmark-source changes that left the committed artifact three weeks stale.
What actually fixed it:
fix(benchmarks): hash Cargo inputs except workspace release version #10977 replaced the profile-only extraction with whole-manifest hashing that normalises the [workspace.package].version value, so a release bump is explicitly exempt while dependency, feature, member and edition changes correctly invalidate.
The artifact was regenerated (2f854511e9) at b77aba6343, in one uninterrupted run on a quiet host with the pinned toolchain (node v22.23.1, bun 1.3.14), 50 workloads and 1,443 samples. It had to wait for turnloop: replace tokio as Perry's event loop (P0–P8) #10354, which edits the root Cargo.toml — inside the fingerprint under the new scheme — so any earlier regeneration would have been stale on arrival.
Verified before landing: the artifact's recorded fingerprints equal what main computes (source 9c87723d…, harness 513dba8f…).
Activity
proggeramlug commentedon Sep 23, 2026
Fixed on main.
lintpasses: train 258's CI on the tree that became maine27f0a068awas 22 jobs green, zero failures, including the public-baseline freshness step — the first fully green train run since this issue was filed.Two things resolved it, and one correction to the root cause stated here:
The stated cause is not quite right.
Cargo.tomlis inSOURCE_PATHS, but it was never hashed whole:_cargo_profile_tables(#7282) reduced it to its[profile.*]tables before hashing, so a release bump did not invalidate the artifact. Trains were not the cause. The real divergence wase3bd92bf65(2026-09-01), which editedbenchmarks/suite/*.tsandpolyglot/bench.*— genuine benchmark-source changes that left the committed artifact three weeks stale.What actually fixed it:
[workspace.package].versionvalue, so a release bump is explicitly exempt while dependency, feature, member and edition changes correctly invalidate.2f854511e9) atb77aba6343, in one uninterrupted run on a quiet host with the pinned toolchain (node v22.23.1, bun 1.3.14), 50 workloads and 1,443 samples. It had to wait for turnloop: replace tokio as Perry's event loop (P0–P8) #10354, which edits the rootCargo.toml— inside the fingerprint under the new scheme — so any earlier regeneration would have been stale on arrival.Verified before landing: the artifact's recorded fingerprints equal what main computes (source
9c87723d…, harness513dba8f…).