id: task-108 title: 'Fix bug: Acceptance criteria removed when updating description' status: Done assignee: [] created_date: '2025-07-03' updated_date: '2025-07-04' labels: [] dependencies: []
Description
When using backlog task edit commands to update specific sections (description, acceptance criteria, implementation plan, implementation notes), other sections are being removed or affected. Each section should be updated independently without affecting other sections of the task file.
Acceptance Criteria
- [x] Updating task description preserves all other sections
- [x] Updating acceptance criteria preserves all other sections
- [x] Updating implementation plan preserves all other sections
- [x] Updating implementation notes preserves all other sections
- [x] Task edit commands only modify the specified section
- [x] Tests verify all sections are preserved during individual updates
- [x] Bug is reproducible and then fixed
Implementation Notes
Root cause identified:
The bug was in the CLI task edit implementation where task.description = String(options.description) completely overwrote the entire task description (which contains all markdown sections) instead of updating only the Description section.
Approach taken:
- Created a new
updateTaskDescriptionfunction inmarkdown/serializer.tsthat follows the same pattern as the existingupdateTaskAcceptanceCriteria,updateTaskImplementationPlan, andupdateTaskImplementationNotesfunctions - Modified the CLI task edit command to use this new function when updating descriptions
- The function properly preserves all other sections while updating only the Description section
Features implemented:
- New
updateTaskDescriptionfunction that updates only the Description section of a task's markdown content - Proper section preservation for all task edit operations (description, acceptance criteria, implementation plan, implementation notes)
- Comprehensive test coverage to prevent regression
Technical decisions and trade-offs:
- Section-specific updates: Used regex-based section parsing to identify and replace only the specific section being updated
- Consistency: Followed the same pattern as existing section update functions for maintainability
- Backward compatibility: The fix doesn't change the CLI interface, only the internal implementation
- Test coverage: Added both unit tests and integration tests to ensure the fix works correctly
Modified files:
src/markdown/serializer.ts: AddedupdateTaskDescriptionfunctionsrc/cli.ts: Updated task edit command to use the new function for description updatessrc/test/task-edit-preservation.test.ts: Added comprehensive integration tests for section preservationsrc/test/update-task-description.test.ts: Added unit tests for the new function