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 Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`