memoryd: sync begins when Honcho is turned on, and conclusions are matched by peer
Co-Authored-By: ornith-1.5-35b-a3b <agent@wntrmute.dev>
This commit is contained in:
@@ -16,7 +16,7 @@ use std::cell::RefCell;
|
||||
use bxcore::{DataClass, LogRecord, SessionId, SessionStateReply, Timestamp};
|
||||
use logs::{assistant, write_log};
|
||||
use memoryd::honcho::decide::{NO_REPLY, NO_SPEAKER, SECRET_CLASS};
|
||||
use memoryd::honcho::ledger::{Action, Item, Ledger, Workspace};
|
||||
use memoryd::honcho::ledger::{Action, Item, Ledger, Record, Workspace};
|
||||
use memoryd::honcho::turns::{
|
||||
LEDGER, LOG_RUNBOOK, TurnSync, decidable, finished, log_path, read_log,
|
||||
};
|
||||
@@ -39,7 +39,10 @@ impl World {
|
||||
fn new(tag: &str) -> World {
|
||||
let dir = TempDir::new(tag);
|
||||
std::fs::create_dir_all(dir.path().join("memory")).unwrap();
|
||||
let ledger = Ledger::open(&dir.path().join("memory").join(LEDGER)).unwrap();
|
||||
let mut ledger = Ledger::open(&dir.path().join("memory").join(LEDGER)).unwrap();
|
||||
// Every ledger begins with when sync began (M5c-1 task 15), before these tests' turns.
|
||||
let began = Timestamp::parse("2026-09-28T09:00:00.000Z").unwrap();
|
||||
ledger.append(Record::Began { time: began }).unwrap();
|
||||
World {
|
||||
sync: TurnSync::new(ledger, "boxmaker0", &dir.path().join("sessions")),
|
||||
answer: RefCell::new(Ok(clean())),
|
||||
@@ -283,7 +286,7 @@ fn nothing_undecided_asks_nothing() {
|
||||
w.updated("mm-a", 1);
|
||||
assert_eq!(*w.asked.borrow(), vec!["mm-a"]);
|
||||
let lines = std::fs::read_to_string(w.dir.path().join("memory").join(LEDGER)).unwrap();
|
||||
assert_eq!(lines.lines().count(), 1);
|
||||
assert_eq!(lines.lines().count(), 2, "the began line and one decision");
|
||||
// A restart reads the ledger through: nothing is decided twice.
|
||||
let ledger = Ledger::open(&w.dir.path().join("memory").join(LEDGER)).unwrap();
|
||||
w.sync = TurnSync::new(ledger, "boxmaker0", &w.dir.path().join("sessions"));
|
||||
@@ -356,6 +359,8 @@ fn a_ledger_that_cannot_be_written_stops_the_walk() {
|
||||
let mut w = World::new("turns-ledger");
|
||||
w.log("mm-a", &[turns::finished(Some("kyle"))]);
|
||||
let ledger = w.dir.path().join("memory").join(LEDGER);
|
||||
let kept = std::fs::read_to_string(&ledger).unwrap();
|
||||
std::fs::remove_file(&ledger).unwrap();
|
||||
std::fs::create_dir(&ledger).unwrap();
|
||||
w.updated("mm-a", 1);
|
||||
let lines = w.lines.borrow().clone();
|
||||
@@ -368,6 +373,7 @@ fn a_ledger_that_cannot_be_written_stops_the_walk() {
|
||||
}));
|
||||
assert_eq!(w.waiting(), vec![("mm-a".to_string(), 1)]);
|
||||
std::fs::remove_dir(&ledger).unwrap();
|
||||
std::fs::write(&ledger, kept).unwrap();
|
||||
w.updated("mm-a", 1);
|
||||
assert_eq!(w.action("mm-a", 1), to(Workspace::Trusted, "kyle"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user