# 入口 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//spec.md`、 `.scratch//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/.md`,并从 `grill-with-docs` 恢复;不得把问题写入稳定知识。