Skip to content

ADR-026 Adapter Distribution Policy (v1)

Intent

Freeze how the current ADR-026 adapter crates are distributed, with minimal blast radius: - keep the new adapter crates in open core - keep them available from source/workspace builds on main - avoid taking on a crates.io support and semver contract before that surface is explicitly frozen

Current State

The following crates now exist in the workspace on main: - assay-adapter-api - assay-adapter-acp - assay-adapter-a2a - assay-adapter-ucp

The release workflow can publish crates to crates.io through: - .github/workflows/release.yml - scripts/ci/publish_idempotent.sh

At the moment, that publish list does not include the adapter crates.

Historical note: assay-adapter-api has already appeared on crates.io through 3.2.3. That historical publication does not define the current release-line contract. Current main treats every ADR-026 adapter crate, including assay-adapter-api, as source/workspace-internal until a future distribution freeze explicitly changes that.

Decision

For the current ADR-026 line, the adapter crates remain workspace-internal open-core crates.

This means: - open-core availability is via the repository source tree and workspace builds - no adapter crate is published to crates.io yet - no external semver/support promise is made for the adapter crate API surface yet - release tags must not silently start publishing adapter crates without a dedicated freeze/update slice

In-Scope

  • Freeze the distribution decision for the current line
  • Clarify the distinction between open-core availability and crates.io publication
  • Preserve the current release workflow behavior

Out-of-Scope

  • Any release workflow changes
  • Adding adapter crates to scripts/ci/publish_idempotent.sh
  • Defining a public crates.io support matrix
  • docs.rs/readme polish for external crate consumers
  • release-lane adapter integration work

Distribution Contract (v1)

Until a new freeze slice says otherwise: - assay-adapter-api is not published to crates.io by current release automation; historical crates.io versions may exist - assay-adapter-acp is not published to crates.io - assay-adapter-a2a is not published to crates.io - assay-adapter-ucp is not published to crates.io - adapter crates may use workspace versioning without treating crates.io as the canonical distribution channel

Rationale

Publishing now would create avoidable obligations before the surface is ready: - assay-adapter-api would become a public semver contract - protocol adapter crates would need an explicit external support/versioning story - the release workflow would need a frozen publish order and migration rules

The current ADR-026 line froze: - adapter API/workspace shape - deterministic conversion behavior - fixtures/tests/reviewer gates - parser and host-boundary hardening

It did not freeze crates.io distribution as part of ADR-026.

Criteria For A Future Publish Slice

A future distribution slice may publish adapter crates only after it freezes: - public API stability for assay-adapter-api - publish order and dependency policy in scripts/ci/publish_idempotent.sh - external versioning/support expectations for ACP/A2A/UCP adapter crates - release notes/docs for external crate consumers

Acceptance Criteria

  • The policy states that adapter crates stay workspace-internal for now
  • The policy states that open-core availability does not imply crates.io publication
  • A reviewer gate enforces allowlist-only scope and checks that the publish list still excludes the adapter crates