跳到主要内容

第十一节 — 状态对象生命周期

这一节回答:每个有独立状态机的对象有哪些状态?什么事件触发状态变更?每个状态下的不变量是什么?

6 个有独立状态机的对象

本章列出 6 个有独立状态机的对象。其中前 5 个是 CHAP-04 的 first-class 业务对象(Session / Task / TaskGroup / Judgment Record / StateCandidate),第 6 个 Provider Readiness 是工程对象但承担跨子系统协调职责(Provider Adapter Pool 的探测状态 + 4 层降级触发器,详见 CHAP-09 / CHAP-13)。

对象由谁管理本章展开位置
SessionState Management 子系统的 Session Manager11.1
TaskTask Orchestration 子系统的 Task 实例11.2
TaskGroupTask Orchestration 子系统的 TaskGroup Manager11.3
Judgment RecordState Management 子系统的 Confirmed Store11.4
StateCandidateState Management 子系统的 Candidate Buffer11.5
Provider ReadinessProvider 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 生命周期

状态说明

状态含义
CreatedTask 对象生成但未执行
Executing证据 / 综合在调用中
Degraded部分证据缺失但仍可产出降级结果
Completed产出 StructuredCognitionResult
Failed关键依赖失败,无可输出材料
Cancelled用户主动取消或 TaskGroup 整体取消

关键约束

  • 任务进入 Completed / Failed / Cancelled 后状态不可逆,审计 trail 写入完毕
  • Cancelled 任务的部分证据可被保留(用于后续分析),但不进入用户可见状态
  • Failed 不等于无输出——必须给用户可解释的"为什么这次答不了"

11.3 TaskGroup 生命周期

状态说明

状态含义
PlannedGroup 对象生成(含主任务 + 辅助任务清单 + 依赖图 + 并发边界)
Running任意子任务在执行
PartiallyDegraded至少一个子任务降级,其他还在跑
AllCompleted所有子任务进入终态
MergedResult 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 后转入
JudgmentCandidateJudgment Record
WatchlistCandidateWatchlist Object(Fin Object 加入用户 Watchlist)
ProfileSignalCandidate动态画像的某个字段更新
SessionRenameCandidateSession 元数据更新

状态对象间的引用关系

  • 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 不写入凭证类信息(凭证不变量延伸到审计层)。