openlark 0.16.0

飞书开放平台 Rust SDK - 企业级高覆盖率 API 客户端,极简依赖一条命令
Documentation
# Deprecated API Support Policy

本文档定义 OpenLark 对 deprecated APIs 的支持周期、移除条件和通知方式。

目标:让用户在看到 `#[deprecated]` 后,能够明确判断“还能用多久、何时必须迁移、升级时去哪里看说明”。

## 1. 适用范围

本文档适用于以下已明确标记为 deprecated 的公开 surface:

- public entrypoints
- typed APIs
- helpers / convenience methods
- features
- re-exports / compatibility aliases

## 2. 默认支持周期

默认规则:

- **至少保留一个公开发布周期**
-`0.15.x` patch 线新增的 deprecated API,默认在 `0.15.x` 内继续保留
- 如需移除,最早应在下一次计划 minor 版本窗口评估

换句话说:

- `deprecated in 0.15.x``remove in next patch`
- patch 版本默认只发出迁移信号,不执行真正删除

## 3. 允许移除的条件

只有当以下条件同时满足时,才允许真正移除 deprecated API:

1. 已经给出推荐替代路径
2. migration guide / release notes 已记录迁移动作
3. 至少经历一个明确公开发布周期
4. 维护者确认继续保留只会制造更大歧义或长期维护负担

如果任一条件不满足,默认继续保留 deprecated 状态,而不是直接删除。

## 4. 例外情况

以下情况可跳过完整支持周期,但必须给出书面解释:

- 安全漏洞修复
- 严重正确性错误
- 上游官方 API 不兼容变化,且无合理兼容实现空间

即使是例外,也必须说明:

- 为什么不能继续兼容
- 受影响 surface
- 用户应如何迁移

## 5. 通知方式

每次新增 deprecated API,至少应在以下位置中的两处出现说明:

1. Rust 代码中的 `#[deprecated]`
2. changelog 的 `Deprecations` 分类
3. release notes / compatibility note
4. migration guide 或专门迁移说明文档

如果该 deprecated API 影响面较大(例如根入口、主推 helper、主 feature),建议四处全部覆盖。

## 6. 对外说明最小字段

每个 deprecated API 记录至少应包含:

- Deprecated path / feature
- Replacement
- First deprecated in
- Earliest removal
- Reason

推荐模板见:

- `docs/PUBLIC_API_STABILITY_POLICY.md`
- `docs/api-compatibility-note-template.md`

## 7. 发布前检查

发布前应确认:

- 本版本新增的 deprecated APIs 都有替代路径
- `Earliest removal` 没有与实际发布计划冲突
- release notes / migration docs 中能找到对应说明
- 如果计划移除某个已 deprecated API,已经满足本文档第 3 节条件

## 8. 当前项目约束

结合当前 `0.15` 兼容性收敛策略:

- 根 crate legacy entrypoints 已可进入 deprecated 状态
- `openlark-client` crate 本身仍是高级 canonical 入口,不属于应直接淘汰对象
- 对 typed API / helper 的 deprecated 处理,必须同时参考:
  - `docs/TYPED_API_SEMVER_RULES.md`
  - `docs/HELPER_SEMVER_RULES.md`