Conversation
post-pr-comment.sh derived the pipeline's fate from TOTAL_PASS and TOTAL_FAIL, and a configuration whose validation log could not be read incremented neither: it landed in RESULTS as "unknown", was excluded from TOTAL, and left only a grey cell in the matrix. A configuration whose artifact directory was missing entirely never reached the collection loop at all. Either shape happens when a matrix job dies without writing its logs -- the 10 minute timeout firing mid-run, a lost runner, or a failure during prerequisite setup. With 39 passes and one such cell the job reported success, so a broken configuration left the PR green. The existing TOTAL == 0 guard only caught the case where every cell died, and partial is the likely case. The expected matrix is now declared once, ahead of collection, and drives both the completeness check and the table rendering so the two cannot drift. Any expected configuration that produced neither a pass nor a fail is counted and gates, and the comment names them under their own heading rather than leaving a grey cell to be interpreted. Verified against fixtures of 39 passing cells plus one in each state, run against this script and the one on main: cell state main this change writes VALIDATION_FAILED fail fail directory present, no logs PASS fail directory absent PASS fail all 40 pass pass pass no results at all fail fail Quarantining a known-flaky configuration stays the intended way to keep CI green, and is deliberately not added here: this only ensures that quarantine is the *only* way a red or missing cell does so. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This comment has been minimized.
This comment has been minimized.
Scan-Build Report
Bug Summary
Reports
|
||||||||||||||||||||||||||||||||||||
CI Test ResultsRun: #35206887586 | Commit:
Status Overview
Legend: ✅ passed | ❌ failed | ⚪ skipped | 🚫 cancelled Summary: Total: 32 | Passed: 32 | Failed: 0 Updated: 2026-09-17 10:22:01 UTC |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: aa03d6ffbe
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| ### No result produced | ||
| These configurations wrote no validation log, so their outcome is unknown and | ||
| they are counted as failures. The job usually timed out or failed during setup; | ||
| see its log in the pipeline. |
There was a problem hiding this comment.
Include incomplete cells in the displayed counts
When only part of the expected matrix is incomplete, these cells gate the pipeline but are not added to TOTAL_FAIL or TOTAL, so the PR headline reports, for example, “39 passed, 0 failed out of 39 configurations” even though this section says the missing 40th cell is counted as a failure. Include TOTAL_INCOMPLETE in the displayed failure/total counts, or report it as a separate count in the headline, so the comment accurately explains the failed status.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
A partial matrix failure stops the pipeline. The PR comment omits incomplete cells from its failure and total counts.
🤖 Datadog Autotest · Commit aa03d6f · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest
| case "${RESULTS[${config}]:-missing}" in | ||
| pass|fail) ;; | ||
| *) | ||
| TOTAL_INCOMPLETE=$((TOTAL_INCOMPLETE + 1)) |
There was a problem hiding this comment.
Include incomplete cells in the displayed totals
The pipeline fails correctly, but the PR comment gives reviewers incorrect summary counts.
Assertion details
- Input: Thirty-nine configurations pass and one expected configuration produces no validation log.
- Expected:
The comment must report 39 passed, 0 failed, and 1 without a result out of 40 expected configurations. - Actual:
The comment reports 39 passed, 0 failed out of 39 configurations. It lists the missing 40th configuration separately as a failure.
Was this helpful? React 👍 or 👎
🤖 Datadog Autotest · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest · Open Bits AI session
Summary
post-pr-comment.shgates the pipeline on the dd-trace integration matrix, but a configuration that produced no result counted as neither a pass nor a failure — so a broken cell could leave a PR green.Found while investigating why PR #790 was red. There the flaky
musl-x64-openj9-jdk21cell did write aVALIDATION_FAILEDlog, so it gated correctly. Had the same cell hit its 10-minute timeout instead, the PR would have reported success.The hole
The collection loop classifies each configuration, and
unknownincrements neither counter:Two shapes reach that branch, both from a matrix job dying before it writes its validation logs — the timeout firing mid-run, a lost runner, or a failure during prerequisite setup (jbang / JDK download):
unknownWith 39 passes and one such cell,
TOTAL_FAILstays 0, the overall status issuccess, and the only trace is a:grey_question:in the matrix that nothing requires anyone to read. The existingTOTAL == 0guard catches only the case where every cell dies; partial is the likely case.Change
### No result producedheading instead of leaving a grey cell to be interpreted.Verified
Fixtures of 39 passing configurations plus one in each state, run against this script and against the one on
main:mainVALIDATION_FAILEDNote for anyone testing locally: the script uses
declare -A, so macOS's bash 3.2 cannot run it and fails with exit 2 before reaching any of this logic. Use bash 4+.Deliberately not included
Quarantining a known-flaky configuration remains the intended way to keep CI green — see #777, which introduces that policy for the GitHub Actions JUnit suite. It does not cover this path: these integration tests emit no JUnit XML (they are shell plus JFR conformance validation, reported by grepping validation logs), so a quarantine here needs the same policy — a list keyed by configuration name with a
review_byexpiry — against a different signal.This change only ensures quarantine becomes the only way a red or missing cell leaves CI green.
🤖 Generated with Claude Code