huskies: merge 820

This commit is contained in:
dave
2026-04-29 17:15:01 +00:00
parent c84786364a
commit 8a42839b37
15 changed files with 180 additions and 46 deletions
+9
View File
@@ -57,6 +57,8 @@ pub struct PipelineState {
pub qa: Vec<UpcomingStory>,
pub merge: Vec<UpcomingStory>,
pub done: Vec<UpcomingStory>,
/// Story IDs that currently have a deterministic merge in progress.
pub deterministic_merges_in_flight: Vec<String>,
}
/// Load the full pipeline state (all 5 active stages).
@@ -71,12 +73,19 @@ pub fn load_pipeline_state(ctx: &AppContext) -> Result<PipelineState, String> {
let typed_items = crate::pipeline_state::read_all_typed();
let deterministic_merges_in_flight = ctx
.services
.agents
.list_running_merges()
.unwrap_or_default();
let mut state = PipelineState {
backlog: Vec::new(),
current: Vec::new(),
qa: Vec::new(),
merge: Vec::new(),
done: Vec::new(),
deterministic_merges_in_flight,
};
for item in typed_items {
+4
View File
@@ -53,6 +53,7 @@ pub fn pipeline_state_to_response(s: PipelineState) -> WsResponse {
qa: s.qa,
merge: s.merge,
done: s.done,
deterministic_merges_in_flight: s.deterministic_merges_in_flight,
}
}
@@ -238,6 +239,7 @@ mod tests {
blocked: None,
depends_on: None,
}],
deterministic_merges_in_flight: vec![],
};
let resp = pipeline_state_to_response(state);
let json = serde_json::to_value(&resp).unwrap();
@@ -260,6 +262,7 @@ mod tests {
qa: vec![],
merge: vec![],
done: vec![],
deterministic_merges_in_flight: vec![],
};
let resp = pipeline_state_to_response(state);
let json = serde_json::to_value(&resp).unwrap();
@@ -294,6 +297,7 @@ mod tests {
qa: vec![],
merge: vec![],
done: vec![],
deterministic_merges_in_flight: vec![],
};
let resp: WsResponse = state.into();
let json = serde_json::to_value(&resp).unwrap();
@@ -54,6 +54,8 @@ pub enum WsResponse {
qa: Vec<UpcomingStory>,
merge: Vec<UpcomingStory>,
done: Vec<UpcomingStory>,
/// Story IDs that currently have a deterministic merge in progress.
deterministic_merges_in_flight: Vec<String>,
},
/// `.huskies/project.toml` was modified; the frontend should re-fetch the
/// agent roster. Does NOT trigger a pipeline state refresh.
@@ -215,6 +217,7 @@ mod tests {
qa: vec![],
merge: vec![],
done: vec![],
deterministic_merges_in_flight: vec![],
};
let json = serde_json::to_value(&resp).unwrap();
assert_eq!(json["type"], "pipeline_state");