Repository navigation
CI flakiness inventory: Aug 11-Sep 8, 2026 #12704
Copy link
Copy link
Closed
Labels
needs-triageIssues that need to be assigned.Issues that need to be assigned.
Description
Activity
- addedneeds-triageIssues that need to be assigned.Issues that need to be assigned.
on Sep 8, 2026 CI flake remediation plan
Goal
Reduce the current 29.7% flake-red first-attempt rate by assigning one independent
dotnet/android session and pull request to each actionable failure family.Each child session must:
- Re-read issue CI flakiness inventory: Aug 11-Sep 8, 2026 #12704 and the linked Azure examples.
- Reproduce or establish the root cause from logs before changing behavior.
- Prefer a root-cause fix; quarantine or retry only when the external dependency
cannot be made deterministic. - Add focused coverage where practical.
- Create a draft pull request whose title starts with
[flaky-ci], has the
flaky-cilabel, and references CI flakiness inventory: Aug 11-Sep 8, 2026 #12704 plus any focused tracker. - Report the PR and remaining uncertainty to this coordinator.
Wave 1: highest impact
Workstream Current signal Intended PR MAUI R2R Helix device-lab failures 35 incidents; ongoing; #12658 Add device preflight, cleanup/recovery, and actionable machine/device diagnostics without hiding real APK failures. Gradle daemon/cache/tooling failures 11 incidents Isolate shared Gradle state and make known daemon/cache corruption recoverable without retrying real Gradle build errors. JavaSideActivation GREF assertion 4 incidents; ongoing; #12031 Replace exact process-global GREF equality with an isolated or operation-specific leak assertion. GradleFBProj device tests 5 incidents across CoreCLR and NativeAOT variants Stabilize app startup/device readiness and retain meaningful Gradle/Facebook project coverage. Logcat capture timeouts 2 incidents after prior mitigations Make capture bounded and non-gating while preserving failure diagnostics. MAUI package publication lag 4 incidents Make MAUI restore tolerate short dependency-publication skew without masking persistent package resolution errors. Wave 2: remaining actionable failures
Workstream Current signal Intended PR JniTypeUtf8 String GREF assertion 2 incidents; open under #12031 Isolate or redesign the enabled String-overload leak assertion. BuildReleaseArm64 APK-size baseline 3 incidents Make the comparison deterministic and explain real size regressions without stale-baseline flakes. dotnet-test-slicer runtime discovery 2 incidents Ensure the tool runs with an explicit compatible runtime on hosted macOS agents. ADB install broken pipe 1 incident Retry only recognized transport breakage and preserve real install failures. Hosted dependency downloads cache HTTP 429 plus NuGet workload-pack stalls/job timeout Add bounded retries/backoff for transient package acquisition and avoid consuming the full hosted-job limit. Desugar external artifact timeout 1 incident Remove or harden the external network dependency, preferably through existing mirrors/caches. Missing libMono.Unix test artifact 1 incident Correct the test runtime copy-local dependency closure. AndroidMessageHandler broken pipe 1 non-gating incident Make the cancellation test server/client teardown deterministic without weakening assertions. BenchmarkDotNet device test 2 non-gating incidents Stabilize benchmark app startup/execution and improve failure diagnostics. AndroidGradleProject BindLibrary 1 non-gating incident Reproduce and remove the nondeterministic Gradle/binding fixture failure. System.NetTests VerifyTrustedCertificates 2 incidents Stabilize certificate/environment assumptions while preserving the trust validation coverage. Verify, but do not create duplicate PRs
Failure Existing fix Verification GetObjectArray peer identity #12650 No recurrence in 71 completed post-merge builds. InstallAndroidDependencies missing SharpZipLib/Polly #12649 No recurrence in 107 completed post-merge builds. CheckSignApk stale JAVA_HOME #12603 No recurrence in 167 completed post-merge builds. Original FastTiming logcat race #12492 No unrelated-PR recurrence in the current catalog. External-only incidents
Do not create speculative repository PRs for hosted-agent deprovisioning, Azure
no-route-to-host, DNS outages, pipeline startup failure, or isolated git checkout
failure. Keep them in #12704 for frequency tracking and escalate to the service/device-
lab owners when they recur.Coordination
- All 17 implementation sessions branch independently from
main. - Sessions start in plan mode; the coordinator approves only plans that identify a
concrete root cause and a reviewable fix. - Overlapping pipeline files may produce merge conflicts; PRs remain independent and
will be rebased after higher-impact fixes merge. - Prioritize Wave 1 review and merge order by expected incident reduction.
- added a commit that references this issue
on Sep 10, 2026 - added 2 commits that reference this issue
on Sep 10, 2026 - added a commit that references this issue
on Sep 10, 2026 - added 4 commits that reference this issue
on Sep 15, 2026
Metadata
Metadata
Assignees
Labels
needs-triageIssues that need to be assigned.Issues that need to be assigned.
Android framework version
net11.0-android (Preview)
Affected platform version
dotnet/androidpull-request CI, public Azure DevOpsdotnet-androidpipeline, 2026-08-11 through 2026-09-08.Description
This issue tracks flaky infrastructure and flaky tests observed across 242 PR pipeline runs from 2026-08-11 through 2026-09-08. Of these, 241 runs completed (123 red and 118 green); 1 run was still active at collection time.
Frequency is measured as build incidents / 241 completed PR runs and as the average incidents per week over this four-week interval. A build incident is one unique root signature in one build; duplicate configuration annotations are collapsed. Independent roots in the same build are counted separately. Failures determined to be caused by the PR are intentionally omitted from this issue.
The first PR pipeline run returned within the interval started at 2026-08-29 02:03 UTC; the Azure build query returned no PR runs from 2026-08-11 through 2026-08-29 before that run.
Summary: 18 infrastructure signatures / 71 incidents and 10 flaky-test signatures / 32 incidents.
Earlier inventories and focused trackers
Recently merged fixes and recurrence
First-attempt and unchanged-rerun reliability
Unit: one PR plus exact source SHA. Sequences containing any PR-related incident are excluded, so a later build is an unchanged rerun rather than a code-change build.
Of the 46 flake-red first attempts, 32 were infrastructure-only, 8 test-only, and 6 contained both.
Three recovered on the first rerun; one recovered on the second. One additional unchanged sequence was rerun once but hit another flake and remained red.
Recovered unchanged-SHA chains:
8e0c17a2): 1578195 failed -> 1578492 succeeded; 1 rerun(s) to green.e4dc407b): 1578755 failed -> 1579094 failed -> 1579507 succeeded; 2 rerun(s) to green.d5f41779): 1578760 failed -> 1579125 succeeded; 1 rerun(s) to green.86271701): 1578694 failed -> 1579498 succeeded; 1 rerun(s) to green.Most flake-red sequences were not rerun unchanged, so they are censored rather than counted as failed recoveries.
Flaky infrastructure
Flaky tests
Steps to Reproduce
dotnet-androidPR builds started during the interval.Did you find any workaround?
Rerunning an unchanged SHA cleared several of these failures. That is only a tactical workaround; the recurring signatures above should be fixed or quarantined independently.
Relevant log output
Each row links the first and last Azure build where the signature was observed. The underlying catalog retains every affected build and PR.