bxcore: a turn's speaker, SessionUpdated's turn, the session-state messages

Co-Authored-By: ornith-1.5-35b-a3b <agent@wntrmute.dev>
This commit is contained in:
2026-09-28 10:27:28 -07:00
co-authored by ornith-1.5-35b-a3b
parent 027146f359
commit c798714af1
31 changed files with 238 additions and 13 deletions
+14
View File
@@ -92,6 +92,10 @@ fn envelopes_reject_unknown_keys_at_every_depth() {
"error_no_such_approval.json",
"turn_event_approval_pending.json",
"turn_event_tool_denied.json",
"turn_speaker.json",
"session_updated.json",
"session_state.json",
"session_state_reply.json",
] {
// Envelope, msg and body: three objects. Some bodies hold more: turn_done a usage
// object, approval_list one item, approve_result an outcome, grants_report two problems.
@@ -142,6 +146,16 @@ fn usage_log_records_reject_unknown_keys_at_every_depth() {
assert_eq!(tried, 8);
}
#[test]
fn speaker_log_records_reject_unknown_keys_at_every_depth() {
let mut tried = 0;
for (i, line) in fixture("records/session_speaker.jsonl").lines().enumerate() {
tried += check::<LogRecord>(&format!("session_speaker.jsonl:{}", i + 1), line);
}
// Five records, none holding another object.
assert_eq!(tried, 5);
}
#[test]
fn grants_reject_unknown_keys_at_every_depth() {
let grant: Grant = toml::from_str(&fixture("grant/full.toml")).unwrap();