Repository navigation
[AAASM-6154] ⬆️ (examples): Adopt SDK rc.7 via the sdk-versions.yaml source of truth - #613
Chisanan232 wants to merge 3 commits into
Conversation
… truth Moves metadata/sdk-versions.yaml from 0.0.1rc6 to 0.0.1rc7 (Python) and 0.0.1-rc.6 to 0.0.1-rc.7 (Node), then runs scripts/generate_example_metadata.py to align every dependent surface, and relocks all 18 Python examples and all 7 Node examples. Supersedes 25 Dependabot PRs that cannot be merged individually: the pin is a single repo-wide source of truth, so a PR bumping one manifest is drift relative to it and the `metadata drift` job reverts the bump. Dependabot also bumped the manifests without relocking, so `uv sync --locked` failed on each one. Go stays at v0.0.1-rc.6 deliberately — go-sdk has no v0.0.1-rc.7 tag and the module proxy lists nothing past rc.6, which is also why Dependabot raised no go-sdk PRs. Both moved versions are really published: PyPI agent-assembly 0.0.1rc7 has 13 unyanked files, and npm @agent-assembly/sdk 0.0.1-rc.7 is in the registry. Node relocks ran against registry.npmjs.org explicitly rather than the corporate registry in ~/.npmrc, which has produced misleading relocks before. Every pnpm lockfile stays at lockfileVersion 9.0. refs AAASM-6154 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…tched The relock in the previous commit re-resolved this example from main, which does not yet carry the fix in PR 612 — so it reverted mcp to 1.26.0 and json-repair to 0.25.3, the versions four high-severity Dependabot alerts cover (mcp 32/33/34, json-repair 31). Re-applies the same in-range re-resolve as AAASM-6153 so the vulnerability cannot return whichever order the two PRs merge in. crewai moves 1.15.2 -> 1.15.22 within its already-declared `crewai>=1.15.2`; no constraint was weakened or deleted and pyproject.toml is unchanged. These packages are reachable only via the optional `live` extra, which CI does not install. refs AAASM-6153 refs AAASM-6154 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Held: rc.7 adoption is blocked by a real SDK behaviour change (AAASM-6155)The 16 failing Baseline
Root cause (proved, not inferred)
The unintended part is its interaction with Controlled comparison in
This is not merely a stale test mockEach example's It still passes on macOS, because there There is a second, independent rc.7 change in the same Why nothing here was forced greenThe failing assertion encodes a real product contract, and the only alternative fix edits 16 examples' runtime governance posture from the default to a dry-run mode. Neither belongs in a dependency bump, so this PR is held rather than adjusted to pass. No test was edited, skipped or deleted, and no gate was weakened. What is unaffectedPR #612 (the crewai-research-crew security relock for the Tracking: AAASM-6155 (High), with the two candidate resolutions written up there. Text-only evidence, per this workstation's data-handling policy. |
Update: AAASM-6155 is fixed; two things still gate this pull requestThe SDK defect this was held on has a fix in review: ai-agent-assembly/python-sdk#343. Verified in
Remaining gate 1 — a second, examples-side change is needed hereThe SDK fix alone does not make these 16 jobs pass. Their smoke tests patch the private
Tracked as AAASM-6156. It is a one-line correction per directory that leaves every assertion, every Remaining gate 2 — this branch cannot be revalidated until rc.8 is publishedThe lockfile here resolves So: staying draft, not merged. The two scenario examples that pass today are untouched and remain the controls. No assertion has been weakened and the lockfile discipline has not been bypassed to make anything green. External evidence is text only, per this workstation's data-handling policy. |
Correction to my earlier comment on this branchMy earlier comment said the stale example mock fix "belongs on this branch rather than What I actually measuredSix runs in
Row 2 is what breaks the old plan: the rc.7 2-tuple shape cannot even be named on Row 3 is the way out: patching the public Where it went instead#614, on What that leaves for this branchOnce #614 is on
It still cannot be revalidated until an SDK release contains the AAASM-6155 fix (python-sdk#343) — the bottom three rows above show released rc.7 raises regardless of which mock is installed. This stays draft until then. External evidence is text only, per this workstation's data-handling policy. |
Classification: BLOCKED_BY_UNRELEASED_UPSTREAM_VERSIONThis PR stays draft and unmerged. No release will be created to unblock it — a Python SDK release is a separate product decision and is explicitly out of scope for the dependency/security sweep. Recording the exact blocker here so the state is unambiguous. What released version this resolves to
Why that released version cannot contain the fix it needsThe examples need AAASM-6155 — an Verified rather than assumed, in
The swap is a fair proxy because What actually happens on released rc.7Three mock shapes, one variable at a time:
Row 3 is the important one: the seam correction from #614, now on Why this cannot be split into "the two that work"
Exactly 18 directories pin
Python rc.7 adoption here is all-or-nothing by design. That is why the 18 individual bot PRs each show two reds — What would make revalidation possibleThe next Python SDK version that is naturally published from When such a release exists, the sequence is: bump Meanwhile
External evidence is text only, per this workstation's data-handling policy. |
The node half of this change has already reached main independently: main now carries `node.version: "0.0.1-rc.7"` in metadata/sdk-versions.yaml and `@agent-assembly/sdk@0.0.1-rc.7` in every node lockfile. What is left here is the python half, which main still pins at `0.0.1rc6`. Both conflicts were in node/vercel-ai, and both were the same fact: main has since taken `ai` from ^7.0.101 to ^7.0.107 (#625), which also re-resolves the SDK's peer in the lockfile. main's side is authoritative for a directory this branch no longer needs to change, so it is taken verbatim — node/vercel-ai is now byte-identical to main. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|



Scope correction: this is now the Python half only
When this PR was opened it carried both ecosystems. It no longer does. #576 merged on
2026-09-22 (merge commit
5ea1671d17a61c4b48cd6538537c746ec2cdd7f9), sonode.versionis already0.0.1-rc.7onmainand the Node half of the rc.7 adoption is done and shipped. After mergingmainback in, everynode/path dropped out of this diff.metadata/sdk-versions.yaml0.0.1rc6→0.0.1rc7node/paths in the diffThe remaining 58: the source of truth, 18
pyproject.toml, 18uv.lock, 19README.md, oneDockerfile, oneverify-live.ymlpin.Go stays at
v0.0.1-rc.6deliberately —go-sdkhas nov0.0.1-rc.7tag and the module proxylists nothing past rc.6, which is also why Dependabot raised zero go-sdk PRs. Bumping it would break
the Go examples.
Current CI state and what it means
On head
ea25972: 45 check runs — 28 pass, 16 fail, 1 pre-existing skip(
live: live-core-enforcement (real gateway)).The install failure this PR used to have is gone. Every Python job now gets past dependency
resolution and reaches the smoke-test step, so the stale-lockfile problem recorded earlier is fixed
and the branch is
MERGEABLE(mergeStateStatus: BLOCKEDreflects required review only).The 16 failures were not assumed to share a cause — all 16 logs were pulled and partitioned. Each
reports
1 failed, N passed, with 85 other tests passing, and zero of the 16 contain thestale-lockfile error. All 16 fail on exactly one assertion:
That is AAASM-6155, reached after a successful install, in shipped SDK code. Nothing a relock can
move.
The failure surface is exactly predictable, which is why this is a product defect rather than
example drift. Two independent greps select the same 16 of 18 directories and exclude the same 2:
test_init_assembly_sdk_only_requires_no_gatewaysrc/main.pycallsinit_assemblyscenarios/approval-gates/pythonandscenarios/policy-enforcement/pythonThose two scenario examples pass at rc.7 on this very PR. Their only mention of
init_assemblyisinside a module docstring describing production usage; no executed line calls it, so they never reach
the changed registration path. They would therefore work at rc.7 today, but they cannot be
shipped ahead of the fix:
python.versionis a single global pin with no per-directory override, soregenerating moves all 18 or none.
Correction to an earlier claim in this description
A previous revision said the defect was Linux-only in effect, because on macOS
connect_runtime_client()returnsNoneand registration takes an early warn-and-return path. Thatis wrong and has been retracted. Re-verified on macOS from two fresh virtual environments installed
straight from PyPI, same interpreter, nothing listening on the gateway port:
native_core_availableis
Trueandconnect_runtime_client(...)returns aRuntimeClientin both, rc.6 initialisesfine, and rc.7 raises the same
ConfigurationError. The documented offline quick-start exits0onrc.6 and
1on rc.7 on this host too.So macOS is a valid verification host for this defect, and the user-visible breakage is broader than
first recorded — it is the shipped program failing, not only a smoke test. Full evidence, including
the resolver trap that produced the original wrong reading, is on AAASM-6155.
Nothing was weakened to get green. The failing assertion's own name states the contract it
protects, and every example README advertises the offline demo as needing no gateway. No test was
edited, skipped, xfailed or deleted; no example's governance posture was changed; the SDK pin was not
reverted; no required check was relaxed. This PR is parked as a draft instead.
Why this is one PR rather than 25
Dependabot opened 25 PRs for this bump — 18 Python, 7 Node, one per example directory. None can be
merged on its own, for two independently verified reasons:
metadata/sdk-versions.yamldeclares it and thegenerator rewrites every manifest, README block, Dockerfile and workflow pin to match. That script,
by its own docstring, never bumps versions; it aligns drift. So a PR bumping one manifest is
drift, and the
metadata driftjob reverts it. Verified on all 18: each one's drift job rewritesagent-assembly==0.0.1rc7straight back to0.0.1rc6.examplesjob runsuv sync --extra dev --locked --no-build, which resolves fine and then fails withThe lockfile at uv.lock needs to be updated, but --locked was provided.Neither is fixable inside a single Dependabot PR, because bumping the source of truth in any one PR
necessarily aligns all manifests in that same PR. This PR therefore follows the procedure the
source-of-truth file's own header prescribes: edit this file only on a new SDK release, then run the
generator.
The three commits
2c3fbcdfcf23c2crewai-research-crew'smcpandjson-repairpatchedea25972origin/mainin — a true merge commit, no squash, no rebaseea25972resolved the only two conflicting files, both undernode/vercel-ai, both the same singlefact:
mainhad already movedaifrom^7.0.101to^7.0.107. Main's side was taken verbatim, sonode/vercel-aiis byte-identical tomainand drops out of the diff entirely.fcf23c2predates #612 landing. Now that #612 is merged,mainitself carries the patched floors, andthis branch matches it:
mcp1.28.1 andjson-repair0.60.1, identical tomain. The commit is keptas history rather than rewritten; it is no longer load-bearing.
How to verify
Text-only evidence, per workstation data-handling policy — no screenshots attached.
Published-version check. The moved version is really published, not merely proposed:
agent-assembly@agent-assembly/sdkmainvia #576go-sdkNote what this table does and does not establish: rc.7 exists, so the bump target is real — the old
reading that these PRs targeted a nonexistent version was wrong. What does not yet exist is a
published version newer than rc.7 carrying
0d9d83a0.Every gate CI runs, re-run locally on the current head:
generate_example_metadata.pyextract_snippets.pypython -m unittest scripts.test_generate_example_metadatacheck_pnpm_overrides_parity.pyuv lock --checkacross all 18 Python directoriesAnti-vacuity checks, so a relock that quietly did nothing would be caught:
uv.lockfiles carries0.0.1rc7— 18 of 18uv.lockand 18pyproject.tomlfiles changed, matching each othermcp1.28.1,json-repair0.60.1One pre-existing condition, deliberately left alone:
python/crewai-research-crewresolvesbuild==1.5.1, which is yanked. It is byte-identical to whatmainalready carries, the yank reasonis a breaking-change concern rather than a vulnerability, and it is unrelated to this bump — so it is
reported, not changed.
The exact condition that unblocks this
A published PyPI
agent-assemblynewer than0.0.1rc7whose wheel containspython-sdkcommit0d9d83a02e84d41c369fb8627677cfdf0d13ea59. No version number is being reserved or implied here, andno release is being requested.
When it exists, the work is: set
python.versioninmetadata/sdk-versions.yamlto it, re-run thegenerator, relock the 18 Python directories.
node.versionneeds no change. The 16 jobs above arethen expected green on the merits rather than hoped green, because AAASM-6156 is already on
main,so the public-seam mock is in place and the unpack failure that used to sit behind this one is gone.
Consequence for the 25 Dependabot PRs
The 7 Node ones are superseded — #576 landed their content. The 18 Python ones (571, 572, 574, 575,
577, 578, 580, 582, 584, 585, 587, 588, 590, 592, 593, 594, 595, 597) stay open. Each was re-read
individually rather than assumed to share a cause, and all 18 agree exactly:
--lockedstale-lockfile error0.0.1rc7back to0.0.1rc6Each touches a single
pyproject.toml, so there is no shared-lockfile family and no mergeserialisation to arrange.
They are deliberately not relocked — that could not reach green, it would only trade the lockfile
error for the AAASM-6155 assertion failure on 16 of them. They are deliberately not closed —
nothing about them is wrong, and Dependabot retires them automatically once adoption lands. They are
deliberately not merged — none can be genuinely validated today.
The right label for their state is release-deferred by an intentional product decision, not
unfixed engineering.
Related issues
refs AAASM-6154, AAASM-6153, AAASM-6155, AAASM-6156