Python: [BREAKING] Graduate file memory provider out of experimental#7113
Python: [BREAKING] Graduate file memory provider out of experimental#7113westey-m wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
Pull request overview
This PR graduates the Python harness FileMemoryProvider out of experimental status so downstream users can depend on it without the experimental feature-stage metadata/warnings being attached to that provider type.
Changes:
- Removed the
@experimental(feature_id=ExperimentalFeature.HARNESS)decorator fromFileMemoryProviderand dropped the now-unused feature-stage import. - Updated the unit test to guard graduation by asserting
FileMemoryProviderno longer carries__feature_stage__/__feature_id__metadata.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| python/packages/core/agent_framework/_harness/_file_memory.py | Removes experimental decoration/metadata wiring from FileMemoryProvider by deleting the decorator and unused import. |
| python/packages/core/tests/core/test_harness_file_memory.py | Updates the test to assert the provider is not marked experimental (no feature-stage metadata). |
There was a problem hiding this comment.
Automated Code Review
Reviewers: 5 | Confidence: 95%
✓ Correctness
This is a straightforward, correct change. The
@experimentaldecorator and its import are cleanly removed fromFileMemoryProviderin_file_memory.py. TheExperimentalFeature.HARNESSenum andexperimentaldecorator remain in use in_file_access.pyfor the still-experimental file-store types, so no dead code or missing references are introduced. The test is properly inverted to assert the absence of experimental metadata. No correctness issues found.
✓ Security Reliability
This PR cleanly removes the
@experimentaldecorator from FileMemoryProvider and updates the corresponding test to assert the absence of experimental metadata. The removed import (ExperimentalFeature, experimental) was only used by the decorator in this file, so no dangling references remain. The ExperimentalFeature.HARNESS enum value is still actively used by many other harness modules (_file_access.py, _agent.py, _todo.py, _loop.py, _memory.py, _background_agents.py), so it is correctly retained. No security or reliability issues found.
✓ Test Coverage
The PR cleanly removes the
@experimentaldecorator from FileMemoryProvider and updates the corresponding test to verify graduation. The updated test (test_file_memory_provider_is_not_experimental) correctly asserts that both__feature_stage__and__feature_id__metadata are absent, which is a slightly stronger guard than the original test (which only checked__feature_stage__). Test coverage for the behavioral change is adequate — the rest of the existing test suite continues to exercise the provider's functional behavior without relying on experimental status. No test gaps found.
✓ Failure Modes
This PR cleanly removes the
@experimentaldecorator from FileMemoryProvider and updates the corresponding test to assert the absence of experimental metadata. The import removal is safe — no other reference to ExperimentalFeature or experimental exists in _file_memory.py. There are no silent failure modes, swallowed exceptions, or operational risks introduced by this change. The decorator removal is a purely declarative change that does not alter any runtime behavior, error handling, or data paths.
✗ Design Approach
The PR removes experimental metadata from
FileMemoryProvider, but the normal file-memory code path still instantiates an experimental store, so users will continue to seeExperimentalWarningwhen using file memory through the default harness wiring. That means the current design does not fully deliver the stated graduation goal; I have one blocking design issue on that path and no additional suggestions beyond resolving that inconsistency.
Flagged Issues
- Graduating only
FileMemoryProvideris incomplete: the default harness path still createsFileSystemAgentFileStorefor file memory (python/packages/core/agent_framework/_harness/_agent.py:181-186), and experimental classes emit runtime warnings on instantiation (python/packages/core/agent_framework/_feature_stage.py:263-283). BecauseFileSystemAgentFileStoreremains decorated as experimental (python/packages/core/agent_framework/_harness/_file_access.py:767-768), downstream users still hit experimental warnings on the standard file-memory path even after this PR.
Automated review by westey-m's agents
|
Flagged issue Graduating only Source: automated DevFlow PR review |
Python Test Coverage Report •
Python Unit Test Overview
|
||||||||||||||||||||||||||||||
Motivation & Context
The Microsoft Agent Framework harness depends on several building-block features
that are still marked experimental. As part of releasing those dependencies (see
#6964), the file memory provider is now stable enough to graduate out of
experimental status so downstream users can rely on it without opting into
experimental warnings.
Description & Review Guide
What are the major changes?
@experimental(feature_id=ExperimentalFeature.HARNESS)decoratorfrom
FileMemoryProviderin_harness/_file_memory.py, along with thenow-unused
_feature_stageimport.(
test_file_memory_provider_is_not_experimental) asserting the provider nolonger carries
__feature_stage__/__feature_id__metadata.What is the impact of these changes?
FileMemoryProviderno longer emits experimental warnings.breaking so preview users of the experimental harness are notified; no
released API is broken.
ExperimentalFeature.HARNESSid is intentionally retained (stillreferenced by other harness symbols that remain experimental).
_file_access.py(AgentFileStore,InMemoryAgentFileStore,FileSystemAgentFileStore, and the file DTOs)remain experimental and are intentionally out of scope here.
What do you want reviewers to focus on?
FileMemoryProvider(and its already-undecoratedDEFAULT_FILE_MEMORY_SOURCE_ID/DEFAULT_FILE_MEMORY_INSTRUCTIONSconstants) is the intended graduation scope, while the shared file-store
types remain experimental.
Related Issue
Related to #6964
Contribution Checklist
breaking changelabel (or add "[BREAKING]" to the title prefix, before or after any language prefix) — a workflow keeps the label and title prefix in sync automatically.