deepstrike_sdk/runtime/
canonical_kernel.rs1pub use deepstrike_core::runtime::kernel::wire::{
9 CanonicalKernel, CheckpointAdvice, CheckpointBoundary, ConfigDefaults, Digest, DurableHead,
10 EffectKind, EffectsDisposition, InputId, KernelEffect, KernelFault, KernelFaultCode,
11 KernelInput, KernelPreparation, KernelRecord, KernelTerminal, OperationId, OperationLifecycle,
12 PlannedStep, PrepareToken, RestoreCost, StepDisposition, TailUsage, TerminalDisposition,
13 WireEnvelope, WireU64, canonical_digest,
14};
15
16pub type CanonicalPreparation = KernelPreparation<KernelRecord, PlannedStep>;
17pub type CanonicalCommit = deepstrike_core::runtime::kernel::wire::CommittedTransition<PlannedStep>;
18pub type CanonicalCheckpoint = deepstrike_core::runtime::kernel::wire::KernelCheckpoint;
19pub type CanonicalCheckpointCandidate = deepstrike_core::runtime::kernel::wire::CheckpointCandidate;
20
21#[cfg(test)]
22mod tests {
23 use serde_json::Value;
24
25 use super::{CanonicalKernel, CanonicalPreparation, WireEnvelope};
26
27 #[test]
28 fn typed_rust_api_reads_the_shared_canonical_golden() {
29 let fixture: Value = serde_json::from_str(include_str!(
30 "../../../tests/fixtures/kernel-wire/golden_lifecycle_agent_root.json"
31 ))
32 .expect("canonical fixture");
33 let envelope: WireEnvelope =
34 serde_json::from_value(fixture["links"][0]["envelope"].clone())
35 .expect("typed envelope");
36 let mut kernel = CanonicalKernel::default();
37
38 let CanonicalPreparation::Prepared(prepared) = kernel.prepare(&envelope) else {
39 panic!("golden configure must prepare");
40 };
41 assert_eq!(
42 prepared.record.record_digest().as_str(),
43 fixture["genesis_digest"].as_str().unwrap()
44 );
45 assert_eq!(
46 std::str::from_utf8(prepared.record.record_bytes().as_slice()).unwrap(),
47 serde_json::to_string(&fixture["links"][0]["record"]).unwrap()
48 );
49 }
50}