huskies: merge 1052

This commit is contained in:
dave
2026-05-14 18:04:35 +00:00
parent 977b954e98
commit b9709a6466
6 changed files with 73 additions and 5 deletions
+11 -2
View File
@@ -116,7 +116,9 @@ pub fn load_pipeline_state(ctx: &AppContext) -> Result<PipelineState, String> {
// Story 945: review_hold is `Stage::ReviewHold`; qa_mode and epic_id
// come from typed CRDT registers. merge_failure detail lives on the
// MergeJob CRDT entry (same as status_tools.rs).
// MergeJob CRDT entry, but only surfaces for items currently in a
// failure stage — Done/terminal items must never inherit stale errors
// from a previously-failed merge attempt (story 1052).
let view = crate::crdt_state::read_item(sid);
let review_hold = if matches!(item.stage, Stage::ReviewHold { .. }) {
Some(true)
@@ -125,7 +127,14 @@ pub fn load_pipeline_state(ctx: &AppContext) -> Result<PipelineState, String> {
};
let qa = view.as_ref().and_then(|v| v.qa_mode());
let epic_id = view.as_ref().and_then(|v| v.epic());
let merge_failure = crate::crdt_state::read_merge_job(sid).and_then(|j| j.error);
let merge_failure = if matches!(
item.stage,
Stage::MergeFailure { .. } | Stage::MergeFailureFinal { .. }
) {
crate::crdt_state::read_merge_job(sid).and_then(|j| j.error)
} else {
None
};
let story = UpcomingStory {
story_id: sid.clone(),