Skip to content

[Android][no-merge] Validate API levels 24-36 - #135084

Closed
simonrozsival wants to merge 2 commits into
release/11.0-rc2from
simonrozsival-android-api-coverage
Closed

simonrozsival wants to merge 2 commits into
release/11.0-rc2from
simonrozsival-android-api-coverage

Conversation

@simonrozsival

@simonrozsival simonrozsival commented Oct 2, 2026 •

Copy link
Copy Markdown
Member

Fixes Issue

N/A: this is a temporary validation experiment, not a fix intended to merge or close the periodic tracking issue. Related to #122021.

main PR

N/A: there is no product fix in this PR. Validation precedents: #131809 and #120093.

Description

TEST ONLY - DO NOT MERGE. Run the existing Release Android x64 CoreCLR/NativeAOT test lanes across API 24-36 on release/11.0-rc2, base 474ed963699fc29809015392738a15231aaae2de.

The intended matrix is four lanes x thirteen queues = 52 lane/queue combinations. Queue fan-out and extended producer budgets are limited to the public emulator definition. Other definitions, internal queues, x86, ARM and Bionic keep their original selections. No schedule or branch-CI trigger was added. Unrelated runtime, dev-innerloop and linker PR validation is temporarily suppressed, making this branch unsuitable for merging.

Actual completed outcome: Azure build 1620862 / 20261002.1 failed, finished 2026-10-02T10:50:30Z. It tested merge 3fe28a8c04c9198dbc5833af4d1f2b02ae2f9141, head 2e00770eefed18941fec179509e106d329926ba9. The GitHub bot rejected the annotated initial trigger; after verifying no build existed, the same definition was queued directly on this exact merge. No pipeline rerun occurred.

Lane Actual result
CoreCLR libraries All thirteen queues submitted; 1,421,075 Azure passed records, 854 failed records, 22,050 NotExecuted
CoreCLR runtime All thirteen queues submitted, but test bodies are skipped by a host-argument/filter defect; zero exits are not passing runtime coverage
NativeAOT runtime smoke All thirteen queues submitted; six AVX-required startup aborts on 26-28 and two API30 prelaunch infrastructure failures
NativeAOT libraries/functional Producer failed with CS9377; none of the thirteen queue combinations was submitted

Coverage gaps: CoreCLR runtime bodies were not exercised; NativeAOT library tests were not built; API30 has emulator/ABI/ADB losses; API36 has passing suites whose result XML could not be retrieved. API37 remains untested because no queue is available, as explicitly agreed. API21-23 are below RC2 minimum24; legacy Mono lanes are not restored.

Customer Impact

No shipping code change. The experiment exposed compatibility defects and misleading/missing test coverage that ordinary API29 validation did not establish.

Regression

No regression is fixed by this PR and no blanket no-regressions conclusion is justified.

Important findings: Android NIST HPKE support is advertised despite unsupported private-scalar import; matching fixes #134688/#134809 are not in this RC2 base. The NativeAOT template's reviewed fix #134212/#134365 is also absent. CoreCLR merged runtime tests skip all bodies because the bundle path becomes their inclusive filter (tracked #135092). A genuine API27 TLS cipher-query SIGSEGV is tracked #135094; its introduction/last-pass boundary has not been established. Older cipher-placeholder and packet-info failures reproduce prior signatures, alongside fixture/test-utility, timing, emulator and publication failures. HPKE is new functionality, not a previously working API regression.

Detailed per-API counts, complete failure accounting and uncertainty are preserved in the results artifact on #122021 and the final PR summary.

Testing

  • git diff --check origin/release/11.0-rc2...HEAD - passed.
  • python3 "$VALIDATION_SCRIPT" - passed: all seven changed YAML files, duplicate-key detection, 140 queue-selection scenarios, exact API sets/preserved fallbacks, actual definition-name/full-library gating, four unchanged subsets and scoped timeout/trigger/monitor checks.
  • python3 "$PREVIEW_SCRIPT" - passed: Azure preview compiled four producers with all thirteen API queues plus the monitor on the published head. Preview queued no build. It caught and enabled correction of the computed-variable queue guard before PR creation.
  • Live Helix queue availability - passed for every exact API24-36 queue; no API37 queue found.
  • runtime-androidemulator build1620862 - completed failed, not green. Actual producer/Helix identities confirm 39 submitted combinations and thirteen NativeAOT-library build-blocked combinations; all submitted workitems and 39 Azure runs are terminal.
  • Committed extract_failed_tests.py/fetch_helix_logs.py against an exact-build session DB - completed: 873 failed Azure records, 100 full consoles preserved, 873/873 records assigned once to 42 evidence groups; Azure failed-stat totals match exactly.
  • Committed validate_results.py - 17/19 checks passed; two documented mechanical warning categories remain: representative errors recovered from XML absent in truncated device logcat, and generic unauthenticated name-only GitHub searches returning unrelated candidates/rate limits. Signature-based verification and same-run XML evidence are preserved; these warnings are not reported as passed checks.

VALIDATION_SCRIPT/PREVIEW_SCRIPT are session-local checkers, not repository files. No local Android product build/emulator run was performed. No source/test exclusion changes were added after seeing CI failures, and no pipeline rerun was used for classification. Existing in-run XHarness/Helix recovery attempts are distinct from pipeline reruns.

Risk

No product, SDK/NDK, package or quarantine changes. The experiment's CI cost and temporary pipeline suppression are intentional. Keep this PR unmerged. Current data does not establish full RC2 functional coverage or release readiness. Further fixes/backports, queue provisioning and additional CI runs are follow-up decisions.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

Note

This pull request and results summary were prepared with GitHub Copilot from retained CI artifacts and source inspection.

simonrozsival and others added 2 commits October 2, 2026 10:08
Test-only validation; do not merge. Keep API fan-out scoped to the public Android emulator pipeline and preserve existing non-emulator queue selections.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Azure preview exposes the computed emulator-only variable after queue-template evaluation. Select the isolated emulator experiment using Build.DefinitionName so all API queues are included.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@simonrozsival

Copy link
Copy Markdown
Member Author

/azp run runtime-androidemulator

Note

This initial validation run was requested by GitHub Copilot.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

@azure-pipelines

Copy link
Copy Markdown
No pipelines are associated with this pull request.

@simonrozsival

Copy link
Copy Markdown
Member Author

The initial Android validation is now queued as Azure build 1620862, testing PR merge revision 3fe28a8c04c9198dbc5833af4d1f2b02ae2f9141 (head 2e00770eefed18941fec179509e106d329926ba9 on the unchanged RC2 base).

The GitHub bot rejected the annotated initial trigger with "No pipelines are associated with this pull request." No build existed for this PR, so I queued the same runtime-androidemulator definition directly through Azure instead. This is the initial experiment, not a rerun or a broader extra-platforms run. Results are pending; API 37 remains untested.

Note

This update and the initial queue request were prepared with GitHub Copilot.

@simonrozsival simonrozsival added the NO-REVIEW Experimental/testing PR, do NOT review it label Oct 2, 2026
@simonrozsival simonrozsival changed the title [release/11.0-rc2][Android][no-merge] Validate API levels 24-36 [Android][no-merge] Validate API levels 24-36 Oct 2, 2026
@simonrozsival

Copy link
Copy Markdown
Member Author

Final Android RC2 validation outcome

Build 1620862 completed failed. The complete per-API assessment is attached to #122021. All 873 final failed Azure records are accounted for in 42 evidence groups; 100 complete consoles and same-run XML/ADB evidence are retained. Azure failed-stat totals reconcile exactly. No pipeline rerun or source/test-quarantine change was made during analysis.

This is not full functional validation: 39 of 52 intended queue combinations were submitted. NativeAOT library compilation failed before all thirteen submissions because the reviewed template fix #134365 is absent from the tested RC2 base. CoreCLR runtime zero exits are false-green: merged runners use the bundle path as a method filter and skip the test bodies (tracked #135092). API37 remains untested.

CoreCLR libraries published 1,421,075 passed records, 854 failed records and 22,050 NotExecuted. The main product findings are unsupported Android NIST HPKE private-scalar import (314 method records / 1,858 theory cases; matching #134809 is also absent from RC2) and a verified API27 native TLS cipher-query SIGSEGV (tracked #135094). HPKE is new functionality, not a previously working API regression; no introduction/last-pass boundary was verified for the TLS crash. Older cipher-placeholder/socket signatures recur alongside fixture, utility, timezone and timing assertions.

Six NativeAOT AVX aborts on APIs26-28 were traced through the exact binaries to the required-AVX feature-check fail-fast. API30 is affected by emulator/ABI/ADB/recovery and result-publication failures. API36 PAL and LINQ suites demonstrably pass 60/60 and 52,252/52,252 but fail XML retrieval. These gaps and failures are not converted into passes or “known harmless” results.

The general repository validator passes 17/19 categories; two mechanical limitations are explicitly documented (XML-only evidence missing from truncated logcat and generic unauthenticated issue searches yielding unrelated/rate-limited candidates). Independent signature-based issue verification and complete stable-row/case reconciliation are preserved.

Keep this PR unmerged. Meaningful runtime execution, the missing reviewed release fixes, the native TLS crash and remaining compatibility/infrastructure gaps need follow-up before claiming clean RC2 coverage.

Note

This analysis was prepared with GitHub Copilot from retained CI artifacts and source inspection.

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

Labels

area-Infrastructure NO-REVIEW Experimental/testing PR, do NOT review it

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant