Skip to content

Freeze review pass over the public API baseline #183

Open

Description

@Blind-Striker

What

Read the whole public API baseline (tests/OpenCode.Sdk.Tests/Snapshots/PublicApi.verified.txt,
11,267 lines) once, against a checklist of things that cannot change after 1.0 without a major
version:

  • Parameter names (a rename breaks named-argument callers). Example: GetShellClient(string id)
    (:1910) beside GetSessionClient(string sessionId) (:1842), GetPtyClient(string ptyId)
    (:1489) and GetIntegrationClient(string integrationId) (:463).
  • Interfaces that cannot grow without breaking implementers. Example: IOpenCodeClientOptions
    (:347), which no public API accepts and OpenCodeClientOptions (:612) implements; a new
    option added to it after 1.0 breaks every implementer, and net472/netstandard2.0 have no
    default interface members.
  • Public constants, which compile into consumer binaries. Example: OpenCodeRoutes (:642)
    with 121 public route-template constants.
  • Enum and union growth: strict enum parsing when a newer server sends a new value, and union
    interfaces that grow and shrink with the pin.
  • Public delegates and mutable options. Example: OpenCodeServerEnsureOptions.OnStart
    (:1021).
  • Naming consistency across families. Example: WebsearchClient (:2015) beside
    WebSearchProvider (:11066).

Each finding gets a decision (change before the freeze, or keep and record why), and the changes
land before 1.0.0-rc.1.

Why in 1.0

The surface freezes before 1.0.0-rc.1; the API review's exit is that every surface question is
decided (docs/ROADMAP.md:87-93). A finding after the freeze costs a major version.

Evidence

  • The baseline lines cited above.
  • tests/OpenCode.Sdk.Tests/PublicApiBaselineTests.cs:10 covers the core assembly only; the
    Extensions baseline is part of Package API, test roster and Native AOT gates for 1.0 #51.
  • Checklist sources: the .NET Framework Design Guidelines' breaking-change rules and the Azure SDK
    .NET guidelines (extend-only design).

Done when

  • Every type and member in the baseline is read against the checklist, and the findings are listed
    in this issue with a decision each.
  • The changes land with PublicApi.verified.txt and CHANGELOG updates before 1.0.0-rc.1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-humanRequires human implementation or decision

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions