Adds a dedicated ci-storm Cargo profile for the release storm suite so the latency lane no longer pays for the shipped binary's fat-LTO link. The profile keeps release opt-level 3 and every absolute deadline bound, but disables LTO and uses 16 codegen units; on the same free runner the suite now compiles in about 13.5 minutes instead of 23+.
Selected no LTO over thin after a measured comparison; only the required lane changes, and production/search profiles are untouched.
New scripts/ci-storm-controls.py plus fixture-only 3-second delays prove both the bind-ack and interactive-read 2-second guards still fail exactly their named test while the sibling passes; build errors, unrelated panics, timeouts, and silent passes are rejected.
The composite action also validates the full 19-case inventory and retains compiler timing/evidence artifacts; an opt-in thin-LTO probe job runs the same controls but stays out of required checks.
Confidence Score: 5/5
The PR appears safe to merge; no actionable issues were found.
Summary
Moves the Linux storm checks to a release-derived ci-storm profile without LTO. The shipped release profile stays unchanged.
The Linux storm lane builds its tests without fat LTO.
Storm CI proves its bind and read deadlines reject delays.
A manual workflow run can compare the storm lane with thin LTO.
Review was based on code inspection; builds and tests were not run.
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Required Linux storm job: no LTO] --> C[Shared storm action]
B[Optional comparison job: thin LTO] --> C
C --> D[Build optimized test harness and save timings]
D --> E[Require all 19 storm cases]
E --> F[Run storm tests without injected delays]
F --> G[Require delayed bind to fail and sibling to pass]
G --> H[Require delayed read to fail and sibling to pass]
H --> I[Save timings, inventory, and control evidence]