Chapter 7.4 — Deprecation as a discipline¶
🎯 Objective¶
Show that deprecation is engineering, not a flag in the registry.
🧠 Recommended tool deprecation flow¶
- Mark it as
deprecatedin the registry. - Record the reason and the replacement.
- Measure current usage.
- Notify consumers and owners.
- Block new uses via policy/registry.
- Maintain temporary compatibility for existing consumers.
- Create regression tests for the replacement.
- Migrate consumers gradually.
- Remove after the planned window.
- Keep an audit of historical usage.
⚠️ Marking metadata as
deprecateddoes not prevent a model from trying to call it. The real block must be in the harness, executor, registry, policy engine or authorization layer.
🧠 Items that require a deprecation plan¶
- Model.
- Prompt.
- Tool.
- MCP server.
- Output schema.
- Embedding model.
- RAG index.
- Agent.
📊 Consolidated table¶
| Item | Versioning strategy | Deprecation strategy |
|---|---|---|
| Prompt | prompt_name@major.minor |
Window with the previous version; eval regression |
| Tool | Semver + registry | Deprecated -> read-only -> removed |
| MCP server | Semver + capabilities | Dual server for a period |
| Schema | Semver + contract tests | Accept v1 and v2 temporarily |
| Model | Controlled alias + fixed version | Shadow eval before the swap |
| Embeddings | Model version + index | Parallel index and re-embedding |
| Vector DB | Index version + migration | Dual-write/dual-read |
| Policy | Versioned bundle | Short window with controlled override |
| Memory | Schema + data version | Migration or expiration |
| Agent | agent@major.minor.patch |
Deactivation by tenant/phase |
🧰 Related practical example (planned)¶
EX-LIFE-01— an example of tool deprecation with an adapter and usage logs.