huskies: merge 945
This commit is contained in:
@@ -127,20 +127,20 @@ pub(crate) fn tool_show_epic(args: &Value, _ctx: &AppContext) -> Result<String,
|
||||
continue;
|
||||
};
|
||||
if member_view.epic() == Some(epic_id) {
|
||||
// Frozen is now an orthogonal CRDT flag (story 934, stage 4).
|
||||
let stage_name = if member_view.frozen() {
|
||||
"frozen"
|
||||
} else {
|
||||
match &item.stage {
|
||||
Stage::Upcoming | Stage::Backlog => "backlog",
|
||||
Stage::Coding => "current",
|
||||
Stage::Qa => "qa",
|
||||
Stage::Merge { .. } => "merge",
|
||||
Stage::Done { .. } => "done",
|
||||
Stage::Archived { .. } => "archived",
|
||||
Stage::MergeFailure { .. } => "merge_failure",
|
||||
Stage::Blocked { .. } => "blocked",
|
||||
}
|
||||
// Story 945: Frozen / ReviewHold / MergeFailureFinal are first-class
|
||||
// Stage variants — no more orthogonal boolean flags.
|
||||
let stage_name = match &item.stage {
|
||||
Stage::Upcoming | Stage::Backlog => "backlog",
|
||||
Stage::Coding => "current",
|
||||
Stage::Qa => "qa",
|
||||
Stage::Merge { .. } => "merge",
|
||||
Stage::Done { .. } => "done",
|
||||
Stage::Archived { .. } => "archived",
|
||||
Stage::MergeFailure { .. } => "merge_failure",
|
||||
Stage::MergeFailureFinal { .. } => "merge_failure_final",
|
||||
Stage::Blocked { .. } => "blocked",
|
||||
Stage::Frozen { .. } => "frozen",
|
||||
Stage::ReviewHold { .. } => "review_hold",
|
||||
};
|
||||
if matches!(item.stage, Stage::Done { .. }) {
|
||||
done += 1;
|
||||
|
||||
@@ -91,12 +91,30 @@ pub(crate) fn tool_update_story(args: &Value, ctx: &AppContext) -> Result<String
|
||||
}
|
||||
}
|
||||
"review_hold" => {
|
||||
if let Some(b) = value.as_bool() {
|
||||
crate::crdt_state::set_review_hold(story_id, b);
|
||||
} else if value.as_str() == Some("true") {
|
||||
crate::crdt_state::set_review_hold(story_id, true);
|
||||
} else if value.as_str() == Some("false") {
|
||||
crate::crdt_state::set_review_hold(story_id, false);
|
||||
let want_hold = match value {
|
||||
Value::Bool(b) => Some(*b),
|
||||
Value::String(s) if s == "true" => Some(true),
|
||||
Value::String(s) if s == "false" => Some(false),
|
||||
_ => None,
|
||||
};
|
||||
match want_hold {
|
||||
Some(true) => {
|
||||
crate::pipeline_state::apply_transition_str(
|
||||
story_id,
|
||||
crate::pipeline_state::PipelineEvent::ReviewHold {
|
||||
reason: "Set via update_story".to_string(),
|
||||
},
|
||||
None,
|
||||
)?;
|
||||
}
|
||||
Some(false) => {
|
||||
crate::pipeline_state::apply_transition_str(
|
||||
story_id,
|
||||
crate::pipeline_state::PipelineEvent::ReviewHoldCleared,
|
||||
None,
|
||||
)?;
|
||||
}
|
||||
None => {}
|
||||
}
|
||||
}
|
||||
"frozen" => {
|
||||
@@ -126,8 +144,12 @@ pub(crate) fn tool_update_story(args: &Value, ctx: &AppContext) -> Result<String
|
||||
}
|
||||
}
|
||||
"mergemaster_attempted" => {
|
||||
if let Some(b) = value.as_bool() {
|
||||
crate::crdt_state::set_mergemaster_attempted(story_id, b);
|
||||
if let Some(true) = value.as_bool() {
|
||||
crate::pipeline_state::apply_transition_str(
|
||||
story_id,
|
||||
crate::pipeline_state::PipelineEvent::MergemasterAttempted,
|
||||
None,
|
||||
)?;
|
||||
}
|
||||
}
|
||||
other => {
|
||||
|
||||
Reference in New Issue
Block a user