Expand description
Fact log 读写(JSONL 格式)
§格式
每行一个 Fact 的 JSON 序列化,使用 evorule_reactor::wal::fact_to_json/fact_from_json
进行转换。格式与 tier1 reactor WAL 文件、tier2 auditor stable JSON 一致:
{"type":"Command","id":1,"instruction":{"type":"noop"}}
{"type":"StateTransition","id":2,"cause":1,"new_payload":{},"new_queue":[]}
{"type":"Stable","id":3,"version":1}§设计决策
不使用 FactsLog::with_wal(那是为长驻反应器设计的 Arc<RwLock> + WAL writer),
CLI 是 one-shot 执行,用 Vec<Fact> + 顺序写更简单。但序列化格式必须用 tier1 wal,
保证与 tier1 reactor WAL 文件格式互换,与 tier2 auditor 哈希链互通。
§不变量
write_facts必须用evorule_reactor::wal::fact_to_json,不能手写序列化read_facts必须用evorule_reactor::wal::fact_from_json,不能手写反序列化- 这样 fact.log 可被 tier1 reactor
read_wal直接读取,反之亦然
Functions§
- read_
facts - 从 JSONL 文件读取 Fact 列表
- write_
facts - 将 Fact 列表写为 JSONL(每行一个 Fact)