Skip to content

Latest commit

 

History

History
102 lines (73 loc) · 6.02 KB

File metadata and controls

102 lines (73 loc) · 6.02 KB

RosWire 生产级稳定版验收门槛

最后更新: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 关闭,发布物可复现且有校验

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 --check
  • cargo clippy --workspace --all-targets --all-features -- -D warnings
  • cargo test --workspace --all-features
  • cargo llvm-cov --workspace --all-features --summary-only --fail-under-lines 85
  • cargo build --release

CI 与本地结果必须一致。若本地环境无法运行覆盖率或平台 smoke,PR/Release 说明必须明确使用的替代验证来源。

真机/CHR 兼容性门槛

生产级前,必须有可追溯记录覆盖以下维度:

RouterOS 与协议

  • 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

  • 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、.part finalize、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 版本、未验证平台、需要用户手动确认的设备侧配置。

Go / No-Go 决策

发布前必须逐项回答:

  • #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” 表述。