Repository navigation
docs: publish a generated framework version-compatibility page #1068
Copy link
Copy link
Closed
Labels
area:adaptersFramework adapters and connection_kwargs() (1.8, 2.8)Framework adapters and connection_kwargs() (1.8, 2.8)area:docsDocs site, README, verified-apisDocs site, README, verified-apisdocumentationImprovements or additions to documentationImprovements or additions to documentationpriority/p2Meaningful improvement, ship soonMeaningful improvement, ship soonsize/m1-2 days, multiple files1-2 days, multiple files
Description
Part of #1065.
Summary
Add two generated pages from the sources of truth we already have: docs/framework-support.md (the repo-side reference, sibling of docs/python-support.md) and website/content/frameworks/compatibility.mdx (the user-facing docs page). It gives one row per framework adapter: tier, pip extra, minimum supported version (the floor), tested on every PR (the lock), and known incompatible versions (§8.1). It also states the support policy and shows a live nightly status badge. A drift test fails CI whenever a floor, lock or §8.1 change isn't reflected in both outputs.
Where
- New:
python/scripts/render_compatibility.py(with--check),docs/framework-support.mdandwebsite/content/frameworks/compatibility.mdx(both generated, with a "do not edit" header), andpython/tests/unit/test_compatibility_page.py. - Edited:
website/content/frameworks/_meta.js: addcompatibility: 'Version compatibility'afterindex.website/content/frameworks/index.mdx: link to the page.website/content/frameworks/agent-framework.mdx:19,178,186: hard-codedagent-framework 1.19.0, already stale against the 1.20.0 lock.website/content/frameworks/adk.mdx:255: hard-codedgoogle-adk>=2.4.README.md"Framework support" (README.md:104): add a one-line link to both pages.docs/python-support.md: cross-linkdocs/framework-support.md.- The generated llms outputs, so
docs-llms-driftstays green.
Current behavior (verified)
- Floors:
python/pyproject.tomlextras (pyproject.toml:57-84), with the reasons indocs/verified-apis.mdsection 8.3 (:725). - Tested versions:
python/constraints/adapter-contract-<extra>-py3.12.txt(exact pins used by PR CI, ADR 0007 rule 3). - Known-bad versions: the §8.1 table (verified-apis.md:682).
- Tier:
ADAPTERS[k].conformance_tested(integrations/init.py:197). - What users see today: tiers only, in the README and in
frameworks/index.mdx. No page shows versions.
Suggested change
- One generator, two outputs.
render_compatibility.pywrites both files from the same data, so they can't disagree.docs/framework-support.mdis the full contributor reference: the table, the CI jobs that test each framework (adapter-contracton PRs,framework-legsnightly,framework-release-watch), how to refresh the lock, and links to the §8.1 rows. It renders on GitHub, so every lock-bump PR shows a readableold → newdiff of the tested versions.compatibility.mdxis the user-facing page: the table, the policy blurb and the badge, linking to the md file for the details.- It does not live in
docs/verified-apis.md, which stays the §0.3 verification ledger.
- The table: the generator reads the four sources above. It renders a table: Framework | Tier | Extra | Minimum supported | Tested on every PR | Known incompatible. It renders the multi-package extras (
langgraph,adk) as one line per package. - The policy blurb reads: "Supported means any release ≥ the minimum, except the listed incompatibilities. We don't cap versions (no upper pins). Newer releases are tested every night, and any new release is tested on its own within a day. If one breaks us, a public
framework-releaseissue tracks it." Link the openframework-releaseissues and the nightly-matrix status badge. - The drift guard is a unit test that runs
render_compatibility.py --checkon both outputs. Every lock refresh, floor change or §8.1 edit then has to regenerate them in the same PR. That keeps "tested" accurate with no bot commits, and it closes the "docs rot" gap thatddk-docs-syncwarns about. - Wording follows
ddk-docs-authoring: the SDK-developer audience, the trademark/support boundary (§0.4), and "cite a symbol, not path:line". - The co-installability table from ci: test the declared support matrix — lowest-direct per extra, openai<2, Python 3.13/3.14, co-installability #769 gets a placeholder section, linked once that issue lands.
Cross-surface impact
- core/llm/registry/tools/integrations: not affected.
ADAPTERSis read, not changed. - TypeScript parity (planned): not affected. When TS ships, the page needs a language column or a sibling page.
- CLI: not affected. (An optional future follow-up: have
donkey doctorreport installed framework versions against this data. Not requested now.) - Nextra docs site: the new page and the four page edits listed above.
- docs/verified-apis.md: read only (sections 8.1 and 8.3). No row changes.
- Repo docs: the new
docs/framework-support.md, plus a cross-link fromdocs/python-support.md. - README: a one-line link.
Acceptance criteria
-
/frameworks/compatibilityrenders undernpm run devand lists all 8 adapters with their minimum, tested and known-bad versions, matchingpyproject.toml, the locks and §8.1. -
docs/framework-support.mdrenders on GitHub with the same table as the website page, plus the CI-coverage and lock-refresh sections. - Changing a pin in any
adapter-contract-*lock without regenerating makespytest -qfail with a clear "run render_compatibility.py" message, for either output. - No framework page hard-codes a version any more. Each links to the compatibility page instead.
-
docs-llms-driftand the website build are green.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:adaptersFramework adapters and connection_kwargs() (1.8, 2.8)Framework adapters and connection_kwargs() (1.8, 2.8)area:docsDocs site, README, verified-apisDocs site, README, verified-apisdocumentationImprovements or additions to documentationImprovements or additions to documentationpriority/p2Meaningful improvement, ship soonMeaningful improvement, ship soonsize/m1-2 days, multiple files1-2 days, multiple files
Activity
tommasobolis commentedon Oct 11, 2026
Implemented in #1095. Three deviations from the plan above:
python/scripts/generate_docs.py(docs: one source of truth per class of fact — generated tables, API reference, release notes, version banner #795/docs: single-source per-framework verification status from the ledger #1087, landed after this issue was written) instead of a newrender_compatibility.py. Its parametrized drift test (tests/unit/test_generated_docs.py) already fails with "run: python scripts/generate_docs.py" when a lock pin, an extra floor or averified-apis.md§8.1 row moves without regenerating.nightly-failureissue, nightly floors on Python 3.10). The release-watch /framework-releasewording waits for ci: detect new framework releases and test each one in isolation against the PR lock #1066.lock-refresh.yml: it now regenerates the generated docs and the site's llms outputs before committing, otherwise every lock-bump PR would fail the new drift test.docs/ci.mdis updated to match.The co-installability table (#769) exists, so both pages link
docs/co-installability.mddirectly.tommasobolis commentedon Oct 11, 2026
Fixed by #1095 (merged as 7b9a95b).
chore(deps): refresh the PR CI lock (#1145)