Project Management Docs main jqkai/samples/feature-lifecycle.md

Feature Lifecycle Sample

下面用一个虚构 feature feat-12-user-billing-reconciliation 演示 backlog feature 的完整生命周期。

1. Proposed

创建目录:

planning/backlog/active/feat-12-user-billing-reconciliation/
  PRD.md
  implementation-checklist.md

此时建议:

  • PRD.md 状态写为 Proposed
  • 当前阶段 可写为 PRD and checklist only
  • checklist 先建立空的验收面板

2. Active

当 feature 进入正式推进或修复窗口后:

  • PRD.md 状态切到 Active
  • 当前阶段 写清当前正在推进的阶段
  • checklist 开始回填各模块的结果项

此时目录仍然在 active/

3. Implemented

当代码已经进入主线,但 backlog 文档、索引、验证还没完全追平时:

  • PRD.md 状态切到 Implemented
  • feature 仍可留在 active/
  • active/README.md 用日期化说明记录它“已实现但尚未完成收口”

这是 jqkai 方法里很重要的一步,因为真实项目里经常出现“实现先行、文档滞后”。

4. Completed

只有在下面事项都完成后,才把目录整体迁移到 completed/

  • PRD 状态切到 Completed
  • checklist 已追平当前现实
  • 根 backlog README 已同步
  • active/README.md 已移除该条

迁移前:

planning/backlog/active/feat-12-user-billing-reconciliation/

迁移后:

planning/backlog/completed/feat-12-user-billing-reconciliation/

5. Archived

如果这条 completed feature 后续只需要保留历史参考,不想继续混在现行 completed 列表里,可以再迁入:

planning/backlog/completed/archive/feat-12-user-billing-reconciliation/

这一步表示“历史层级变化”,不是再次改变 feature 真义。

6. Supplemental PRD

如果 feature 内出现一个局部议题,例如 rename guardrail:

  • 不新开 13
  • 直接在原目录下增加 rename-guardrail-PRD.md

适用场景:

  • 局部纠偏
  • rename 约束
  • 误判提案保留

如果后续证明这份补充提案不成立:

  • 将该文件状态标为 Superseded
  • 在主 PRD.md 顶部显式链接
  • 说明它“不作为实现真源”

7. Numbering Conflict

编号冲突处理建议:

  1. 新建 feature 前,先搜索 active/completed/archive/
  2. 找出当前最大编号和同号目录
  3. 如果发现冲突,优先重新分配新编号
  4. 不要让两个新 feature 长期共享同一编号

建议把“分配前先查重”写入团队规则,而不是靠记忆。