Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
28 changes: 13 additions & 15 deletions MIGRATION_v5_to_v6.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,32 @@
# Migration v5 v6
# Migration v5 -> v6

> Beta line. Surfaces here MAY change between beta increments. Track this
> file as features land; sections will be added per-release rather than
> upfront.
v6 is the stable SDK line for AdCP 3.1. Earlier v6 beta notes remain
below for adopters who tested prereleases before the 3.1 GA pin.

## Why a major version

v6 carries the type-surface changes that come with AdCP 3.1 most
v6 carries the type-surface changes that come with AdCP 3.1 - most
notably the canonical-formats projection layer (#741), which alters
the `ProductFormatDeclaration` discriminator and adds the
`adcp.canonical_formats` public module. Adopters pinning `adcp~=5.7`
will keep getting the v5 surface; opt into the beta with
`pip install --pre adcp` or `pip install adcp==6.0.0b1`.
will keep getting the v5 surface; upgrade to v6 with
`pip install --upgrade adcp`.

## Installing the beta
## Installing v6

```bash
pip install --pre adcp
# or pin explicitly
pip install adcp==6.0.0b1
pip install --upgrade adcp
# or pin explicitly once the stable release is published
pip install 'adcp>=6,<7'
```

PyPI's default resolver excludes prereleases unless `--pre` is set, so
existing `pip install adcp` calls in production continue resolving to
5.7.x.
PyPI's default resolver installs the stable v6 line without `--pre`
once the release is published.

## What's NOT changing

- `ADCP_VERSION` is the upstream protocol version (currently
`3.1.0-beta.3`) and is independent of the SDK package version. v6 of
`3.1.0`) and is independent of the SDK package version. v6 of
the SDK can run against multiple `ADCP_VERSION` values; the schema
cache and generated types are pinned via that file, not via the
package version.
Expand Down
18 changes: 6 additions & 12 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,19 +182,13 @@ We follow [Semantic Versioning](https://semver.org/):
- **Minor (0.1.0)**: New features, backward compatible
- **Patch (0.0.1)**: Bug fixes, backward compatible

### Beta Release Behavior
### Stable Release Behavior

While the current manifest version is a beta (`X.Y.Z-beta.N`), Release Please
is configured to keep the base version fixed and increment only the beta
counter. For example:

- `feat:` after `6.3.0-beta.4` -> `6.3.0-beta.5`
- `fix:` after `6.3.0-beta.4` -> `6.3.0-beta.5`

Do not pass `release-type` directly in `.github/workflows/release-please.yml`;
that bypasses the manifest configuration. The workflow must use
`release-please-config.json` and `.release-please-manifest.json` so
`versioning: prerelease` takes effect.
Release Please now uses normal SemVer versioning. Keep
`release-please-config.json` and `.release-please-manifest.json` as the source
of truth for automated releases, and do not pass `release-type` directly in
`.github/workflows/release-please.yml`; that bypasses the manifest
configuration.

### Pre-1.0 Behavior

Expand Down
172 changes: 105 additions & 67 deletions SCHEMA_DELTAS.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ requires-python = ">=3.10"
license = {text = "Apache-2.0"}
keywords = ["adcp", "mcp", "a2a", "protocol", "advertising"]
classifiers = [
"Development Status :: 4 - Beta",
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3",
Expand Down
5 changes: 1 addition & 4 deletions release-please-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@
"changelog-path": "CHANGELOG.md",
"bump-minor-pre-major": true,
"bump-patch-for-minor-pre-major": false,
"include-component-in-tag": false,
"versioning": "prerelease",
"prerelease": true,
"prerelease-type": "beta"
"include-component-in-tag": false
}
},
"changelog-sections": [
Expand Down
80 changes: 80 additions & 0 deletions schemas/cache/3.1/a2ui/bound-value.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "A2UI Bound Value",
"description": "A value that can be a literal or bound to a path in the data model",
"oneOf": [
{
"type": "object",
"description": "Literal string value",
"properties": {
"literalString": {
"type": "string",
"description": "Static string value"
}
},
"required": [
"literalString"
],
"additionalProperties": false
},
{
"type": "object",
"description": "Literal number value",
"properties": {
"literalNumber": {
"type": "number",
"description": "Static number value"
}
},
"required": [
"literalNumber"
],
"additionalProperties": false
},
{
"type": "object",
"description": "Literal boolean value",
"properties": {
"literalBoolean": {
"type": "boolean",
"description": "Static boolean value"
}
},
"required": [
"literalBoolean"
],
"additionalProperties": false
},
{
"type": "object",
"description": "Path to data model value",
"properties": {
"path": {
"type": "string",
"description": "JSON pointer path to value in data model (e.g., '/products/0/title')"
}
},
"required": [
"path"
],
"additionalProperties": false
},
{
"type": "object",
"description": "Literal with path binding (sets default and binds)",
"properties": {
"literalString": {
"type": "string"
},
"path": {
"type": "string"
}
},
"required": [
"literalString",
"path"
],
"additionalProperties": false
}
]
}
31 changes: 31 additions & 0 deletions schemas/cache/3.1/a2ui/component.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "A2UI Component",
"description": "A component in an A2UI surface",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for this component within the surface"
},
"parentId": {
"type": "string",
"description": "ID of the parent component (null for root)"
},
"component": {
"type": "object",
"description": "Component definition (keyed by component type)",
"minProperties": 1,
"maxProperties": 1,
"additionalProperties": {
"type": "object",
"description": "Component properties"
}
}
},
"required": [
"id",
"component"
],
"additionalProperties": true
}
Loading
Loading