Repository navigation
test(perf): report a changed baseline as a state, not a regression - #15342
Conversation
✅ SSOT Configuration Compliance: Passing🎉 No new hardcoded values of either class — Known backlog in |
Scaled back — the file is at its size ceiling, and I hit it
The base file is exactly 600 lines. It is at the ceiling, so it cannot absorb a single added line — my explanatory comment added 23. Trimming did not rescue it: the comment came down to 8 lines and the file was still 613. Nor does collapsing the call, because the one-line form with What ships instead
So the re-baseline lands and the mechanism exists, but this call site does not yet pass Why not make roomThe file has 125 comment lines and 5 consecutive-blank pairs, so space could be reclaimed. I did not, for two reasons: they are other authors' comments, and whitespace churn in a perf PR makes the diff harder to review than the change it carries. Neither is a good trade for four lines. The finding underneathA 600-line file at a 600-line ceiling is a maintenance signal. The next person to add a benchmark, or a comment explaining one, hits exactly this wall — and the failure arrives as an unrelated-looking The full re-baseline argument stays in the PR description above; the code now points here rather than restating it. Verification |
9e6c515 to
0b98ed7
Compare
Thinking Path
Multimodal processor startupfails at ~1500 work units against a budget of 600. The benchmark is working correctly — but what it detected is a state change, and it is being rendered as a regression, which sends the reader hunting a slowdown that does not exist.The evidence:
VisionProcessor's CLIP load raisedTypeError(#15054) — the constructor exited early and never loaded the model. The file's own docstring says so6f9a698e51(#15297), 2026-08-29 17:34resume_download, touchingmultimodal_processor/processors/vision.py— the CLIP load now succeedsReproducible across two runs, and causally tied to a commit that changes the exact path being timed. Nothing got slower: the constructor now does work it had been skipping by crashing.
Two changes, and why both
1.
assert_within_work_budgettakescalibrated_under. A budget is only meaningful together with the state it was measured in. Without that recorded, a breach caused by a fixed bug is indistinguishable from a genuine slowdown, and the failure text actively misleads:The parameter is optional and the old message is unchanged when it is absent, so the other 19 assertions in the file behave exactly as before.
2. The budget goes 600 -> 2200, with the reasoning inline rather than in a commit message.
This is the direction the file explicitly forbids — "Ratchet DOWN as runs report lower — the only direction allowed" — so it deserves the argument, not a quiet edit. That rule is right whenever the baseline is valid. It cannot bind a baseline whose premise was a bug: holding the fixed code to a number measured on the crash path would mean the benchmark permanently fails for having been repaired.
2200 is ~1.3x the higher of the two post-fix readings. Ratchet down from there. The metric is disk-bound (model files, HF cache), which a CPU-shaped work unit cannot normalise — the limitation the file already records at this site — hence a wider band than its CPU-shaped neighbours.
What Changed
autobot_shared/perf_work_budget.py— optionalcalibrated_under, reported on breach; docstring records why.autobot-backend/system_benchmarks_performance_test.py— budget re-baselined with the provenance above.Verification
Both files parse. Old and new failure text confirmed to differ only when
calibrated_underis supplied.The real check is the next
marker-testsrun: the assertion should pass at ~1500 units, and if it ever breaches again the message will say which of the two situations it is.Note this suite runs rarely —
marker-tests.ymltriggers on dispatch, on changes to itself, or path-matched PRs — which is why a change that landed on 2026-08-29 was not caught until a release PR exercised it.Model Used
Claude Opus 5 (1M context)