Repository navigation
Fix #68: Add feature_split tool and forbid passing unverified features - #263
zwanski-start wants to merge 1 commit into
Conversation
…ied features Agents were skipping features that felt too large, or marking features passing when the browser could not be opened. Coding agents now get a feature_split MCP tool that breaks an oversized feature into 2-10 sub-features; the original then depends on them and is re-verified end-to-end once they pass. The coding/testing prompts and assignment headers now forbid partial or unverified passes and say what to do when browser verification cannot run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🔍 QA report: ✅ PassedTester: Ken (cubefarm agent, in a fresh session) · Round: 1 · Author: Barbara The new feature_split MCP tool works as described. In one transaction it creates 2–10 sub-features and makes the original depend on all of them, so the original only comes back once they all pass; invalid input is rejected with nothing written. The coding and testing prompts and the assignment headers now forbid skipping or partially passing large features, and forbid marking a feature passing when the browser or verification could not run; YOLO mode correctly drops only the browser rule. ruff is clean, the 14 new tests pass, and the pytest failures and mypy errors are identical to master (none introduced). With no API key, the server boots and the Kanban and Graph views show the split dependency structure with no console errors.
🧪 Commands run
No browser screenshots were taken in this round. Posted by cubefarm · merges automatically once GitHub's checks pass |
…ied features Adaptations: split-depth limit (MAX_SPLIT_DEPTH = 2): each sub-feature's description ends with 'Split from feature #N, split depth d.', which feature_split reads back to refuse a deeper split (no schema change). Ported AutoForgeAI#318's test that the parent becomes ready only after its sub-features pass. The coding prompt's tool list keeps my-features' quality gate tools (items 8-9); feature_split is item 10. Integrates AutoForgeAI#263 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AeH26pcsqoxPb3CDs8g1VN
Closes #68
Problem
Coding agents sometimes (a) skip, or partly implement and then pass, a feature that is too large, and (b) mark a feature passing when the browser could not be opened, assuming it works.
Changes
feature_splitMCP tool (mcp_server/feature_mcp.py), available to coding agents (client.py). It breaks a non-passing feature into 2–10 sub-features (each with category/name/description/steps and optionaldepends_on_indiceson earlier siblings) and requires areason. In one atomic transaction it:in_progress.The orchestrator then schedules the sub-features (no orchestrator changes needed), and the original only comes back once they all pass, so the integrated result is verified end-to-end. This is the "break it down further" path from the issue, built on the existing dependency system rather than spawning a separate agent.
coding_prompt.template.md):feature_splitadded to the allowed tool list.prompts.py):feature_skiponly for external blockers; usefeature_splitfor oversized features.feature_mark_passing/feature_skipdocstrings (which the model sees) say the same. README/CLAUDE.md tool lists updated.Verification
test_feature_split.py(14 tests): split result and dependency wiring, rejection of passing/missing features and invalid input (no partial writes), coding-agent tool list, standard vs YOLO prompt content, assignment headers.ruff check .,python test_security.py,pytest test_client.py test_dependency_resolver.py test_rate_limit_utils.pyall pass. mypy is clean for changed files apart from aclient.py:460unused-ignore warning that is already on master.Assumptions / notes
mcp2.x, wheremcp.server.fastmcpno longer exists, and that breaksfeature_mcp.py. I tested withmcp<2.requirements.txtdoesn't pin it, which probably deserves its own issue.🤖 Generated with Claude Code