use agentstatedeveloper_core::{
AsgLedgerStore, Author, AuthorKind, Engine, LedgerEntry, LedgerKind, LedgerStore,
};
fn author() -> Author {
Author {
kind: AuthorKind::Agent,
id: "test-agent".to_string(),
}
}
fn entry_commit(engine: &Engine, symbol_id: &str) -> agentstategraph_core::Commit {
let wanted = format!("ledger decision for {symbol_id}");
engine
.repo
.log(&engine.ref_name, 100)
.expect("log")
.into_iter()
.find(|c| c.intent.description == wanted)
.expect("ledger entry commit present in log")
}
#[test]
fn ledger_commit_carries_body_and_confidence() {
let engine = Engine::open_in_memory().expect("open engine");
let mut entry = LedgerEntry::new(
"sym_abc123",
LedgerKind::Decision,
"use a bounded channel",
author(),
);
entry.body = Some("unbounded growth under backpressure; cap at 1024".to_string());
entry.confidence = Some(0.8);
let ledger = AsgLedgerStore::new(&engine.repo);
ledger
.append_entry(&engine.ref_name, &entry, "test-agent")
.expect("append entry");
let commit = entry_commit(&engine, "sym_abc123");
assert_eq!(
commit.reasoning.as_deref(),
Some("unbounded growth under backpressure; cap at 1024"),
"commit.reasoning should carry the entry body"
);
assert_eq!(commit.confidence, Some(0.8));
}
#[test]
fn ledger_commit_falls_back_to_summary_and_omits_absent_confidence() {
let engine = Engine::open_in_memory().expect("open engine");
let entry = LedgerEntry::new(
"sym_def456",
LedgerKind::Decision,
"adopt the retry policy",
author(),
);
let ledger = AsgLedgerStore::new(&engine.repo);
ledger
.append_entry(&engine.ref_name, &entry, "test-agent")
.expect("append entry");
let commit = entry_commit(&engine, "sym_def456");
assert_eq!(commit.reasoning.as_deref(), Some("adopt the retry policy"));
assert_eq!(commit.confidence, None);
}