56 lines
3.3 KiB
Markdown
56 lines
3.3 KiB
Markdown
# 入口 4:feature 规划与入队
|
||
|
||
## 选择与建立上下文
|
||
|
||
巨大而模糊的工作先用 `wayfinder`;需要外部事实时用 `research`。先进入 `grill-with-docs`,
|
||
研究报告不能替代 grilling。进入 `grill-with-docs` 前,重读
|
||
`memory-bank/project-brief.md`、`memory-bank/tech-context.md`、
|
||
`memory-bank/system-patterns.md` 以及会改变设计的项目规则、领域文档和 ADR。
|
||
首次运行 `setup-matt-pocock-skills` 时选择 local Markdown tracker。
|
||
|
||
让 `grilling` 清空 design frontier 并取得用户确认;seam confirmation 在 `to-spec` 与 `tdd`,
|
||
`tdd` 不得在未经确认的 seam 上开始。按顺序推进:
|
||
|
||
`setup-matt-pocock-skills -> grill-with-docs -> to-spec -> to-tickets`
|
||
`-> main_loop.py enqueue -> 提交 planning baseline -> main_loop.py claim`
|
||
|
||
关键规划链是 `to-spec -> to-tickets`。
|
||
|
||
## Ticket 身份与依赖格式
|
||
|
||
- `FeatureId`:小写字母或数字开头,只含小写字母、数字和连字符。
|
||
- `TicketId`:qualified `feature-slug/NN`;feature slug 与至少两位数字共同构成身份。
|
||
- `FeatureIntegrationId`:`feature-slug@integrated`。
|
||
- Dependency 只能是后两类身份;标题和文件名中的可读 slug 不是身份。
|
||
|
||
每个 ticket 必须恰有一行 `**Blocked by:** None`,或
|
||
`**Blocked by:** feature-a/01; feature-b@integrated`。执行 hard cut:`None` 只能单独出现;
|
||
同 feature 也写完整身份;只用分号;拒绝裸数字、标题描述、逗号、隐式当前 feature、
|
||
非法/重复/缺失目标、自依赖和跨 feature cycle。旧格式必须在 enqueue 前人工迁移;
|
||
禁止增加 fallback、双解析器或自动重写。
|
||
|
||
## 全局图与两个 Frontier
|
||
|
||
- 锁内加载全部 queued features:每个 ticket 是节点,每个 feature 增加 integration node。
|
||
- ticket 使用 `Blocked by` 边;integration node 依赖本 feature 全部 tickets;queue 顺序只连接
|
||
integration nodes,不形成 ticket claim 门槛。
|
||
- ticket frontier 是依赖已满足且 `ready-for-agent` 的 tickets,按 queue feature、ticket number、
|
||
稳定 slug 排序;integration frontier 是首个尚未集成的 feature,两者独立。
|
||
- ticket 在 `resolved` 或 `skipped` 时满足;integration dependency 只在持久状态含有效
|
||
`integration_commit` 时满足。`skipped` 令 feature partial,集成时必须显式授权。
|
||
- 枚举顺序不得改变 frontier、claim 或错误顺序。
|
||
|
||
## 入队与 planning baseline
|
||
|
||
第三方 `to-tickets` 只定义通用 tracker 行为;主循环格式以本文件和执行引擎为准。
|
||
跨 feature 前向依赖必须把相关 feature 放在同一批次;同批重复 `--feature` 与现有 queue 一起校验。
|
||
任一解析、目标或 DAG 校验失败,都不得写 queue、ticket metadata/status 或 feature state;
|
||
`enqueue` 是最终机器校验边界。参数与结果只查相应 `--help`,不维护命令职责表。
|
||
|
||
生成和入队不隐式提交。任何 claim 前,提交 `.scratch/<feature>/spec.md`、
|
||
`.scratch/<feature>/issues/*.md` 和 `.scratch/queue.md` 作为 planning baseline;随后读
|
||
`workflows/ticket-execution.md`,由 `main_loop.py status` / `main_loop.py claim` 取得正式 assignment。
|
||
|
||
尚未 claim ticket 时,加载 `to-questionnaire`,把问题写入 control checkout 的
|
||
`.scratch/questions/<slug>.md`,并从 `grill-with-docs` 恢复;不得把问题写入稳定知识。
|