Skip to content

Graduate experimental Aspire APIs #17175

@davidfowl

Description

@davidfowl

Graduate experimental Aspire APIs

Context

Aspire has a number of public APIs still marked with ExperimentalAttribute. We should review these APIs for graduation, prioritizing the oldest and most-used experimental surfaces.

This issue tracks the current experimental API inventory, when each API appears to have been introduced, and how many stable releases it has remained experimental. The data was generated from git blame over current public/protected source declarations and assembly-level experimental attributes under src/. Generated src/**/api/*.cs files were excluded from row discovery so unreleased source-only APIs are included.

Goal

Graduate eligible experimental APIs by removing ExperimentalAttribute where the API shape is stable, or explicitly decide what changes/blockers remain before graduation.

Acceptance criteria

  • Each diagnostic/API family in the table is reviewed.
  • APIs that are ready are graduated.
  • APIs that are not ready have documented blockers or follow-up issues.
  • Any graduation updates include source changes, analyzer suppression cleanup, docs/readme updates where applicable, and API review as needed.

Decision signals

For graduation, the table is ordered around the decision-making fields first:

Heading Why it matters
Stable releases experimental Primary age signal: APIs with the most stable releases as experimental should be reviewed first.
Introduced version Shows the first stable release that shipped the API as experimental.
Release date Gives the calendar age of the first stable release that included the API.
API The actual API shape to decide whether to graduate, change, or keep experimental.

Table headings

Heading Meaning
Stable releases experimental The number of stable vX.Y.Z release tags that contain the blamed commit while the API remains experimental.
Introduced version The first stable vX.Y.Z release tag that contains the blamed declaration commit. Unreleased means no stable release tag contains it yet.
Release date The date of the introduced stable release tag.
API The current public/protected API declaration that carries ExperimentalAttribute.
Kind The kind of annotated surface: assembly, type, method, property, or member.
Diagnostic ID The diagnostic ID passed to ExperimentalAttribute, used by callers to suppress the experimental API warning.
Source The source file and declaration line used for git blame.
Blame date The author date of the blamed commit for the declaration line, or the attribute line for assembly-level attributes.
Blame commit The short SHA from git blame for the declaration line.
Blame summary The commit subject for the blamed commit.

Audit data

Scope: public/protected source declarations and assembly-level attributes under src/ that currently carry ExperimentalAttribute. Generated src/**/api/*.cs files are excluded from row discovery so unreleased source-only APIs are included. Stable releases experimental counts stable vX.Y.Z tags containing the blamed declaration commit; unreleased APIs are 0.

  • Total rows: 225
  • Latest stable tag considered: v13.3.3
  • Blame target: declaration line for member/type APIs, attribute line for assembly-level APIs.

Counts by introduced version

Introduced version API count
v9.1.0 3
v9.3.0 4
v9.4.0 11
v9.5.0 17
v13.0.0 53
v13.1.0 47
v13.2.0 49
v13.3.0 28
Unreleased 13

Counts by diagnostic ID

Diagnostic ID API count
ASPIREACADOMAINS001 1
ASPIREACANAMING001 1
ASPIREATS001 12
ASPIREAZURE001 5
ASPIREAZURE002 4
ASPIREAZURE003 8
ASPIREBROWSERLOGS001 3
ASPIRECERTIFICATES001 19
ASPIRECOMMAND001 5
ASPIRECOMPUTE002 6
ASPIRECOMPUTE003 5
ASPIRECONTAINERRUNTIME001 7
ASPIRECONTAINERSHELLEXECUTION001 1
ASPIRECOSMOSDB001 2
ASPIRECSHARPAPPS001 2
ASPIREDOCKERFILEBUILDER001 35
ASPIREDOTNETTOOL 3
ASPIREDURABLETASK001 10
ASPIREEXTENSION001 2
ASPIREFILESYSTEM001 5
ASPIREINTERACTION001 20
ASPIREJAVASCRIPT001 8
ASPIREMCP001 1
ASPIREPIPELINES001 25
ASPIREPIPELINES002 2
ASPIREPIPELINES003 16
ASPIREPIPELINES004 1
ASPIREPOSTGRES001 2
ASPIREPROBES001 6
ASPIREPROCESSCOMMAND001 6
ASPIREUSERSECRETS001 2

API table

The full API table is split across comments below because it is too large for a single issue body.

Metadata

Metadata

Assignees

No one assigned

    Labels

    triage:bot-seenAspire triage bot has seen this issue💥 blocking-release 💥Issues that would block us from shipping/releasing

    Type

    No fields configured for Task.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions