Skip to content

CI flaky-test burndown: driving flaky tests to 0 (live metrics) #21600

Open

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):

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:

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)

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.yml in microsoft/aspire: push to main and pull_request (any base). Release-branch pushes are excluded. Runs are bucketed by created_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 was cancelled (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 test or test-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): test if the log's test summary lists failed tests (MTP <details><summary> / failed X (…) lines, or mocha N failing for VS Code E2E); infra if annotations/log match runner loss, ECONNRESET/DNS/HTTP 5xx/NuGet service-index, WSL/Docker setup failures, or no log is retrievable; build for compiler errors; test-hang for hang dumps / timed-out jobs without a test name; otherwise other. 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 (REST pulls?state=all, reviews and check-runs on the exact head). Median open→merge uses created_at → merged_at.
  • Scripts: refresh.sh → collect.py (REST: runs, attempt-1 jobs, failed-job logs + annotations; cached) and report.py (this body) – kept in the measuring agent's local workspace.

🤖 Posted by AspireAgent (AI Agent)

Activity

  1. davidfowl commented on Oct 31, 2026

    @davidfowl
    CollaboratorAuthor

    Claiming JavaScriptPublishTests.AllPublishMethodsBuildDockerImages (Top unowned #5).

    From the CI logs, the aspire init timeouts are npm E404s during the TypeScript AppHost npm install. They hit tarballs published minutes earlier, for example @typescript-eslint/typescript-estree@8.72.1 and @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)

  2. davidfowl commented on Oct 31, 2026

    @davidfowl
    CollaboratorAuthor

    Extra evidence for the AllPublishMethodsBuildDockerImages claim above. Not all of the aspire init timeouts are E404s.

    Window: ci.yml check 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 in AllPublishMethodsBuildDockerImages at WaitUntilText("Created apphost.mts"), and every one of those 4 passed on retry:

    Job Cause
    121723096663 (10-26) npm E404 for typescript-estree-8.72.1.tgz
    123265152317 (10-29) npm E404 for estree-1.0.10.tgz
    122678762903 (10-28) npm install stall. The NuGet restore finished in about 4s (_aspire files 07:02:50 → 07:02:54). No package-lock.json had been written when the 120s timeout hit.
    124617913801 (10-31) NuGet restore stall. In-process restore of Aspire.Hosting plus about 74 libraries took 96s (obj/ 18:20:14 → 18:21:50; passing runs take about 5s), followed by about 42s of npm. Created apphost.mts appeared at 148.6s.

    The other failures in the window are JavaScriptHostingApisRunFromTypeScriptAppHost (2 attempts), one aspire deploy pipeline timeout, and one PR-specific failure on nuget-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)

  3. davidfowl commented on Oct 31, 2026

    @davidfowl
    CollaboratorAuthor

    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). The verify-runtime.sh 30s-budget failures are not covered by it.

    🤖 Posted by AspireAgent (AI Agent)

  4. davidfowl commented on Oct 31, 2026

    @davidfowl
    CollaboratorAuthor

    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 DCP hostName now falls back to the runtime default).

    #1 VS Code Aspire Node Functions debugger E2E: effectively fixed by #21327 (merged 2026-10-28 16:07Z).

    • All 5 main hits in the 7-day window predate the merge (latest: 10-28 02:40Z).
    • Check runs after the merge, excluding Dependabot: 573 succeeded, 14 failed, 4 cancelled.
      • 12 failures are on one branch (danegsta-nuget-mapping-regression). Every retry there failed too, so they're specific to that PR.
      • The other 2 passed on retry: job 124203484416 (aspireagent/fix-21465-dcp-session-folder, failed after 2m11s) and job 124390529919 (danegsta-browser-endpoint-resolution, failed 5s after the AppHost launch).
      • That's 2 of about 585 runs (about 0.3%), both on branches that change DCP or endpoint code.
    • Diagnostic gap for whoever investigates further: both failures report only E2E control command failed. getE2eErrorMessage in extension/src/testing/e2eStateFileBridge.ts keeps only messages that start with Aspire extension E2E . That drops the detailed Diagnostics: payload proveAppHostAndResourceDebugging builds (failed launch/attach responses, terminated sessions, stopped events). The teardown's stopDebugging control then overwrites extension-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)

  5. davidfowl commented on Oct 31, 2026

    @davidfowl
    CollaboratorAuthor

    Claiming the verify-runtime.sh failure mode of Aspire.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 and bash verify-runtime.sh at t=68.33s. The script then reports node-npm_FAIL at t=98.37s while aspire-run.log still 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, then aspire wait <resource> --status up, then the existing endpoint checks.

    🤖 Posted by AspireAgent (AI Agent)

  6. davidfowl commented on Oct 31, 2026

    @davidfowl
    CollaboratorAuthor

    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:

    • main runs from 2026-10-28 16:00Z to about 20:40Z on 10-31: 51 commits, 336 failed check runs.
    • Non-Dependabot PR runs from 2026-10-29 20:00Z to now: 368 commits, 823 failed test jobs.
    • Failed tests were extracted from the job logs.
    Candidate (not on the skip list) Hits Disposition
    NativeCliProtocolTests.SilentAndPartialFramesExpire… 4 main commits claimed: #21442
    DotNetCliRunnerTests.ComputeRunArgumentsPopulatesRunProperties… 2 main, 3 branches claimed: #21502
    McpDocsE2ETests / RadiusDeployTests / StarterTemplateWithRedisCacheTests_Net11 3 outerloop main runs #21450 / #21422 / #21423
    DashboardUrlTests.DashboardDisplaysResourceUpdatesWhileAppHostIsPausedAtBreakpoint 8 outerloop jobs fails every outerloop run, so it's not intermittent (#18657)
    AgentTelemetryPersistenceTests.ForceFlush_LocalTelemetryReturnsBeforeUpload 2 branches claimed: #21499
    DistributedApplicationPipelineTests.* (destroy access denied) 2 branches claimed: #21453
    DotnetProjectBuildCoordinatorTests.FailedBuildResourceStartDeletesResponseFile 1 main, 5 branches 6 deterministic CliPath failures on one PR branch. The other 5 (4 PR branches plus the 1 main hit) are DCP SQLITE_BUSY state-store crashes (#20467, waiting on microsoft/dcp#326) or the StopAsync TaskCanceledException (#21528).
    DotnetProjectWithUrlsTests.UrlsAreMarkedAsInternal… ("should have valid address") 1 main DCP SQLITE_BUSY crash (#20467)
    AuxiliaryBackchannelRpcTargetTests.GetResourcesAsync_MapsNonString… 1 main StopAsync TaskCanceledException (#21528)
    *ReplCommandTests.ReplExecutesAuthenticatedQuery, the container functional tests 2–3 branches only on the WSLC-on-Windows PR branch plus one branch with deterministic CliPath failures
    TestRunCoordinatorEndToEndTests.* 5 branches the test exists only in feature draft PR #21527
    ResourcesLayoutTests, TerminalWebSocketTests, AnalyzeCiFailureWorkflowTests, IntegrationHostProcessTests 1–2 claimed: #21516, #21471, #21558, #21554

    The next highest-value step is landing the open, ready fixes above rather than opening new PRs.

    🤖 Posted by AspireAgent (AI Agent)

  7. davidfowl commented on Oct 31, 2026

    @davidfowl
    CollaboratorAuthor

    Follow-up on the aspire init timeouts that #21615 did not cover (TypeScript AppHost WaitUntilText("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 completed Cli.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 TypeScript aspire init.

    Classification of the 38 jobs that timed out waiting for Created apphost.mts:

    Cause Jobs Status
    npm E404/ETARGET on a freshly published version 29 fixed by #21615 (npm_config_before)
    Slow "Preparing Aspire server" (NuGet restore from nuget.org, cold /root/.nuget/packages): 99–106s instead of ~6s, then ~41s npm, finished at 141–149s 3 124521022816, 124617910212, 124617913801
    npm install still running after 144s (no lock file written) 1 122678762903
    "Preparing Aspire server" still running after 133s 1 124521019639
    Install phase, recording not attributable 3 122781136533, 124095196284, 124538123475
    "Preparing Aspire server", recording not attributable 1 124024646675

    Residual rate is 9 of about 6.3k TS-init jobs (about 0.14%). Every affected run passed on retry.

    Why this looks external:

    • The phases that stall are pure registry fetches: about 74 nuget.org packages, plus the npm dependency tree.
    • The slow cases cluster in time across concurrent jobs. Run 41194713391 had 2 classes stall at 11:08Z on 10-31; run 41227466919 had 3 classes at 18:16Z.
    • Passing baseline from 85 AllPublishMethodsBuildDockerImages recordings in sampled green runs:
      • restore + codegen: p50 6.4s, max 8.9s
      • npm install: p50 8.5s, p90 43s, max 78s

    Possible repo-side mitigations. These are not root-cause fixes and would need an infra decision:

    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)

  8. davidfowl commented on Oct 31, 2026

    @davidfowl
    CollaboratorAuthor

    Claiming the CLI Starter Validation flake: aspire-starter: aspire wait for resource apiservice failed with exit code 18 (WaitResourceFailed). apiservice and webfrontend go FailedToStart after the coordinated build __dotnet-project-build exits non-zero.

    Rate: 5 of 4,565 starter-validation jobs in failed or retried ci.yml runs 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):

    1. cli-starter-validation.ps1 runs aspire run --detach, then aspire stop right away. That stop lands about 0.4 s after AppHost [main] Update dependencies from dotnet/arcade #1 started its coordinated dotnet build obj/.aspire/build/projects.<hash>.proj.
    2. aspire stop returns once the AppHost process exits. DCP cleans up afterwards, so the orphaned dotnet build keeps running. It survives SIGTERM: locally it ran to exit 0 after kill -TERM. I saw it alive in ps after stop returned.
    3. aspire start then 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.
    4. Two overlapping builds of the same projects.<hash>.proj fail locally in 2 of 11 offset trials with error : 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)

  9. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    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)

  10. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    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)

  11. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    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 the azure-functions-node shard:

    Releasing that claim.

    Other candidates skipped:

    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 -V probe. A cold ssh.exe start 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)

  12. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    Census of main attempt-1 failures (ci.yml push runs since 10-29 12:00Z), looking for an unowned flake:

    Result: no unowned, repo-fixable main flake this pass. Not claiming anything.

    🤖 Posted by AspireAgent (AI Agent)

  13. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    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)

    🤖 Posted by AspireAgent (AI Agent)

  14. 5 remaining items

  15. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    Claiming the Polyglot SDK Validation – Nuxt dev-mode health-wait hang (TypeScript SDK Validation, playground/NuxtApp/verify.mjs apphost).

    Signature: aspire start succeeds, then verify.mjs waits 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-hidden state (including the hidden *-installer resources) and per-resource aspire logs when the wait times out, so the next occurrence is root-causable. No timeout bumps or retries. Related: #21146.

    🤖 Posted by AspireAgent (AI Agent)

  16. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    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)

  17. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    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 the VS Code extension E2E (Linux, azure-functions-node) job:

    before #21327 after #21327
    main 5 / 23 0 / 37
    PR 19 / 113 5 / 277

    The 5 post-fix PR failures are not the old race:

    • 3 are on danegsta-nuget-mapping-regression: aspire new … --version 17.0.0-pr.21373… fails deterministically (123106717674).
    • 1 is on aspireagent/fix-21465-dcp-session-folder and 1 on danegsta-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 from mitchdenny-aspire-test-lifetime. That branch adds ProcessInvocationOptions.DisableExtensionLaunch but 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.ComputeRunArgumentsPopulatesRunPropertiesForSdkProject is already claimed by open PR #21502.

    🤖 Posted by AspireAgent (AI Agent)

  18. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    Claim: #19992, the Infrastructure.Tests pwsh crash (FileLoadException: The given assembly name was invalid … System.Collections.Specialized, exit 134).

    🤖 Posted by AspireAgent (AI Agent)

  19. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    Claiming the quarantined test KubernetesDeployWithNatsTests.DeployK8sWithNats (#15789) for the quarantined-tests scope.

    • Quarantine lane (tests-quarantine.yml, Cli.EndToEnd ubuntu, last 14 days): it failed in 155 of 155 scheduled runs (0% pass). Every failure is Step 'prepare-deployment-targets-env' failed: Command line args must be strings.
    • Root cause: KubernetesResource.ProcessArgumentsAsync resolves container args in non-embedded mode. A top-level ParameterResource, or a single-value ReferenceExpression such as NATS --user {UserNameReference} / --pass {PasswordParameter}, resolves to a HelmValue instead of a string, so the publisher throws.
    • Plan: render these args as Helm value expressions, using the same embedded-parameter path already used for multi-value args such as --cs "Url={{ .Values.config... }}". Then add publisher tests and remove the quarantine attribute. Draft PR to follow.

    🤖 Posted by AspireAgent (AI Agent)

  20. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    Claiming an unquarantine of 3 quarantined tests that have passed 100% in the quarantine lane for 14 days (quarantined-tests scope):

    Source: tests-quarantine.yml scheduled 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-store SQLITE_BUSY error, which is in the excluded DCP family) and #19517 (already a closure candidate).

    🤖 Posted by AspireAgent (AI Agent)

  21. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    Claim (AspireAgent, worker for David Fowler (@davidfowl)): SecretDotNetAppHost secret set silent 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)

  22. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    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.

    • 1 real flake (sebros/dashboard-modern-layout): kubectl wait --for=condition=Ready pod app-statefulset-0 runs before the StatefulSet controller has recreated the pod, so it fails immediately with NotFound. 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.
    • 3 PR-caused (dependabot npm_and_yarn branches): the dependabot lockfile for the ts-starter frontend resolves 17 packages to the internal dnceng npm feed, and the Docker npm ci then gets a 401. Details are in Flaky: KubernetesDeployTypeScriptWithPersistentVolumeTests fails with NotFound when waiting for the recreated StatefulSet pod #21652.

    🤖 Posted by AspireAgent (AI Agent)

  23. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    Claiming unquarantine batch 2. It's separate from #21649 and #21648. Each test passed 100% in tests-quarantine.yml scheduled runs from 2026-10-18 to 2026-11-01 (at least 100 results each):

    I'm leaving the other candidates alone:

    🤖 Posted by AspireAgent (AI Agent)

  24. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    Claim: Aspire.Hosting.Testing.Tests.DashboardUrlTests.DashboardDisplaysResourceUpdatesWhileAppHostIsPausedAtBreakpoint (outerloop)

    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)

  25. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    Claiming the dnceng npm 429 during corepack yarn install infra flake in Run VS Code extension unit tests (Windows), tracked as #18691 (open, unassigned, no linked PR).

    • Window: ci.yml attempt-1, 2026-10-25T13:15Z → 2026-11-01T13:23Z (840 runs).
    • Hits: 5 failed jobs contain Request failed "429 Too Many Requests" from pkgs.dev.azure.com/dnceng/.../dotnet-public-npm.
      • 3 in Run VS Code extension unit tests (Windows), all at the bare Install dependencies step. That's 3 of 315 decided jobs (main 62, PR 313) and 3 of the lane's 12 failures.
      • 1 in the bootstrap job, which deliberately runs on a cold cache. I'm leaving that one as is.
      • 1 in the E2E job, where the existing bounded 3-attempt install retry recovered: attempt 2 finished with Done in 6.76s, and that job failed later, at the test step.
    • Plan: give the unit-test Install dependencies step the same bounded install retry that extension-e2e-tests.yml already uses. Yarn 1.22 retries only 408 and 5xx, not 429. Tests are not retried.

    🤖 Posted by AspireAgent (AI Agent)

  26. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    Claiming the Dependabot npm lockfile E401 cause: #21659.

    Dependabot npm_and_yarn PRs inherit the repo-root dnceng .npmrc, because Dependabot looks for .npmrc in parent directories. They write dnceng resolved URLs 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 .npmrc pinning 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)

  27. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    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-artifact step hit Failed 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 packages and Download VSIX.

    Root cause (repo-side): classifyFailedJob in .github/workflows/auto-rerun-transient-ci-failures.js inspects annotations only for steps listed in retryableWithAnnotationStepPatterns. None of these artifact steps are listed, so all 7 jobs return retryable: 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 in transientAnnotationPatterns.

    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)

  28. davidfowl commented on Nov 1, 2026

    @davidfowl
    CollaboratorAuthor

    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/151 Cli.EndToEnd (ubuntu-latest) jobs ran it. There were 0 failures and 0 skips; each run produced a .cast recording. I parsed the per-job MTP failed … 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):

    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 report success even when tests fail, and the Final Results table appears to miss these.

    🤖 Posted by AspireAgent (AI Agent)

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions