docs: 新增 configurable-pipeline 变更提案,探索可配置多阶段流水线模型
- proposal/design/specs/tasks:将固定 5 阶段重构为可配置 pipeline(discuss + pipeline + archive 三明治结构) - 引入 stage 完成判定(文档落地基线 + 可选 validate 实质门禁)与 finish 硬门禁 - 保留 explore 会话记录 session-ses_1357.md 作为思考溯源
This commit is contained in:
56
openspec/changes/configurable-pipeline/tasks.md
Normal file
56
openspec/changes/configurable-pipeline/tasks.md
Normal file
@@ -0,0 +1,56 @@
|
||||
## 1. 类型与数据模型
|
||||
|
||||
- [ ] 1.1 在 `src/types.ts` 中定义 StageConfig、PipelineConfig、StageStatus、ChangeStatus 接口(按 design.md D9 数据模型)
|
||||
- [ ] 1.2 从 `src/types.ts` 移除 STAGES 常量和 5 个旧 Stage 接口(DiscussStage/PlanStage/TaskStage/BuildStage/ArchiveStage)
|
||||
- [ ] 1.3 清理文件路径常量:移除旧 stage 专用路径,保留通用路径(changes/、archive/)
|
||||
|
||||
## 2. 配置系统
|
||||
|
||||
- [ ] 2.1 重写 `src/core/config.ts` 加载逻辑:解析新 `stages` 数组格式,返回 PipelineConfig
|
||||
- [ ] 2.2 实现 config schema 校验:stage id 格式(`^[a-z][a-z-]*$`)、唯一性、保留字(discuss/finish/status/archive/init)、pipeline 至少 1 个 stage、validate 可构造为 AsyncFunction
|
||||
- [ ] 2.3 重写 `src/defaults/config.ts`:默认 5 阶段 pipeline(requirements/design/plan/task/build),每个 stage 含对应默认 prompt
|
||||
- [ ] 2.4 实现配置合并:默认配置 + 用户 `.rune/config.yaml` 覆盖
|
||||
|
||||
## 3. 完成判定引擎
|
||||
|
||||
- [ ] 3.1 实现 validate 执行器:`new AsyncFunction('ctx', body)`,注入 `ctx.changeDir`,返回 `{ passed: boolean, reason: string | null }`
|
||||
- [ ] 3.2 重写 `src/core/scanner.ts`:遍历 pipeline stages,检查 `<id>.md` 存在性 + 执行 validate(若有),派生 StageStatus[]
|
||||
- [ ] 3.3 派生 ChangeStatus:计算 currentIndex(第一个未 done 的索引)和 allDone
|
||||
|
||||
## 4. 提示词组装
|
||||
|
||||
- [ ] 4.1 用通用 `assembleStagePrompt(stage: StageConfig, changeDir: string)` 替换 `src/core/assembler.ts` 中 5 个专用 assembleXxxPrompt 函数
|
||||
|
||||
## 5. CLI 命令层
|
||||
|
||||
- [ ] 5.1 重写 `src/cli.ts`:启动时读取配置,为每个 pipeline stage 动态注册 `rune <stage-id> <change>` 命令
|
||||
- [ ] 5.2 实现 stage 命令软门禁:检查该 stage 所有前置 fully-done 才输出提示词,否则报错指引
|
||||
- [ ] 5.3 重写 finish 命令硬门禁:检查所有 stage fully-done(列出全部未完成项及原因),通过后移动变更目录到 archive/
|
||||
- [ ] 5.4 保留 discuss 命令:行为与 0.1.x 一致(输出探索模式 prompt,无门禁,不产文档)
|
||||
- [ ] 5.5 实现 status 命令:输出每阶段状态(文档存在/validate 通过/done)+ 整体进度(currentIndex/allDone)
|
||||
|
||||
## 6. 适配器层
|
||||
|
||||
- [ ] 6.1 更新 `src/adapters/opencode.ts`:从配置动态注入 stage 命令和 skill 文件(替换 `for (stage of STAGES)`)
|
||||
- [ ] 6.2 更新 `src/adapters/claude-code.ts`:同上,动态注入
|
||||
|
||||
## 7. init 命令
|
||||
|
||||
- [ ] 7.1 更新 `src/commands/init.ts`:生成新格式 `.rune/config.yaml`(默认 5 阶段 pipeline 配置)
|
||||
|
||||
## 8. 测试
|
||||
|
||||
- [ ] 8.1 配置校验测试:合法/非法 id、重复 id、保留字、空 pipeline、validate 语法错误
|
||||
- [ ] 8.2 validate 执行器测试:truthy 返回通过、falsy 返回失败、异常捕获含 message、异步函数、ctx.changeDir 正确注入
|
||||
- [ ] 8.3 scanner 测试:空目录全未完成、部分完成、全完成、validate 失败场景、currentIndex/allDone 计算
|
||||
- [ ] 8.4 软门禁测试:前置全完成放行、前置有未完成拒绝并报错、首阶段无门禁
|
||||
- [ ] 8.5 finish 硬门禁测试:全完成时归档移动目录、有未完成时拒绝并列出全部未完成项及原因
|
||||
- [ ] 8.6 动态命令注册测试:从配置生成正确命令集、自定义 stage id 注册为命令
|
||||
|
||||
## 9. 质量保障与文档
|
||||
|
||||
- [ ] 9.1 运行 `bun test` 确保全量测试通过
|
||||
- [ ] 9.2 运行 `oxlint` 确保无 lint 错误
|
||||
- [ ] 9.3 运行 `oxfmt` 确保格式一致
|
||||
- [ ] 9.4 更新 README.md:新配置格式、三明治流程说明、命令列表
|
||||
- [ ] 9.5 编写迁移指引:旧用户从 0.1.x 升级(重新 init + 手动迁移变更内容)
|
||||
Reference in New Issue
Block a user