第十一节 — 状态对象生命周期
这一节回答:每个有独立状态机的对象有哪些状态?什么事件触发状态变更?每个状态下的不变量是什么?
6 个有独立状态机的对象
本章列出 6 个有独立状态机的对象。其中前 5 个是 CHAP-04 的 first-class 业务对象(Session / Task / TaskGroup / Judgment Record / StateCandidate),第 6 个 Provider Readiness 是工程对象但承担跨子系统协调职责(Provider Adapter Pool 的探测状态 + 4 层降级触发器,详见 CHAP-09 / CHAP-13)。
| 对象 | 由谁管理 | 本章展开位置 |
|---|---|---|
| Session | State Management 子系统的 Session Manager | 11.1 |
| Task | Task Orchestration 子系统的 Task 实例 | 11.2 |
| TaskGroup | Task Orchestration 子系统的 TaskGroup Manager | 11.3 |
| Judgment Record | State Management 子系统的 Confirmed Store | 11.4 |
| StateCandidate | State Management 子系统的 Candidate Buffer | 11.5 |
| Provider Readiness | Provider Adapter Pool 的 Readiness Prober | 详见 CHAP-09 § Provider Adapter Pool |
首-class 业务对象 vs 有独立状态机的对象:CHAP-04 列 7 个 first-class 业务对象(Session / Watchlist / Judgment Record / Dynamic Profile / State Candidate / Fin Object / Task)。其中 Watchlist 与 Fin Object 没有独立状态机 —— Watchlist 由 StateCandidate(候选)+
watchlist_objects表(confirmed store)承担状态;Fin Object 只有 created / archived 两个简单标记,状态变化通过 StateCandidate → watchlist_objects 路径承载。TaskGroup 是工程对象不是 first-class 业务对象,但有独立状态机(任务编排需要)。
工程对象(如 EvidencePacket / EvidencePlan)也有生命周期,但单次任务内即完成,不需独立状态机;详见 Evidence + Synthesis 子系统。
11.1 Session 生命周期
状态说明:
| 状态 | 含义 | 不变量 |
|---|---|---|
| Active | 当前活跃的对话 | Context 长度在预算范围内 |
| Snapshotted | 因 Context 超额触发压缩 | Context Snapshot 保留金融语义锚点 |
| Archived | 用户主动归档 | 内容不变,但不在默认列表 |
| Deleted | 用户删除 | 引用的 Judgment / Watchlist 不被级联删除 |
关键约束:
- Default Session 不可删除(用户始终有一个默认会话兜底)
- Archived 与 Snapshotted 之间没有直接转换(必须先 resume 到 Active)
- 删除 Session 不删除它引用的 Judgment Record / Watchlist 对象(这些是独立资产)
11.2 Task 生命周期
状态说明:
| 状态 | 含义 |
|---|---|
| Created | Task 对象生成但未执行 |
| Executing | 证据 / 综合在调用中 |
| Degraded | 部分证据缺失但仍可产出降级结果 |
| Completed | 产出 StructuredCognitionResult |
| Failed | 关键依赖失败,无可输出材料 |
| Cancelled | 用户主动取消或 TaskGroup 整体取消 |
关键约束:
- 任务进入 Completed / Failed / Cancelled 后状态不可逆,审计 trail 写入完毕
- Cancelled 任务的部分证据可被保留(用于后续分析),但不进入用户可见状态
- Failed 不等于无输出——必须给用户可解释的"为什么这次答不了"
11.3 TaskGroup 生命周期
状态说明:
| 状态 | 含义 |
|---|---|
| Planned | Group 对象生成(含主任务 + 辅助任务清单 + 依赖图 + 并发边界) |
| Running | 任意子任务在执行 |
| PartiallyDegraded | 至少一个子任务降级,其他还在跑 |
| AllCompleted | 所有子任务进入终态 |
| Merged | Result Merger 整合输出 |
| Cancelled | 整个 Group 取消 |
关键约束:
- 子任务失败隔离:一个失败不阻塞其他
- 用户取消 Group 时,正在执行的子任务收到 cancel 信号,已完成的子任务结果保留至审计
- Merged 状态的输出是用户看到的最终整合结果
11.4 Judgment Record 生命周期
状态说明:
| 状态 | 含义 |
|---|---|
| Candidate | 任务识别出的待确认判断 |
| Confirmed / ConfirmedEdited | 用户确认(含编辑后)的判断,进入长期资产 |
| Active | 在主动信号监控中(成立 / 失效条件被持续检查) |
| Triggered | 条件被市场变化触及,主动信号已发出 |
| ReviewedUnchanged | 复盘后判断仍成立 |
| Updated | 用户基于复盘形成新判断(新建后续 Judgment,旧的保留在复盘链) |
| Superseded | 用户认为旧判断已失效 |
| Rejected | 用户拒绝候选 |
关键约束:
- Judgment Record 是 first-class 资产,不是聊天记录的归档
- 复盘链:Updated 不删除旧 Judgment,形成版本链("当时 → 现在"可追溯)
- Superseded 的 Judgment 仍可读,仅不进入主动信号监控
11.5 StateCandidate 生命周期
状态说明:
| 状态 | 含义 |
|---|---|
| Pending | 候选生成,等待用户操作 |
| Confirmed / ConfirmedEdited | 用户确认,候选转为实际 State 对象(Judgment Record / Watchlist Object / Profile 信号 等) |
| Rejected | 用户主动拒绝 |
| Expired | 超过过期时间用户仍未处理 |
关键约束:
- 候选不进入 Confirmed Store,仅在 Candidate Buffer 暂存
- Expired 候选自动清理,不影响其他状态资产
- 候选的 payload 在 Confirmed 时转入对应的 Confirmed Store 对象(Judgment Record / Watchlist Object / Profile Signal 等)
候选类型与 Confirmed 对象的映射:
| Candidate 类型 | Confirmed 后转入 |
|---|---|
JudgmentCandidate | Judgment Record |
WatchlistCandidate | Watchlist Object(Fin Object 加入用户 Watchlist) |
ProfileSignalCandidate | 动态画像的某个字段更新 |
SessionRenameCandidate | Session 元数据更新 |
状态对象间的引用关系
- Session 引用:Task / TaskGroup / Context Snapshot / 当前关注的 Fin Object
- Task 引用:Session / Fin Object / EvidencePacket DAG / StructuredCognitionResult
- TaskGroup 引用:多个 Task / 主任务标识
- Judgment Record 引用:Fin Object / Session(创建时)/ 复盘链中的其他 Judgment Record
- StateCandidate 引用:Session / 候选要转化的目标对象 schema
生命周期独立性:
- Session 删除不删除 Judgment Record / Watchlist Object(它们是独立资产)
- 删除 Judgment Record 需用户显式操作(不可级联)
- 用户清空画像不影响 Judgment Record / Watchlist
- 用户清空 Watchlist 不影响该对象的 Judgment Record(仍可在历史中查到)
状态变更的审计 trail
所有状态对象的状态变更都进入审计 trail(State Management 子系统的 Audit Logger),含:
- 状态变更前后
- 触发事件(用户动作 / 系统事件 / 市场变化)
- 时间戳
- 关联的 Session / Task / Provider 调用
敏感性约束:审计 trail 不写入凭证类信息(凭证不变量延伸到审计层)。