Versioning Policy
SEF has multiple version axes. They should not be mixed.
Library Version
The Python package version describes installable library compatibility.
Use semantic versioning:
- patch: bug fixes with no contract changes;
- minor: compatible public API additions;
- major: breaking public API or config changes without automatic migration.
Config Schema Version
Config schema version is stored in top-level schema_version.
Current version: 1.0.
Unversioned configs are interpreted as 1.0 for compatibility.
New schema versions must use PipelineConfigMigration to keep older configs
loadable when practical.
Plugin Version
Plugin version is stored in PluginDefinition.version. It describes the plugin
implementation, not the config schema.
Use plugin aliases to preserve old names after a rename.
Use metadata to describe compatibility details, for example:
metadata={
"input": "COCO pose signal",
"output": "COCOPoseTennisFrameData",
"realtime_safe": True,
}
Deprecation Policy
Before removing a public contract:
- add a replacement;
- document the replacement;
- keep the old name as an alias or adapter when feasible;
- add a deprecation note;
- remove only in a major version.
Config field removals should be implemented as migrations whenever possible.