diff --git a/.story_kit/work/1_upcoming/238_story_mergemaster_handles_merge_conflicts_by_resolving_them_automatically.md b/.story_kit/work/1_upcoming/238_story_mergemaster_handles_merge_conflicts_by_resolving_them_automatically.md index 71913ed..0ae6935 100644 --- a/.story_kit/work/1_upcoming/238_story_mergemaster_handles_merge_conflicts_by_resolving_them_automatically.md +++ b/.story_kit/work/1_upcoming/238_story_mergemaster_handles_merge_conflicts_by_resolving_them_automatically.md @@ -15,6 +15,27 @@ As a mergemaster agent, I want to detect and resolve merge conflicts when squash - [ ] If quality gates fail after conflict resolution, the merge is reported as failed with details about what went wrong - [ ] The mergemaster handles the common case of multiple feature branches adding to the same file (e.g. both adding tests or UI sections to the same component) +## Context + +Three stories got stuck in the merge queue (2026-02-28) because the mergemaster couldn't handle conflicts: + +- Stories 235, 236, 237 all modified the same files (`WorkItemDetailPanel.tsx` and its test file) +- 237 merged cleanly. 235 failed silently (empty output from `merge_agent_work`). 236 had conflicts in both component and test files. + +**Conflict patterns observed:** +1. **add/add in test file**: Multiple branches created the same test file from scratch with different mock setups. Resolution: combine mock setups and keep all test suites. +2. **content conflict in component**: Both branches added different state, imports, hooks, and UI sections. Resolution: keep all additions from both sides. +3. **Placeholder list divergence**: Both branches removed different items from a shared placeholder list. Resolution: remove both since both features are now real. + +**Manual resolution process:** +1. `git merge --squash --no-commit feature/story-{id}` +2. Read conflicted files, understand both sides +3. Write resolved files combining both feature additions +4. Run `tsc --noEmit` and `pnpm test` to verify +5. Stage, commit, move story to done + +Most conflicts in this codebase are additive — two branches adding different features to the same files, not contradictory changes. + ## Out of Scope - TBD