====== 仓库索引、上传审核与发布合同 ====== 本页必须区分“已实现的包格式/校验工具/官方模块引擎”和“后续的第三方投稿后台”。[[https://www.apuos.cn/developer/spkg/ADMIN-API.md|ADMIN-API.md]]列出的/admin/v1接口目前属于实施合同,尚未部署为公开投稿服务。不能向开发者提供一个不存在的上传按钮,或将社区发帖当作已完成审核发布。 ===== 仓库与不可变发布 ===== 源根index.json遵守[[https://www.apuos.cn/developer/spkg/index.schema.json|索引Schema]],全量索引不超过4MiB。相同pkg_id/version/architecture集合只出现一次;package URL为同源packages/...spkg相对路径,不允许遍历、查询或跨源重定向。核对整包size/SHA-256、Manifest字段与受信任key_id。 index.sig用APUOS-SPKG-INDEX-V1、NUL和index.json原始字节的32字节SHA-256签名;不能重新序列化后再验证。源revision单调递增、防回放,已发布同版内容不可替换;撤回保留记录并标记withdrawn。私有源令牌不进入索引、日志或浏览器URL。 ===== 后台角色与流程 ===== 规划角色为提交packages.submit、审核packages.review、发布packages.publish及源管理sources.manage,提交与审核角色分离,不能自审。状态合同为draft → uploaded → validating → review_pending → approved → published;失败、拒绝或撤回分别保留明确状态和原因。 规划接口包括创建受限上传、流式接收、查询校验任务、提交审核、审核决定、签名发布、撤回与源管理。请求需范围限定认证、CSRF/限流/审计和revision冲突检查;开发者必须拥有pkg_id授权,不能抢占官方命名空间。 ===== 审核材料 ===== 先校验整个.spkg的摘要/长度和格式,再对ELF ABI、脚本、许可证、图片、依赖与漏洞作实际审核。格式通过不表示病毒扫描通过;没有运行扫描就不能显示“已安全扫描”。保存工具版本、审核者、原始包和发布包各自完整摘要,变更后重新验证。先发布完整不可变包,再原子更新签名索引,避免客户端拿到半包。 当前开发者可以在社区对应板块讨论格式、提交脱敏Manifest和测试记录。生产发布、签名私钥和正式来源授予必须由维护流程处理,不经公开帖子传递秘密。