任务路线图(Roadmap)
本文是只读路线图:维护阶段划分、里程碑、待办池和建议拆分清单。
真实任务以「一任务一文件」存放在 tasks/(docs/tasks/W-<编号>.md);本文不跟踪单任务状态。
本仓库任务编号用 W-;引用客户端任务写全称(如 soft_quay/T-614)。
使用规则
- 开工先落文件:从下方建议清单把下一个任务按
tasks/README.md 落成 docs/tasks/W-<编号>.md(沿用建议编号),把验收要点展开成可执行、可观察的步骤,再开始实现。
- 单 Agent 串行执行:同一时间只做一个任务;前一任务
DONE、验证并提交后才开始下一任务。
- 不跳步:依赖未完成的任务不能开工;裁定类任务未完成前,依赖其结论的实现任务不能开工。
- 本文只在规划变化时修改:单个任务开工或完成不修改本文。
- 动手前先读
00-ai-start-here.md、05-coding-rules.md 和 current-state.md。
未定项裁定清单
设计规格 §十 的九个未定项全部登记如下;裁定结论写入对应文档(03/04/api)后,相关实现任务才可开工。
| 未定项 |
归属 |
说明 |
| 签名私钥管理(保管/轮换/签发流程) |
W-003 |
立项前裁定;首期用离线测试密钥对 |
| 协议 Schema/corpus 引用方式 |
W-001 |
submodule vs 版本化拷贝 + CI 一致性校验 |
| 正式域名与对象存储/CDN(含带宽/防盗链) |
W-004 |
Phase 3 开工前裁定 |
| 密钥 ID / 轮换字段 |
Backlog |
需先在客户端仓库做协议升级,单公钥期间不得另造签名域 |
| package.signature 独立语义 |
Backlog |
v1 客户端不独立验;定义待签名字节 + 公钥域后再实现 |
| 图标分发字段映射 |
Backlog |
sha256: 到实际下载位置/分辨率变体的发布端映射格式 |
| 跨仓库 CI 对齐(消费 corpus 的证据) |
W-002 + Backlog |
与 soft_quay/T-614 跨仓库协调,证据交换机制记 Backlog |
| 授权产品映射(product_id ↔ products) |
W-403 |
Phase 4 |
| 发布端形态与操作者权限模型 |
W-501 |
Phase 5 开工时裁定;首期单操作者 |
建议拆分清单
Phase 0 · 立项裁定与工程骨架
| ID |
任务 |
依赖 |
验收要点 |
| W-001 |
初始化工程骨架与协议权威源接入 |
- |
确认后端语言(建议 Go)并更新 03-tech-stack.md;裁定并落实 soft_quay schemas/corpus 的引用方式;工程可构建、测试可运行;用真实命令替换 init.sh/init.ps1 顶部三个变量,并同步 00-ai-start-here.md、03-tech-stack.md、current-state.md |
| W-002 |
corpus + Schema 回归闸门 |
W-001 |
本地脚本(后接 CI)执行:corpus 引用一致性校验 + 全部向量断言入口 + Schema 校验入口;任何向量失败即闸门失败 |
| W-003 |
裁定:签名私钥管理方案 |
- |
文档决策任务:谁持有、如何保管与轮换、签发流程;结论写入 03-tech-stack.md 与 04-architecture.md §五;明确首期测试密钥对与正式密钥的切换条件 |
| W-004 |
裁定:正式域名与对象存储/CDN |
- |
文档决策任务:域名、存储选型、带宽成本与防盗链策略;结论写入 03-tech-stack.md;Phase 3 前完成即可 |
Phase 1 · 协议对齐核心(最高风险)
| ID |
任务 |
依赖 |
验收要点 |
| W-101 |
受限规范化与 Ed25519 签名/验签 |
W-002 |
canonicalizer 实现 api.md §签名域全部拒绝规则;corpus 合法向量逐字节一致、非法向量按 want_error 拒绝;期望值零自举 |
| W-102 |
manifest / app Schema 校验器 |
W-101 |
Schema 合规、无未知/重复/缺失字段、id 唯一、SemVer 合法、architectures↔packages 对应、channel 一致、绝对 HTTPS;非法样例表驱动全拒 |
| W-103 |
端到端:客户端可验签的 manifest |
W-101, W-102 |
用离线测试密钥对(与客户端 corpus 公钥配对)生成 manifest-modern/win7;soft_quay 客户端验签通过;篡改任一字节后验签失败;达成 M1 |
Phase 2 · 登记与本地发布闭环
| ID |
任务 |
依赖 |
验收要点 |
| W-201 |
Registry 数据模型定稿与存储 |
W-103 |
04-architecture.md §三数据模型定稿(去掉"建议"标注);Software/Release/PackageArtifact 读写与约束(id 稳定、同 channel 单 active release)落地并有测试 |
| W-202 |
Ingestion:候选包接收校验 |
W-201 |
定稿提交方式与认证(api.md §六);包结构/app.json 一致性/size/SHA-256 校验;非法包表驱动全拒;不生成未测试目标 |
| W-203 |
双通道 Manifest Generator |
W-201 |
从 Registry 按 channel 组装待签名规范字节;通道隔离断言;status/catalog 版本正确 |
| W-204 |
本地静态发布模拟与客户端闭环 |
W-202, W-203 |
本地静态 HTTP 服务托管签名清单 + ZIP;客户端跑通「清单→下载→安装」;发布顺序为先包后清单;达成 M2 |
Phase 3 · 签名隔离与正式发布
| ID |
任务 |
依赖 |
验收要点 |
| W-301 |
独立签名服务 |
W-204, W-003 |
私钥只在签名服务;只签三类受控结构;拒绝任意字节;每次请求审计(操作者/结构摘要/时间/密钥指纹);业务进程无私钥材料的验证手段 |
| W-302 |
Publisher 原子发布 |
W-301, W-004 |
上传对象存储/CDN;先包后清单强制;失败不切清单;发布结果可回查 |
| W-303 |
正式密钥生成与公钥内置协调 |
W-301 |
按 W-003 方案生成正式密钥;与 soft_quay 协调正式公钥内置;测试密钥不再用于生产产物 |
Phase 4 · 许可证与撤销
| ID |
任务 |
依赖 |
验收要点 |
| W-401 |
许可证签发 |
W-301 |
machine_hash + products 签发;客户端离线验签通过;不保存原始硬件标识;签发入审计 |
| W-402 |
撤销名单结构裁定与签发 |
W-401 |
与客户端协调定稿 revocation list 字段结构与宽限期时长(写入客户端 api.md 后同步本仓库);签名名单可被客户端消费 |
| W-403 |
授权产品映射管理 |
W-401 |
product_id 与许可证 products 的登记与映射;映射错误可被发现 |
Phase 5 · Web 管理端与审计
| ID |
任务 |
依赖 |
验收要点 |
| W-501 |
裁定权限模型 + 管理端骨架 |
W-204 |
裁定操作者认证与权限(首期单操作者);Web 框架选型写入 03-tech-stack.md;管理端骨架可登录 |
| W-502 |
登记/发布/下架/撤销/签发操作流 |
W-501, W-302 |
全部操作可在后台完成并走既有流水线;危险操作有确认 |
| W-503 |
append-only 审计与查看 |
W-502 |
审计记录不可覆盖;后台可按时间/操作者/对象检索 |
里程碑
- M1:corpus + Schema 回归通过,产出被
soft_quay 客户端验签通过的 manifest(Phase 0~1)。
- M2:本地模拟发布闭环:登记 → 接收校验 → 签名 → 静态发布 → 客户端安装(Phase 2)。
- M3:正式发布链路:签名服务隔离 + 对象存储原子发布 + 正式密钥(Phase 3)。
- M4:许可证 / 撤销签发可用,客户端离线验证通过(Phase 4)。
- M5:Web 管理端 + 审计,发布者全流程后台化(Phase 5)。
待办池(Backlog)
- 密钥 ID / 轮换字段(需客户端协议升级先行)。
- package.signature 独立签名域定义与实现。
- 图标
sha256: → 下载位置 / 分辨率变体的发布端映射格式。
- 跨仓库 CI 对齐证据交换机制(与
soft_quay/T-614 协调)。
- 多操作者权限与发布审批流。
- 防盗链与带宽成本优化细化(若 W-004 未完全覆盖)。
routes.md / 交互清单等 UI 文档(Phase 5 启动时按模板补齐)。
- files.json v1.1 强制后的 Ingestion 校验升级。