三套状态互相关联,但绝不共用一个 status。同步器读取事实,决策器给出动作,处理器才执行副作用。
状态由项目工作流配置决定
例如:规划中 → 实现中 → 已实现
也可能是自定义或并行工作流
权威来源:TAPD
接纳态:candidate | ready
执行态:idle | active | paused | blocked
终态:completed | aborted
权威来源:本地 DB + graph
missing | starting | live
exited | unknown
session 存在不代表 Story active
权威来源:PTY/session resolver
| 事实状态 | 动作 | 决策与副作用 |
|---|---|---|
| TAPD 新项,无本地 Story | sync | 创建 candidate;不启动线程,不创建 session |
| candidate | start | 校验至少一个可用项目;转 ready 后显式启动 |
| candidate 且项目路径无效 | start | 拒绝执行;页面反馈并写诊断事件 |
| idle/paused/blocked | open session | 生成最新 context snapshot,再启动或恢复 session |
| active + live session | open session | 只 attach,不重复注入或重复启动 |
| completed | sync suggestion | 读取 TAPD 合法流转,生成建议,不直接回写 |
| 回写建议待确认 | confirm | 调用 TAPD 更新;成功后记录外部状态与审计事件 |
| 任意非终态 | refresh context | 单 Story 扫描项目并更新有证据事实,不启动 AI |
P0 使用显式 story sync / Web 同步;只更新 TAPD 镜像字段,不覆盖本地执行状态和用户确认资料。
P1 可接 TAPD Webhook 做增量同步,但事件只进入同步队列,仍不得自动启动 Story。
TAPD 标题、负责人、截止日期:TAPD 为权威。
本地项目、分支、文档、DDL/Nacos:本地资料模型为权威,TAPD 同步不覆盖。
TAPD 已关闭但本地仍 active:显示 drift 警告,由用户决定终止、完成或继续,不自动杀 session。