huskies: merge 513_story_startup_reconcile_pass_that_detects_drift_between_crdt_pipeline_items_and_filesystem_shadows

This commit is contained in:
dave
2026-04-10 10:12:54 +00:00
parent 92b212e7fd
commit 5377eeae5b
7 changed files with 626 additions and 7 deletions
+18
View File
@@ -53,6 +53,14 @@ pub struct ProjectConfig {
/// so both machines see the same pipeline state in real-time.
#[serde(default)]
pub rendezvous: Option<String>,
/// Whether to run the startup state-reconcile pass.
///
/// The pass compares pipeline state across CRDT, `pipeline_items`, and
/// filesystem shadows after CRDT replay, logging any drift it finds.
/// Set to `false` to disable during the migration window if the pass
/// produces too much noise. Default: `true`.
#[serde(default = "default_reconcile_on_startup")]
pub reconcile_on_startup: bool,
}
/// Configuration for the filesystem watcher's sweep behaviour.
@@ -100,6 +108,10 @@ fn default_rate_limit_notifications() -> bool {
true
}
fn default_reconcile_on_startup() -> bool {
true
}
#[derive(Debug, Clone, Deserialize)]
#[allow(dead_code)]
pub struct ComponentConfig {
@@ -197,6 +209,8 @@ struct LegacyProjectConfig {
rate_limit_notifications: bool,
#[serde(default)]
timezone: Option<String>,
#[serde(default = "default_reconcile_on_startup")]
reconcile_on_startup: bool,
}
impl Default for ProjectConfig {
@@ -227,6 +241,7 @@ impl Default for ProjectConfig {
rate_limit_notifications: default_rate_limit_notifications(),
timezone: None,
rendezvous: None,
reconcile_on_startup: default_reconcile_on_startup(),
}
}
}
@@ -303,6 +318,7 @@ impl ProjectConfig {
rate_limit_notifications: legacy.rate_limit_notifications,
timezone: legacy.timezone,
rendezvous: None,
reconcile_on_startup: legacy.reconcile_on_startup,
};
validate_agents(&config.agent)?;
return Ok(config);
@@ -331,6 +347,7 @@ impl ProjectConfig {
rate_limit_notifications: legacy.rate_limit_notifications,
timezone: legacy.timezone,
rendezvous: None,
reconcile_on_startup: legacy.reconcile_on_startup,
};
validate_agents(&config.agent)?;
Ok(config)
@@ -347,6 +364,7 @@ impl ProjectConfig {
rate_limit_notifications: legacy.rate_limit_notifications,
timezone: legacy.timezone,
rendezvous: None,
reconcile_on_startup: legacy.reconcile_on_startup,
})
}
}