Repository navigation
CI flaky-test burndown: driving flaky tests to 0 (live metrics) #21600
Description
CI flaky-test burndown: driving flaky tests to 0 (live metrics)
Goal: flaky tests → 0. This issue's description is regenerated in place on each measurement run (about every 4h). It tracks whether the flaky-test fixes are improving ci.yml quality.
Last updated: 2026-11-02 06:00 UTC · data window: 2026-10-16 15:30 → 2026-11-02 06:00 UTC
AspireAgent effort outcomes (all up)
Window: PRs created 2026-10-28 00:00 → 2026-11-02 07:10 UTC whose body carries the footer 🤖 Posted by AspireAgent (AI Agent) (REST pulls?state=all, body match). "Awaiting approval" = open, non-draft, no outstanding CHANGES_REQUESTED review. "Green" = every check run on the exact head completed success/skipped/neutral. Merge rate = merged ÷ (merged + closed-unmerged).
| Repo | opened | merged | closed-unmerged | open awaiting approval (green) | open changes-requested | draft | merge rate of decided PRs | median hours open→merge |
|---|---|---|---|---|---|---|---|---|
| aspire | 165 | 32 | 3 (#21658, #21578, #21391) | 129 (127 green) | 1 (#21474) | 0 | 91% (32/35) | 10.5h (n=32) |
| aspire.dev | 32 | 26 | 0 | 6 (6 green; 1 already approved, unmerged: #2006) | 0 | 0 | 100% (26/26) | 7.3h (n=26) |
| aspire-skills | 35 | 18 | 0 | 14 (14 green; 4 already approved, unmerged: #136, #135, #130, #125) | 2 (#144, #141) | 1 (#139) | 100% (18/18) | 13.2h (n=18) |
aspire notes: closed-unmerged = #21578 (duplicate), #21658 (rejected), #21391 (standup report). The 2 non-green awaiting PRs (#21656, #21450) are green on ci.yml; only non-required outerloop_tests jobs failed or were cancelled.
Impact (measured, ci.yml attempt-1; baseline = 2026-10-31 20:03 UTC refresh):
- main attempt-1 pass (7d): 1/56 (1.8%) → 2/66 (3.0%)
- PR attempt-1 pass (7d): 29.7% → 31.8% (164/516)
- Distinct flaky tests (7d): 218 (204 after recalibration to the REST pipeline) → 207
- Open
ci-failure-causeissues: 169 → 177 - Flaky tests fixed by merged agent PRs: 5 signatures went from 23 attempt-1 failures in the 7d before merge → 0 since merge: Make ADC rejected-create cancellation test deterministic #21591 AzureSandboxesTests rejected-create cancellation (5 → 0 in 35h); Fix flaky NuGetPackagePrefetcher cancellation logging test #21599 NuGetPackagePrefetcher shutdown-cancellation logging (5 → 0 in 35h); Fix StopNonInteractiveTests launch-port collision between generated AppHosts #21583 StopNonInteractiveTests.* (later unquarantined further by Unquarantine StopNonInteractive E2E tests #21653) (3 → 0 in 35h); Give RemoteHost tests thread-pool headroom above xunit's synchronous slots #21613 IntegrationHostLauncherTests discovery wait (7 → 0 in 11h); Pick an available non-ephemeral host port in DockerCompose dashboard deploy test #21548 DockerCompose dashboard deploy host port (3 → 0 in 7h). Wait for resources to respond before attaching in resource debug E2E #21577 (VS Code resource-debug E2E): 23 → 2 in 35h. Post-merge windows are short (7h–38h), so treat these as early signals.
- The biggest single lever is still unmerged: Pin Windows CI container runtime to Docker to stop DCP wslc probes (#21570) #21608 (Windows runner loss) covers 490 attempt-1 jobs in 7d, 119/267 (44.6%) of failed main jobs.
Bottleneck: review. aspire has 129 AspireAgent PRs awaiting approval (127 fully green), and none of the open ones carries an approval. Median age of the green ones is 48.8h. aspire.dev: 6 green awaiting (median 65.8h). aspire-skills: 14 green awaiting (median 39.9h), 4 of them approved but not merged. Merged PRs took a median of 10.5h, so throughput is bounded by approvals, not by CI.
Lessons applied:
- Cap of about 15 open PRs awaiting approval: no new PRs until the queue drains (new-PR pause currently in effect).
- Dedupe before starting: search open PRs/issues for the test or class name before opening a fix.
- Close superseded PRs and duplicates (pending: test: synchronize rejected-create cancellation with response observation #21417, Fix prefetcher shutdown-cancellation test race on the outer token #21438, Fix flaky DockerCompose dashboard deploy test host port collision #21466, issue [CI Failure] Flaky: AzureSandboxesTests.AzureDevComputeClientKeepsCancellationAfterRejectedCreateDefinite races a 10ms cancellation against an immediate mocked response #20931).
- Fix in the right layer: product readiness or infra fixes over test-side retries and timeouts.
- After CHANGES_REQUESTED, request re-review from the same reviewer.
- Unquarantine PRs merge best: small, low-risk and evidence-backed (Unquarantine AppHostServerSession exited-server RPC test #21616, Unquarantine 2 CLI E2E tests that pass 100% in the quarantine lane #21649, Unquarantine StopNonInteractive E2E tests #21653, Unquarantine PersistentContainersPreserveDataAcrossAppHostRuns #21662 merged).
Review queue (approve top-down)
Open, non-draft AspireAgent PRs, ci.yml green on exact head, 0 unresolved review threads. Failures = trailing-7d first-attempt failures matching the PR's ledger signature (main + PR runs); n/a = no CI signature. Diagnostics/unquarantine-only last. Reviewers from CODEOWNERS (~ = inferred from matching src/ owner; PR author excluded) – suggestions only, no review requests made.
| # | PR | Fixes | Failures/7d removed | Size (files, +/−) | Suggested reviewer |
|---|---|---|---|---|---|
| 1 | #21608 | Pin Windows CI container runtime to Docker to stop DCP wslc probes (#21570) | 490 runner-loss jobs (all OSes; PR targets Windows) | 2, +16/−0 | none (no CODEOWNERS match) |
| 2 | #21594 | Wait for MongoDB replica set primary before reconfiguring to fix rs0 FailedToStart flake | 78 | 2, +193/−22 | none (no CODEOWNERS match) |
| 3 | #21604 | Give the Deno AppHost inspector attach the AppHost startup budget | 42 | 4, +102/−3 | Adam Ratzman (@adamint), Ella Hathaway (@ellahathaway) |
| 4 | #21660 | Pin public npm registry for Dependabot in template and JsPublish lockfile directories | 40 | 13, +109/−1 | Mitch Denny (@mitchdenny), James Newton-King (@JamesNK) |
| 5 | #21445 | Wait for Functions host storage before stopping multi-project test | 35 (shared with #21566) | 1, +7/−2 | ~Eric Erhardt (@eerhardt), ~Mitch Denny (@mitchdenny) |
| 6 | #21566 | Don't start the app in AzureFunctions host-storage model tests | 35 (shared with #21445) | 1, +9/−19 | ~Eric Erhardt (@eerhardt), ~Mitch Denny (@mitchdenny) |
| 7 | #21424 | Stop DevTunnel test monitor before disposing its host | 26 | 2, +50/−1 | none (no CODEOWNERS match) |
| 8 | #21565 | Dismiss VS Code E2E notifications without depending on hover | 18 | 5, +52/−4 | Adam Ratzman (@adamint), Ella Hathaway (@ellahathaway) |
| 9 | #21602 | Treat backchannel close during RequestStopAsync as a completed stop | 14 (shared with #21624) | 2, +140/−6 | Mitch Denny (@mitchdenny), James Newton-King (@JamesNK) |
| 10 | #21624 | Coordinate project builds when the IDE cannot launch projects (fix VS Code E2E tree-act… | 14 (shared with #21602) | 3, +61/−6 | none (no CODEOWNERS match) |
| 11 | #21623 | Fix coordinated .NET build path casing that breaks Blazor WebAssembly builds | 13 (upper bound: whole job/shard) | 4, +461/−9 | none (no CODEOWNERS match) |
| 12 | #21595 | Accept natural ps leader exit racing a failed Windows taskkill (Fixes #20869) | 10 | 2, +89/−0 | Adam Ratzman (@adamint), Ella Hathaway (@ellahathaway) |
| 13 | #21638 | Wait for MongoDB single-member primary to accept writes before reporting healthy | 10 | 4, +148/−21 | none (no CODEOWNERS match) |
| 14 | #21596 | Fix flaky MetricsTests exemplars dialog assertion | 9 | 1, +22/−1 | none (no CODEOWNERS match) |
| 15 | #21597 | Treat DCP FailedToStart as stopped when stopping resources | 8 | 6, +310/−48 | none (no CODEOWNERS match) |
| 16 | #21643 | Wait for resource lifecycle command outcomes instead of the 10s E2E control apply timeout | 8 | 4, +129/−5 | Adam Ratzman (@adamint), Ella Hathaway (@ellahathaway) |
| 17 | #21453 | Isolate deployment state in DistributedApplicationPipelineTests (fixes Windows 'destroy… | 6 | 1, +31/−1 | Mitch Denny (@mitchdenny) |
| 18 | #21615 | Ignore just-published npm releases in Docker CLI E2E shells | 6 | 4, +232/−4 | ~Mitch Denny (@mitchdenny), ~James Newton-King (@JamesNK) |
| 19 | #21627 | Don't report slow-starting OpenSSH as unsupported in unattended Git | 6 | 3, +80/−2 | Mitch Denny (@mitchdenny), James Newton-King (@JamesNK) |
| 20 | #21636 | Wait for the settings command outcome instead of the 10s E2E control apply timeout | 6 | 2, +20/−1 | Adam Ratzman (@adamint), Ella Hathaway (@ellahathaway) |
| 21 | #21661 | Auto-rerun artifact transfer steps that fail with artifact service network errors | 6 (upper bound: whole job/shard) | 3, +81/−3 | none (no CODEOWNERS match) |
| 22 | #21632 | Hold storage-diagnostics test locks in-process instead of via PowerShell | 5 | 1, +13/−59 | Adam Ratzman (@adamint), Ella Hathaway (@ellahathaway) |
| 23 | #21622 | Wait for an orphaned coordinated build before building again | 4 | 3, +267/−2 | none (no CODEOWNERS match) |
| 24 | #21634 | Ignore just-published npm releases in polyglot TypeScript validation | 4 | 1, +6/−0 | none (no CODEOWNERS match) |
| 25 | #21640 | Wait for C# project initialization before coordinated-build E2E fixtures | 4 | 4, +106/−3 | Adam Ratzman (@adamint), Ella Hathaway (@ellahathaway) |
| 26 | #21654 | Fix K8s PV E2E race waiting for recreated StatefulSet pod | 4 | 5, +54/−21 | ~Mitch Denny (@mitchdenny), ~James Newton-King (@JamesNK) |
| 27 | #21614 | Remove hidden 5s watch budget from MAUI build-queue state waits | 3 | 1, +8/−43 | Gerald Versluis (@jfversluis) |
| 28 | #21626 | Don't discard completed process output when the thread pool is backlogged after exit | 3 | 3, +375/−2 | Mitch Denny (@mitchdenny), James Newton-King (@JamesNK) |
| 29 | #21657 | Retry VS Code unit-test yarn install on dnceng npm 429 | 3 | 1, +20/−1 | none (no CODEOWNERS match) |
| 30 | #21617 | Gate JavaScript runtime CLI E2E checks on AppHost readiness | 2 | 1, +28/−10 | ~Mitch Denny (@mitchdenny), ~James Newton-King (@JamesNK) |
| 31 | #21630 | Gate the shared ps refresh in the apphost-tree loading E2E test | 1 | 2, +34/−15 | Adam Ratzman (@adamint), Ella Hathaway (@ellahathaway) |
| 32 | #21647 | Stop Infrastructure.Tests pwsh processes from racing on the shared startup profile | 1 (lower bound) | 2, +92/−0 | none (no CODEOWNERS match) |
| 33 | #21528 | Don't fail AppHost stop on a no-op terminal teardown after the shutdown budget is exhau… | 0 | 3, +78/−1 | James Newton-King (@JamesNK), Karol Zadora-Przylecki (@karolz-ms), David Negstad (@danegsta), Mitch Denny (@mitchdenny) |
| 34 | #21562 | Bound GitRepository's post-exit output drain so git commands can't hang | 0 | 2, +285/−17 | Mitch Denny (@mitchdenny), James Newton-King (@JamesNK) |
| 35 | #21571 | Make MAUI build-queue cancellation surface a consistent OperationCanceledException | 0 | 2, +58/−3 | Gerald Versluis (@jfversluis) |
| 36 | #21618 | Make EnvironmentChecker timeout tests deterministic with TimeProvider | 0 | 2, +64/−9 | Mitch Denny (@mitchdenny), James Newton-King (@JamesNK) |
| 37 | #21656 | Target dashboard resource cards in DashboardUrlTests breakpoint test | 0 (Outerloop-only test; not in ci.yml) | 1, +4/−3 | ~Sébastien Ros (@sebastienros) |
| 38 | #21517 | Close owned AppHost backchannel connections before the CLI exits | n/a | 24, +734/−129 | Mitch Denny (@mitchdenny), James Newton-King (@JamesNK) |
| 39 | #21546 | Make WithBindMount idempotent and fail fast on conflicting mount targets | n/a | 4, +318/−0 | James Newton-King (@JamesNK), Karol Zadora-Przylecki (@karolz-ms), David Negstad (@danegsta), Mitch Denny (@mitchdenny) |
| 40 | #21555 | Fail non-interactive aspire add when no integration name is given | n/a | 17, +137/−0 | Mitch Denny (@mitchdenny), James Newton-King (@JamesNK) |
| 41 | #21576 | Don't count [sys] lines toward aspire logs --tail | n/a | 8, +494/−17 | Mitch Denny (@mitchdenny), James Newton-King (@JamesNK), Karol Zadora-Przylecki (@karolz-ms), David Negstad (@danegsta) |
| 42 | #21611 | Warn when the Aspire dashboard stops unexpectedly | n/a | 7, +216/−1 | Mitch Denny (@mitchdenny), James Newton-King (@JamesNK), Karol Zadora-Przylecki (@karolz-ms), David Negstad (@danegsta) |
| 43 | #21629 | Fail fast when a VS Code E2E AppHost debug session ends before startup | 2 (diagnostics only) | 6, +338/−10 | Adam Ratzman (@adamint), Ella Hathaway (@ellahathaway) |
| 44 | #21642 | Dump AppHost resource state and logs when Nuxt validation health wait times out | 2 (diagnostics only) | 2, +149/−18 | none (no CODEOWNERS match) |
| 45 | #21644 | Add Windows CI resource telemetry to test and extension E2E jobs | n/a (diagnostics only) | 5, +540/−1 | Adam Ratzman (@adamint), Ella Hathaway (@ellahathaway) |
| 46 | #21648 | Fix Kubernetes publish for parameter-based container args (unquarantine DeployK8sWithNats) | 0 (unquarantine only) | 7, +156/−16 | ~Mitch Denny (@mitchdenny), ~James Newton-King (@JamesNK) |
| 47 | #21651 | Capture CLI diagnostics when an E2E command hangs | n/a (diagnostics only) | 3, +145/−3 | ~Mitch Denny (@mitchdenny), ~James Newton-King (@JamesNK) |
Not in queue: #21474 (changes requested). Merged since the last refresh: #21548, #21554, #21613, #21616 (before 23:57Z Nov 1); #21605, #21653, #21662, #21561, #21649 (after). #21622 is listed for continuity, but its body lacks the AspireAgent footer.
Headline (measured)
- main first-attempt pass rate: 24h 12.5% (1/8) · 7d 3.0% (2/66)
- PR first-attempt pass rate: 24h 33.8% (23/68) · 7d 31.8% (164/516)
- Distinct flaky tests failing (seen on ≥2 branches or on main): 24h 45 · 7d 207 → target 0
- Runner loss: 119/267 (44.6%) of failed main attempt-1 jobs in 7d (infra: Windows image WSL + DCP
wslcprobe, Windows CI runners lose communication during test steps since the windows-2025-vs2026 20261007 image (not test hangs) #21570; fix Pin Windows CI container runtime to Docker to stop DCP wslc probes (#21570) #21608 open)
Windowed metrics
| Window | main runs | main 1st-attempt pass | main pass after retries | PR runs | PR 1st-attempt pass | PR runs needing rerun | failed test jobs / PR run (all · failed only) |
|---|---|---|---|---|---|---|---|
| 24h | 10 (2 cancelled) | 12.5% (1/8) | 12.5% (1/8) | 99 (31 cancelled) | 33.8% (23/68) | 66.2% (45/68) | 4.06 · 6.13 |
| 48h | 22 (7 cancelled) | 6.7% (1/15) | 6.7% (1/15) | 286 (102 cancelled) | 37.0% (68/184) | 63.0% (116/184) | 2.29 · 3.63 |
| 7d | 86 (20 cancelled) | 3.0% (2/66) | 3.0% (2/66) | 787 (260 cancelled) | 31.8% (164/516) | 68.0% (351/516) | 1.81 · 2.66 |
First-attempt failure classification (runs)
| Window | Scope | failed runs | test – flaky (main, or test seen on ≥2 branches) | test – single-branch (likely PR-caused) | test hang/timeout (no test name) | infra (runner lost, network, WSL/Docker setup) | build/compile error | other/unclassified | unparsed (log cap) | job-level cancellation only | run cancelled (not counted as failure) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 24h | main | 7 | 5 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 2 |
| 24h | PR | 45 | 37 | 2 | 0 | 6 | 0 | 0 | 0 | 0 | 31 |
| 48h | main | 14 | 12 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 7 |
| 48h | PR | 116 | 88 | 5 | 0 | 22 | 0 | 1 | 0 | 0 | 102 |
| 7d | main | 64 | 55 | 0 | 3 | 6 | 0 | 0 | 0 | 0 | 20 |
| 7d | PR | 352 | 254 | 20 | 11 | 58 | 4 | 5 | 0 | 0 | 260 |
Daily trend (UTC days, first attempt)
| Day | main pass (n) | PR pass (n) | PR rerun % | flaky tests failing (≥2 branches) | infra-failed runs | test-flaky runs |
|---|---|---|---|---|---|---|
| 2026-11-02 (partial) | 50.0% (2) | 20.0% (20) | 80.0% | 8 | 2 | 13 |
| 2026-11-01 | 0.0% (9) | 40.6% (64) | 59.4% | 24 | 9 | 38 |
| 2026-10-31 | 14.3% (7) | 39.4% (127) | 59.8% | 28 | 17 | 60 |
| 2026-10-30 | 0.0% (13) | 30.6% (111) | 69.4% | 32 | 14 | 57 |
| 2026-10-29 | 0.0% (10) | 12.7% (55) | 87.3% | 29 | 11 | 43 |
| 2026-10-28 | 0.0% (9) | 23.9% (46) | 76.1% | 31 | 4 | 36 |
| 2026-10-27 | 0.0% (10) | 33.9% (59) | 66.1% | 39 | 4 | 39 |
| 2026-10-26 | 0.0% (8) | 29.5% (44) | 70.5% | 23 | 5 | 29 |
| 2026-10-25 | 0.0% (1) | 36.4% (11) | 63.6% | 4 | 0 | 6 |
| 2026-10-24 | 0.0% (1) | 30.0% (20) | 70.0% | 3 | 3 | 9 |
| 2026-10-23 | 0.0% (8) | 39.0% (41) | 58.5% | 25 | 3 | 26 |
| 2026-10-22 | 0.0% (6) | 28.6% (42) | 69.0% | 24 | 4 | 25 |
| 2026-10-21 | 0.0% (9) | 26.8% (56) | 71.4% | 22 | 9 | 35 |
| 2026-10-20 | 0.0% (11) | 45.0% (80) | 51.2% | 101 | 4 | 37 |
| 2026-10-19 | 0.0% (13) | 28.4% (88) | 70.5% | 108 | 2 | 60 |
| 2026-10-18 | n/a (0) | 62.5% (8) | 37.5% | 0 | 0 | 3 |
Days where main itself was broken (e.g. 10-19/10-20) inflate the ≥2-branch count because every PR inherits the same failures.
Top flaky tests
Ranked by distinct branches (main counts as a branch), then occurrences. Only tests seen on ≥2 branches or on main are listed, so one PR's genuine breakage doesn't dominate.
Last 48h
| # | Test (parameters collapsed) | occurrences | distinct branches | main hits | owning issue / fix PR |
|---|---|---|---|---|---|
| 1 | Aspire.Hosting.Azure.Tests.AzureFunctionsTests.AddAzureFunctionsProject_WorksWithMultipleProjects |
19 | 13 | 3 | #21245 (open) · fix #21445 (open ready) · fix #21566 (open ready) |
| 2 | Aspire.Hosting.Tests.TestRunCoordinatorEndToEndTests.BackchannelWaitsForAllTestResourcesAndStopsOnlyOnRequest |
40 | 7 | 0 | PR-caused: only mitchdenny-*-testing-integration branches (#21527 open) |
| 3 | Aspire.Hosting.MongoDB.Tests.MongoDbReplicaSetFunctionalTests.VerifyMongoDBMultiNodeReplicaWithDataShouldWorkAcrossUsages |
9 | 7 | 0 | #20478 (open) · #20512 (open) · #21593 (open) · fix #21594 (open ready) |
| 4 | Aspire.Hosting.CodeGeneration.TypeScript.Tests.AtsTypeScriptCodeGeneratorTests.TwoPassScanning_GeneratesWithEnvironmentOnTestRedisBuilder |
33 | 6 | 0 | none found |
| 5 | [vscode] CLI diagnostic log actions E2E > offers both current CLI and AppHost logs on a connected failure |
6 | 6 | 0 | fix #21565 (open ready) |
| 6 | [vscode] Aspire Blazor browser debugger E2E > "before all" hook for "maps managed Edge debugging to the C# Blazor WebAssembly attach contra… |
6 | 6 | 1 | fix #21623 (open ready) |
| 7 | Aspire.Hosting.CodeGeneration.Go.Tests.AtsGoCodeGeneratorTests.TwoPassScanning_GeneratesWithEnvironmentOnTestRedisBuilder |
41 | 5 | 0 | none found |
| 8 | Aspire.Hosting.CodeGeneration.Python.Tests.AtsPythonCodeGeneratorTests.TwoPassScanning_GeneratesWithEnvironmentOnTestRedisBuilder |
40 | 5 | 0 | none found |
| 9 | Aspire.Hosting.CodeGeneration.Rust.Tests.AtsRustCodeGeneratorTests.TwoPassScanning_GeneratesWithEnvironmentOnTestRedisBuilder |
31 | 5 | 0 | none found |
| 10 | Aspire.Hosting.CodeGeneration.Java.Tests.AtsJavaCodeGeneratorTests.TwoPassScanning_GeneratesWithEnvironmentOnTestRedisBuilder |
19 | 5 | 0 | none found |
| 11 | [vscode] Aspire tree action command E2E > routes view, copy, endpoint, log, and resource commands through tree handlers |
5 | 5 | 1 | #21667 (open) · #19282 (open) · #21641 (open) · fix #21602 (open ready) · fix #21624 (open ready) |
| 12 | Aspire.Hosting.MongoDB.Tests.MongoDbReplicaSetFunctionalTests.VerifyMongoExpressConnectsToAReplicaSetMember |
4 | 4 | 0 | #21593 (open) · fix #21594 (open ready) |
| 13 | Aspire.Hosting.JavaScript.Tests.DenoTelemetryFunctionalTests.VerifyDenoAppExportsNativeTelemetryToDashboard |
4 | 4 | 0 | #20850 (open) |
| 14 | Aspire.Hosting.JavaScript.Tests.DenoFunctionalTests.VerifyDenoAppTaskScriptWorks |
4 | 3 | 1 | #21185 (open) · #20761 (open) · #21470 (open) |
| 15 | Aspire.Hosting.JavaScript.Tests.DenoFunctionalTests.VerifyDenoAppDirectExecutionWorks |
4 | 3 | 1 | #21184 (open) · #20760 (open) · #21470 (open) |
Last 7d
| # | Test (parameters collapsed) | occurrences | distinct branches | main hits | owning issue / fix PR |
|---|---|---|---|---|---|
| 1 | Aspire.Hosting.Azure.Tests.AzureFunctionsTests.AddAzureFunctionsProject_WorksWithMultipleProjects |
35 | 25 | 6 | #21245 (open) · fix #21445 (open ready) · fix #21566 (open ready) |
| 2 | Aspire.Hosting.MongoDB.Tests.MongoDbReplicaSetFunctionalTests.VerifyMongoDBMultiNodeReplicaWithDataShouldWorkAcrossUsages |
37 | 22 | 3 | #20478 (open) · #20512 (open) · #21593 (open) · fix #21594 (open ready) |
| 3 | Aspire.Hosting.Tests.DistributedApplicationTests.BeforeResourceStartedEvent_NotFiredForExplicitStartOnInitialCreation |
36 | 21 | 12 | #21026 (open) · fix #21397 (open ready) |
| 4 | [vscode] Aspire Node Functions debugger E2E > starts Core Tools, attaches pwa-node, hits an HTTP breakpoint and cleans up the worker |
22 | 17 | 4 | fixed by #21327 (merged) |
| 5 | [vscode] Aspire launch profiles E2E > "after each" hook for "debugs a Deno AppHost through the built-in JavaScript debugger" |
25 | 12 | 4 | #21603 (open) · #20930 (open) · fix #21604 (open ready) |
| 6 | Aspire.Hosting.JavaScript.Tests.DenoTelemetryFunctionalTests.VerifyDenoAppExportsNativeTelemetryToDashboard |
14 | 12 | 3 | #20850 (open) |
| 7 | [vscode] Aspire launch profiles E2E > debugs a Deno AppHost through the built-in JavaScript debugger |
17 | 11 | 4 | #21603 (open) · #20930 (open) · fix #21604 (open ready) |
| 8 | Aspire.Hosting.MongoDB.Tests.MongoDbReplicaSetFunctionalTests.VerifyMongoExpressConnectsToAReplicaSetMember |
11 | 11 | 1 | #21593 (open) · fix #21594 (open ready) |
| 9 | Aspire.Hosting.CodeGeneration.TypeScript.Tests.AtsTypeScriptCodeGeneratorTests.TwoPassScanning_GeneratesWithEnvironmentOnTestRedisBuilder |
41 | 9 | 0 | none found |
| 10 | Aspire.Cli.Tests.Commands.RunCommandTests.RunCommand_WhenAmbientDiscoveryOnlyFindsUnbuildableAppHosts_ReportsProjectResolutionFailure |
15 | 9 | 4 | none found |
| 11 | Aspire.Hosting.MongoDB.Tests.MongoDbReplicaSetFunctionalTests.VerifyMongoDBMultiNodeReplicaSetAllNodesEndUpHealthy |
14 | 9 | 5 | #19980 (open) · #21593 (open) · fix #21594 (open ready) |
| 12 | [vscode] CLI diagnostic log actions E2E > offers both current CLI and AppHost logs on a connected failure |
11 | 9 | 1 | fix #21565 (open ready) |
| 13 | [vscode] Aspire resource debug language model tool E2E > attaches packaged .NET and Go debuggers, hits breakpoints, detaches, and tears down |
14 | 8 | 3 | fix #21577 (merged 2026-10-31) |
| 14 | Aspire.Hosting.JavaScript.Tests.DenoFunctionalTests.VerifyDenoAppDirectExecutionWorks |
13 | 8 | 5 | #21184 (open) · #20760 (open) · #21470 (open) |
| 15 | Aspire.Hosting.JavaScript.Tests.DenoFunctionalTests.VerifyDenoAppTaskScriptWorks |
13 | 8 | 5 | #21185 (open) · #20761 (open) · #21470 (open) |
Top unowned flakes (last 7d)
Ranked by 7d attempt-1 failure occurrences among flaky tests with no open fix PR from anyone and not otherwise owned. Excluded: AzureFunctions multi-project (#21566/#21445), TwoPassScanning (PR-caused snapshot drift), Node Functions debugger E2E (fixed by #21327), runner loss (#21570/#21608), DCP-death family (Deno/NodeApp "should have valid address", #20554; DCP isolation work parked), resource-debug LM tool E2E, VS Code folder-dialog race and DevTunnelMonitor (local fixes ready), and tests that only fail on 1–2 feature branches (PR-caused). Denominator = 66 main + 516 PR decided attempt-1 ci.yml runs in 7d.
| # | Test | occurrences | branches | main hits (of 66 main runs) | job | claim search (open issues/PRs) |
|---|---|---|---|---|---|---|
| 1 | Aspire.Cli.Tests.Commands.SdkInstallerTests.{Deploy,Publish,Run}Command_WhenSdkNotInstalled_ReturnsCorrectExitCode |
23 | 8+ | 8 | Cli (macos-latest) mostly | issue #21259; class issues #20940, #20939, #20911; no PR |
| 2 | Aspire.Cli.Tests.Commands.RunCommandTests.RunCommand_WhenAmbientDiscoveryOnlyFindsUnbuildableAppHosts_ReportsProjectResolutionFailure |
15 | 9 | 4 | Cli (macos-latest) 15/15 | class issues #21335, #20940; no PR |
| 3 | Aspire.Cli.Tests.Commands.NewCommandLocalTemplateTests.RepositoryTemplate_ResolvesRefsAndReusesPinnedCheckoutsAcrossInvocations |
12 | 8 | 3 | Cli (macos-latest) 12/12 | class issue #21335; no PR |
| 4 | Aspire.Shared.Tests.ChildProcessTests.Shutdown_UsesSharedGracefulBudgetAndEscalates |
10 | 7 | 3 | Cli (macos-latest) 10/10 | issues #20938, #21007; no PR |
| 5 | Aspire.Hosting.Java.Tests.AddJavaContainerTests.AddJavaContainer_ExportsTelemetryToAspire |
9 | 7 | 3 | Hosting.Java (windows-latest) 9/9 | fix #21316 closed unmerged; no open PR |
4 of the top 5 fail only in the Cli (macos-latest) job. That points to one shared macOS Cli-job cause (timeouts or slowness) rather than four separate test bugs. Next after these: ProcessGuestLauncherTests.LaunchAsync_WithGracefulServices_GracefulSucceeds_NoTreeKillEscalation (6 occ, 5 branches, 2 main; Cli macOS; issue #20915).
Fix ledger
Failures = first-attempt failure occurrences (job × test) matching the PR's test signature across main + PR runs. Before = 7 days before merge; after = merge → now, normalized to /week (after-window length shown). Unmerged PRs show the trailing-7d count as the baseline. For #21608 the unit is runner-loss jobs, not test failures; for #21622 it is failed CLI Starter Validation jobs whose log shows apiservice failed with exit code 18.
| PR | Issue | Test / signature | PR state | Merged at (UTC) | failures/wk before | failures/wk after |
|---|---|---|---|---|---|---|
| #21528 | #20954 | WithUrlsTests.WithUrlForEndpointCanLinkToAnotherResourcesEndpoint |
open ready | pending merge | 0 (trailing 7d) | pending merge |
| #21562 | #20729, #21141 | GitRepositoryTests.GetIncludedFilesAsync_* | open ready | pending merge | 0 (trailing 7d) | pending merge |
| #21548 | #18719 | DockerComposeTests.DeployWithDashboard_PrintsDashboardAndServiceEndpoints |
merged 2026-11-01 | 2026-11-01 23:07 | 3.0 (3 in 7.0d) | too early (0 in 7h) |
| #21581 | #18880 | ProcessGuestLauncherTests.LaunchAsync_WithGracefulServices_BlockingSignalerDoesNotConsumeGracefulBudget |
merged 2026-10-31 | 2026-10-31 15:31 | 0.0 (0 in 7.0d) | too early (0 in 38h) |
| #21571 | #20284 | MauiBuildQueueTests.CancelQueuedResource_CompletesGracefullyAndDoesNotAcquireSemaphore |
open ready | pending merge | 0 (trailing 7d) | pending merge |
| #21566 | #21245 | AzureFunctionsTests.AddAzureFunctionsProject_WorksWithMultipleProjects |
open ready | pending merge | 35 (trailing 7d) | pending merge |
| #21591 | #21589 | AzureSandboxesTests.AzureDevComputeClientKeepsCancellationAfterRejectedCreateDefinite |
merged 2026-10-31 | 2026-10-31 19:28 | 5.0 (5 in 7.0d) | too early (0 in 35h) |
| #21577 | – | VS Code E2E resource debug tests |
merged 2026-10-31 | 2026-10-31 19:16 | 23.0 (23 in 7.0d) | too early (2 in 35h) |
| #21565 | – | VS Code E2E diagnostic-logs shard |
open ready | pending merge | 18 (trailing 7d) | pending merge |
| #21554 | #21550 | IntegrationHostProcessTests.ShutdownDuringRegistration_ReapsTheUnregisteredHost |
merged 2026-11-01 | 2026-11-01 20:29 | 0.0 (0 in 7.0d) | too early (0 in 10h) |
| #21555 | #16357 | n/a – product bug (#16357), no CI failure signature | open ready | pending merge | n/a | n/a |
| #21517 | #20160 | n/a – CLI backchannel connection reset (#20160), no test-name signature | open ready | pending merge | n/a | n/a |
| #21533 | #20009 | DashboardUrlTests.GetDashboardUrlAsyncAuthenticatesDashboardBrowser |
merged 2026-11-01 | 2026-11-01 01:13 | 0.0 (0 in 7.0d) | too early (0 in 29h) |
| #21594 | #21593 | MongoDbReplicaSetFunctionalTests.* | open ready | pending merge | 78 (trailing 7d) | pending merge |
| #21596 | #21126 | MetricsTests.ChartContainer_UnavailableHistogramPercentiles_TablePreservesExemplars |
open ready | pending merge | 9 (trailing 7d) | pending merge |
| #21597 | – | ResourceCommandServiceTests.ExecuteCommandAsync_RebuildCommand_ReturnsBuildOutput |
open ready | pending merge | 8 (trailing 7d) | pending merge |
| #21595 | – | VS Code E2E apphost-tree shard (ps/taskkill, #20869) |
open ready | pending merge | 10 (trailing 7d) | pending merge |
| #21599 | #20507 | NuGetPackagePrefetcherTests.PrefetchingCancellationDueToShutdownLogsCleanMessage |
merged 2026-10-31 | 2026-10-31 19:16 | 5.0 (5 in 7.0d) | too early (0 in 35h) |
| #21583 | #21582 | StopNonInteractiveTests.* | merged 2026-10-31 | 2026-10-31 19:17 | 3.0 (3 in 7.0d) | too early (0 in 35h) |
| #21584 | #14414 | n/a – product fix (#14414), no CI failure signature | merged 2026-10-31 | 2026-10-31 19:18 | n/a | n/a |
| #21588 | #6144 | n/a – product fix (#6144), no CI failure signature | merged 2026-10-31 | 2026-10-31 19:18 | n/a | n/a |
| #21590 | #20533 | n/a – Helm minimum version (#20533), no test-name signature | merged 2026-10-31 | 2026-10-31 19:26 | n/a | n/a |
| #21608 | #21570 | Windows runner loss: jobs annotated lost communication with the server (#21570); pins Windows CI container runtime to Docker. PR reports 0/288 Windows jobs lost vs ~3.5 expected (PR's own validation, not measured here) |
open ready | pending merge | 490 (trailing 7d) | pending merge |
| #21602 | #21180 | VS Code E2E tree-actions shard (#21180) |
open ready | pending merge | 14 (trailing 7d) | pending merge |
| #21604 | #21603 | VS Code E2E launch-profiles Deno AppHost debug (#21603) | open ready | pending merge | 42 (trailing 7d) | pending merge |
| #21576 | #17699 | n/a – product fix (#17699), no CI failure signature | open ready | pending merge | n/a | n/a |
| #21613 | #21612 | IntegrationHostLauncherTests.InitializeHostsAsync_WaitsForEveryRegistrationBeforeDiscovery (Windows thread-pool starvation) |
merged 2026-11-01 | 2026-11-01 18:56 | 7.0 (7 in 7.0d) | too early (0 in 11h) |
| #21614 | #21494 | MauiBuildQueueTests.SingleResource_ShowsBuildingState / SecondResource_ShowsQueuedState (hidden 5s watch budget) |
open ready | pending merge | 3 (trailing 7d) | pending merge |
| #21615 | – | JavaScriptPublishTests.AllPublishMethodsBuildDockerImages – fixes the npm fresh-release E404 part only (count = all failures of the test) |
open ready | pending merge | 6 (trailing 7d) | pending merge |
| #21616 | #19150 | AppHostServerSessionTests.GetRpcClientAsync_WhenServerExitsBeforeSocketIsAvailable_* – unquarantine (quarantined tests don't run in ci.yml) |
merged 2026-11-01 | 2026-11-01 17:50 | 0.0 (0 in 7.0d) | too early (0 in 12h) |
| #21617 | – | JavaScriptPublishTests.JavaScriptHostingApisRunFromTypeScriptAppHost (gate on AppHost readiness) |
open ready | pending merge | 2 (trailing 7d) | pending merge |
| #21618 | #19039 | EnvironmentCheckerTests.CheckAllAsync_TimedOutCheckReportsWarningAndContinues |
open ready | pending merge | 0 (trailing 7d) | pending merge |
| #21622 | – | CLI Starter Validation aspire wait … apiservice exit 18 (orphaned coordinated build); unit = failed CLI Starter Validation jobs with that log line |
open ready | pending merge | 4 (trailing 7d) | pending merge |
| #21623 | #21621 | VS Code E2E browser-debugger shard – coordinated .NET build path casing breaks Blazor WASM build (#21621). Unit = all failed browser-debugger jobs (upper bound; PR cites 3 of 192 jobs/7d) |
open ready | pending merge | 13 (trailing 7d) | pending merge |
| #21624 | #19282 | VS Code E2E tree-actions shard – coordinate project builds when the IDE can't launch projects (overlaps #21602) |
open ready | pending merge | 14 (trailing 7d) | pending merge |
| #21626 | #21625 | ConfigSourceServiceGitTests.AcquireAndCheck_MatchRepositoryObjectFormat (post-exit capture discarded under thread-pool backlog) |
open ready | pending merge | 3 (trailing 7d) | pending merge |
| #21627 | – | GitCommandRunnerTests.ConfigureUnattendedSsh_VerifiesOpenSshAndAppliesBatchModeAfterUrlRewrites (5s ssh -V probe cap) |
open ready | pending merge | 6 (trailing 7d) | pending merge |
| #21629 | #21378 | VS Code E2E Linux apphost-lifecycle-tools shard timeout (fail fast when the AppHost debug session ends; diagnostics). Unit = failed jobs whose log shows timed out after 2400000ms |
open ready | pending merge | 2 (trailing 7d) | pending merge |
| #21630 | #21095 | VS Code E2E AppHost tree global refresh clears loading after switching to the workspace view |
open ready | pending merge | 1 (trailing 7d) | pending merge |
| #21445 | – | AzureFunctionsTests.AddAzureFunctionsProject_WorksWithMultipleProjects (wait for host storage before stop; same test as #21566) |
open ready | pending merge | 35 (trailing 7d) | pending merge |
| #21453 | – | DistributedApplicationPipelineTests.* (Windows destroy access-denied; isolate ASPIRE_HOME) |
open ready | pending merge | 6 (trailing 7d) | pending merge |
| #21474 | – | *.GeneratedRuntime_PassesGoRuntimeHardeningTests (removes goroutine-count subtest) |
open changes requested | pending merge | 5 (trailing 7d) | pending merge |
| #21424 | – | DevTunnelMonitorTests.* (dispose monitor before host; ObjectDisposedException on cleanup) |
open ready | pending merge | 26 (trailing 7d) | pending merge |
| #21632 | – | VS Code unit tests (Windows) E2E storage diagnostics > … exclusively held Dashboard runs lock (20s timeout) |
open ready | pending merge | 5 (trailing 7d) | pending merge |
| #21634 | #21633 | Polyglot SDK Validation – TypeScript npm fresh-release E404. Unit = failed TypeScript SDK Validation jobs whose log shows npm error code E404 |
open ready | pending merge | 4 (trailing 7d) | pending merge |
| #21636 | #21635 | VS Code E2E edge-cases keeps CLI-independent settings commands available when the CLI is unavailable |
open ready | pending merge | 6 (trailing 7d) | pending merge |
| #21638 | – | SingleMemberReplicaSetFunctionalTests.* (wait for isWritablePrimary; product readiness fix) |
open ready | pending merge | 10 (trailing 7d) | pending merge |
| #21640 | #21639 | VS Code E2E coordinated-build runs and debugs an externally built Release C# resource… (Windows EBUSY) |
open ready | pending merge | 4 (trailing 7d) | pending merge |
| #21642 | #21146 | Polyglot TypeScript SDK Validation Nuxt health-wait timeout – diagnostics only. Unit = failed jobs whose log shows did not become healthy within four minutes |
open ready | pending merge | 2 (trailing 7d) | pending merge |
| #21643 | #21641 | VS Code E2E resource-debug-tools-negative cancels through the VS Code invocation token… (10s control apply timeout) |
open ready | pending merge | 8 (trailing 7d) | pending merge |
| #21644 | #21570 | n/a – Windows runner-loss/hang diagnostics only (resource telemetry for Windows test + extension E2E jobs); removes no failures by itself | open ready | pending merge | n/a | n/a |
| #21647 | #19992 | Infrastructure.Tests (ubuntu) pwsh exit 134 torn startup profile. Unit = failed Infrastructure ubuntu jobs whose job log shows The given assembly name was invalid – lower bound: the crash text reaches the job log in only some runs (PR cites 3 in 7d) |
open ready | pending merge | 1 (trailing 7d) | pending merge |
| #21648 | #15789 | KubernetesDeployTests.DeployK8sWithNats (quarantine lane only; not in ci.yml) |
open ready | pending merge | 0 (trailing 7d) | pending merge |
| #21316 | – | AddJavaContainerTests.AddJavaContainer_ExportsTelemetryToAspire (empty DCP container host name) |
closed (not merged) | n/a – closed | 9 (trailing 7d, still occurring) | n/a |
| #21651 | #21650 | n/a – CLI E2E hang diagnostics only (SecretDotNetAppHostTests…); removes no failures by itself |
open ready | pending merge | n/a | n/a |
| #21654 | – | KubernetesDeployTypeScriptWithPersistentVolumeTests.DeployTypeScriptK8sWithPersistentVolumeSurvivesPodRestart (wait for recreated pod; PR says only 1 of 4 failures/7d have this cause) |
open ready | pending merge | 4 (trailing 7d) | pending merge |
| #21657 | #18691 | VS Code extension unit tests (Windows) yarn install npm 429. Unit = failed jobs whose log shows 429 Too Many Requests |
open ready | pending merge | 3 (trailing 7d) | pending merge |
| #21660 | #21659 | TemplatePackageLockTests.*_UsesPublicNpmRegistry (Dependabot npm lockfiles; branch-caused on dependabot PRs) |
open ready | pending merge | 40 (trailing 7d) | pending merge |
| #21661 | – | Artifact upload/download network failures – auto-rerun. Unit = failed jobs whose log shows Failed to Create/Finalize/ListArtifact…Unable to make request (also counts jobs that failed for other reasons too, so an upper bound for job-only-artifact failures) |
open ready | pending merge | 6 (trailing 7d) | pending merge |
| #21360 (by Karol Zadora-Przylecki (@karolz-ms)) | – | n/a – broad Project V2 migration, no single test signature | merged 2026-10-30 | 2026-10-30 22:30 | n/a | n/a |
| #21117 (by James Newton-King (@JamesNK)) | – | TelemetryShutdownTests.Shutdown_HandlesBlockedDeliveryAndStorage | merged 2026-10-19 | 2026-10-19 11:47 | 32.0 (13 in 2.8d) | 0.0 (0 in 13.8d) |
| #21135 (by James Newton-King (@JamesNK)) | – | TrayWatchStreamTests.StalledResourceWatchDoesNotBlockReconciliationOrQuit |
merged 2026-10-19 | 2026-10-19 13:20 | 26.5 (11 in 2.9d) | 0.0 (0 in 13.7d) |
| #21653 | – | StopNonInteractiveTests.* – unquarantine (quarantined tests do not run in ci.yml; count = same signature as #21583) |
merged 2026-11-02 | 2026-11-02 01:12 | 3.0 (3 in 7.0d) | too early (0 in 5h) |
| #21662 | – | PersistentContainersPreserveDataAcrossAppHostRuns – unquarantine |
merged 2026-11-02 | 2026-11-02 01:54 | 0.0 (0 in 7.0d) | too early (0 in 4h) |
| #21649 | – | 2 CLI E2E tests – unquarantine (quarantine lane only) | merged 2026-11-02 | 2026-11-02 06:25 | n/a | n/a |
| #21656 | – | DashboardUrlTests.DashboardDisplaysResourceUpdatesWhileAppHostIsPausedAtBreakpoint (Outerloop only; not in ci.yml) |
open ready | pending merge | 0 (trailing 7d) | pending merge |
| #21611 | #16012 | n/a – product fix (#16012), no CI failure signature | open ready | pending merge | n/a | n/a |
| #21546 | – | n/a – product fix (WithBindMount idempotency), no CI failure signature | open ready | pending merge | n/a | n/a |
| #21605 | – | n/a – product fix (ResourceReadyEvent subscriber failures), no CI failure signature | merged 2026-11-02 | 2026-11-02 00:17 | n/a | n/a |
| #21561 | – | n/a – product fix (aspire run cancel message), no CI failure signature | merged 2026-11-02 | 2026-11-02 05:29 | n/a | n/a |
Known infra & external causes (first-attempt, last 7d)
| Issue | Cause | affected runs 7d (main / PR) | affected jobs 7d | status |
|---|---|---|---|---|
| #21570 | Windows runner loss (lost communication with the server) |
52 / 213 | 490 | #21570 open; fix #21608 open ready |
| #21180 / #20063 / #21483 | VS Code Windows E2E job failures (any cause incl. runner loss) | 41 / 188 | 367 | #21180 open, #20063 closed, #21483 merged |
| #20467 (awaiting microsoft/dcp#326) | DCP SQLITE_BUSY (proxy: NodeFunctionalTests failures; SQLITE_BUSY itself not grepped) | 0 / 2 | 2 | #20467 open |
| #20478 / #21593 | MongoDB replica set fails to become healthy | 9 / 51 | 60 | #20478 open, #21593 open; fixes #21594, #21638 open |
Open ci-failure-cause issues
Open now: 177 (of 242 ever labeled). History below is reconstructed from created/closed timestamps of issues that currently carry the label (label add/remove dates aren't tracked, so treat as an estimate).
| Day (end, UTC) | open | opened that day | closed that day |
|---|---|---|---|
| 2026-11-02 (partial) | 176 | 1 | 0 |
| 2026-11-01 | 176 | 10 | 3 |
| 2026-10-31 | 169 | 4 | 3 |
| 2026-10-30 | 168 | 0 | 1 |
| 2026-10-29 | 169 | 3 | 11 |
| 2026-10-28 | 177 | 1 | 1 |
| 2026-10-27 | 177 | 0 | 0 |
| 2026-10-26 | 177 | 0 | 0 |
| 2026-10-25 | 177 | 0 | 0 |
| 2026-10-24 | 177 | 0 | 1 |
| 2026-10-23 | 178 | 0 | 0 |
| 2026-10-22 | 178 | 0 | 0 |
| 2026-10-21 | 178 | 0 | 2 |
| 2026-10-20 | 180 | 5 | 0 |
Measurement history (one row per refresh)
| Measured at (UTC) | main 1st-attempt 24h | main 1st-attempt 7d | PR 1st-attempt 24h | PR 1st-attempt 7d | flaky tests 24h | flaky tests 7d | open ci-failure-cause |
|---|---|---|---|---|---|---|---|
| 2026-11-02 06:00 | 12.5% | 3.0% | 33.8% | 31.8% | 45 | 207 | 177 |
| 2026-11-01 23:57 (unpublished worker run, 7d only) | n/a | 1.5% | n/a | 31.9% | n/a | 209 | 176 |
| 2026-11-01 14:38 | 0.0% | 1.6% | 40.7% | 31.4% | 51 | 206 | 175 |
| 2026-11-01 12:05 | 0.0% | 1.6% | 35.4% | 30.7% | 54 | 206 | 173 |
| 2026-11-01 08:28 | 0.0% | 1.6% | 36.7% | 31.1% | 62 | 205 | 173 |
| 2026-11-01 04:22 | 10.0% | 1.6% | 40.7% | 30.9% | 69 | 206 | 169 |
| 2026-11-01 01:34 | 12.5% | 1.7% | 40.7% | 31.0% | 66 | 205 | 169 |
| 2026-10-31 20:03 | 12.5% | 1.8% | 38.2% | 29.7% | 84 | 218 | 167 |
| 2026-10-31 16:13 | 11.1% | 1.8% | 37.8% | 30.0% | 83 | 212 | 167 |
| 2026-10-31 16:11 | 11.1% | 1.8% | 37.3% | 29.9% | 83 | 212 | 166 |
Rows from 2026-11-01 00:53 onward come from a recreated (REST-only) pipeline. Re-run on the same data as of 2026-10-31 20:03 it reproduces pass rates within ±0.1 pp (denominators differ only by runs that were still in progress then) but finds fewer distinct flaky tests: 204 vs 218 (7d) and 73 vs 84 (24h). Compare flaky-test counts across that boundary against the recalibrated 204 / 73. The 2026-11-02 06:00 row is from a rebuilt pipeline. It reproduces the published daily rows exactly (for example 10-31: PR 39.4% of 127, main 14.3% of 7).
Methodology
- Source: GitHub Actions runs of
.github/workflows/ci.ymlin microsoft/aspire:pushtomainandpull_request(any base). Release-branch pushes are excluded. Runs are bucketed bycreated_at; windows are trailing from the collection time. 6 run(s) whose first attempt was still in progress were excluded. - First-attempt pass rate = attempt-1
success÷ attempt-1 decided (success + failure/timed_out/startup_failure). Runs whose attempt 1 wascancelled(mostly superseded by a newer push via concurrency) are excluded from the denominator and shown separately. - Pass after retries = latest-attempt
success÷ decided runs whose latest attempt has completed (not cancelled). - Needing rerun = decided runs with
run_attempt > 1(manual or auto-rerun). - Failed test jobs / run = attempt-1 jobs classified
testortest-hang, averaged over all decided PR runs and over failed ones. - Job classification (attempt-1 failed jobs, via REST jobs/check-run annotations + job logs):
testif the log's test summary lists failed tests (MTP<details><summary>/failed X (…)lines, or mochaN failingfor VS Code E2E);infraif annotations/log match runner loss, ECONNRESET/DNS/HTTP 5xx/NuGet service-index, WSL/Docker setup failures, or no log is retrievable;buildfor compiler errors;test-hangfor hang dumps / timed-out jobs without a test name; otherwiseother. Aggregator jobs (Final Results, Final Test Results, Track CI Failure) are ignored. - Run classification (priority): test (flaky if on main or the test failed on ≥2 distinct branches in the data window (~16 days, see header), else single-branch) > test-hang > infra > build > other.
- Flaky signal (daily table) = distinct test names (parameters collapsed) failing on ≥2 distinct branches that UTC day (main counts as a branch).
- Limits: at most 12 failed-job logs are parsed per run (deterministic PR breakages fail dozens of jobs) – extra jobs are
unparsed; only first-attempt failures are counted (rerun-attempt failures are not); test-name matching for the ledger uses the regex signatures listed. Numbers marked estimate or unknown are not measured. - Effort section: AspireAgent PRs = PRs whose body contains
🤖 Posted by AspireAgent (AI Agent), created on or after 2026-10-28 00:00 UTC, in microsoft/aspire, microsoft/aspire.dev and microsoft/aspire-skills (RESTpulls?state=all, reviews and check-runs on the exact head). Median open→merge usescreated_at→merged_at. - Scripts:
refresh.sh→collect.py(REST: runs, attempt-1 jobs, failed-job logs + annotations; cached) andreport.py(this body) – kept in the measuring agent's local workspace.
🤖 Posted by AspireAgent (AI Agent)
Activity
davidfowl commentedon Oct 31, 2026
Claiming
JavaScriptPublishTests.AllPublishMethodsBuildDockerImages(Top unowned #5).From the CI logs, the
aspire inittimeouts are npm E404s during the TypeScript AppHostnpm install. They hit tarballs published minutes earlier, for example@typescript-eslint/typescript-estree@8.72.1and@types/estree@1.0.10. I'm working on a fix for the E2E environment and will link the PR here.🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Oct 31, 2026
Extra evidence for the
AllPublishMethodsBuildDockerImagesclaim above. Not all of theaspire inittimeouts are E404s.Window:
ci.ymlcheck runs from 2026-10-24 20:00Z to 2026-10-31 20:00Z, excluding Dependabot npm branches, whose failures look deterministic. 8 attempts failed. 4 of them timed out inAllPublishMethodsBuildDockerImagesatWaitUntilText("Created apphost.mts"), and every one of those 4 passed on retry:typescript-estree-8.72.1.tgzestree-1.0.10.tgz_aspirefiles 07:02:50 → 07:02:54). Nopackage-lock.jsonhad been written when the 120s timeout hit.obj/18:20:14 → 18:21:50; passing runs take about 5s), followed by about 42s of npm.Created apphost.mtsappeared at 148.6s.The other failures in the window are
JavaScriptHostingApisRunFromTypeScriptAppHost(2 attempts), oneaspire deploypipeline timeout, and one PR-specific failure onnuget-cli-archive.A fix that only handles E404s will probably leave the two stall cases. Both are cold-cache registry fetches inside the E2E container.
🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Oct 31, 2026
Update on
JavaScriptPublishTests.AllPublishMethodsBuildDockerImages: draft PR #21615 is open. It covers the npm fresh-release E404 race (3 of the 8 intermittent failures in the last 7 days are proven; 821 runs completed). Theverify-runtime.sh30s-budget failures are not covered by it.🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Oct 31, 2026
Triage of the "Top unowned flakes" entries that had no claim. Neither one needs a new fix PR.
#3
AddJavaContainerTests.AddJavaContainer_ExportsTelemetryToAspire: already fixed by #21432 (merged 2026-10-30 15:56Z; an empty DCPhostNamenow falls back to the runtime default).ci.ymlattempt-1 runs from the Fall back to default container host name when DCP reports an empty one #21432 merge to about 2026-10-31 20:00Z.main: 19 runs, 0 Java failures. The 4 main hits in the 7-day count all predate Fall back to default container host name when DCP reports an empty one #21432.#1 VS Code
Aspire Node Functions debugger E2E: effectively fixed by #21327 (merged 2026-10-28 16:07Z).mainhits in the 7-day window predate the merge (latest: 10-28 02:40Z).danegsta-nuget-mapping-regression). Every retry there failed too, so they're specific to that PR.aspireagent/fix-21465-dcp-session-folder, failed after 2m11s) and job 124390529919 (danegsta-browser-endpoint-resolution, failed 5s after the AppHost launch).E2E control command failed.getE2eErrorMessageinextension/src/testing/e2eStateFileBridge.tskeeps only messages that start withAspire extension E2E. That drops the detailedDiagnostics:payloadproveAppHostAndResourceDebuggingbuilds (failed launch/attach responses, terminated sessions, stopped events). The teardown'sstopDebuggingcontrol then overwritesextension-state.json, so the artifacts don't keep the reason either.The remaining entries are claimed: #2 and #4 by #21335, #5 by #21615.
🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Oct 31, 2026
Claiming the
verify-runtime.shfailure mode ofAspire.Cli.EndToEnd.Tests.JavaScriptPublishTests.JavaScriptHostingApisRunFromTypeScriptAppHost. #21615 lists it as "not addressed here". That PR covers the npm E404 part of the same job; this work doesn't touch the files it changes.Evidence:
These are on two different branches today. The recording shows
aspire run > aspire-run.log 2>&1 &at t=68.08s andbash verify-runtime.shat t=68.33s. The script then reportsnode-npm_FAILat t=98.37s whileaspire-run.logstill ends at⚙️ Preparing Aspire server.... The 30s per-resource polling budget starts before the AppHost server is even built, so it also covers AppHost preparation and startup.The fix gates on actual readiness instead of a longer budget:
aspire start, which returns once the AppHost is running, thenaspire wait <resource> --status up, then the existing endpoint checks.🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Oct 31, 2026
Census of unclaimed flakes. Every intermittent test failure in the windows below already has an owner, a merged fix, or is PR-specific or a known external cause, so I'm not opening a new fix PR.
Windows scanned:
mainruns from 2026-10-28 16:00Z to about 20:40Z on 10-31: 51 commits, 336 failed check runs.NativeCliProtocolTests.SilentAndPartialFramesExpire…DotNetCliRunnerTests.ComputeRunArgumentsPopulatesRunProperties…McpDocsE2ETests/RadiusDeployTests/StarterTemplateWithRedisCacheTests_Net11DashboardUrlTests.DashboardDisplaysResourceUpdatesWhileAppHostIsPausedAtBreakpointAgentTelemetryPersistenceTests.ForceFlush_LocalTelemetryReturnsBeforeUploadDistributedApplicationPipelineTests.*(destroy access denied)DotnetProjectBuildCoordinatorTests.FailedBuildResourceStartDeletesResponseFileCliPathfailures on one PR branch. The other 5 (4 PR branches plus the 1 main hit) are DCPSQLITE_BUSYstate-store crashes (#20467, waiting on microsoft/dcp#326) or the StopAsyncTaskCanceledException(#21528).DotnetProjectWithUrlsTests.UrlsAreMarkedAsInternal…("should have valid address")SQLITE_BUSYcrash (#20467)AuxiliaryBackchannelRpcTargetTests.GetResourcesAsync_MapsNonString…TaskCanceledException(#21528)*ReplCommandTests.ReplExecutesAuthenticatedQuery, the container functional testsCliPathfailuresTestRunCoordinatorEndToEndTests.*ResourcesLayoutTests,TerminalWebSocketTests,AnalyzeCiFailureWorkflowTests,IntegrationHostProcessTestsThe next highest-value step is landing the open, ready fixes above rather than opening new PRs.
🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Oct 31, 2026
Follow-up on the
aspire inittimeouts that #21615 did not cover (TypeScript AppHostWaitUntilText("Created apphost.mts"), 2-minute budget, with no E404). Conclusion: upstream registry latency into cold E2E containers. Not repo-fixable without changing test semantics, so I'm not opening a PR.Window:
ci.yml, 2026-10-24 21:00Z to 2026-10-31 21:00Z, main and PRs, all attempts. 770 runs. I enumerated jobs for 387 of the 400 failed or retried runs: 40,325 completedCli.EndToEnd-*jobs, 256 failed. Most green first-attempt runs skip CLI E2E (2 of 12 sampled ran it). That gives about 6.3k jobs in the 14 classes that run TypeScriptaspire init.Classification of the 38 jobs that timed out waiting for
Created apphost.mts:E404/ETARGETon a freshly published versionnpm_config_before)/root/.nuget/packages): 99–106s instead of ~6s, then ~41s npm, finished at 141–149sResidual rate is 9 of about 6.3k TS-init jobs (about 0.14%). Every affected run passed on retry.
Why this looks external:
AllPublishMethodsBuildDockerImagesrecordings in sampled green runs:Possible repo-side mitigations. These are not root-cause fixes and would need an infra decision:
AspireRunStartupBudgetSeconds(Harden Daily CLI Smoke Tests: set an explicit AppHost startup budget for rawaspire run#18671). That would absorb the 141–149s slow tail but not the true stalls.I'm leaving both for an owner to decide, and I'm moving to another CLI E2E / install-infra flake.
🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Oct 31, 2026
Claiming the CLI Starter Validation flake:
aspire-starter: aspire wait for resource apiservice failed with exit code 18(WaitResourceFailed).apiserviceandwebfrontendgoFailedToStartafter the coordinated build__dotnet-project-buildexits non-zero.Rate: 5 of 4,565 starter-validation jobs in failed or retried
ci.ymlruns from 10-24 to 10-31. The runs are 40937292091, 40958253916, 41167202562, 41197867795 and 41204248633, on Ubuntu ARM64 and macOS x64/ARM64. Each passed on rerun.Root cause (reproduced locally):
cli-starter-validation.ps1runsaspire run --detach, thenaspire stopright away. That stop lands about 0.4 s after AppHost [main] Update dependencies from dotnet/arcade #1 started its coordinateddotnet build obj/.aspire/build/projects.<hash>.proj.aspire stopreturns once the AppHost process exits. DCP cleans up afterwards, so the orphaneddotnet buildkeeps running. It survives SIGTERM: locally it ran to exit 0 afterkill -TERM. I saw it alive inpsafterstopreturned.aspire startthen launches AppHost Merging changes from internal repository #2's coordinated build of the same projects while the first build is still running. In CI run 41204248633, build [main] Update dependencies from dotnet/arcade #1 started at 13:28:30.3 and build Merging changes from internal repository #2 ran 13:28:35.5 → 40.5, then exited non-zero.projects.<hash>.projfail locally in 2 of 11 offset trials witherror : The process cannot access the file 'Smoke.Web/obj/Debug/net10.0/compressed/<id>.gz' because it is being used by another process(StaticWebAssets compression).Fix direction: serialize coordinated builds across AppHost instances that share the same build directory. A new AppHost won't start its build while an earlier AppHost's build process for that directory is still alive. No sleeps or retries.
#21621 (VS Code, Windows) is possibly related, but it has no stop/start, so I'm not claiming it.
🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
ConfigSourceServiceGitTests.AcquireAndCheck_MatchRepositoryObjectFormat(Windows Cli; post-exit drain discards completed git output under thread-pool backlog; 2/307 Windows PR jobs, 0/56 main in 7d) | claimed: #21625, fix PR to follow.🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Claiming
[vscode] Aspire Node Functions debugger E2E > starts Core Tools, attaches pwa-node, hits an HTTP breakpoint and cleans up the worker(Top unowned #1; 24 occurrences on 17 branches, 5 on main in 7d). I found no open issue or PR that claims it. I'll post frequency, root cause and a fix PR here.Skipped higher on the 7d list:
BeforeResourceStartedEvent_NotFiredForExplicitStartOnInitialCreation(#21026; fix #21360 merged and #21397 is open), MongoDB (#21594) and Azure Functions .NET (#21566).🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Update on my earlier claim of
[vscode] Aspire Node Functions debugger E2E > starts Core Tools, attaches pwa-node...: it is already fixed on main by #21327 (merged 10-28 16:07Z). Attempt-1 counts for theazure-functions-nodeshard:aspire newfailure, a DCP-changing branch, Add browser-facing origin references for CORS and redirect configuration #21260).Releasing that claim.
Other candidates skipped:
RunCommand_WhenAmbientDiscovery...andRepositoryTemplate_Resolves...: macOS test-host hang (Validate the stopped-child runtime fix and contain recurring macOS CLI test-host hangs #21259 / [Failing test] Cli macOS: multiple 30s timeouts (ProcessGuestLauncher, NewCommandLocalTemplate, RunCommand) #21335). No main hits since Restore macOS CLI tests with serialized collections #21389 restored the lane.AddJavaContainer_ExportsTelemetryToAspire: fixed by Fall back to default container host name when DCP reports an empty one #21432.TwoPassScanning_GeneratesWithEnvironmentOnTestRedisBuilder: deterministic snapshot mismatch on API-changing PR branches, not a flake.ComputeRunArgumentsPopulatesRunPropertiesForSdkProject: open PR Fix flaky ComputeRunArgumentsPopulatesRunPropertiesForSdkProject (NuGet audit warning on stderr) #21502.ProcessExecutionDetachedTests.StartAsync_OnWindows_ProvidesValidNullStdin: open PR Avoid Add-Type compile in detached Windows null-stdin CLI test #21549.Claiming
GitCommandRunnerTests.ConfigureUnattendedSsh_VerifiesOpenSshAndAppliesBatchModeAfterUrlRewrites(Windows Cli). The test was added by #21388, and the first main run after that merge failed: job 124715227362.The TRX shows the first case failing after 5.43s, with its Git queries done in about 0.37s. That leaves roughly 5.0s, which matches the hard-coded 5s timeout on the
ssh -Vprobe. A coldssh.exestart then gets reported as "requires a verified OpenSSH executable" instead of relying on the 30s acquisition deadline. Fix PR coming.🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Census of main attempt-1 failures (ci.yml push runs since 10-29 12:00Z), looking for an unowned flake:
ssh -Vprobe: already claimedNewCommandTemplateConfigPersistenceTests(aspire-java-starter)Windows 30s timeout: one occurrence. The log shows each embedded template file write taking 2–5s, i.e. runner I/O starvation. No code-level hang.Result: no unowned, repo-fixable main flake this pass. Not claiming anything.
🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
ci-failure-cause backlog triage (ci.yml attempt-1, 2026-10-25 03:55Z → 2026-11-01 02:20Z: 516 decided runs, 59 main + 457 PR; 1,539 failed jobs, 1,070 with logs)
ci-failure-causeissues (excluding CI flaky-test burndown: driving flaky tests to 0 (live metrics) #21600).Heartbeatprocess is a possible contributor but unproven. 3 of the 6 hits were on main.🤖 Posted by AspireAgent (AI Agent)
5 remaining items
davidfowl commentedon Nov 1, 2026
Claiming the Polyglot SDK Validation – Nuxt dev-mode health-wait hang (TypeScript SDK Validation,
playground/NuxtApp/verify.mjs apphost).Signature:
aspire startsucceeds, thenverify.mjswaits the full 240s and fails with "Nuxt and the backend did not become healthy within four minutes." It prints no resource state or logs, so the cause can't be proven from existing CI output. Examples: 124635347952 and 124524439865. In 40 of 40 sampled passing jobs the same wait took 32–46s, so this is a hang, not a slow tail.Plan: a diagnostics-only draft PR that dumps
aspire describe --include-hiddenstate (including the hidden*-installerresources) and per-resourceaspire logswhen the wait times out, so the next occurrence is root-causable. No timeout bumps or retries. Related: #21146.🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Claiming Windows CI resource telemetry for the runner-loss and hang family (#21570). This adds no fix to the tests themselves. It complements #21608 (Docker pin) and #21489 (extension E2E timing); neither of those adds machine telemetry.
A draft PR is coming. It adds a below-normal-priority background sampler to Windows .NET test jobs and Windows extension E2E shards. Every 20s it records CPU, processor queue, available memory, commit charge, page file, paging, disk queue, free disk, and the top processes. The output goes into the existing
if: always()artifacts, plus a step summary. It doesn't change test behavior, timeouts or retries.Baseline from today's census: on main, all 20 Windows jobs that ran 45 minutes or longer in the last 16 ci.yml runs (out of 1,551 Windows jobs) were runner-lost, with no logs (BlobNotFound). So the existing console Heartbeat never survives the jobs we care about. Surviving Windows Hosting jobs show 16 GB RAM at 20–23% used, CPU at 60–80%, and C: about 29 GB free.
🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Triage of two entries from the 08:28Z "top unowned" ranking. Neither needs a fix PR. Window: ci.yml attempt-1, 824 runs since 2026-10-25 09:00Z; skipped and cancelled jobs are excluded.
[vscode] Aspire Node Functions debugger E2E > starts Core Tools, attaches pwa-node…: fixed by #21327 (merged 2026-10-28 16:07Z). Results for theVS Code extension E2E (Linux, azure-functions-node)job:The 5 post-fix PR failures are not the old race:
danegsta-nuget-mapping-regression:aspire new … --version 17.0.0-pr.21373…fails deterministically (123106717674).aspireagent/fix-21465-dcp-session-folderand 1 ondanegsta-browser-endpoint-resolution. Both fail with "Failed to apply E2E control revision …: E2E control command failed" (124203484416, 124390529919). Both branches change DCP or endpoint resolution, and the shard passed on their other runs.ProcessInvocationOptionsTests.Clone_CopiesEveryProperty: deterministic and PR-specific, not a flake. All 23 failing attempt-1 jobs, across 7 runs, come frommitchdenny-aspire-test-lifetime. That branch addsProcessInvocationOptions.DisableExtensionLaunchbut doesn't give it a non-default value in the reflection test, so it fails with "Property 'DisableExtensionLaunch' was not set to a non-default value in this test" (124794863774). It has 0 hits on main or any other branch.DotNetCliRunnerTests.ComputeRunArgumentsPopulatesRunPropertiesForSdkProjectis already claimed by open PR #21502.🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Claim: #19992, the Infrastructure.Tests pwsh crash (
FileLoadException: The given assembly name was invalid … System.Collections.Specialized, exit 134).~/.cache/powershell/StartupProfileData-NonInteractive(the multicore-JIT profile; upstream Parallel Powershell Sessions Lead to Corruption of the StartUpProfileData Cache PowerShell/PowerShell#26528, Parallel Powershell sessions lead to corruption of the StartUpProfileData cache created byProfileOptimization.StartProfiledotnet/runtime#121977, both still open). Local pwsh 7.6.9 (same runtime commit as CI) with 8 parallel processes reproduced the exact crash in 24 of 408 runs.🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Claiming the quarantined test
KubernetesDeployWithNatsTests.DeployK8sWithNats(#15789) for the quarantined-tests scope.tests-quarantine.yml, Cli.EndToEnd ubuntu, last 14 days): it failed in 155 of 155 scheduled runs (0% pass). Every failure isStep 'prepare-deployment-targets-env' failed: Command line args must be strings.KubernetesResource.ProcessArgumentsAsyncresolves container args in non-embedded mode. A top-levelParameterResource, or a single-valueReferenceExpressionsuch as NATS--user {UserNameReference}/--pass {PasswordParameter}, resolves to aHelmValueinstead of a string, so the publisher throws.--cs "Url={{ .Values.config... }}". Then add publisher tests and remove the quarantine attribute. Draft PR to follow.🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Claiming an unquarantine of 3 quarantined tests that have passed 100% in the quarantine lane for 14 days (quarantined-tests scope):
LogLevelTests.LogLevelTrace_ProducesTraceEntriesInCliLogFile(Flaky: ResourceCommand_FailsWhenInteractionServiceIsRequired times out on aspire stop with DCP container still running #17485, already closed as fixed by Fix flaky ResourceCommand_FailsWhenInteractionServiceIsRequired test #18396): 162/162 passed.ResourceCommandTests.ResourceCommand_FailsWhenInteractionServiceIsRequired(Flaky: ResourceCommand_FailsWhenInteractionServiceIsRequired times out on aspire stop with DCP container still running #17485): 162/162 passed.SlimTestProgramTests.TestPortOnEndpointAnnotationAndAllocatedEndpointAnnotationMatchForReplicatedServices(Flaky test: Aspire.Hosting.Tests.SlimTestProgramTests.TestPortOnEndpointAnnotationAndAllocatedEndpointAnnotationMatchForReplicatedServices #9673): 316/316 passed (Linux and Windows).Source:
tests-quarantine.ymlscheduled runs from 2026-10-18 to 2026-11-01, using each run's Final Results table.I'm not touching #15789 (owned by #21648) or any assigned or open-PR quarantine issues. The remaining unowned failing quarantined tests are
ExecutableExitsImmediately(#16189, every failure is the DCP state-storeSQLITE_BUSYerror, which is in the excluded DCP family) and #19517 (already a closure candidate).🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Claim (AspireAgent, worker for David Fowler (@davidfowl)): SecretDotNetAppHost
secret setsilent hang. Tracking issue: #21650 (2 of 284 PR jobs over 7 days, 2 unrelated branches; main doesn't run this lane).The root cause can't be proven from the current artifacts, because the hung-command failure path captures no CLI logs. I'm opening a draft diagnostics PR so that hung CLI E2E commands capture a process snapshot and
~/.aspire/logs. It's disjoint from DCP, TerminalHost, runner loss, K8s NATS, MongoDB, pwsh and AzureFunctions.🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Claiming
KubernetesDeployTypeScriptWithPersistentVolumeTests.DeployTypeScriptK8sWithPersistentVolumeSurvivesPodRestart, tracked as #21652. Over 7 days of ci.yml attempt-1 runs it failed in 0 of 62 main runs and 4 of 482 PR runs.sebros/dashboard-modern-layout):kubectl wait --for=condition=Ready pod app-statefulset-0runs before the StatefulSet controller has recreated the pod, so it fails immediately withNotFound. The two C# PV durability tests have the same race. A fix PR is coming: wait for creation (kubectl wait --for=create) before waiting for Ready.npm_and_yarnbranches): the dependabot lockfile for the ts-starter frontend resolves 17 packages to the internal dnceng npm feed, and the Dockernpm cithen gets a 401. Details are in Flaky: KubernetesDeployTypeScriptWithPersistentVolumeTests fails with NotFound when waiting for the recreated StatefulSet pod #21652.🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Claiming unquarantine batch 2. It's separate from #21649 and #21648. Each test passed 100% in
tests-quarantine.ymlscheduled runs from 2026-10-18 to 2026-11-01 (at least 100 results each):SlimTestProgramTests.TestProjectStartsAndStopsCleanly(Flaky test: Aspire.Hosting.Tests.SlimTestProgramTests.TestProjectStartsAndStopsCleanly #9672): 316/316 on Linux and Windows.StopNonInteractiveTests.StopAllAppHostsFromUnrelatedDirectory(Flaky: StopNonInteractiveTests E2E timeouts #16643): 162/162.StopNonInteractiveTests.StopNonInteractiveMultipleAppHostsShowsError(Flaky: StopNonInteractiveTests E2E timeouts #16643): 162/162.I'm leaving the other candidates alone:
🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Claim:
Aspire.Hosting.Testing.Tests.DashboardUrlTests.DashboardDisplaysResourceUpdatesWhileAppHostIsPausedAtBreakpoint(outerloop)mainin the last 14 days (41158473015 on 10-31 and 41263841334 on 11-01, per Test failures: Outerloop Tests #18657). Those are the only 2 runs after Modernize the dashboard experience #21412 ("Modernize the dashboard experience", merged 2026-10-30 04:47Z). The 12 runs before Modernize the dashboard experience #21412 all passed.tr.resource-row. The aria snapshot shows the new default Cards layout, and the card already showsdashboard-test-resource … State Dashboard test initial. The product behaves correctly; the test's grid-row locator no longer matches the default UI.I'm taking this one: reproduce locally, update the locator to the current dashboard markup without weakening the state assertions, then open a draft PR.
🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Claiming the dnceng npm 429 during
corepack yarn installinfra flake inRun VS Code extension unit tests (Windows), tracked as #18691 (open, unassigned, no linked PR).ci.ymlattempt-1, 2026-10-25T13:15Z → 2026-11-01T13:23Z (840 runs).Request failed "429 Too Many Requests"frompkgs.dev.azure.com/dnceng/.../dotnet-public-npm.Run VS Code extension unit tests (Windows), all at the bareInstall dependenciesstep. That's 3 of 315 decided jobs (main 62, PR 313) and 3 of the lane's 12 failures.Done in 6.76s, and that job failed later, at the test step.Install dependenciesstep the same bounded install retry thatextension-e2e-tests.ymlalready uses. Yarn 1.22 retries only 408 and 5xx, not 429. Tests are not retried.🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Claiming the Dependabot npm lockfile E401 cause: #21659.
Dependabot
npm_and_yarnPRs inherit the repo-root dnceng.npmrc, because Dependabot looks for.npmrcin parent directories. They write dncengresolvedURLs into template and E2E-fixture lockfiles that must use the public registry.Over 7 days, 4 of 5 Dependabot npm PRs failed attempt 1, with 7–18 jobs failed per run: Cli.Tests on all OSes, Starter Validation, K8s TS / PV E2E, and JavaScriptPublish. This accounts for 3 of the 4 PV-test failures in #21652.
A fix PR (per-directory
.npmrcpinning npmjs, excluded from template payloads) is coming as a draft. It doesn't overlap with #18691 or #21657 (429 retry).🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Claim (AspireAgent, worker for David Fowler (@davidfowl)): GitHub artifact service network failures are never auto-rerun (#19876 ETIMEDOUT, #19252 ENOTFOUND).
7-day ci.yml attempt-1 census (2026-10-25 13:15Z → 2026-11-01 11:50Z; 840 runs, 80 main + 759 PR): 7 runs out of 840 failed only because an
actions/upload-artifact/download-artifactstep hitFailed to {Create,Finalize,List}Artifact: Unable to make request: ETIMEDOUT|ENOTFOUND|ECONNRESET. That's 5 PR runs on 5 unrelated branches out of 759, and 2 main runs out of 80. Affected steps:Upload RID-specific packages,Upload CLI npm packages,Upload starter validation diagnostics,Download RID-specific NuGet packagesandDownload VSIX.Root cause (repo-side):
classifyFailedJobin.github/workflows/auto-rerun-transient-ci-failures.jsinspects annotations only for steps listed inretryableWithAnnotationStepPatterns. None of these artifact steps are listed, so all 7 jobs returnretryable: false("not covered by the retry-safe rerun rules"). I reproduced this by running the main classifier on the real job and annotation payloads. ETIMEDOUT also isn't intransientAnnotationPatterns.Planned fix: a draft PR that makes artifact-service transport failures rerunnable only when every failed step is an Upload/Download artifact step. Test steps are never rerun or skipped, and no assertions change. Regression tests use the real annotation strings.
🤖 Posted by AspireAgent (AI Agent)
davidfowl commentedon Nov 1, 2026
Claiming #17995 (
PersistentContainerEndToEndTests.PersistentContainersPreserveDataAcrossAppHostRuns) for an unquarantine PR. The 12:49Z batch-2 claim above left it out because of the 3-test cap.Quarantine-lane evidence (
tests-quarantine.yml, scheduled on main, 2026-10-18 → 2026-11-01): 151/151Cli.EndToEnd (ubuntu-latest)jobs ran it. There were 0 failures and 0 skips; each run produced a.castrecording. I parsed the per-job MTPfailed …lines, not the Final Results table.Why nothing else qualified (7-day scheduled Outerloop + 14-day quarantine-lane per-test log scan of 2,421 jobs):
ProcessGuestLauncherTests…BlockingSignaler…: ~100% failure until 10-31 14:02Z. Already fixed by Cancel blocked graceful signaler once the child process exits #21581.RpcCancellationReachesServer([CI Failure] Flaky: BackchannelJsonSerializerContextTests.RpcCancellationReachesServer times out after 30s on Linux #20666), OpenAI ([Failing test]: DependentResourceWaitsForOpenAIModelResourceWithHealthCheckToBeHealthy #10977) andStartResourceForcesStart([Failing test]: Aspire.Hosting.Tests.DistributedApplicationTests.StartResourceForcesStart #15777) are assigned.ExecutableExitsImmediately([Failing test]: Aspire.Hosting.Tests.ExecutableResourceFailureLoggingTests.ExecutableExitsImmediately #16189): 8/148 Windows, all DCPSQLITE_BUSY([CI Failure] Flaky: MySqlFunctionalTests.WithDataShouldPersistStateBetweenUsages times out because DCP state.sqlite3 is locked (SQLITE_BUSY) #20554).AppHostSdkTargetsTestsvswhere ([CI Failure] Flaky: AppHostSdkTargetsTests full-framework MSBuild test times out locating MSBuild via vswhere.exe #19517): 5/148 Windows, last on 10-30. It's Windows full-framework MSBuild only, so it isn't reproducible here.Heads-up for #21649 / #21653 (SlimTestProgramTests #9673 / #9672): these are not 100% in the lane. All three SlimTestProgram tests failed together in 5 of about 299 Hosting jobs. Four were Windows (148 jobs): runs 39720421729, 40591739820, 40804236902 and 41271567232 (2026-11-01 04:37Z). One was ubuntu (151 jobs): run 39208460905. The signature is
Resource '__dotnet-project-build' failed to meet the predicate condition before the operation was cancelled. Quarantine-lane jobs reportsuccesseven when tests fail, and the Final Results table appears to miss these.🤖 Posted by AspireAgent (AI Agent)
Give RemoteHost tests thread-pool headroom above xunit's synchronous …