Parent tracking issue: #2668
问题
首个 lifecycle 纵向切片需要同时读取 state record、native package 和 pending journal,但现有 planner facts 使用各自的缺省或错误约定,尚不能作为跨消费者共享的只读 observation contract。尤其需要避免把“调用方未请求”“probe 无法完成”和“权威来源确认不存在”合并。
实现边界
- 在
anolisa-core 新增 ComponentSnapshot 核心类型。
- 初始仅覆盖
state、native package 和 pending journal 三类事实。
- 使用通用 typed evidence envelope 区分:
not-requested
unavailable,携带 provenance 和原因
absent,携带 provenance
present,携带 provenance 和 typed value
- state、native package 和 journal 使用各自的 typed provenance,避免来源与事实类型错配。
- snapshot request 显式声明 probe 集合;构造时拒绝 requested probe 缺失证据或 unrequested probe 携带证据。
- 仅定义 core contract 与纯单元测试,不接入 filesystem、rpmdb 或 journal IO。
必须保持
- 不迁移
status、doctor、update、repair 或 lifecycle handler。
- 不修改现有 planner
Facts、RecordFacts、NativeProbe 行为。
- 不添加 serde/wire contract,不改变 CLI、JSON schema、输出或退出码。
- 不提前加入 service、health、integrity 或 adapter snapshot 字段。
- 不访问宿主机真实 state、rpmdb、service 或 journal。
验收标准
- 四种 evidence 状态具有隔离测试。
- requested/unrequested probe 与最终 evidence 的一致性由构造器验证。
- state active/quarantined、native installed/multiple-version 和 pending journal 使用 typed value 表达。
- provenance 和 unavailable reason 原样保留。
- anolisa Rust workspace 的 fmt、check、clippy、test 和 doc gates 通过。
Parent tracking issue: #2668
问题
首个 lifecycle 纵向切片需要同时读取 state record、native package 和 pending journal,但现有 planner facts 使用各自的缺省或错误约定,尚不能作为跨消费者共享的只读 observation contract。尤其需要避免把“调用方未请求”“probe 无法完成”和“权威来源确认不存在”合并。
实现边界
anolisa-core新增ComponentSnapshot核心类型。state、native package和pending journal三类事实。not-requestedunavailable,携带 provenance 和原因absent,携带 provenancepresent,携带 provenance 和 typed value必须保持
status、doctor、update、repair或 lifecycle handler。Facts、RecordFacts、NativeProbe行为。验收标准