最后更新:2026-05-18 当前结论:RosWire 已进入 MVP / Beta 候选,但在本页列出的 blocker 完成前,不得声明生产级稳定版。
本文定义从 MVP/Beta 进入生产级稳定版(production-stable)的硬性门槛。目标是让维护者、Agent 和使用者对“可以试用”和“可以生产托管”之间的边界没有歧义。
| 状态 | 可以做什么 | 不应做什么 | 判定依据 |
|---|---|---|---|
| MVP | 验证 JSON-first CLI、配置、协议路由、文件工作流与自描述能力 | 不承诺跨平台安装体验,不承诺真实设备矩阵覆盖 | 本地门禁通过,功能 checklist 主要能力闭环 |
| Beta | 在实验室、非关键设备或人工监督下试用;收集 RouterOS v6/v7 与平台差异 | 不建议无人值守生产变更,不建议作为唯一备份/恢复路径 | MVP 完成,真实设备验收仍在进行 |
| Production-stable | 可发布正式版本,文档可面向生产自动化用户推荐 | 不能跳过 release、keychain、真机矩阵和安全门槛 | 本页所有 P0 blocker 关闭,发布物可复现且有校验 |
以下 issue 是生产级声明的阻塞项;任何一个未关闭,都只能称为 MVP/Beta。
| Blocker | 必须产出 | 关闭条件 |
|---|---|---|
| #60 建立 RouterOS 真机/CHR 验收矩阵 | RouterOS v6/v7、API/API-SSL/REST、SSH/SFTP/SCP、导入/导出/备份工作流的验收记录 | routeros-acceptance-matrix.md 与 harness 已提供;仍需至少一套 v6 与一套 v7/CHR 真实记录 |
| #61 发布工程与安装文档 | GitHub Releases 流程、平台二进制、校验和、安装/升级/卸载文档 | release workflow 构建并 smoke;installation.md 和 release.md 已同步 |
| #62 多平台 keychain smoke 测试 | macOS Keychain、Linux Secret Service、Windows Credential Manager 的 smoke/fallback 记录 | PR documented fallback 通过;发布前 macOS workflow_dispatch 原生 smoke 或本地 CI runner smoke 有记录 |
每个 release candidate 都必须在干净工作区通过:
cargo fmt --checkcargo clippy --workspace --all-targets --all-features -- -D warningscargo test --workspace --all-featurescargo llvm-cov --workspace --all-features --summary-only --fail-under-lines 85cargo build --release
CI 与本地结果必须一致。若本地环境无法运行覆盖率或平台 smoke,PR/Release 说明必须明确使用的替代验证来源。
生产级前,必须有可追溯记录覆盖以下维度:
- RouterOS v6 原生 API:登录、只读 print、典型写操作、错误 trap 归一化。
- RouterOS v7 原生 API:登录、只读 print、典型写操作、与 REST 的语义差异。
- RouterOS v7 REST:GET/PUT/PATCH/DELETE/POST JSON、HTTP 错误映射。
--protocol auto:REST 优先、API-SSL/API fallback、认证失败不静默切换。- API-SSL:TLS 证书异常、端口关闭、认证失败的错误分类。
- SSH host key 必填与 mismatch 路径。
- Password auth、key auth、加密 key passphrase(profile secret
ssh_key_passphrase)。 - SFTP 可用时使用 SFTP;SFTP subsystem 不可用时 SCP fallback;两者都不可用时返回明确
FILE_TRANSFER_FAILED。 file upload/file download、import、export download、backup download的端到端路径。- 覆盖策略、超时、有限 retry、
.partfinalize、cleanup 失败路径。 --ensure-ssh/--restore-ssh对/ip service ssh的快照、白名单合并与恢复。
生产级发布不得放宽以下安全规则:
- 默认非交互;不得新增密码、passphrase 或确认提示。
- 成功输出只写
stdout;错误、debug 与诊断只写stderr。 - 密码、token、secret、private key、passphrase、本地绝对敏感路径必须脱敏。
- SSH host key 必须非交互校验;未知 host key 不允许自动信任。
- SSH 白名单不得默认写入
0.0.0.0/0或::/0。 --ensure-ssh只能在用户显式请求时修改 RouterOS SSH 服务。- 配置目录与
config.toml权限过宽时必须失败。 - keychain 不可用时必须返回结构化错误,不自动退回明文 secret。
- Release artifact 必须提供校验和;安装文档必须要求用户校验下载内容。
生产级 release 至少包含:
- GitHub Release tag 与 changelog。
- macOS、Linux、Windows 目标平台的二进制或明确不支持说明。
- SHA256 checksums 文件。
- 安装、升级、卸载文档。
- 最小权限配置示例:env、profile、keychain、SSH host key、allow-from。
- 已知限制:未覆盖 RouterOS 版本、未验证平台、需要用户手动确认的设备侧配置。
发布前必须逐项回答:
- #60 已关闭,真实设备/CHR 矩阵可追溯。
- #61 已关闭,release artifact 可安装且可校验。
- #62 已关闭,keychain 多平台 smoke/fallback 可追溯。
- README 不再包含过期“仅规划”措辞,示例与实现一致。
-
docs/feature-checklist.md中生产级相关未完成项均有 issue 链接或已关闭。 - 最近一次完整本地门禁与 CI 门禁均通过。
- 安全门槛没有例外;若有例外,必须列为 release blocker 而不是 release note。
截至 2026-05-18:
- MVP 功能闭环已经完成,可进入 Beta/实验室试用。
- Production-stable 仍被 #60 的真实 RouterOS/CHR 运行记录阻塞;矩阵与脚本见
routeros-acceptance-matrix.md。 - 在这些 blocker 关闭前,README、Release note 和安装文档必须使用 “MVP/Beta” 表述,不得使用 “production-ready” 或 “stable” 表述。