--- name: pass-the-baton description: 交接期,交棒:设计会话当编排者,和人一起走定约、定程、交出,把一程交给交付期;这一程交回来之后收回,人验收,记进路线图,再交下一程。定义期第 6 步过了、一程交回来了,或人说「交出去」「分几程」「这一程验过了」「交下一程」时加载,也可点名 /pass-the-baton。交付会话从交接信息包开工时不加载,它只读包;一程多大的立场归 candid-friend。 --- # 交棒 回答的问题:这一程怎样交出去,又怎样收回来。交接期夹在定义期与交付期之间,由设计会话做,人在场。接力赛里交棒不是一个点,是一段接力区:棒要在区里交完,接棒的人不回头商量跑多远,只跑自己这一棒。例:一件事要三程做完,设计会话和人定好第一程的 spec 与切片大纲,只把第一程交出去;第一程交回来、人验过,再定第二程。 一个会话走完与两个会话走完是同一套事,只是同一个代理先后扮两个角色。 ## 两条规矩 1. **设计会话是编排者。** 分不分程、分成哪几程、次序,都在这里定。路线图只有它持有。 2. **交付会话只知道自己这一程。** 包里不出现别的程。它不和人谈范围;包答不出四问或与正式文档对不上,它退包,不谈判。 一次只交出一程:人的验收产能是瓶颈,同时交出两程只会多攒一倍没验收的库存。转手会丢信息,回路越紧越稳,一块多大由接的一方验得完多少定。做法加载技能 `think-closed-loop`。 ## 四件事 前三件在一程交出之前,按顺序做;收回在这一程交回来之后。 | 事 | 做什么 | 完成判据 | 做法 | | --- | --- | --- | --- | | 定约 | 和人一起写这一程的 spec:目标、验收标准、不变式对照、失败语义、责任分级 | spec 过 `check-plan --spec`,人认可 | 加载技能 `spec-and-plan`,只做写 spec 的一半 | | 定程 | 写切片大纲;问人的验收窗口;尺寸核对,不过就说一次并给分程建议;分程时写路线图;人要离开较久时,停点、点名授权的动作、只有人能定的事一次问齐 | 尺寸核对三件都过,或人说按一程做;分程时路线图列出各程 | 加载技能 `candid-friend`,读它的「一程的大小」;切片大纲写进[交接信息包](handoff-pack-template.md)的同名一节,路线图照[路线图模板](roadmap-template.md) | | 交出 | 走[交接点核对单](handoff-checklist.md);写交接信息包;路线图里标这一程已交出;人确认可以移开注意力 | `check-plan --handoff` 退出 0;人说可以走了 | 本技能 | | 收回 | 见下一节 | 路线图里这一程是已验收或打回,打回与没做的有了去处 | 本技能 | 切片大纲只写到够估时:每片交付什么行为、对应哪条验收、人怎么上手验、要几分钟、预计做多久。不写开工包,不写技术细节。plan 归交付会话,它在本程边界内可以重切,不改承诺。 交出的那一刻叫交接点,它是物理条件,不是感觉:长期维护的知识已进唯一源并过评审,没有本次上下文的会话答得出四问。包里只有这一程:不写后面还有几程,不写下一程做什么;「范围外」只说这一程不做什么,不说它归哪一程。交出之后,同一个会话接着做交付,或者另开一个交付会话从包开工。 ## 收回 一程交回来之后,人回到设计会话: 1. 读这一程的交付声明:交付了什么、待人验收、待人决定的事,以及挡住验收的[圈外的问题](../single-session-dev-flow/SKILL.md#圈外的问题)。 2. 人上手验收。验收的立场:看到人这一侧的风险就说一次:提醒、依据、建议、选择。做法加载技能 `candid-friend`。 3. 把结果记进路线图:验过了,打回了,还是截程后只交了一部分。只有一程、没有路线图时,结果就是交付声明里「待人验收」的勾。 4. 打回的与截下来没做的,变成下一程的输入,或者给同一程出一份修订包。 5. 按验收结果修订后面各程的边界。第一程常常改变人对后面的想法,这正是先做它的理由。 6. 回到定约交出下一程,或者全部做完,结束。 上一程还没验,人就要交出下一程:提醒一次,人定了照做。只有设计会话知道有上一程,所以这件事归收回。 交付中人要改范围,不和交付会话谈:回到设计会话,记成下一程的输入,或出一份修订包。 ## 跨会话协调 只有设计与交付分在两个会话时才用。两个会话之间没有共同的记忆,要一处两边都读得到、人也看得到的地方,放三样:正文放这一程的包,评论放交付声明与退包,开与关表示验没验。缺省用 GitHub issue,对应关系与命令见[用 GitHub issue 协调](github-issue.md);项目接入点「跨会话协调用什么」填了别的工单系统,就用它的正文、评论与开关。没有 GitHub 又没约定别的,退回到文件:包写成一个文件,交付声明写成它旁边另一个文件。 一个会话走完时不开工单:包与路线图写在这一程的工作目录里,位置从接入槽位「交接信息包与路线图放哪」取。