6.0 KiB
6.0 KiB
发布检查清单
每个候选版必须完成
- 当前提交位于
main,工作区除明确忽略的本地缓存外干净;版本号、插件版本和 Git 标签一致。 npm ci、npm test、npm audit --omit=dev --audit-level=high全部通过。发布机存在代理环境变量时,运行时来源校验应优先使用系统curl继承代理,并在短超时内给出明确失败;不要依赖默认不读取代理的 Nodefetch。npm run runtime:verify确认 Node 官方精确版本源和至少一个国内源同时提供全部六个平台制品,且镜像SHASUMS256.txt与仓库固定哈希一致。release:build、test-bundle:build和release:verify成功,SHA256SUMS校验通过,发行物不包含.secrets、.runtime、数据库、私钥或机器私有路径。- 国内 Gitea 首选源与自建 HTTPS 备用目录的
manifest.json、manifest.sig和全部安装附件逐文件哈希一致;黑盒测试包及动态提示词只要求自建目录可用。连续部署同一 Tag 必须复用既有 Release 和固定createdAt,不得重复创建或因测试包时间戳产生哈希漂移。模拟首选源网络失败/404 后能从备用源完成首次安装和更新,模拟首选源返回错误哈希或签名时必须立即停止而不换源。 - Nginx bootstrap 只开放 ACME challenge;正式站点启用 HSTS,mutable 发行文件返回
no-cache,客户端 tgz 才返回 immutable。连续两次部署时公开目录始终对应一个完整签名清单,旧版本保留数符合策略。 - 从新生成的公开
install.md验证两条决策路径:同机浏览器可完成回调时注册远程https://approval.justconn.top/mcp,确认不下载 Node/npm/Bridge、不要求本地命令,并能通过 Protected Resource / Authorization Server Metadata、DCR 和 PKCE 完成宿主原生 OAuth;SSH/无头/Messenger 跨设备打开授权页且宿主使用 loopback 回调时,不先尝试必然失败的远程登录,直接选择兼容 Bridge。 - 远程 OAuth 后可发现全部 12 个业务工具,
approval_list_todos(source=all, limit=1)中钉钉 OA 与薪福通均为ok;网关重启后宿主能刷新或重新授权,用户身份仍由服务端 Token 决定。 install.md只有在远程能力缺失或本机 OAuth 回调对用户不可达时才链接compat-install.md。用至少一个只支持 stdio 的宿主和一个跨设备 loopback 场景验证兼容安装可发现approval_login加 12 个业务工具,device-code 链接可在另一台设备打开,且不产生第二套用户身份。- 在未安装 Node 的干净 Windows x64/ARM64、Linux x64/ARM64、macOS Intel/Apple Silicon 环境验证兼容引导。确认固定版本、国内镜像回退、哈希失败即停止、私有 Node 不改 PATH;至少每类操作系统一次端到端,其余架构由 CI/制品校验覆盖。
- 在 Windows PowerShell 5.1 验证生成的
.ps1具有 UTF-8 BOM,中文可解析,Node 版本和代理能力探测不会因原生程序参数引号被吞而失败;确认.zip仅去除一次扩展名,解压目录与node-v<version>-win-<arch>完全一致。Windows 下载优先curl.exe并继承HTTPS_PROXY;连接 10 秒、低速 20 秒或总计 90 秒触发明确失败换源,不得出现 300 秒静默等待。 - 兼容安装继续验证 stdout 只有最终 JSON、stderr 有阶段进度;模拟离线 npm 超时、外部终止、死亡锁、staging 和并发安装,确认明确失败、安全恢复和零并发写入。父进程含 Node 代理选项时,npm 子进程不得继承
--use-env-proxy。 - 兼容安装结果的
loginCommand能在 MCP 未加载时刷新登录链接;MCP 已加载时approval_login完成同一操作。不得因链接过期而重装,首次成功响应只展示一次 onboarding 示例。 - 只读验证待办、本人已处理历史、本人发起历史、历史默认最近 30 天及显式时间窗口、搜索、详情、费用结构化字段、动作、模板 Schema、部门/城市选项和越权拒绝;历史引用必须被动作查询和批处理拒绝。
- 发票查重验证钉钉/XFT 跨来源精确匹配、弱匹配、用户隔离、状态更新、来源不可用、历史截断、详情失败、并发确认、35 天过期清理和网关重启恢复;数据库不得出现用户 ID、发票原号、审批正文或附件。重复风险和不完整覆盖未获用户确认时不得签发可提交
confirmationId。 - 本机草稿验证 Windows/macOS/Linux 私有目录选择、POSIX
0700/0600、原子保存、90 天普通草稿清理、模板和 Schema 实时恢复、附件 SHA-256 变化、提交成功删除、确定失败保留及outcome_uncertain冻结。确认网关数据库、日志、发行包和项目仓库都不出现草稿正文,草稿中不保存 Token、身份 ID、短期模板/确认/撤回引用或完整 Schema。 - 真实写操作只执行用户明确授权的样本;任何
outcome_uncertain都停止,不自动重试。 - Mock 契约确认网关和 bridge 的批量 Schema 均固定为 20;第 6 个截断引用及任一无效退回目标都会返回
preflight_failed、writesStarted=false,上游写调用数为 0。 - 代表性 v4 引用长度满足钉钉 OA 不超过 128 字符、薪福通不超过 80 字符,并通过篡改、过期、跨用户、跨密钥、同密钥重启及 v2/v3 兼容测试。
- 公网
manifest.json的版本、生成时间和 SHA-256 与当前候选版一致。 - E2E 脚本在未设置网关地址、未指定业务编号或未加真实写入开关时不会执行审批;只读运行不会自动选取待办。
正式版额外条件
- 钉钉和薪福通的同意至少各有一个近期真实成功样本,并完成写后复核。
- 对外开放的拒绝、退回和发起模板具备对应的真实成功样本或明确的客户端/实验性降级说明。
- 薪福通撤回取得真实成功样本;在此之前必须保留实验性标记,不得作为正式稳定能力承诺。
- GitHub CI、外部健康检查、OAuth 数据库与密钥成对备份、升级回滚流程均已验证。