# Eva-CLI V1.5 迁移声明（历史记录）

> 语言：简体中文
>
> 默认发布文档：`docs/en/release/v1.5-migration-guide.md`
>
> 英文原文：[English](../../en/release/v1.5-migration-guide.md)

更新日期：2026-07-14

状态：V1.4 内部里程碑到 `v1.5.0` 的历史声明；不是当前升级指南或自动兼容性 diff。

## 范围

V1.5 在增加 `eva-release` 和 `eva release ...` 命令组时，声明与 V1.4 命令面兼容。V1.4 是内部里程碑，不是 Git tag，因此该声明并非由 `v1.4` 到 `v1.5.0` 的 tag 对比生成。

当前安装与升级流程统一维护在 [安装、升级与卸载](安装升级卸载说明.md)。

![Eva-CLI 发布历史边界](../../../assets/release-history-boundary.zh-CN.svg)

## 版本上下文

| 信号 | 含义 |
| --- | --- |
| V1.0 | 内部里程碑提交 `437087c`；不存在 `v1.0` tag |
| V1.4 | 内部 lifecycle 里程碑提交 `909ab07`；不存在 `v1.4` tag |
| V1.5.0 | annotated tag `v1.5.0`，解析到提交 `74d85e7da58ac40ef5d30b38e2844dee503a44c0` |
| 当前 `main` | Cargo 和 CLI 报告 `1.11.5-alpha`；后续 V1.12-V1.17 字符串是 legacy evidence ID，不是发布 tag |

## V1.5 声明的变更

| 领域 | 历史声明 |
| --- | --- |
| 现有命令 | 没有刻意删除或重命名 V1.0-V1.4 命令 |
| 新命令 | 新增 `release check`、`release security`、`release perf` 和 `release migration` |
| JSON 和 exit code | 声明现有 envelope 字段和 exit code 含义稳定 |
| 配置 | 预期已检入的 sample manifest 无需迁移即可加载 |
| 破坏性变更 | 内部 V1.4 到 V1.5 过渡未声明破坏性变更 |

本表记录 V1.5 的策略决策。它不是 schema、存储或 CLI 兼容性引擎生成的证明。

## 已记录的升级顺序

V1.5 文档记录了以下源码 checkout 顺序：

```powershell
cargo build --release
cargo run -- upgrade check --output json
cargo run -- release check --output json
cargo run -- release security --output json
cargo run -- release perf --output json
cargo run -- release migration --from-version 1.4.0 --to-version 1.5.0 --output json
```

仅在 `v1.5.0` checkout 中复现该历史 checkpoint 时运行这组命令。在 `main` 上运行会执行当前 `1.11.5-alpha` 代码。

## 校验强度

| 步骤 | 执行内容 | 不执行的内容 |
| --- | --- | --- |
| `cargo build` | 编译所选源码 checkout | 比较两个已发布版本 |
| `upgrade check` | 构建内存中的 readiness、migration、drain 和 rollback 报告 | 启动 candidate 进程或执行升级 |
| `release check` | 聚合 gate 对象和显式传入的 evidence | 执行这些对象中列出的命令 |
| `release security` | 输出编译进代码的安全 finding | 调用实时漏洞扫描器 |
| `release perf` | 输出固定 smoke 观测值和预算 | 测量生产性能 |
| `release migration` | 原样记录非空版本标签，并输出声明的 `compatible` 和无破坏性变更 | diff tag、schema、manifest、存储或命令输出 |

当前实现仍将 `release migration` 视为声明。它的默认版本标签已超过 V1.5，但命令不会从仓库历史推导兼容性。

## V1.5 运维边界

在不可变的 `v1.5.0` tag 中：

- `.eva/tasks` 是本地诊断格式，不是持久化公开数据库；
- `restore plan` 返回 `apply_allowed:false`，且不存在 restore-apply 命令；
- `upgrade check` 不启动 Supervisor 或 Runtime 进程，且不存在 upgrade-apply 命令；
- `hardware bind --apply` 只校验逻辑计划，不打开原始 I/O；
- release 命令不修改项目状态，也不调用外部 provider。

当前 `main` 已有独立的受控 restore-apply、rollback、upgrade-apply、durable 和 provider 路径。它们的当前限制记录在 operations 和 planning 中，不改变 V1.5 tag 记录。

## 相关参考

- [V1.5 兼容性策略](V1.5兼容性策略.md)
- [V1.5 发布加固证据模型](V1.5发布加固.md#证据模型)
- [当前安装、升级与卸载说明](安装升级卸载说明.md)
- [当前备份与恢复边界](../operations/备份迁移包与ReleaseSnapshot架构方案.md)
- [当前进程级升级边界](../operations/进程级停机升级架构方案.md)
- [当前 V1.x 未完整实现功能清单](../planning/V1.x未完整实现功能清单.md)
