Summary
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
Root cause
benchmarks/public_baseline.py:34:
SOURCE_PATHS = (
"Cargo.toml",
"benchmarks/suite/*.ts",
...
)
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 |
benchmarks/suite/*.ts |
1 |
e3bd92bf6 fix(bench): reject zero-time benchmark false greens (#9405) |
benchmarks/polyglot/bench.* |
1 |
e3bd92bf6 (same commit) |
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.
Summary
lintis red on untouched main, and it is red for a reason that cannot be cleared:Cargo.tomlis 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:Root cause
benchmarks/public_baseline.py:34:validate_publiccomparesfreshness.source_fingerprintrecorded inbenchmarks/results/public-node-bun-v1.jsonagainsttracked_fingerprint(SOURCE_PATHS).That artifact was generated 2026-09-01. Since then, of the tracked inputs:
Cargo.toml1a4fa6507 chore: release merge train 238 as v0.5.1617benchmarks/suite/*.tse3bd92bf6 fix(bench): reject zero-time benchmark false greens (#9405)benchmarks/polyglot/bench.*e3bd92bf6(same commit)The workspace version lives in
Cargo.toml, so every release commit changes the fingerprint. Regenerating costs a ~2-hour quiet-host run (policy.quiet_hostplus 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
lintis 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 triplelint, e2e-scoped, pr-gateand 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.jsonliterally records the string under a key namedpublic_freshness_base, and there are*fingerprint*/*public-freshness*artifacts in at least four benchmark trees.Suggested fix
Cargo.tomlis inSOURCE_PATHSto catch dependency/profile changes that could alter what is measured — but the version field cannot. Options, cheapest first:Cargo.tomlwith theversionfield normalised out (or hash only[profile.*],[workspace.dependencies]and feature tables). Keeps the real signal, drops the one field that changes every release.Cargo.tomlfromSOURCE_PATHSand rely onHARNESS_PATHS+ the recorded toolchain versions.(1) matches the precedent already in the file: #7282 narrowed
HARNESS_PATHSfor 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-scopedredThat one is
perry-codegen --test manifest_consistency: "Add the missing rows tocrates/perry-api-manifest/src/entries.rs". Another lane already characterised it as base drift withapi_manifest_source_identical: trueand anapi_docs_driftnote ("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.