Skip to content

ci: the CSMS log was captured on a red job, never on a red row - #54

Merged
juherr merged 1 commit into
mainfrom
juherr/csms-log-on-a-red-row
Aug 16, 2026
Merged

juherr merged 1 commit into
mainfrom
juherr/csms-log-on-a-red-row

Conversation

@juherr

@juherr juherr commented Aug 16, 2026

Copy link
Copy Markdown
Owner

The CSMS log capture added for #52 was conditioned on if: failure(), and that
misses the one case it exists for.

The hole

A parallel FAIL whose isolated retry passes is a flake: standingOf calls it
"ok", endsTheBuild is false, the sweep exits 0, the job is green. The
CALLERROR -- InternalError worth explaining happens inside exactly that.

Of 34 archived SteVe sweeps, 20 carried a red row — and almost all of them
were green jobs. So the first shape would have captured nothing on the
overwhelming majority of the runs it was written for, and the absence of a
csms-*.log would have read as "there was nothing to capture".

The fix

Trigger on a red row, read from results/summary.md, with the job's own
status kept for the failures that never get as far as writing one. Still silent
on a clean sweep — that half of the first shape was right: megabytes nobody
reads, in an artifact downloaded in bulk when mining the archive.

Exercised, not reasoned about

Run against real archived summaries from the corpus:

case job result
flaked sweep (red row, adjudicated) green CAPTURE — the case the old condition missed
clean sweep green SKIP
died before writing a summary red CAPTURE

The row grep matches 23 of the 23 archived summaries containing a (flake).

if rather than && for the grep: the default shell is bash -e, so a bare
compound ending non-zero would abort the step on the ordinary no-match case —
turning "nothing to capture" into a red step.

Scope

Workflow only, e2e job. tests/gate-parity.sh covers the check job and is
unaffected; bun run verify passes in full. #52's other half — the retry no
longer overwriting the wire log it adjudicates — is untouched and already on
main.

Follows up #52.

The capture added for #52 was conditioned on `if: failure()`, which misses
the one case it exists for.

A parallel FAIL whose isolated retry passes is a FLAKE: `standingOf` calls
it "ok", `endsTheBuild` is false, the sweep exits 0 and the job is GREEN.
The `CALLERROR -- InternalError` worth explaining happens inside exactly
that. Of 34 archived SteVe sweeps, 20 carried a red row, and almost all of
them were green jobs -- so the first shape would have captured nothing on
the overwhelming majority of the runs it was written for.

The trigger is now a red ROW, read from results/summary.md, with the job's
own status kept for the failures that never get as far as writing one.
Still silent on a clean sweep: that half of the first shape was right --
megabytes nobody reads, in an artifact downloaded in bulk when mining the
archive.

Exercised against real archived summaries rather than reasoned about: a
flaked sweep with a green job CAPTURES, a clean sweep SKIPS, and a run
with no summary at all and a failed job CAPTURES. The row grep matches 23
of the 23 archived summaries that contain a `(flake)`.

`if` rather than `&&` for the grep, because the default shell is `bash -e`
and a bare compound ending non-zero would abort the step on the ordinary
no-match case -- which would have turned "nothing to capture" into a red
step.

Follows up #52, whose other half -- the retry no longer overwriting the
wire log it adjudicates -- is unaffected.
@coderabbitai

coderabbitai Bot commented Aug 16, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@juherr, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 27 minutes

Limit details: You’ve used all 1 included review currently available under your plan.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 874389bd-f7d0-4cde-b1b9-46e6ce63c137

📥 Commits

Reviewing files that changed from the base of the PR and between 94f2b3b and 5abcd35.

📒 Files selected for processing (1)
  • .github/workflows/ci.yml

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant