Files
makelore/.project-docs/00-brief/success-criteria.md
brother7 2eaf0450b8
Some checks failed
Electron E2E / Electron E2E (macos-latest) (push) Has been cancelled
Electron E2E / Electron E2E (ubuntu-latest) (push) Has been cancelled
Electron E2E / Electron E2E (windows-latest) (push) Has been cancelled
fix: integrate updater downgrade guard
2026-08-26 16:41:53 +08:00

6.5 KiB
Raw Blame History

Success Criteria

Project Success

  • {observable project-level success condition}

Task Completion Standard

  • 可发布小游戏/小程序的一键提交必须由 Electron Main 对安全源码快照执行固定 npm 11.6.2 的 npm ci --ignore-scripts,并调用项目 package-lock.json 锁定的 Vite 生成静态产物。
  • Electron 双视口预检必须检查与最终 built_archive 相同的内存文件字节;预检失败不得上传,预检成功不得被表述为可信审核凭据。
  • 上传协议必须同时携带源码归档、构建归档和严格版本化 artifact contract;服务端独立重算摘要、校验合同并固化不可变 Release。
  • Renderer 不得获得发布凭据、归档、临时目录、构建 origin 或任意本地路径;旧客户端和旧 sandbox/browser 任务必须提示升级后重新构建提交。
  • Works Project 首次 create 必须用单一 multipart 合同原子提交文字资料与必选的 PNG/JPEG/WebP 封面;创建失败或冲突不得继续上传版本。已有项目保持 version-only;在没有 metadata revision/条件写前,客户端不得通过无条件 PATCH 修改已有资料。
  • Learning 必须保持登录和 module_access.learning 门禁,并只呈现服务端已发布的分页项目列表、README 详情和下载动作;旧课程生成、进度、本地库、播放器、Agent/ASR/runtime 代码和打包依赖不得继续存在。
  • Learning README 必须禁用原始 HTML;远程 HTTPS raster 图片由 Works Square 在发布时校验、镜像并改写为固定媒体路径,Main 以 Bearer 代理并限制可信 MIME 和 10 MiB,Renderer 不获得任意网络代理能力。
  • Learning 项目下载必须由 Main 打开原生保存窗口并写入临时文件,不按 Content-Length、archiveBytes、实际流字节数或客户端上限阻断;最多五跳同源重定向,校验 SHA-256 和 ZIP 签名后再原子落盘。Renderer 只能获得 saved 或 cancelled,不得获得 Token、上游 URL 或本地路径。
  • 历史课程数据不得被新逻辑读取或迁移,也不得在没有独立用户确认与恢复策略时自动删除。
  • Robot Guided Hotspot Binding 必须保持固件零改动、Main-owned default-on capability、精确环境值 0 回滚、固定系统浏览器 Portal 和现有六位 Binding facade。Windows/macOS 页面内只能扫描开放 Xiaozhi-* 短效候选并连接用户明确选择的项;Makelore 不得接触家庭 Wi-Fi 凭据,也不得把热点发现或 Binding 成功等同于可信身份/在线。
  • 用户模块入口策略必须由 Electron Main 将 Works /api/auth/me 安全投影为四个布尔值;缺失对象/字段默认开启,design 映射 painting,Renderer 不获得 Token 或原始 profile。
  • 被关闭模块必须在卡片和根/深层/别名路由两层均无法进入,且在 MainLayout/模块初始化前阻断;Code provider 等待 policy hydration,全局 /settings 仍可访问,终止性 401 清理 Main/Renderer 会话。该客户端入口策略不能代替 API 授权。
  • Makelore Code 必须只使用精确 pin 的 Pi 0.84.2 production runtime;产品源码、安装包和资源根不得保留 OpenCode runtime/package/plugin/fallback/双路径。上游 Pi Provider adapter 的精确静态文件例外必须单列,不能误报为产品旧 runtime。
  • 新 project/Agent/Conversation 必须本地原子创建,Composer 在 worker 准备期间仍可编辑。每条 active/warm Conversation 独立绑定 persistent worker/session;Snapshot/Patch、model/thinking、queue、interaction、subagent 和 recovery 不得跨 Conversation 泄漏。
  • prompt/compact 的 202 acceptance 与 uncertain 状态必须保持 request/run/process/background ownership,禁止自动重放;迟到 terminal 事件必须 exactly-once 收敛并重新解锁 Composer。手动 compact 在 Pi 0.84.2 缺少 agent_settled 时必须由 correlated RPC 结果正确结束。
  • Provider secret 只能进入目标 worker env。未解析 Conversation 必须 validate → persist resolved model → prepare;确定性 Works user-context 缺失必须失效缓存凭据、停止 Pi 自动重试并投影固定 Provider-auth 错误,而不是表现为 runtime crash、永久 submitting 或不可恢复的 Conversation。
  • top-level worker 并发 4、child 并发 4、warm idle LRU 4、parent/child 总进程预算 8 与同项目 write lease 必须在正常、abort、crash、timeout、rebuild 和 app quit 路径全部归零;运行中的 Conversation 不得因页面隐藏而被停止。

Quality Checks

  • 发布安装包前运行 pnpm verify:publish-runtime,并对最终 Windows 产物运行 pnpm verify:artifact:win;固定 npm 闭包缺失或版本不符时 fail closed。
  • 至少覆盖 release builder/静态产物服务/发布路由/Renderer 状态的聚焦测试、typecheck、scoped lint、Vite 构建和真实 Electron 双视口 production-seam E2E。
  • 真实生产发布仍需成组验证服务端合同、不可变 Release、运营审核、CDN/App 播放;客户端本地验证不能替代该整链验收。
  • Learning 上线前必须部署 Works Square 项目管理、对象存储、README HTTPS URL 校验和 list/detail/media/archive API,并使用真实账号和正式安装包验证发布/下架、分页、README 图片、下载取消、缺失或错误 Content-Length、损坏/摘要不匹配 ZIP,以及 Windows 与签名 macOS 保存行为。
  • Robot 默认引导路径必须通过聚焦 Renderer/Main/native 测试并保留 NIANCODE_AI_HARDWARE_GUIDED_HOTSPOT_BINDING=0 回滚。真实 Host API/native seam Electron E2E、Windows Robot 真机、签名 macOS x64/arm64、指定固件镜像与六位码发行契约未完成前,不得宣称完整双平台硬件兼容或端到端配网已经验收。
  • 四模块入口策略发布前必须部署 Works migration/API、重新打包客户端,并以真实账号对 Code、Canvas、Learning、Robot 分别执行关闭 smoke;客户端自动化不得代替服务端 API 授权验收。
  • Windows 最终安装包必须通过 Pi production closure、最终 app.asar Main、真实 extension/ephemeral child、4 parent + 4 child live-PID、prompt/compact uncertainty、late-settle 和零残留进程验证。loopback/provider-shaped smoke 只能证明协议序列化与本地隔离,realTurnVerified=false 时不得宣称真实 Provider Pass。
  • macOS x64/arm64 与 native non-WSL Linux desktop/compositor 的最终安装产物仍是 cross-platform release gate;Windows 或 WSL2/WSLg 通过不能替代这些平台证据。

Last Reviewed

2026-08-26