5a1a994cc2
compose checkpoint 把图执行态(含 GenLocalState 的 board)序列化进 store,但 Eino 序列化器只认导出字段,而 board 字段全未导出 → 直接持久化会落成空、resume 丢全部状态。Eino 对同时实现 json.Marshaler+Unmarshaler 的类型改走自定义 JSON (internal/serialization checkMarshaler),故给 *board 实现一对 JSON 方法映射到 导出 DTO,无需把 board 字段全导出(牵连几十处调用点)。 - board_serde.go: *board 的 MarshalJSON/UnmarshalJSON ↔ boardSnapshot;丢弃 fatalErr(transient error,中断点必为 nil);schema.RegisterName[*board] 注册 类型名供 checkpoint 的 State(any) 还原。 - 测试: 快照往返无损 + 编译期断言实现 json.Marshaler/Unmarshaler + fatalErr 不被持久化。 零行为变更(纯新增)。go test ./... 全绿。 下一步 2b:审批节点 compose.Interrupt + 编译挂 checkpoint store + orchestrator 识别 InterruptInfo 置 waiting 并释放 goroutine。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>