diff --git a/server/src/agents/lifecycle.rs b/server/src/agents/lifecycle.rs index 3c1af782..3fe7b4a0 100644 --- a/server/src/agents/lifecycle.rs +++ b/server/src/agents/lifecycle.rs @@ -133,6 +133,7 @@ pub fn move_story_to_done(story_id: &str) -> Result<(), String> { Stage::Merge { .. } => PipelineEvent::MergeSucceeded { merge_commit: GitSha("accepted".to_string()), }, + Stage::MergeFailure { .. } => PipelineEvent::Accepted, Stage::Coding | Stage::Qa | Stage::Backlog => PipelineEvent::Close, _ => { return Err(format!( diff --git a/server/src/http/mcp/story_tools/story/delete.rs b/server/src/http/mcp/story_tools/story/delete.rs index edfc0200..ad0b4cb1 100644 --- a/server/src/http/mcp/story_tools/story/delete.rs +++ b/server/src/http/mcp/story_tools/story/delete.rs @@ -2,6 +2,7 @@ use crate::agents::{feature_branch_has_unmerged_changes, move_story_to_done}; use crate::http::context::AppContext; +use crate::pipeline_state::{Stage, read_typed}; use serde_json::Value; pub(crate) fn tool_accept_story(args: &Value, ctx: &AppContext) -> Result { @@ -12,9 +13,18 @@ pub(crate) fn tool_accept_story(args: &Value, ctx: &AppContext) -> Result Result Ok(Done { + merged_at: now, + merge_commit: GitSha("manual".to_string()), + }), + // ── Block: any active → Blocked ────────────────────────────── (Backlog, Block { reason }) | (Coding, Block { reason })