Files
mnote/bugs/03-rust-web/done/3-28-dev-hot-seed-smoke-startup-contract-v1.md
T

44 lines
2.0 KiB
Markdown
Raw Normal View History

# 3-28 dev:hot seed smoke 启动契约缺失
## 状态
- 已修复
- 日期:2026-07-11
- Owner`03-rust-web`
## 症状
依赖 `scripts/lib/control-plane-dev-seed.js` 的 browser smoke 在当前 `dev:hot` 服务上调用 `/api/dev/seed` 时返回:
```text
403 dev_seed_disabled
```
脚本在创建测试 workspace / AI policy 前终止,导致真实 UI 交互未执行。由于 cargo-watch 只重启 Rust 子进程,临时修改启动环境但不重启 Node `dev:hot` 主进程也不会生效。
## 根因
- `dev:hot` 没有建立“默认可运行 seed 依赖 smoke”的启动契约。
- `MNOTE_WEB_ALLOW_DEV_FIXTURES` 只能由操作者临时记忆和手工补充。
- seed helper 只返回通用 403,未明确指出应重启哪个启动链。
## 修复
- `npm run dev:hot` 默认设置 `MNOTE_WEB_ALLOW_DEV_FIXTURES=1`
- 显式 `MNOTE_WEB_ALLOW_DEV_FIXTURES=0 npm run dev:hot` 仍可关闭。
- `desktop:hot` 与生产启动保持默认关闭,不扩大正式运行边界。
- dev seed helper 对 `dev_seed_disabled` 输出明确的启动与重启指令。
- Pi RPC API smoke 不再把 `dev_seed_disabled` 静默标记为 skipped,而是明确失败并要求恢复正确启动契约。
- 完整 RPC smoke 暴露了 abort 后迟到 `agent_end``aborted` 覆盖为 `runtime_running` 的竞态;runtime 现在保持 `aborted/error` 终态,迟到空回复事件也不会覆盖已中止状态。
- RPC smoke 按当前 status 合同验收:已中止会话退出 auto-resume `status.session`,并通过 `/api/page-ai/pi/sessions/{sessionId}` 验证持久化状态为 `aborted`
- `scripts/TESTING_REFERENCE.md` 增加 seed 依赖 smoke 的统一启动契约。
- `task-dev-hot-plan-test.js` 固化默认开启和显式关闭行为。
## 验证
- `node scripts/task-dev-hot-plan-test.js`
- 重启 `npm run dev:hot`
- `node scripts/task-pi-lab-input-controls-smoke.js`
- `node scripts/task-pi-lab-model-thinking-controls-smoke.js`
- `node scripts/task-pi-lab-rpc-api-smoke.js`