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
Flakiness controls are blunt instruments applied suite-wide: every spec (including deterministic unit specs) retries up to 3×, test ordering is fixed (random ordering commented out), and every example gets a 10-minute timeout. Retries on unit specs mask real intermittent bugs; fixed ordering hides inter-spec state leaks; a 10-minute per-example timeout means a hung integration spec blocks CI for 10 minutes before failing.
#L138-L140: config.default_retry_count = ENV["RSPEC_RETRY_COUNT"] || 3 — applies to all specs. Note: ENV[...] returns a String, so RSPEC_RETRY_COUNT=0 would be truthy and "0" — worth normalizing with Integer(...) while here.
#L124: config.order = :random commented out — suite runs in fixed file order.
#L155-L158: Timeout.timeout(600) around every example.
Summary
Flakiness controls are blunt instruments applied suite-wide: every spec (including deterministic unit specs) retries up to 3×, test ordering is fixed (random ordering commented out), and every example gets a 10-minute timeout. Retries on unit specs mask real intermittent bugs; fixed ordering hides inter-spec state leaks; a 10-minute per-example timeout means a hung integration spec blocks CI for 10 minutes before failing.
Evidence (all in
spec/spec_helper.rb)#L138-L140:config.default_retry_count = ENV["RSPEC_RETRY_COUNT"] || 3— applies to all specs. Note:ENV[...]returns a String, soRSPEC_RETRY_COUNT=0would be truthy and"0"— worth normalizing withInteger(...)while here.#L124:config.order = :randomcommented out — suite runs in fixed file order.#L155-L158:Timeout.timeout(600)around every example.Proposed fix
config.default_retry_count = 1globally;retry: 3via metadata on:integration/:slowspecs, orretry_count_conditionkeyed off the tag). Depends on the spec taxonomy introduced in Test suite cannot load without CPLN_ORG — even pure unit specs require live-org configuration #373.Integer(ENV.fetch("RSPEC_RETRY_COUNT", "3")).config.order = :random(+Kernel.srand config.seed), fix whatever ordering issues surface, and keep the seed in CI output for reproduction.:slow/integration specs, via tag-conditionalaroundhook.Acceptance criteria
Priority / size / dependencies
P3. Size: S–M (the random-ordering fallout is the unknown). Blocked by #373 (uses its
:integrationtagging to scope retries/timeouts).Origin: automated codebase health review, 2026-07-02, against 7c96df9.