This policy defines how external interfaces are deprecated, maintained during a transition period, and eventually removed. It satisfies the OpenSSF Best Practices Silver badge criterion interfaces_deprecation, which requires projects to document deprecation announcement, maintenance duration, migration assistance, and breaking-change communication.
This policy applies to all external interfaces that users or downstream automation depend on:
| Interface Type | Examples | Location |
|---|---|---|
| Shell script arguments | --config-dir, --tf-dir, --dry-run |
infrastructure/setup/, scripts/ |
| Environment variables | GPU_OPERATOR_VERSION, NS_GPU_OPERATOR |
infrastructure/setup/defaults.conf |
| Terraform variables | environment, should_deploy_postgresql |
infrastructure/terraform/variables.tf |
| Terraform outputs | aks_cluster, postgresql_connection_info |
infrastructure/terraform/outputs.tf |
| Configuration schemas | Recording config properties | config/recording_config.schema.json |
| Workflow templates | AzureML and OSMO YAML fields | workflows/ |
Internal implementation details, private functions, and module-internal resources are excluded. Changes to these do not require a deprecation notice.
Every deprecation follows four stages:
Deprecated interfaces are maintained for 90 calendar days or 1 version release containing breaking changes (whichever is longer).
[!NOTE] While the project is pre-1.0 with
bump-minor-pre-major: true, breaking changes trigger minor version bumps (0.x.0). Post-1.0, the same commits trigger major bumps. The compound wording “1 version release containing breaking changes” is version-scheme-agnostic and applies correctly in both phases.
Each deprecation is communicated through all of the following channels:
| Channel | Required Action |
|---|---|
| CHANGELOG.md | Add entry under a Deprecated section |
| Affected documentation | Add > [!WARNING] alert with deprecation timeline and replacement |
| GitHub Discussions | Post announcement in the Announcements category |
| GitHub Issues | Create tracking issue with deprecated label |
| PR description | Include migration steps and deprecation rationale |
Every deprecation pull request includes:
Use this template for deprecation notices in documentation:
```markdown
> [!WARNING]
> **Deprecated**: `OLD_INTERFACE` is deprecated and will be removed in vX.Y.0 (estimated YYYY-MM-DD).
>
> **Replacement**: Use `NEW_INTERFACE` instead.
>
> **Migration**:
>
> 1. Replace `OLD_INTERFACE` with `NEW_INTERFACE` in your configuration.
> 2. Update any scripts referencing the old interface.
> 3. See [migration guide](link-to-guide) for details.
```
Breaking changes follow the decision tier defined in GOVERNANCE.md, which requires two maintainer approvals with explicit breaking-change acknowledgment and a documented migration path.
The communication plan in Pull Request Process specifies that breaking changes include a [BREAKING] prefix in the GitHub Release, migration guidance in release notes, updated deployment documentation, and an announcement in repository discussions.
No external interface will be removed without a deprecation notice in a prior release.
The following example demonstrates a deprecation of the GPU_OPERATOR_VERSION environment variable in infrastructure/setup/defaults.conf, renamed to NVIDIA_GPU_OPERATOR_VERSION for naming consistency.
Documentation alert added to the affected guide:
> [!WARNING]
> **Deprecated**: `GPU_OPERATOR_VERSION` is deprecated and will be removed in v0.5.0 (estimated 2026-06-04).
>
> **Replacement**: Use `NVIDIA_GPU_OPERATOR_VERSION` instead.
>
> **Migration**:
>
> 1. Replace `GPU_OPERATOR_VERSION` with `NVIDIA_GPU_OPERATOR_VERSION` in `defaults.conf` and any `.env.local` overrides.
> 2. Update CI/CD pipelines or scripts that set this variable.
> 3. Both variable names are honored during the deprecation period; the old name takes lower precedence.
CHANGELOG.md entry:
### Deprecated
* `GPU_OPERATOR_VERSION` environment variable in `defaults.conf` is deprecated in favor of `NVIDIA_GPU_OPERATOR_VERSION`. The old variable will be removed after 90 days or 1 breaking-change release (whichever is longer).
Migration steps:
infrastructure/setup/defaults.conf and rename GPU_OPERATOR_VERSION to NVIDIA_GPU_OPERATOR_VERSION.GPU_OPERATOR_VERSION in any .env.local files or CI/CD variables and update them../01-deploy-robotics-charts.sh --config-preview.No interfaces are currently deprecated. When deprecations occur, they are listed here with replacement guidance and removal timelines.