chore: tighten yonexus v1 validation flow

This commit is contained in:
nav
2026-04-09 05:03:06 +00:00
parent 3bb0a79057
commit 17b9cc83f4
4 changed files with 26 additions and 16 deletions

View File

@@ -223,7 +223,7 @@
建议把通过条件固化为: 建议把通过条件固化为:
- `Yonexus.Protocol` 测试必须全绿 - `Yonexus.Protocol` 类型检查 + 测试必须全绿
- Server / Client 类型检查必须全绿 - Server / Client 类型检查必须全绿
- 新增联调测试后happy path 与至少一组安全失败路径必须全绿 - 新增联调测试后happy path 与至少一组安全失败路径必须全绿
@@ -234,10 +234,14 @@
``` ```
该脚本会顺序执行: 该脚本会顺序执行:
- `Yonexus.Protocol`: `npm run test` - `Yonexus.Protocol`: `npm run check && npm run test`
- `Yonexus.Server`: `npm run check && npm run test` - `Yonexus.Server`: `npm run check && npm run test`
- `Yonexus.Client`: `npm run check && npm run test` - `Yonexus.Client`: `npm run check && npm run test`
如果某个子仓库尚未安装依赖,脚本会优先自动执行:
-`package-lock.json` 时使用 `npm ci`
- 否则回退到 `npm install`
--- ---
## 8. 当前对应关系 ## 8. 当前对应关系

View File

@@ -1109,7 +1109,7 @@
### YNX-1105 编写失败路径测试矩阵 ### YNX-1105 编写失败路径测试矩阵
**状态** **状态**
- [x] 持续补齐中,关键路径已覆盖并继续收尾剩余少量边界场景2026-04-09 - [x] 已完成2026-04-09
**进展补充2026-04-09** **进展补充2026-04-09**
- 基于本轮锁定的 v1 边界,`AF-04` 已明确按 v1 语义并入 `invalid_signature`,不再作为“未完成测试缺口”单独追踪;若后续要恢复 `invalid_secret`,需先同步调整协议与实现 - 基于本轮锁定的 v1 边界,`AF-04` 已明确按 v1 语义并入 `invalid_signature`,不再作为“未完成测试缺口”单独追踪;若后续要恢复 `invalid_secret`,需先同步调整协议与实现
@@ -1119,7 +1119,10 @@
- 已同步将 `CF-07`(保留字 rule 注册拒绝)在失败路径矩阵里标记为已覆盖,和现有 Client/Server rule registry 测试保持一致 - 已同步将 `CF-07`(保留字 rule 注册拒绝)在失败路径矩阵里标记为已覆盖,和现有 Client/Server rule registry 测试保持一致
- 本轮新增 `CF-01` / `CF-02`:补齐 client transport 在网络分区与首次建连失败时的指数退避重连测试 - 本轮新增 `CF-01` / `CF-02`:补齐 client transport 在网络分区与首次建连失败时的指数退避重连测试
- 本轮新增 `SR-02`:补齐 server restart 后 active session 不恢复、但 durable trust record 保留且客户端需要重新 hello/auth 的恢复测试 - 本轮新增 `SR-02`:补齐 server restart 后 active session 不恢复、但 durable trust record 保留且客户端需要重新 hello/auth 的恢复测试
- 已新增 umbrella 仓库一键回归入口 `scripts/validate-v1.sh`,把 Protocol / Server / Client 的最小 v1 验证串成单次执行;若某子仓库尚未安装依赖,会直接给出明确提示而不是停在模糊报错 - 已新增 umbrella 仓库一键回归入口 `scripts/validate-v1.sh`,把 Protocol / Server / Client 的最小 v1 验证串成单次执行
- 本轮继续补齐 `Yonexus.Protocol` 本地依赖与 `check` 脚本,使 umbrella 校验链路覆盖协议层类型检查
- 已将 `scripts/validate-v1.sh` 调整为缺依赖时自动执行 `npm ci` / `npm install`,减少首次回归阻塞
- 已完成一次完整 umbrella 回归:`Yonexus.Protocol` / `Yonexus.Server` / `Yonexus.Client` 的 check + test 全绿
- 已顺手修复本轮回归暴露的 TypeScript 收尾问题Protocol payload 泛型约束、Server `pairedAt` 持久化字段、Client/Server config 严格模式报错、测试态 runtime 通知服务注入 - 已顺手修复本轮回归暴露的 TypeScript 收尾问题Protocol payload 泛型约束、Server `pairedAt` 持久化字段、Client/Server config 严格模式报错、测试态 runtime 通知服务注入
**目标** **目标**
@@ -1201,13 +1204,9 @@
- PF-10client 在 waiting_pair_confirm 阶段重启后,可重新 hello 并恢复到等待 out-of-band pairing code 的流程 - PF-10client 在 waiting_pair_confirm 阶段重启后,可重新 hello 并恢复到等待 out-of-band pairing code 的流程
- 已同步更新 `tests/failure-path/MATRIX.md`,标记 CF-01、CF-02、PF-08、PF-10、SR-02 为已覆盖 - 已同步更新 `tests/failure-path/MATRIX.md`,标记 CF-01、CF-02、PF-08、PF-10、SR-02 为已覆盖
**当前剩余未覆盖重点** **剩余说明(不阻塞 v1**
- RP-03 / RP-04管理员主动撤销与 key rotation 语义仍未实现按 v2+ 保留 - RP-03 / RP-04管理员主动撤销与 key rotation 语义仍未实现,继续按 v2+ 保留
- PF-04 当前已覆盖运行时失败路径与通知服务单测,但仍缺少真实 Discord 环境端到端验证 - PF-04 当前已覆盖运行时失败路径与通知服务单测,但真实 Discord 环境 smoke test 仍属于后续非阻塞验证
**待完成**
- RP-03 / RP-04管理员主动撤销与 key rotation 语义仍未实现
- 补少量真实环境 smoke test / live validation非阻塞 v1 交付)
--- ---

View File

@@ -15,11 +15,17 @@ run_step() {
ensure_node_modules() { ensure_node_modules() {
local dir="$1" local dir="$1"
if [[ ! -d "$ROOT_DIR/$dir/node_modules" ]]; then if [[ -d "$ROOT_DIR/$dir/node_modules" ]]; then
echo "Missing dependencies in $dir (node_modules not found)." return 0
echo "Run: (cd '$ROOT_DIR/$dir' && npm install)"
return 1
fi fi
local install_cmd="npm install"
if [[ -f "$ROOT_DIR/$dir/package-lock.json" ]]; then
install_cmd="npm ci"
fi
echo "Dependencies missing in $dir (node_modules not found). Bootstrapping with: ${install_cmd}"
run_step "${dir}: ${install_cmd}" bash -lc "cd '$ROOT_DIR/$dir' && ${install_cmd}"
} }
run_npm_script() { run_npm_script() {
@@ -30,6 +36,7 @@ run_npm_script() {
run_step "${dir}: npm run ${script}" bash -lc "cd '$ROOT_DIR/$dir' && npm run ${script}" run_step "${dir}: npm run ${script}" bash -lc "cd '$ROOT_DIR/$dir' && npm run ${script}"
} }
run_npm_script "Yonexus.Protocol" check
run_npm_script "Yonexus.Protocol" test run_npm_script "Yonexus.Protocol" test
run_npm_script "Yonexus.Server" check run_npm_script "Yonexus.Server" check
run_npm_script "Yonexus.Server" test run_npm_script "Yonexus.Server" test