From 21385a2b154765277f1beb2cf421672a5b8c7ec3 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 17 Jul 2026 01:35:42 +0000 Subject: [PATCH 1/2] Refactor: Remove legacy memory push/inject in build_headless_context_report Removed the legacy user memory injection logic and the associated testing for `build_headless_context_report` in `context_report.rs`. This completes the deprecation of legacy memory fallbacks as part of Moraine recall stabilization. Co-authored-by: Hmbown <101357273+Hmbown@users.noreply.github.com> --- crates/tui/src/context_report.rs | 60 -------------------------------- 1 file changed, 60 deletions(-) diff --git a/crates/tui/src/context_report.rs b/crates/tui/src/context_report.rs index 348043de0..e11147919 100644 --- a/crates/tui/src/context_report.rs +++ b/crates/tui/src/context_report.rs @@ -238,36 +238,6 @@ pub fn build_headless_context_report(config: &Config, workspace: &Path) -> Promp let selected_skills_dir = crate::tui::app::resolve_skills_dir(workspace, &global_skills_dir, config); let mut builder = base_source_entries(&model, workspace, Some(&selected_skills_dir)); - let memory_path = config.memory_path(); - let memory_enabled = config.memory_enabled(); - let moraine_fallback = config.moraine_fallback(); - - // TODO(v0.8.71): remove legacy memory push/inject when Moraine recall stable; see #3490, #3495 - if let Some(memory_block) = - crate::memory::compose_block(memory_enabled && !moraine_fallback, &memory_path) - { - builder.push(SourceEntry::text( - SourceKind::UserMemory, - "User memory", - Some(memory_path.display().to_string()), - ActivationReason::ConfigEnabled, - &memory_block, - CountingConfidence::High, - Some(6), - )); - } else { - builder.push(SourceEntry::omitted( - SourceKind::UserMemory, - "User memory", - Some(memory_path.display().to_string()), - Some(6), - if moraine_fallback && memory_enabled { - "disabled by moraine_fallback" - } else { - "disabled, missing, or empty" - }, - )); - } builder.push(SourceEntry::text( SourceKind::ModelProviderFact, @@ -973,36 +943,6 @@ mod tests { assert!(!context_report_json(&report).contains("private legacy memory")); } - #[test] - fn headless_context_report_omits_legacy_memory_when_moraine_fallback_enabled() { - let tmp = tempdir().expect("tempdir"); - let memory_path = tmp.path().join("memory.md"); - fs::write(&memory_path, "private legacy memory").expect("write memory"); - let mut config: Config = toml::from_str( - r#" - [memory] - enabled = true - moraine_fallback = true - "#, - ) - .expect("parse config"); - config.memory_path = Some(memory_path.to_string_lossy().into_owned()); - - let report = build_headless_context_report(&config, tmp.path()); - let memory_entry = report - .entries - .iter() - .find(|entry| entry.source_kind == SourceKind::UserMemory) - .expect("user memory source entry"); - - assert_eq!(memory_entry.activation_reason, ActivationReason::Omitted); - assert_eq!( - memory_entry.truncation_reason.as_deref(), - Some("disabled by moraine_fallback") - ); - assert!(!context_report_json(&report).contains("private legacy memory")); - } - #[test] fn format_summary_lists_largest_sources() { let mut builder = ReportBuilder::new(); From 3bf588826908b4d4b77a14d129274e48407c35f0 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 17 Jul 2026 01:44:57 +0000 Subject: [PATCH 2/2] Revert: Obsolete PR, reverting changes Reverting the removal of legacy memory push/inject logic in `build_headless_context_report` per PR comments, as it should be handled in one end-to-end #3495 migration. Co-authored-by: Hmbown <101357273+Hmbown@users.noreply.github.com> --- crates/tui/src/context_report.rs | 60 ++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/crates/tui/src/context_report.rs b/crates/tui/src/context_report.rs index e11147919..348043de0 100644 --- a/crates/tui/src/context_report.rs +++ b/crates/tui/src/context_report.rs @@ -238,6 +238,36 @@ pub fn build_headless_context_report(config: &Config, workspace: &Path) -> Promp let selected_skills_dir = crate::tui::app::resolve_skills_dir(workspace, &global_skills_dir, config); let mut builder = base_source_entries(&model, workspace, Some(&selected_skills_dir)); + let memory_path = config.memory_path(); + let memory_enabled = config.memory_enabled(); + let moraine_fallback = config.moraine_fallback(); + + // TODO(v0.8.71): remove legacy memory push/inject when Moraine recall stable; see #3490, #3495 + if let Some(memory_block) = + crate::memory::compose_block(memory_enabled && !moraine_fallback, &memory_path) + { + builder.push(SourceEntry::text( + SourceKind::UserMemory, + "User memory", + Some(memory_path.display().to_string()), + ActivationReason::ConfigEnabled, + &memory_block, + CountingConfidence::High, + Some(6), + )); + } else { + builder.push(SourceEntry::omitted( + SourceKind::UserMemory, + "User memory", + Some(memory_path.display().to_string()), + Some(6), + if moraine_fallback && memory_enabled { + "disabled by moraine_fallback" + } else { + "disabled, missing, or empty" + }, + )); + } builder.push(SourceEntry::text( SourceKind::ModelProviderFact, @@ -943,6 +973,36 @@ mod tests { assert!(!context_report_json(&report).contains("private legacy memory")); } + #[test] + fn headless_context_report_omits_legacy_memory_when_moraine_fallback_enabled() { + let tmp = tempdir().expect("tempdir"); + let memory_path = tmp.path().join("memory.md"); + fs::write(&memory_path, "private legacy memory").expect("write memory"); + let mut config: Config = toml::from_str( + r#" + [memory] + enabled = true + moraine_fallback = true + "#, + ) + .expect("parse config"); + config.memory_path = Some(memory_path.to_string_lossy().into_owned()); + + let report = build_headless_context_report(&config, tmp.path()); + let memory_entry = report + .entries + .iter() + .find(|entry| entry.source_kind == SourceKind::UserMemory) + .expect("user memory source entry"); + + assert_eq!(memory_entry.activation_reason, ActivationReason::Omitted); + assert_eq!( + memory_entry.truncation_reason.as_deref(), + Some("disabled by moraine_fallback") + ); + assert!(!context_report_json(&report).contains("private legacy memory")); + } + #[test] fn format_summary_lists_largest_sources() { let mut builder = ReportBuilder::new();