Goal
Extend task metadata with an optional due date and provide a focused way to identify overdue tasks while preserving existing priority, lifecycle, persistence, and CLI behavior.
Scope
- Add an optional ISO-8601 date field (
YYYY-MM-DD) to tasks.
- Persist due dates while keeping legacy task records readable.
- Validate due-date input consistently.
- Allow add/update commands to set or clear a due date.
- Add an overdue filter in the domain/service layer based on a supplied reference date so the core logic remains deterministic.
- Expose due dates and overdue filtering through the CLI.
- Add automated coverage for default/legacy dates, validation, serialization, updates, and overdue filtering.
Acceptance Criteria
- Existing task files remain readable and legacy records receive no due date.
- Valid due dates survive save/load.
- Invalid due dates are rejected without corrupting task state.
- Add/update can set and clear due dates.
- Overdue filtering is deterministic for a supplied reference date.
- Existing priority and lifecycle behavior remains intact.
- Tests cover the new metadata and filtering paths.
- No GitHub Actions are introduced.
Delivery
One focused implementation PR targeting main, exactly one implementation commit. Leave the PR open for CodeRabbit review; do not merge it automatically.
Goal
Extend task metadata with an optional due date and provide a focused way to identify overdue tasks while preserving existing priority, lifecycle, persistence, and CLI behavior.
Scope
YYYY-MM-DD) to tasks.Acceptance Criteria
Delivery
One focused implementation PR targeting
main, exactly one implementation commit. Leave the PR open for CodeRabbit review; do not merge it automatically.