Python: Promote agent-framework-declarative package to RC#6256
Conversation
There was a problem hiding this comment.
Pull request overview
Promotes agent-framework-declarative from beta (1.0.0b260528) to release-candidate (1.0.0rc1). Because the YAML agent-loading subsurface is still evolving while the workflows subsurface is RC-stable, the agents path is explicitly marked @experimental so users get an ExperimentalWarning on first use, and the README/package docstring document the dual stability levels.
Changes:
- Bump
agent-framework-declarativeversion to1.0.0rc1inpyproject.tomlanduv.lock. - Add a new
ExperimentalFeature.DECLARATIVE_AGENTSID and decorateAgentFactory,DeclarativeLoaderError,ProviderLookupError, andProviderTypeMappingwith@experimental. - Document the split stability levels in the package README and
__init__docstring, and silence the newExperimentalWarningin the package's pytestfilterwarnings.
Reviewed changes
Copilot reviewed 5 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| python/uv.lock | Version bump for the editable declarative package; reordered github-copilot-sdk specifier (no semantic change). |
| python/packages/declarative/README.md | Documents that workflows are RC while agents remain experimental. |
| python/packages/declarative/pyproject.toml | Bumps version to 1.0.0rc1; ignores ExperimentalWarning in pytest. |
| python/packages/declarative/agent_framework_declarative/_loader.py | Imports experimental/ExperimentalFeature and decorates the agents-loading symbols. |
| python/packages/declarative/agent_framework_declarative/init.py | Adds module docstring describing the dual stability levels. |
| python/packages/core/agent_framework/_feature_stage.py | Adds DECLARATIVE_AGENTS to the ExperimentalFeature enum. |
Python Test Coverage Report •
Python Unit Test Overview
|
||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Automated Code Review
Reviewers: 4 | Confidence: 87%
✓ Correctness
Applying
@experimentaltoDeclarativeLoaderErrorcauses its__init_subclass__hook to fire at import time whenProviderLookupError(a subclass defined in the same file) is created. Because_warn_on_feature_usededuplicates by(category, feature_id)and all four decorated classes shareDECLARATIVE_AGENTS, the one-shot warning budget is consumed at import time by this internal subclass definition. Consequently, the@experimentaldecorator onAgentFactorybecomes effectively silent — actual users instantiatingAgentFactory()will never see a warning.
✓ Security Reliability
This PR promotes the declarative package to RC and marks the agents loader surface as experimental using the existing
@experimentaldecorator. No security or reliability issues found. The decorator application follows established patterns in the codebase. The only minor observation is that applying@experimentalto both DeclarativeLoaderError and its subclass ProviderLookupError causes the per-feature warning to fire at import time (via init_subclass) rather than at user-facing API usage, but this is a known behavioral characteristic of the decorator and does not impact correctness or safety.
✓ Test Coverage
The PR correctly applies
@experimentaldecorators to four declarative-agents classes and suppresses warnings in pytest config so existing tests pass. However, it adds no tests verifying the experimental annotations were applied (metadata, docstrings, warning emission). The repository has an established pattern for such tests (see TestSkillsExperimentalStage in test_skills.py and test_public_symbols_are_marked_experimental in test_functional_workflow.py) that this PR does not follow.
✗ Design Approach
The staged-API approach is mostly consistent with the repo’s existing experimental annotations, but one part of the new contract is not actually implemented: marking
ProviderTypeMappingitself as experimental does not make its normal usage path warn. That leaves the new README/package docs overstating what users will observe for this symbol.
Flagged Issues
-
ProviderTypeMappingdoes not satisfy the documented contract that "using these symbols emits an ExperimentalWarning on first use." Because it is aTypedDictand the decorator only warns on class instantiation/subclassing, calers who pass plain dicts toAgentFactory(additional_mappings=...)will never trigger a warning, making the README/package docstring promise false for this symbol.
Automated review by peibekwe's agents
eavanvalkenburg
left a comment
There was a problem hiding this comment.
This is missing a update in the PACKAGE_STATUS.md file, please make sure to point to the agent to the python package management skill
We should have these skilled installed so one doesn't miss this in the future. It shouldn't require "knowing to point the agent to it." |
They are installed by default and in most cases the agents will recognize them and act accordingly, not sure what happened here, @peibekwe can you check? |
Good catch. The skills exist as expected, I noticed I was in the dotnet working directory which is why it wasn't loaded by default. This is now fixed. |
Motivation and Context
Promote agent-framework-declarative to 1.0.0rc1; mark agents' loader @experimental.
The declarative-workflows surface has matured to RC stability, but the declarative-agents loader (YAML →
Agent) is still evolving. The package graduates to RC while the agents subsurface keeps the weakerexperimentalguarantee.Contribution Checklist