зеркало из
https://github.com/docxology/cognitive.git
synced 2025-10-30 12:46:04 +02:00
314 строки
6.2 KiB
Markdown
314 строки
6.2 KiB
Markdown
# API Versioning Guidelines
|
|
|
|
---
|
|
title: API Versioning Guidelines
|
|
type: guide
|
|
status: stable
|
|
created: 2024-02-06
|
|
tags:
|
|
|
|
- api
|
|
- versioning
|
|
- guidelines
|
|
- compatibility
|
|
semantic_relations:
|
|
- type: implements
|
|
links: [[api_documentation]]
|
|
- type: relates
|
|
links:
|
|
- [[documentation_standards]]
|
|
- [[package_documentation]]
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
This guide establishes versioning standards for the Cognitive Modeling Framework's API, ensuring compatibility and clear upgrade paths. See [[api_documentation]] for general API documentation guidelines.
|
|
|
|
## Version Structure
|
|
|
|
### Semantic Versioning
|
|
|
|
```python
|
|
# @version_format
|
|
version_format = {
|
|
"major": "Breaking changes", # e.g., 2.0.0
|
|
"minor": "New features", # e.g., 1.1.0
|
|
"patch": "Bug fixes", # e.g., 1.0.1
|
|
"pre_release": "Alpha/Beta/RC", # e.g., 1.0.0-alpha.1
|
|
"build": "Build metadata" # e.g., 1.0.0+build.123
|
|
}
|
|
```
|
|
|
|
### Version Rules
|
|
|
|
```python
|
|
# @version_rules
|
|
versioning_rules = {
|
|
"major_change": {
|
|
"triggers": [
|
|
"Breaking API changes",
|
|
"Incompatible behavior changes",
|
|
"Major architectural changes"
|
|
],
|
|
"requirements": [
|
|
"Migration guide",
|
|
"Deprecation notices",
|
|
"Compatibility layer"
|
|
]
|
|
},
|
|
"minor_change": {
|
|
"triggers": [
|
|
"New features",
|
|
"Non-breaking additions",
|
|
"Optional capabilities"
|
|
],
|
|
"requirements": [
|
|
"Feature documentation",
|
|
"Example updates",
|
|
"Test coverage"
|
|
]
|
|
},
|
|
"patch_change": {
|
|
"triggers": [
|
|
"Bug fixes",
|
|
"Performance improvements",
|
|
"Documentation updates"
|
|
],
|
|
"requirements": [
|
|
"Change documentation",
|
|
"Test cases",
|
|
"Regression tests"
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
## API Changes
|
|
|
|
### Breaking Changes
|
|
|
|
Changes that require a major version increment:
|
|
|
|
```python
|
|
# Before (1.0.0)
|
|
def update_beliefs(self, observation: np.ndarray) -> np.ndarray:
|
|
"""Update agent beliefs."""
|
|
pass
|
|
|
|
# After (2.0.0)
|
|
def update_beliefs(self,
|
|
observation: np.ndarray,
|
|
precision: float) -> Tuple[np.ndarray, float]:
|
|
"""
|
|
Update agent beliefs with precision.
|
|
See [[belief_updating]] for details.
|
|
"""
|
|
pass
|
|
```
|
|
|
|
### Non-Breaking Additions
|
|
|
|
Changes that require a minor version increment:
|
|
|
|
```python
|
|
# Original (1.0.0)
|
|
class ActiveInferenceAgent:
|
|
def __init__(self):
|
|
pass
|
|
|
|
# Addition (1.1.0)
|
|
class ActiveInferenceAgent:
|
|
def __init__(self):
|
|
pass
|
|
|
|
def save_state(self) -> dict:
|
|
"""
|
|
New method for state serialization.
|
|
See [[state_management]] for details.
|
|
"""
|
|
pass
|
|
```
|
|
|
|
### Patch Changes
|
|
|
|
Changes that require a patch version increment:
|
|
|
|
```python
|
|
# Bug fix (1.0.1)
|
|
def compute_free_energy(beliefs: np.ndarray) -> float:
|
|
"""
|
|
Fixed numerical stability issue.
|
|
See [[numerical_stability]] for details.
|
|
"""
|
|
# Fixed implementation
|
|
pass
|
|
```
|
|
|
|
## Deprecation Process
|
|
|
|
### Deprecation Timeline
|
|
|
|
```python
|
|
# @deprecation_timeline
|
|
deprecation_process = {
|
|
"announcement": {
|
|
"timing": "One major version before removal",
|
|
"requirements": ["Documentation", "Migration guide"]
|
|
},
|
|
"warning_phase": {
|
|
"duration": "One minor version cycle",
|
|
"actions": ["Runtime warnings", "Documentation notices"]
|
|
},
|
|
"removal": {
|
|
"timing": "Next major version",
|
|
"requirements": ["Breaking change notice", "Alternative documentation"]
|
|
}
|
|
}
|
|
```
|
|
|
|
### Deprecation Notices
|
|
|
|
```python
|
|
# Example deprecation warning
|
|
def old_method(self):
|
|
"""
|
|
Deprecated: Will be removed in 2.0.0.
|
|
Use new_method() instead.
|
|
See [[migration_guide]] for details.
|
|
"""
|
|
warnings.warn(
|
|
"old_method is deprecated and will be removed in 2.0.0. "
|
|
"Use new_method instead.",
|
|
DeprecationWarning,
|
|
stacklevel=2
|
|
)
|
|
```
|
|
|
|
## Version Management
|
|
|
|
### Version Tracking
|
|
|
|
```python
|
|
# @version_tracking
|
|
version_info = {
|
|
"documentation": {
|
|
"current_version": "[[api_reference]]",
|
|
"previous_versions": "[[api_archive]]",
|
|
"migration_guides": "[[migration_guide]]"
|
|
},
|
|
"compatibility": {
|
|
"python_versions": "[[python_compatibility]]",
|
|
"dependencies": "[[dependency_matrix]]",
|
|
"platforms": "[[platform_support]]"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Release Process
|
|
|
|
1. Version Bump
|
|
|
|
```python
|
|
# Update version
|
|
__version__ = "1.1.0"
|
|
```
|
|
|
|
2. Documentation Update
|
|
- Update [[api_reference]]
|
|
- Update [[changelog]]
|
|
- Update [[migration_guide]]
|
|
|
|
3. Validation
|
|
- Run [[validation_framework|API validation]]
|
|
- Check [[compatibility_matrix]]
|
|
- Verify [[documentation_completeness]]
|
|
|
|
## Compatibility
|
|
|
|
### Python Version Support
|
|
|
|
```python
|
|
# @python_support
|
|
python_versions = {
|
|
"minimum": "3.8",
|
|
"recommended": "3.9+",
|
|
"tested": ["3.8", "3.9", "3.10"]
|
|
}
|
|
```
|
|
|
|
### Dependency Management
|
|
|
|
```python
|
|
# @dependency_management
|
|
dependency_rules = {
|
|
"core": {
|
|
"numpy": ">=1.20.0",
|
|
"scipy": ">=1.7.0"
|
|
},
|
|
"optional": {
|
|
"visualization": {
|
|
"matplotlib": ">=3.4.0"
|
|
},
|
|
"optimization": {
|
|
"torch": ">=1.9.0"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Documentation Requirements
|
|
|
|
### Version Documentation
|
|
|
|
Each version requires:
|
|
|
|
- Complete [[api_reference]]
|
|
- Updated [[example_writing|examples]]
|
|
- [[changelog]] entries
|
|
- [[migration_guide]] (if needed)
|
|
|
|
### Compatibility Documentation
|
|
|
|
- [[dependency_matrix]]
|
|
- [[platform_support]]
|
|
- [[python_compatibility]]
|
|
- [[integration_guide]]
|
|
|
|
## Best Practices
|
|
|
|
### 1. Version Control
|
|
|
|
- Use semantic versioning
|
|
- Document all changes
|
|
- Maintain changelog
|
|
- Provide migration guides
|
|
|
|
### 2. Compatibility
|
|
|
|
- Check dependency impacts
|
|
- Test all supported versions
|
|
- Document requirements
|
|
- Verify integrations
|
|
|
|
### 3. Documentation
|
|
|
|
- Update all affected docs
|
|
- Provide upgrade guides
|
|
- Include examples
|
|
- Verify completeness
|
|
|
|
## Related Documentation
|
|
|
|
- [[api_documentation]]
|
|
- [[package_documentation]]
|
|
- [[documentation_standards]]
|
|
- [[validation_framework]]
|
|
|
|
## References
|
|
|
|
- [[versioning_standards]]
|
|
- [[compatibility_guide]]
|
|
- [[migration_patterns]]
|
|
- [[documentation_tools]]
|