Files
makelore/.project-docs/00-brief/success-criteria.md

34 lines
4.7 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.

# 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 在没有 metadata revision/条件写与 cover 回收合同的阶段,首次 create 只能原子保存文字资料且不上传封面;已有项目只能 version-only。客户端不得通过无条件 PATCH、先上传封面或吞掉并发冲突来模拟原子性。
- Learning 课程目录、生成、下载、Agent、ASR 与 classroom runtime 必须保持 Main-owned;Renderer 不得获得 Works Token、Provider/模型配置、本地 archive 路径或任意网络代理能力。
- Learning 课程包必须匹配声明大小与 SHA-256 后原子安装并在播放前复验;媒体必须是 MIME/扩展匹配的被动图片、音视频或字体,可执行同源文档在安装和服务两层拒绝。大课模块必须绑定同一 aggregate 课程身份,课堂联网只允许固定 capability、方法和有界请求/响应。
- Learning 本地库、下载、播放器注册和 IPC 结果必须绑定 Electron Main 从当前登录身份派生的不透明账号分区;切换账号、注销或会话 epoch 变化后,旧账号文件、播放器 URL 和迟到结果不得继续可见。
- Learning 归档必须限制为最多 512 MiB;下载最多跟随 5 次同 Works origin 的 HTTP(S) 重定向且不得向资源重定向转发 Bearer。播放器必须校验精确 loopback origin、账号绑定与短效 nonce;只有显式课堂读取能注册资源,Agent/runtime 必须先验证调用前已存在的 active registration,再做无副作用权威解析,不能接受任意来源消息、自注册课程或跨账号资源。
- 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 授权。
## 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 账号、固定 URL/SHA-256 的 production Stage artifact 和正式安装包验证目录/生成/材料/取消恢复、下载、离线多模块播放、进度、Agent、ASR 与 PBL/评分;客户端自动化不得替代 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 授权验收。
## Last Reviewed
2026-08-17