Skip to content

Proposal: ship the Reliable Reporting storage implementations as a separate distribution #1510

Open

Description

@KonstantinMirin

Proposal

Keep the storage interface and the digest code in adcp, and publish the PostgreSQL ledger store, the row storage and its GCS, S3, Azure, and filesystem providers, and the change feed's read side as a separate distribution (for example adcp-reporting-storage), maintained in this repository and versioned on its own. The row storage is in no published release yet, so 9.0.0 GA is the cheapest point to decide.

Why

  • The ledger is about 23,400 lines in src/adcp/reporting/ledger. It ships in the protocol client, so storage fixes and protocol fixes share one version line.
  • The JS SDK marks the same surface experimental (adcp-client#3238) because breaking changes there forced a major release. A separate distribution gives that code its own version line instead of a label.
  • This is how comparable SDKs ship storage: Auth.js (@auth/pg-adapter), LangGraph (langgraph-checkpoint-postgres), and OpenTelemetry exporters are separate packages from the same maintainers. The A2A Python SDK keeps a small database store behind extras, which is the in-package alternative.
  • The extras are already split (pg, reporting-gcs, reporting-s3, reporting-azure) and the imports are lazy, so the cut follows existing seams. The server and decisioning modules import the ledger directly, which is the coupling to resolve first.

Related

Activity

  1. bokelley commented on Oct 15, 2026

    @bokelley
    Contributor

    Agreed. Let's publish the reporting storage implementations as a separate distribution, maintained in this repository, before 9.0.0 GA. That covers the PostgreSQL ledger store, the row storage with its GCS/S3/Azure/filesystem providers, and the change feed's read side. The storage interface and the digest code stay in adcp. Nothing is on PyPI yet, so this is the cheapest point to make the cut. Resolving the server/decisioning imports of the ledger comes first, as you noted, and #1490 (pinning the public names) fits naturally with it.

    We're taking the same position on the JS side while SDK 16 is still in beta: adcontextprotocol/adcp-client#3286.

    🤖 Generated with Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpythonPull requests that update python code

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions