This document tracks which versions of aa-runtime are compatible with each SDK version. Update this file whenever any component version changes — see CI enforcement below.
CI enforcement for SDK version changes is pending cross-repo CI integration. Until then, SDK version bumps must be accompanied by a manual update to this file.
aa-runtime |
Python SDK (aa-ffi-python) |
Node.js SDK (aa-ffi-node) |
Go SDK (aa-ffi-go) |
Protocol Version |
|---|---|---|---|---|
| v0.0.1-alpha.1 | v0.0.1-alpha.1 (PyPI 0.0.1a1) ✓ |
v0.0.1-alpha.1 ✓ | v0.0.1-alpha.1 ✓ | protocol/v1 |
| v0.0.1-alpha.2 | v0.0.1-alpha.2 (PyPI 0.0.1a2) ✓ |
v0.0.1-alpha.2 ✓ | v0.0.1-alpha.2 ✓ | protocol/v1 |
| v0.0.1-alpha.3 | v0.0.1-alpha.3 (PyPI 0.0.1a3) ✓ |
v0.0.1-alpha.3 ✓ | v0.0.1-alpha.3 ✓ | protocol/v1 |
| v0.0.1 | v0.0.1 ✓ | v0.0.1 ✓ | v0.0.1 ✓ | protocol/v1 |
| v0.0.1-beta.1 | v0.0.1-beta.1 (PyPI 0.0.1b1) ✓ |
v0.0.1-beta.1 ✓ | v0.0.1-beta.1 ✓ | protocol/v1 |
| v0.0.1-beta.2 | v0.0.1-beta.2 (PyPI 0.0.1b2) ✓ |
v0.0.1-beta.2 ✓ | v0.0.1-beta.2 ✓ | protocol/v1 |
| v0.0.1-beta.3 | v0.0.1-beta.3 (PyPI 0.0.1b3) ✓ |
v0.0.1-beta.3 ✓ | v0.0.1-beta.3 ✓ | protocol/v1 |
| v0.0.1-beta.4 | v0.0.1-beta.5 (PyPI 0.0.1b5) ✓ |
v0.0.1-beta.5 ✓ | v0.0.1-beta.3 ✓ | protocol/v1 |
| v0.0.1-rc.1 | v0.0.1-rc.1 (PyPI 0.0.1rc1) ✓ |
v0.0.1-rc.1 ✓ | v0.0.1-rc.1 ✓ | protocol/v1 |
| v0.0.1-rc.2 | v0.0.1-rc.2 (PyPI 0.0.1rc2) ✓ |
v0.0.1-rc.2 ✓ | v0.0.1-rc.2 ✓ | protocol/v1 |
| v0.0.1-rc.3 | v0.0.1-rc.3 (PyPI 0.0.1rc3) ✓ |
v0.0.1-rc.3 ✓ | v0.0.1-rc.3 ✓ | protocol/v1 |
| v0.0.1-rc.4 | v0.0.1-rc.4 (PyPI 0.0.1rc4) ✓ |
v0.0.1-rc.4 ✓ | v0.0.1-rc.4 ✓ | protocol/v1 |
| v0.0.1-rc.5 | v0.0.1-rc.5 (PyPI 0.0.1rc5) ✓ |
v0.0.1-rc.5 ✓ | v0.0.1-rc.5 ✓ | protocol/v1 |
| v0.0.1-rc.6 | v0.0.1-rc.6 (PyPI 0.0.1rc6) ✓ |
v0.0.1-rc.6 ✓ | v0.0.1-rc.6 ✓ | protocol/v1 |
Legend:
- ✓ Compatible — fully supported
⚠️ Partial — works with known limitations (see notes)- ✗ Incompatible — do not use together
Note (v0.0.1-beta.4): components version independently — each repo advances its own pre-release iterator — so one
aa-runtimerelease pairs with differently-numbered SDK releases while stayingprotocol/v1-compatible.aa-runtimev0.0.1-beta.4 ships alongside python-sdk0.0.1b5(gitv0.0.1-beta.5) and node-sdkv0.0.1-beta.5; go-sdk remains atv0.0.1-beta.3(no new cut this wave).
Note (v0.0.1-rc.1): first release-candidate cut — a coordinated promotion to the
rcchannel across all components.aa-runtimev0.0.1-rc.1 pairs with python-sdk0.0.1rc1, node-sdkv0.0.1-rc.1, and go-sdkv0.0.1-rc.1, allprotocol/v1-compatible. The SDKrc.1cuts follow this tag'srelease.ymlfan-out (per theaa-ffi-pinSDK-coordination SOP).
Note (v0.0.1-rc.2): second release candidate (patch on the
rcchannel) — security-hardening + coverage cut.aa-runtimev0.0.1-rc.2 pairs with python-sdk0.0.1rc2, node-sdkv0.0.1-rc.2, and go-sdkv0.0.1-rc.2, allprotocol/v1-compatible. SDKrc.2cuts follow this tag'srelease.ymlfan-out.
Note (v0.0.1-rc.3): third release candidate (patch on the
rcchannel) — a large security-hardening cut (Epics AAASM-3913 / 3979 / 4010 + follow-ups; eBPF Layer 3 brought online). No wire-protocol change.aa-runtimev0.0.1-rc.3 pairs with python-sdk0.0.1rc3, node-sdkv0.0.1-rc.3, and go-sdkv0.0.1-rc.3, allprotocol/v1-compatible. SDKrc.3cuts follow this tag'srelease.ymlfan-out (per theaa-ffi-pinSDK-coordination SOP).
Note (v0.0.1-rc.4): fourth release candidate (patch on the
rcchannel) — a release-pipeline completeness cut. Ships the previously-omittedaa-api-serverbinary (AAASM-4449) and publishes theaa-gatewaycontainer image (AAASM-4480); adds a release-artifact completeness gate (AAASM-4456); the SDK release matrices now build every supported Python interpreter — cp312/cp313/cp314 (AAASM-4446/4453) — and bundle the Node native.nodebinding (AAASM-4467). Local-modeaasm startalso serves gRPC agent registration on loopback127.0.0.1:50051(AAASM-4447). No wire-protocol change.aa-runtimev0.0.1-rc.4 pairs with python-sdk0.0.1rc4, node-sdkv0.0.1-rc.4, and go-sdkv0.0.1-rc.4, allprotocol/v1-compatible. SDKrc.4cuts follow this tag'srelease.ymlfan-out (per theaa-ffi-pinSDK-coordination SOP).
Note (v0.0.1-rc.5): fifth release candidate (patch on the
rcchannel) — a dashboard-embedding + onboarding-docs cut. The dashboard SPA is now embedded into theaa-apibinary at build time (AAASM-4517,build.rs+include_dir!), fixing the rc.4 dashboard-404 when serving locally;aasmvalidatesAASM_API_KEYbefore printing the serving banner (AAASM-4572); the mdBook docs gain a tabs widget (AAASM-4566) with tabbed installation instructions and stable anchors (AAASM-4567 / 4573 / 4574); and the Homebrew tap formula is generated via aversions.rbgenerator (AAASM-4520). No wire-protocol change.aa-runtimev0.0.1-rc.5 pairs with python-sdk0.0.1rc5, node-sdkv0.0.1-rc.5, and go-sdkv0.0.1-rc.5, allprotocol/v1-compatible. SDKrc.5cuts follow this tag'srelease.ymlfan-out (per theaa-ffi-pinSDK-coordination SOP).
Note (v0.0.1-rc.6): sixth release candidate (patch on the
rcchannel) — a test-quality + tooling-hardening cut. Dashboard SonarCloud/test-quality fixes (AAASM-4694 — parameterized component tests, date-keyed heatmap cells,Set.hasscope validation,replaceAllbase64url decode);aa-ebpfskips its probe subprocess build underDOCS_RSso docs.rs builds succeed (AAASM-4715); tenant-ownership enforcement inregister_opand a non-clobberingOpsRegistry::register; theaa-cliaudit/logs client now sends itsAuthorizationheader; a/healthalias endpoint; and release-process/CI-docs improvements (AAASM-4670/4671/4674/4679/4724 — 3-part branch naming, DCO sign-off checkbox, README doc-link check, Fix-Version ladder reminder, README coverage in release-docs-sync) plus dependency bumps. No wire-protocol change.aa-runtimev0.0.1-rc.6 pairs with python-sdk0.0.1rc6, node-sdkv0.0.1-rc.6, and go-sdkv0.0.1-rc.6, allprotocol/v1-compatible. SDKrc.6cuts follow this tag'srelease.ymlfan-out (per theaa-ffi-pinSDK-coordination SOP).
| SDK | Minimum aa-runtime Version |
|---|---|
Python SDK (aa-ffi-python) v0.0.1 |
aa-runtime v0.0.1 |
Node.js SDK (aa-ffi-node) v0.0.1 |
aa-runtime v0.0.1 |
Go SDK (aa-ffi-go) v0.0.1 |
aa-runtime v0.0.1 |
Python SDK (aa-ffi-python) v0.0.1-beta.2 |
aa-runtime v0.0.1-beta.1 |
Node.js SDK (aa-ffi-node) v0.0.1-beta.2 |
aa-runtime v0.0.1-beta.1 |
Go SDK (aa-ffi-go) v0.0.1-beta.2 |
aa-runtime v0.0.1-beta.1 |
Python SDK (aa-ffi-python) v0.0.1-beta.3 |
aa-runtime v0.0.1-beta.1 |
Node.js SDK (aa-ffi-node) v0.0.1-beta.3 |
aa-runtime v0.0.1-beta.1 |
Go SDK (aa-ffi-go) v0.0.1-beta.3 |
aa-runtime v0.0.1-beta.1 |
Python SDK (aa-ffi-python) v0.0.1-beta.5 (PyPI 0.0.1b5) |
aa-runtime v0.0.1-beta.1 |
Node.js SDK (aa-ffi-node) v0.0.1-beta.5 |
aa-runtime v0.0.1-beta.1 |
A runtime version may support multiple protocol versions to allow SDK upgrades without simultaneous runtime upgrades.
aa-runtime Version |
Supported Protocol Versions |
|---|---|
| v0.0.1-alpha.1 | protocol/v1 |
| v0.0.1-alpha.2 | protocol/v1 |
| v0.0.1-alpha.3 | protocol/v1 |
| v0.0.1 | protocol/v1 |
| v0.0.1-beta.1 | protocol/v1 |
| v0.0.1-beta.2 | protocol/v1 |
| v0.0.1-beta.3 | protocol/v1 |
| v0.0.1-beta.4 | protocol/v1 |
| v0.0.1-rc.1 | protocol/v1 |
| v0.0.1-rc.2 | protocol/v1 |
Starting with the v0.0.1 SDK line, every SDK accepts two endpoint fields so a single install can target either a single-host OSS deployment or a split enterprise deployment (gRPC gateway and HTTP control plane on different hosts).
| Field (Python / Node / Go) | What it addresses | Scheme |
|---|---|---|
gateway_url / gatewayUrl / WithGatewayURL |
gRPC endpoint of the gateway | host:port, no scheme |
control_plane_url / controlPlaneUrl / WithControlPlaneURL |
HTTP base URL for the control plane — aa-api (OSS) or the FastAPI cloud (enterprise) |
full URL with scheme |
The HTTP control plane serves agent registration, policy checks, and topology
edges (POST /agents/{id}/register, POST /agents/{id}/policy/check,
POST /topology/edges). The gRPC transport carries the streaming op-control,
lifecycle, audit, and approval flows and always reads gateway_url.
control_plane_url is optional. When it is not set, each SDK defaults it to
the resolved gateway_url, so a single-host OSS dev install keeps working with
only one endpoint configured — the pre-feature behaviour is preserved exactly.
It only needs a distinct value when the HTTP control plane and the gRPC gateway
live on separate hosts (the production enterprise topology).
Each field resolves as explicit init argument > environment variable > unset:
| Field | Environment variable |
|---|---|
gateway_url / gatewayUrl / WithGatewayURL |
AA_GATEWAY_URL |
control_plane_url / controlPlaneUrl / WithControlPlaneURL |
AA_CONTROL_PLANE_URL |
If control_plane_url is still unset after this chain, it falls back to
gateway_url as described above.
This canonical/deprecated distinction applies only to the SDK connection env
vars listed above — AA_GATEWAY_URL, AA_CONTROL_PLANE_URL, and
AA_API_KEY. It does not apply to the core config vars (see the next
section, where AAASM_* is the sole non-aliased name).
For those SDK env vars, AA_* is the canonical prefix and new configuration
should always use it.
The legacy AAASM_* prefix — used by the older zero-config gateway resolver
in each SDK — is a deprecated alias for those same SDK env vars. It is still
honoured for backwards-compatibility, but reading a value from an AAASM_*
variable emits a deprecation warning, and the alias will be removed in a future
major version. Migrate to the AA_* names.
This prefix reconciliation is tracked across the SDKs under AAASM-3019; sibling subtasks update the Python, Node, and Go resolvers.
The AA_*-canonical / AAASM_*-deprecated-alias story above is SDK-only. The
core runtime's own configuration env vars are a separate namespace: they read
AAASM_* as the sole, non-aliased name, with no AA_* fallback and no
deprecation warning. There is no AA_DATABASE_URL / AA_GATEWAY_PORT / etc. —
those spellings are read nowhere in the core and are silently ignored. Use the
AAASM_* names below when configuring a self-hosted gateway:
| Core config env var | Configures |
|---|---|
AAASM_DATABASE_URL |
PostgreSQL connection URL (overrides storage.postgres.database_url) |
AAASM_REDIS_URL |
Redis connection URL |
AAASM_SQLITE_PATH |
SQLite event-buffer path |
AAASM_STORAGE_BACKEND |
Storage backend selector (sqlite or postgres) |
AAASM_GATEWAY_PORT |
Gateway listen port |
AAASM_RETENTION_HOT_DAYS / AAASM_RETENTION_WARM_DAYS / AAASM_RETENTION_COLD_ACTION |
Audit-retention tiering |
AAASM_TLS_CERT / AAASM_TLS_KEY |
Gateway TLS certificate / key paths |
AAASM_DASHBOARD_DIST |
Operator override for the dashboard dist/ directory served by the gateway |
These are the names the core actually reads (aa-core/src/config.rs,
aa-gateway/src/storage/postgres.rs, aa-gateway/src/dashboard_server.rs); they
predate the SDK prefix reconciliation and were never given an AA_* alias.
- Python (AAASM-2028) —
control_plane_urlis a keyword argument oninit_assembly, threaded intoGatewayClient(httpx). The gRPC path (op_control) continues to readgateway_url. - Node (AAASM-2029) —
controlPlaneUrlis an optional field onAssemblyConfig. When set, the gateway client routes its HTTP traffic at it; the gRPC transport (op-control) keeps usinggatewayUrl. - Go (AAASM-2030) —
assembly.WithControlPlaneURLstores the value on the runtime options for parity with the other SDKs. The Go SDK has no HTTP control-plane caller today (lifecycle is delegated to theaasmruntime), so the field is in place ready for the first HTTP caller; gRPC dial behaviour is unchanged.
The enterprise-vs-OSS connectivity strategy — why the second field exists, the
transport split, and the per-SDK survey — is owned by
agent-assembly-enterprise/docs/sdk-compatibility.md (filed under AAASM-1953).
This section documents the OSS-visible surface of that convention; the
enterprise doc is the authoritative source for the strategy.
A CI check (compat-matrix-check) enforces that this file is updated whenever version-carrying files change in a pull request.
Currently enforced (monorepo scope):
Cargo.toml(workspace root)crates/*/Cargo.toml(all crate manifests)
Deferred — pending cross-repo CI integration:
sdk/python/pyproject.toml(Python SDK)sdk/node/package.json(Node.js SDK)sdk/go/go.mod(Go SDK)
Until cross-repo CI exists, SDK version bumps require a manual update to this file before merging.
When bumping a component version:
- Add a new row to the Compatibility Matrix table for the new version combination.
- Update the Minimum Supported Runtime Version table if the minimum changes.
- Update the Supported Protocol Versions table if the runtime adds or drops protocol version support.
- Commit the change in the same PR as the version bump.
See versioning.md for the full versioning and deprecation policy.
| PR / Ticket | Change | Compatibility impact |
|---|---|---|
| AAASM-107 | Added conformance workspace crate (test infrastructure, not shipped) |
None — internal tooling only |
| AAASM-39 | Added aa-ebpf-common workspace crate (shared eBPF types, not shipped standalone) |
None — internal shared types only |
| AAASM-37 | Added aa-ebpf-common workspace crate (no_std shared eBPF event types, not shipped as a public API) |
None — internal kernel/userspace bridge only |
| AAASM-39 (impl) | Added exec tracepoint BPF programs, ProcessLineageTracker, ShellDetector, ExecLoader in aa-ebpf |
None — kernel-level monitoring, not a public API |
| AAASM-64 | Added aa-ffi-go workspace crate (Go C-ABI staticlib bindings) |
None — new FFI crate, no existing API changes |
| AAASM-936 | Added examples/aa-devtool-sample-myeditor workspace crate (sample DevToolAdapter impl + plugin authoring reference; publish = false) |
None — example only, not shipped, depends on existing aa-core API surface |
| AAASM-971 | Added aa-devtool-codex workspace crate (OpenAI Codex CLI DevToolAdapter implementation; detect() + governance_level() wired in this PR; generate_managed_settings, apply_settings, build_launch_command land in AAASM-978/983/988) |
None — new adapter crate, no changes to existing public APIs |
| AAASM-204 | Added aa-devtool-windsurf workspace crate (DevToolAdapter for Windsurf Cascade; L2 governance via admin settings + MCP registry control; publish = false) |
None — new adapter crate, no changes to existing public API surface |
| AAASM-997 | Added aa-devtool-copilot workspace crate (DevToolAdapter for GitHub Copilot — VS Code extension detection, publish = false); added semver v1 dependency for latest-version selection |
None — new adapter crate, no changes to existing public API surface |
| AAASM-1006 | Implemented MCP governance in aa-devtool-copilot: list_mcp_servers() reads chat.mcp.servers from VS Code settings.json; apply_mcp_governance() filters the server set (keep allowed, remove denied) and sets chat.mcp.requireApproval: "always" when deny list is non-empty; build_launch_command() returns LaunchFailed (Copilot is IDE-resident, not CLI-launchable) |
None — implementation only within existing aa-devtool-copilot crate; no new crates, no existing public API changes |
| AAASM-946 | Added aa-devtool-claude-code workspace crate (ClaudeCodeAdapter — detection layer for Claude Code CLI; publish = false pending AAASM-201 completion) |
None — new crate, no existing API surface changed; depends on existing aa-core::DevToolAdapter trait |
| AAASM-918 | Added aa-devtool-saas workspace crate (SaaS coding-agent DevToolAdapter for Claude.ai, ChatGPT, Cursor cloud; L1Observe governance; HMAC-SHA256 webhook signature verification; MCP allowlist advisory overlay for Claude.ai; publish = false) |
None — new adapter crate, no changes to existing public APIs |
| AAASM-205 | Added aa-devtool workspace crate (DiscoveryService + built-in adapters for Claude Code, Codex, GitHub Copilot, Windsurf) |
None — new crate, no existing API changes; aa-api and aa-cli gain a new optional dependency on it |
| AAASM-949 | Added RBAC role enforcement on POST /api/v1/policies: CallerRole + MutationKind + PolicyScopeKind enums and required_role_for() in aa-gateway/src/policy/rbac.rs; PolicyWriteAuth extractor + PolicyAuthorizationDenied error in aa-api/src/auth/policy_auth.rs; optional scope field on CreatePolicyRequest; auto-generated docs/src/policy-rbac.md + .ci/check-policy-rbac-doc.sh |
POST /api/v1/policies now requires authentication (401 when unauthenticated) and returns 403 when the caller's role is insufficient for the target scope; CreatePolicyRequest gains an optional scope field (defaults to global). Read-only endpoints unchanged. |
| AAASM-956 | Restored aa-devtool, aa-devtool-claude-code, aa-devtool-codex, aa-devtool-saas, and aa-devtool-windsurf to workspace members (dropped by a prior merge conflict resolution); implemented apply_settings() and apply_mcp_governance() in aa-devtool-claude-code via new apply.rs module (SettingsPathResolver trait, atomic write, unmanaged-key merge) |
None — workspace member restoration only; apply_settings/apply_mcp_governance are internal adapter implementations with no changes to existing public API surfaces |
| AAASM-1206 | Added [profile.release] to workspace Cargo.toml (opt-level="z", lto=true, codegen-units=1, strip=true, panic="abort") — build profile change only, no version bump |
None — affects binary size of release builds only; no API, protocol, or ABI changes |
| AAASM-1076 | Added aa-topology-integration-tests workspace crate (in-process end-to-end test harness for the topology pipeline; publish = false, dev-dependencies only) |
None — test-only crate, no shipped artifacts; depends on existing aa-api / aa-gateway / aa-runtime public surfaces with no API changes |
| AAASM-1448 | Renamed aa-topology-integration-tests workspace crate to aa-integration-tests (in preparation for AAASM-1258 CLI subcommand coverage). Renamed .github/workflows/topology-integration.yml to integration-tests.yml. |
None — test-only crate, no shipped artifacts; dev-dependencies only; no public API change |
| AAASM-1419 | Added CallStackNode proto message + repeated CallStackNode call_stack = 28 field on AuditEvent; added CallStackNode to aa-api ViolationPayload::Audit (utoipa schema regenerated); wired through dashboard useLiveOpsStream.mapEvent |
None on protocol/v1 — non-breaking proto field addition (default empty). SDK regeneration for aa-ffi-python / aa-ffi-node / aa-ffi-go tracked as separate follow-up Tasks against this revision; older SDKs continue to interoperate (the new field is ignored on decode). |
| AAASM-2015 | Added aa-sandbox workspace crate (wasmtime + wasmtime-wasi host runtime scaffold for F116 ST-W tool-execution sandbox; doc-only modules error, policy, runtime — real WASI host wiring lands in AAASM-2017, fuel + memory-store limits in AAASM-2018) |
None — new internal crate, no public API or protocol change; aa-wasm browser-target stub untouched |
| AAASM-2340 | Workspace prepared for crates.io publish via cargo-workspaces topological order. Per-crate publish flags set: publishable (default) for aa-core, aa-proto, aa-runtime, aa-ebpf, aa-ebpf-common, aa-proxy, aa-sandbox, aa-gateway, aa-cli; publish = false for all aa-devtool* (dev-tool subsystem held back from this alpha — not yet feature-complete), all aa-ffi-* + aa-wasm (SDK FFI scaffolding — each language SDK repo carries its own copy and ships via PyPI / npm / Go module proxy), and aa-api / conformance / aa-integration-tests / examples/* (cloud/enterprise consumers + workspace-internal tooling). All publishable crates' path-deps gained explicit version = "0.0.1-alpha.3" literals so cargo publish manifest verification passes. release.yml publish-crate job replaced with publish-crates (cargo-workspaces). Sibling content bundled into crate tarballs via _embedded/ mirrors so cargo install aasm ships the full product — aa-cli/_embedded/dashboard/dist/ (real SPA, not stub), aa-proto/_embedded/proto/ (gRPC contract), aa-ebpf/_embedded/aa-ebpf-probes/ (BPF source, compiled at install time when nightly + bpfel target are present, otherwise graceful stubs). New aasm sandbox run / aasm sandbox info subcommands expose the WASI tool-execution sandbox (highlight ④ of the product spec) to OSS users. Source tree keeps the full aasm surface including run and tools; the .ci/strip-for-publish.sh script removes the held-back aa-devtool* deps and the two consuming source files from the working tree right before cargo workspaces publish runs (driven by strip-for-publish:begin / :end markers in aa-cli/Cargo.toml and aa-cli/src/commands/mod.rs). Restores cargo install aasm as a supported install path. Resolves AAASM-2094 the right way (supersedes the closed AAASM-2338 / PR #840). |
Behavior delta — published aasm binary on crates.io omits the run and tools subcommands. Local source builds (cargo build -p aa-cli) expose the full surface unchanged. To restore the subcommands on crates.io once dev-tool ships, remove the strip step from release.yml and flip the three aa-devtool* crates' publish flags. No public Rust API, protocol, or ABI changes; new aasm sandbox CLI surface is additive. At 0.x.y SemVer, internal crates carry no API stability commitment; READMEs note 'internal use only'. |
| AAASM-2343 | Bumped workspace + 22 path-dep version literals from 0.0.1-alpha.3 to 0.0.1-alpha.4. Fourth pre-release in the v0.0.1 dry-run series. Verifies AAASM-2340 (cargo-workspaces topological publish — first cargo install aasm ever), AAASM-2339 (curl smoke channel gated with if: false), and AAASM-2336 (notify-downstream → node-sdk + python-sdk repository_dispatch, supersedes AAASM-2328 retry workaround). Companion python-sdk listener AAASM-2342 lands in the same release cycle. |
None — pre-release version bump; AAASM-2340 behaviour delta (held-back aasm run / aasm tools on crates.io) carries forward unchanged. |
| AAASM-2461 | Bumped workspace + 22 path-dep version literals from 0.0.1-alpha.4 to 0.0.1-alpha.5. Fifth pre-release in the v0.0.1 dry-run series. Validates the full release pipeline end-to-end with all alpha-4 recovery fixes baked in: AAASM-2346 (cargo workspaces publish --allow-dirty), AAASM-2455 / AAASM-2457 (smoke matrix restructure), AAASM-2456 (RUNBOOK + release-readiness.sh + per-channel aggregator), plus SDK companions node-sdk#67 (AAASM-2344) and python-sdk#74/#75/#76 (AAASM-2345 / AAASM-2459 / AAASM-2460). On crates.io, aa-core re-publishes at 0.0.1-alpha.5 alongside its existing 0.0.1-alpha.4 row from the partial alpha-4 publish; the other 8 crates publish for the first time. |
None — pre-release version bump; AAASM-2340 behaviour delta (held-back aasm run / aasm tools on crates.io) carries forward unchanged. |
| AAASM-2767 | Bumped workspace + 35 path-dep version literals from 0.0.1-alpha.5 to 0.0.1-alpha.6. Sixth pre-release in the v0.0.1 dry-run series. Re-runs the full release pipeline with the two alpha-5 recovery fixes baked in: AAASM-2463 commit 1 (PR #871 — --no-verify on cargo workspaces publish, bypassing the cargo publish --verify source-mutation guard that aa-ebpf/build.rs's Cargo.toml.embedded rename tripped) and AAASM-2463 commit 2 (PR #871 — removed the smoke-test: job that raced publish-crates and the homebrew tap PR merge). On crates.io, aa-core / aa-proto / aa-ebpf-common re-publish at 0.0.1-alpha.6 alongside their existing 0.0.1-alpha.5 rows from the partial alpha-5 publish; the other 6 crates (aa-ebpf, aa-runtime, aa-proxy, aa-sandbox, aa-gateway, aa-cli) publish for the first time. |
None — pre-release version bump; AAASM-2340 behaviour delta (held-back aasm run / aasm tools on crates.io) carries forward unchanged. |
| AAASM-2786 | Bumped workspace + 35 path-dep version literals from 0.0.1-alpha.6 to 0.0.1-alpha.7. Seventh pre-release in the v0.0.1 dry-run series. Re-runs the full release pipeline with the AAASM-2775 strip-for-publish fix baked into master (PR #1021 — wrapped aa-integration-tests/Cargo.toml's audit-consumer = ["aa-gateway/audit-consumer"] feature forward in strip-for-publish:begin audit-consumer / :end markers and added the file to MARKED_FILES in .ci/strip-for-publish.sh; the alpha-6 publish-crates failed at the cargo-workspaces resolver because the workspace graph still referenced the stripped feature). Also benefits from two companion SDK-workflow settings fixes applied via API: org-level "Allow GitHub Actions to create/approve PRs" enabled (unblocks node-sdk's docs-version PR step), and go-sdk's github-pages env adds a v* tag deployment policy (unblocks Pages deployment on tag pushes). On crates.io, aa-core / aa-proto / aa-ebpf-common re-publish at 0.0.1-alpha.7 alongside their existing 0.0.1-alpha.5 rows (the alpha-6 retries failed); the other 6 crates publish for the first time. |
None — pre-release version bump; AAASM-2340 behaviour delta (held-back aasm run / aasm tools on crates.io) carries forward unchanged. |
| AAASM-2805 | Bumped workspace + 35 historical path-dep version literals AND 8 newly added storage/cache path-dep version literals (AAASM-2797 / PR #1024) from 0.0.1-alpha.7 to 0.0.1-alpha.8. Eighth pre-release in the v0.0.1 dry-run series. Re-runs the full release pipeline with the AAASM-2797 fix baked into master — 5 storage/cache crates (aa-storage, aa-storage-memory, aa-storage-redis, aa-storage-sqlite-buffer, aa-cache) had path-deps without the version = "..." literal that cargo publish demands. alpha-7's publish-crates died after publishing only aa-core@0.0.1-alpha.7 because of this latent bug. On crates.io, all 14 publishable crates are expected to land for the first time end-to-end: the 9 historical (re-publish at alpha-8 alongside existing rows) plus the 5 storage/cache crates (publish for the first time ever). Still-open follow-up: Homebrew brew install + test (macOS) silent-SIGKILL investigation (the AAASM-2792 revert didn't fix it; --release post-AAASM-2575 is the fast profile, not size-optimized; suspect is a new transitive dep added since alpha-5 such as redis 1.2 / deadpool-redis 0.23 via aa-storage-redis). |
None — pre-release version bump; AAASM-2340 behaviour delta (held-back aasm run / aasm tools on crates.io) carries forward unchanged. |
| AAASM-2849 | Bumped workspace + 43 path-dep version literals from 0.0.1-alpha.8 to 0.0.1-alpha.9. Ninth pre-release in the v0.0.1 dry-run series. First coordinated release after the AAASM-2851 SDK release decoupling chapter — validates that the repository_dispatch fan-out still works end-to-end after the restructure of release-node.yml (publish_mode gating, dry-run input, Resolve refactor) and release-python.yml (resolve job, sync-version composite action rename). Carries agent-assembly docs polish (AAASM-2199, 2827, 2833, 2841, 2858) and drives @agent-assembly/sdk@0.0.1-alpha.9 (full AAASM-2851 chain + AAASM-2842 public GatewayClient + AAASM-2870 README polish) and agent-assembly==0.0.1a9 (symmetric python-sdk content + AAASM-2863 PEP 440 test + AAASM-2868 docs CI gate + AAASM-2869 runbook) downstream via repository_dispatch. On crates.io, all 14 publishable crates re-publish at 0.0.1-alpha.9 alongside their existing 0.0.1-alpha.8 rows. |
None — pre-release version bump; AAASM-2340 behaviour delta (held-back aasm run / aasm tools on crates.io) carries forward unchanged. |
| AAASM-2951 | Bumped workspace + 16 path-dep version literals from 0.0.1-alpha.9 to 0.0.1-beta.1. First beta-channel pre-release in the v0.0.1 series — promotes the pre-release channel up from alpha after the alpha-1 → alpha-9 dry-run series stabilised every release channel. Coordinated release across agent-assembly + python-sdk + node-sdk + go-sdk; drives @agent-assembly/sdk@0.0.1-beta.1, agent-assembly==0.0.1b1, and github.com/ai-agent-assembly/go-sdk@v0.0.1-beta.1 downstream. Carries the AAASM-2934 SDK Examples documentation chapter (multi-page Examples sections in the node/python/go SDK docs + an agent-assembly core-docs Examples pointer). On crates.io, all 14 publishable crates re-publish at 0.0.1-beta.1 alongside their existing 0.0.1-alpha.9 rows. |
None — pre-release version bump; AAASM-2340 behaviour delta (held-back aasm run / aasm tools on crates.io) carries forward unchanged. |
| AAASM-3004 | Bumped workspace + 16 path-dep version literals from 0.0.1-beta.1 to 0.0.1-beta.2. Second pre-release in the v0.0.1 beta channel — a forward-roll cut on top of 0.0.1-beta.1 (no channel promotion, no scope expansion) carrying the AAASM-3000 IPC deadlock fix in aa-sdk-client (event reporting is now fire-and-forget, closing the deadlock against a runtime that doesn't ack) plus the AAASM-2959 release-tooling sync that keeps aa-ffi-python and aa-ffi-node Cargo.lock consistent with the bumped aa-sdk-client revision. Coordinated release across agent-assembly + python-sdk + node-sdk + go-sdk; drives @agent-assembly/sdk@0.0.1-beta.2, agent-assembly==0.0.1b2, and github.com/ai-agent-assembly/go-sdk@v0.0.1-beta.2 downstream. On crates.io, all 14 publishable crates re-publish at 0.0.1-beta.2 alongside their existing 0.0.1-beta.1 rows. |
None — pre-release version bump + a behaviour-preserving deadlock fix on the SDK event-report path (the prior code blocked on an ack that the runtime didn't send; consumers that already worked still work). AAASM-2340 behaviour delta (held-back aasm run / aasm tools on crates.io) carries forward unchanged. |
| AAASM-2372 | Added aa-storage-redis workspace crate (Redis L2 shared-cache driver implementing SessionStore, RateLimitCounter, and PolicyStore from aa-core::storage; redis 1.2 + deadpool-redis 0.23 pooling; RateLimitCounter uses an atomic Lua INCRBY+EXPIRE script). No version change. |
None — new driver crate, no changes to existing public API surface. xxhash-rust BSL-1.0 (transitive via redis) is already allow-listed in deny.toml. |
| AAASM-2369 | Added aa-storage-postgres workspace crate (L3 primary PostgreSQL storage driver — ships sqlx migrations for the four MVP tables orgs/agents/policies/audit_logs and a [storage.postgres] connection-pool config; publish = false until the storage-driver subsystem is feature-complete). The aa_core::storage trait impls (PgPolicyStore / PgAuditSink / PgCredentialStore / PgLifecycleStore) land in AAASM-2370. No version change. |
None — new internal driver crate; no existing public API, protocol, or ABI change |
| AAASM-2575 | Split the default [profile.release] into a fast build (opt-level=2, lto="thin", codegen-units=16; strip + panic="abort" unchanged) and added a size-optimized [profile.dist] (inherits release; opt-level="z", fat lto, codegen-units=1). release.yml now ships the binary with --profile dist. Build-profile change only, no version bump. |
None — affects build speed and which profile produces the shipped binary; dist reproduces the previous size-optimized output. No API, protocol, or ABI change. |
| AAASM-2555 | Added a [workspace.dependencies] table to the root Cargo.toml centralizing third-party crates shared by ≥2 members, and converted those members to dep = { workspace = true } (single source of version truth). Pure manifest refactor — Cargo.lock byte-for-byte unchanged and cargo tree -d identical to the prior revision (108 duplicate nodes); no version bump. Single-member and intentionally-pinned crates (e.g. rusqlite per AAASM-2374) stay declared locally. |
None — no version, protocol, or ABI change; resolved dependency graph is identical, so runtime behavior is unchanged |
| AAASM-2588 | Added [profile.dev] (debug="line-tables-only") and [profile.dev.package."*"] (opt-level=1, debug=false) to tune dev/test build time, plus an opt-in (commented) .cargo/config.toml faster-linker template and a CONTRIBUTING.md section. Raised the integration-tests job timeout-minutes 20→30 to absorb the slightly heavier optimized-deps build. Build-config change only, no version bump. |
None — affects local/CI build speed and dev-build debuginfo verbosity only; no API, protocol, or ABI change. |
| AAASM-2623 | Added aa-sdk-client workspace crate (Story AAASM-2570 — the shared, FFI-agnostic SDK runtime-client: UDS transport, IPC wire codec, AssemblyClient lifecycle, and advisory non-authoritative credential preflight, extracted from aa-ffi-python). Scaffold only in this PR (publish = false until AAASM-2559 makes the shared crates pinnable); modules land in AAASM-2624/2625/2626. aa-ffi-python is untouched — its migration onto this crate is AAASM-2561. |
None — new internal crate, no existing public API, protocol, or ABI change |
| AAASM-2646 | Removed the fat aa-ffi-python + aa-ffi-node members from root Cargo.toml and deleted the crates (Epic AAASM-2552 final story). The thin Node/Python shims now live in the sibling node-sdk / python-sdk repos on the pinned aa-sdk-client (AAASM-2560 / AAASM-2561); aa-ffi-go (C-ABI staticlib artifact consumed by go-sdk) and aa-sdk-client are retained, as is workspace.exclude = ["node-sdk"] (the e2e_sdk_node tests still build the sibling thin shim). Shrinks cargo build --workspace by dropping the pyo3 / napi / napi-derive / napi-build dep subtrees. |
None — workspace member removal only; the Python/Node/Go SDKs ship from their own repos and keep their versions + protocol/v1 compatibility. No aa-runtime version, protocol, or ABI change |
| AAASM-2703 | Removed the aa-ffi-go member from root Cargo.toml, deleted the crate, and deleted its ffi-go-staticlib.yml build workflow (Epic AAASM-2552). The thin Go cgo shim now lives in the sibling go-sdk repo (native/aa-ffi-go) on the pinned aa-sdk-client (AAASM-2704), matching the Node/Python model — the monorepo no longer hosts any FFI shim. Amends ADR 0002 (which had kept aa-ffi-go in the workspace). |
None — workspace member removal only; the Go SDK ships from its own repo and keeps its version + protocol/v1 compatibility. No aa-runtime version, protocol, or ABI change |
| AAASM-3562 | Added zeroize (with zeroize_derive) to the root Cargo.toml [workspace.dependencies] table and consumed it (plus the already-declared workspace libc) in aa-proxy for the egress credential-injection path (zeroizing CredentialStore, mlock/PR_SET_DUMPABLE process hardening). New third-party workspace dependency only — no version bump. |
None — internal dependency addition; no public API, protocol, or ABI change. The proxy forwards the agent's request unchanged unless an operator configures AA_PROXY_PROVIDER_KEYS, so the default data path is backward compatible. |
| PR #1059 (Dependabot) | Bumped the workspace tower-http dependency from 0.6.11 to 0.7.0 in root Cargo.toml (HTTP middleware used by aa-api / aa-gateway). Compiles and passes the full workspace test suite + clippy unchanged. A transitive tower-http 0.6 remains in Cargo.lock via an upstream dependency; both coexist. No version bump. |
None — internal third-party dependency bump; no public API, protocol, or ABI change |