story-kit: merge 311_story_server_enforced_retry_limits_for_failed_merge_and_empty_diff_stories

This commit is contained in:
Dave
2026-03-19 16:34:11 +00:00
parent 662e00f94a
commit 3b887e3085
9 changed files with 346 additions and 65 deletions

View File

@@ -26,6 +26,10 @@ pub struct ProjectConfig {
/// coder agents at once. Stories wait in `2_current/` until a slot frees up.
#[serde(default)]
pub max_coders: Option<usize>,
/// Maximum number of retries per story per pipeline stage before marking as blocked.
/// Default: 2. Set to 0 to disable retry limits.
#[serde(default = "default_max_retries")]
pub max_retries: u32,
}
/// Configuration for the filesystem watcher's sweep behaviour.
@@ -65,6 +69,10 @@ fn default_qa() -> String {
"server".to_string()
}
fn default_max_retries() -> u32 {
2
}
#[derive(Debug, Clone, Deserialize)]
#[allow(dead_code)]
pub struct ComponentConfig {
@@ -149,6 +157,8 @@ struct LegacyProjectConfig {
default_coder_model: Option<String>,
#[serde(default)]
max_coders: Option<usize>,
#[serde(default = "default_max_retries")]
max_retries: u32,
}
impl Default for ProjectConfig {
@@ -173,6 +183,7 @@ impl Default for ProjectConfig {
default_qa: default_qa(),
default_coder_model: None,
max_coders: None,
max_retries: default_max_retries(),
}
}
}
@@ -217,6 +228,7 @@ impl ProjectConfig {
default_qa: legacy.default_qa,
default_coder_model: legacy.default_coder_model,
max_coders: legacy.max_coders,
max_retries: legacy.max_retries,
};
validate_agents(&config.agent)?;
return Ok(config);
@@ -240,6 +252,7 @@ impl ProjectConfig {
default_qa: legacy.default_qa,
default_coder_model: legacy.default_coder_model,
max_coders: legacy.max_coders,
max_retries: legacy.max_retries,
};
validate_agents(&config.agent)?;
Ok(config)
@@ -251,6 +264,7 @@ impl ProjectConfig {
default_qa: legacy.default_qa,
default_coder_model: legacy.default_coder_model,
max_coders: legacy.max_coders,
max_retries: legacy.max_retries,
})
}
}