Value: There is no deprecation mechanism, and auto-release.yml already derives releases from CHANGELOG.md. Add a Deprecations::trigger() helper (emits E_USER_DEPRECATED, routed through the new LogPort) plus a CI step that generates UPGRADE-x.y.md from the CHANGELOG Changed/Removed sections — which the existing hkm upgrade command can surface.
Where: new helper, tools/src/commands/upgrade.zig, CI.
Effort: M · Impact: Med
Value: There is no deprecation mechanism, and auto-release.yml already derives releases from CHANGELOG.md. Add a Deprecations::trigger() helper (emits E_USER_DEPRECATED, routed through the new LogPort) plus a CI step that generates UPGRADE-x.y.md from the CHANGELOG Changed/Removed sections — which the existing hkm upgrade command can surface.
Where: new helper, tools/src/commands/upgrade.zig, CI.
Effort: M · Impact: Med