101 lines
7.6 KiB
Markdown
101 lines
7.6 KiB
Markdown
# 任务路线图(Roadmap)
|
|||
|
|
|
||
|
|
> 本文是**只读路线图**:维护阶段划分、里程碑、待办池和建议拆分清单。
|
||
|
|
> 真实任务以「一任务一文件」存放在 [`tasks/`](tasks/README.md)(`docs/tasks/W-<编号>.md`);本文不跟踪单任务状态。
|
||
|
|
> 本仓库任务编号用 `W-`;引用客户端任务写全称(如 `soft_quay/T-614`)。
|
||
|
|
|
||
|
|
## 使用规则
|
||
|
|
|
||
|
|
1. **开工先落文件**:从下方建议清单把下一个任务按 [`tasks/README.md`](tasks/README.md) 落成 `docs/tasks/W-<编号>.md`(沿用建议编号),把验收要点展开成可执行、可观察的步骤,再开始实现。
|
||
|
|
2. **单 Agent 串行执行**:同一时间只做一个任务;前一任务 `DONE`、验证并提交后才开始下一任务。
|
||
|
|
3. **不跳步**:依赖未完成的任务不能开工;裁定类任务未完成前,依赖其结论的实现任务不能开工。
|
||
|
|
4. **本文只在规划变化时修改**:单个任务开工或完成不修改本文。
|
||
|
|
5. **动手前**先读 `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 校验升级。
|