diff --git a/server/src/agents/pool.rs b/server/src/agents/pool.rs index db7ce43..b13c8cc 100644 --- a/server/src/agents/pool.rs +++ b/server/src/agents/pool.rs @@ -895,7 +895,7 @@ impl AgentPool { if item_type == "spike" { true // Spikes always need human review. } else { - // Stories/bugs: check the manual_qa front matter field (defaults to true). + // Stories/bugs: check the manual_qa front matter field (defaults to false). let qa_dir = project_root.join(".story_kit/work/3_qa"); let story_path = qa_dir.join(format!("{story_id}.md")); crate::io::story_metadata::requires_manual_qa(&story_path) diff --git a/server/src/io/story_metadata.rs b/server/src/io/story_metadata.rs index 51e7f9c..23129ae 100644 --- a/server/src/io/story_metadata.rs +++ b/server/src/io/story_metadata.rs @@ -210,15 +210,15 @@ pub fn write_rejection_notes(path: &Path, notes: &str) -> Result<(), String> { Ok(()) } -/// Check whether a story requires manual QA (defaults to true). +/// Check whether a story requires manual QA (defaults to false). pub fn requires_manual_qa(path: &Path) -> bool { let contents = match fs::read_to_string(path) { Ok(c) => c, - Err(_) => return true, + Err(_) => return false, }; match parse_front_matter(&contents) { - Ok(meta) => meta.manual_qa.unwrap_or(true), - Err(_) => true, + Ok(meta) => meta.manual_qa.unwrap_or(false), + Err(_) => false, } } @@ -412,10 +412,18 @@ workflow: tdd } #[test] - fn requires_manual_qa_defaults_true() { + fn requires_manual_qa_defaults_false() { let tmp = tempfile::tempdir().unwrap(); let path = tmp.path().join("story.md"); std::fs::write(&path, "---\nname: Test\n---\n# Story\n").unwrap(); + assert!(!requires_manual_qa(&path)); + } + + #[test] + fn requires_manual_qa_true_when_set() { + let tmp = tempfile::tempdir().unwrap(); + let path = tmp.path().join("story.md"); + std::fs::write(&path, "---\nname: Test\nmanual_qa: true\n---\n# Story\n").unwrap(); assert!(requires_manual_qa(&path)); }