Skip to content

docs(experimental): establish [Experimental] API convention + FALLOUT0xx registry - #316

Merged
ChrisonSimtian merged 1 commit into
mainfrom
docs/experimental-api-convention
May 29, 2026
Merged

docs(experimental): establish [Experimental] API convention + FALLOUT0xx registry#316
ChrisonSimtian merged 1 commit into
mainfrom
docs/experimental-api-convention

Conversation

@ChrisonSimtian

Copy link
Copy Markdown
Collaborator

Establishes the [Experimental] opt-in convention for unstable public APIs, per ADR-0004 §5. PR 4 of the ADR-0004 rollout.

What this adds

  • docs/agents/conventions.md — a focused [Experimental] for opt-in unstable APIs section: use System.Diagnostics.CodeAnalysis.ExperimentalAttribute (BCL, .NET 8+, no package reference needed since we target .NET 10); the FALLOUT0xx diagnostic-ID scheme (sequential, never reused); consumers must explicitly suppress the error-by-default diagnostic (#pragma warning disable FALLOUT001 or <NoWarn>) to opt in; promoting to stable = removing the attribute (no cross-branch cherry-pick); and the channel discipline (courtesy on edge/main, mandatory on a release/YYYY stable train). Adding/removing [Experimental] is not a breaking change.
  • docs/experimental-apis.md — a new consumer-facing diagnostic-ID registry: how-it-works, the allocation scheme, and the FALLOUT0xx table. Seeded empty (no IDs allocated yet); the first experimental API to land claims FALLOUT001.
  • AGENTS.md — a one-line pointer to both docs from rule Enterprise hardening: repo nuget.config breaks corporate packageSourceMapping setups #2 (which already mentions [Experimental]).

Scope

Docs-only. No [Experimental] attribute was applied to any existing API — doing so speculatively would break the build wherever those APIs are referenced internally (the diagnostic is error-by-default). The convention is established; allocation happens per-API as real unstable surface lands. No code touched, so the build is unaffected.

🤖 Generated with Claude Code

…0xx registry

Implements ADR-0004 §5. Documents the [Experimental("FALLOUT0xx")] opt-in
convention for unstable public APIs: the System.Diagnostics.CodeAnalysis
attribute (BCL, no package), sequential never-reused diagnostic IDs, the
consumer suppression opt-in, promote-to-stable = remove-the-attribute, and the
edge-vs-stable-train channel discipline. Adds a diagnostic-ID registry at
docs/experimental-apis.md (seeded empty) and an AGENTS.md pointer near rule #2.

Docs-only: no [Experimental] applied to any existing API.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation experimental Opt-in unstable API surface marked [Experimental(FALLOUT0xx)]. target/vCurrent Targets the current version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant