diff --git a/codex-rs/core/src/compact.rs b/codex-rs/core/src/compact.rs index ba50727942..bc7d2fc7e5 100644 --- a/codex-rs/core/src/compact.rs +++ b/codex-rs/core/src/compact.rs @@ -1660,6 +1660,22 @@ keep me updated }, ]; assert_eq!(refreshed, expected); + + let refreshed_value = + serde_json::to_value(&refreshed).expect("serialize refreshed history"); + let Value::Array(refreshed_items) = refreshed_value else { + panic!("expected refreshed history to serialize as array"); + }; + + assert_snapshot!( + "process_compacted_history_reinject_above_last_summary_shapes", + context_snapshot::format_labeled_items_snapshot( + "When compaction output has multiple summary-only user messages and no real user message, canonical context is reinserted above the last summary.", + &[("Refreshed History Layout", refreshed_items.as_slice())], + &ContextSnapshotOptions::default() + .render_mode(ContextSnapshotRenderMode::KindWithTextPrefix { max_chars: 64 }), + ) + ); } #[test] diff --git a/codex-rs/core/src/snapshots/codex_core__compact__tests__process_compacted_history_reinject_above_last_summary_shapes.snap b/codex-rs/core/src/snapshots/codex_core__compact__tests__process_compacted_history_reinject_above_last_summary_shapes.snap new file mode 100644 index 0000000000..906f79b55f --- /dev/null +++ b/codex-rs/core/src/snapshots/codex_core__compact__tests__process_compacted_history_reinject_above_last_summary_shapes.snap @@ -0,0 +1,10 @@ +--- +source: core/src/compact.rs +expression: "context_snapshot::format_labeled_items_snapshot(\"When compaction output has multiple summary-only user messages and no real user message, canonical context is reinserted above the last summary.\",\n&[(\"Refreshed History Layout\", refreshed_items.as_slice())],\n&ContextSnapshotOptions::default().render_mode(ContextSnapshotRenderMode::KindWithTextPrefix\n{ max_chars: 64 }),)" +--- +Scenario: When compaction output has multiple summary-only user messages and no real user message, canonical context is reinserted above the last summary. + +## Refreshed History Layout +00:message/user:\nolder summary +01:message/developer:fresh permissions +02:message/user:\nlatest summary