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

2.0 KiB
Raw Blame History

3-28 dev:hot seed smoke 启动契约缺失

状态

  • 已修复
  • 日期:2026-07-11
  • Owner03-rust-web

症状

依赖 scripts/lib/control-plane-dev-seed.js 的 browser smoke 在当前 dev:hot 服务上调用 /api/dev/seed 时返回:

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_endaborted 覆盖为 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