From 9fe9a101d80f49dd109c5bbaf06bfa60edb89aae Mon Sep 17 00:00:00 2001 From: Lior Cohen Date: Fri, 10 Apr 2026 16:31:25 +0300 Subject: [PATCH] fix: named serde default for supersedes_demotion (Greptile P1) #[serde(default)] on supersedes_demotion resolved to f32::default() = 0.0 instead of the intended 0.40. Users with partial config.toml files got no demotion applied to superseded memories. Adds default_supersedes_demotion() helper following the existing pattern (default_recency_weight, default_child_rescue_only, etc.) and wires it via #[serde(default = "default_supersedes_demotion")]. Co-Authored-By: Claude Opus 4.6 (1M context) --- crates/shrimpk-core/src/config.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/shrimpk-core/src/config.rs b/crates/shrimpk-core/src/config.rs index 55db32b..5192277 100644 --- a/crates/shrimpk-core/src/config.rs +++ b/crates/shrimpk-core/src/config.rs @@ -241,7 +241,7 @@ pub struct EchoConfig { pub child_memory_penalty: f32, /// Supersession demotion factor (multiplicative). 0.40 = retain 60% of score. /// Applied as `score *= (1 - factor)^count` for each supersession edge. - #[serde(default)] + #[serde(default = "default_supersedes_demotion")] pub supersedes_demotion: f32, /// Custom system prompt for the consolidator LLM fact extraction. /// Use `{max_facts}` placeholder for the max facts count. @@ -431,6 +431,10 @@ fn default_recency_weight() -> f32 { 0.05 } +fn default_supersedes_demotion() -> f32 { + 0.40 +} + fn default_max_disk_bytes() -> u64 { DEFAULT_MAX_DISK_BYTES }