Superseded on 2026-04-05 by
2026-04-03-1-execution-lanes-own-worktrees-and-mission-branches.md. The lane-only runtime no longer uses per-WP branch stacking, merge-first implement guidance, or--forceescape hatches inimplement. Dependency coupling is resolved by lane computation before execution starts.
Context and Problem Statement
ADR-4 established auto-merge for multi-parent dependencies (e.g., WP04 depends on WP01, WP02, WP03). However, real-world testing (~/tmp Feature 001) revealed a problematic scenario:
What happened:
1. WP01, WP02, WP03 all completed (in "done" lane)
2. Each modified .gitignore independently
3. Agent ran: spec-kitty implement WP04
4. Auto-merge attempted: WP01 + WP02 + WP03
5. FAILED: .gitignore add/add conflicts
6. Agent manually merged each WP to main
7. Then started WP04 from main
The pattern:
- When dependencies are in progress (doing/for_review), auto-merge makes sense (combine work-in-progress)
- When dependencies are completed (done lane), auto-merge is risky (likely conflicts on shared files)
Question: Should we detect when all multi-parent dependencies are complete and suggest merging them to main before implementing the dependent WP?
Decision Drivers
- Conflict prevention - Completed WPs likely modified shared files (.gitignore, package.json, etc.)
- User experience - Agents got stuck with auto-merge failures (trial-and-error)
- Workflow clarity - Merge-first vs auto-merge have different use cases
- Agent guidance - LLMs need explicit recommendations, not trial-and-error
- ADR-4 enhancement - Build on auto-merge, don't replace it
- Backward compatibility - Existing workflows must still work
Considered Options
- Option 1: Detect all-done and suggest merge-first (error + guidance)
- Option 2: Attempt auto-merge, fall back on conflict (reactive)
- Option 3: Always require manual merge for multi-parent (strict)
- Option 4: Status quo (auto-merge always, user handles conflicts)
Decision Outcome
Chosen option: "Option 1: Detect all-done and suggest merge-first", because:
- Proactive (detects problem before attempting)
- Educational (explains why merge-first is safer)
- Flexible (--force override for auto-merge if needed)
- Agent-friendly (clear guidance, not trial-and-error)
- Prevents common failure mode (all-done + auto-merge = conflicts)
Consequences
Positive
- Proactive guidance - Detects problem before attempting auto-merge
- Clear workflow - Agent knows to run merge command first
- Conflict control - Merge conflicts resolved in structured manner
- Prevents confusion - No trial-and-error with auto-merge failures
- Explicit choice - Agent can choose merge-first or --force auto-merge
- ADR-4 enhancement - Auto-merge still available for work-in-progress scenarios
Negative
- Extra step - Must run merge command before implement
- Two commands - merge then implement (instead of one)
- Code complexity - Adds detection logic to implement command
- User decision - Agent must choose between merge-first and --force
Neutral
- Detection trigger - Multi-parent + all done → suggest merge
- Override mechanism - --force flag bypasses suggestion
- Error message - Blocks implement, suggests merge command
- Still automatic - If not all done, auto-merge proceeds normally
Confirmation
We validated this decision by:
- ✅ 7 tests for dependency detection logic
- ✅ check_dependency_status() correctly identifies all-done scenarios
- ✅ get_merge_strategy_recommendation() provides clear guidance
- ✅ implement command blocks with actionable error message
- ✅ ~/tmp WP04 scenario would now get clear guidance upfront
Pros and Cons of the Options
Option 1: Detect all-done and suggest merge-first (CHOSEN)
Pre-flight check before auto-merge. If all dependencies done, error with suggestion.
Pros:
- Proactive detection (before failure)
- Clear guidance (suggests exact command)
- Explains trade-offs (merge-first vs auto-merge)
- Prevents common failure mode
- Agent-friendly (no trial-and-error)
Cons:
- Extra step (two commands instead of one)
- Code complexity (detection logic)
- Requires --force to override
Option 2: Attempt auto-merge, fall back on conflict (status quo)
Try auto-merge, if fails, guide user to manual merge.
Pros:
- Works for non-conflicting cases
- No pre-flight overhead
- Simpler code (no detection)
Cons:
- Reactive (fails first, then suggests)
- Trial-and-error experience
- Wastes time on predictable failures
- Confusing for agents (did it fail or not?)
Option 3: Always require manual merge
Block multi-parent entirely, force user to merge first.
Pros:
- No surprises (never attempts auto-merge)
- Explicit control over all merges
Cons:
- Loses auto-merge benefits for work-in-progress
- Too restrictive (many WPs could auto-merge cleanly)
- Breaks existing workflows
Option 4: Status quo (auto-merge always)
Always attempt auto-merge for multi-parent, let git handle it.
Pros:
- No changes needed
- Works for non-conflicting cases
Cons:
- Predictable failures (all-done + shared files = conflict)
- No guidance (agent stuck)
- Poor UX (trial-and-error)
More Information
Implementation:
src/specify_cli/core/dependency_resolver.py(new module)check_dependency_status()- Detects if all deps doneget_merge_strategy_recommendation()- Suggests workflowpredict_merge_conflicts()- Future: dry-run prediction
src/specify_cli/cli/commands/implement.py- Pre-flight check integrationsrc/specify_cli/missions/software-dev/command-templates/tasks.md- Updated guidance
Tests:
tests/integration/test_auto_merge_dependencies.py(7 tests)- All scenarios validated: all-done, partial-done, single-parent, multi-parent
Decision Logic:
IF multi-parent AND all dependencies in "done" lane:
→ Suggest: spec-kitty merge --feature <slug>
→ Block: Cannot proceed without --force
→ Explain: Merge-first avoids conflicts
ELSE IF multi-parent AND any dependency doing/for_review:
→ Proceed: Auto-merge (combine work-in-progress)
ELSE IF single-parent:
→ Suggest: Use --base flag
Related ADRs:
- ADR-4: Auto-Merge Multi-Parent Dependencies (original design)
- ADR-13: Target Branch Routing (status commits advance target, causing staleness)
Enhances: ADR-4 (historical only)
Superseded by: 2026-04-03-1-execution-lanes-own-worktrees-and-mission-branches.md
Version: 0.13.8 improvement (agent guidance enhancement)