5.2 KiB
V1 Block 07 — Child Tasks
Status: Planned
Purpose: Support breaking a large task into smaller owned child tasks without adding dependency complexity.
Chunk 7.1 — Parent/child model rules
Recommended Codex level: medium
Status: Completed
Tasks:
Implement parent/child ownership fields and helpers:
- parent task id on child tasks
- list/query children by parent
- parent can be incomplete while children are planned/completed
- parent/child helpers must remain domain-only and UI-independent
Rules:
- This is not full task dependency support.
- Do not add arbitrary DAG/dependency logic.
- Children are owned by parent only.
- Child ownership does not block scheduling unless a later planned feature explicitly adds dependency behavior.
Acceptance criteria:
- Test: child references parent.
- Test: parent can query/aggregate children through helper.
- Test: child ownership does not create dependency/blocking behavior.
Execution notes:
- Added
ChildTaskViewas a domain-only read projection over task lists. - Added
ChildTaskSummaryfor direct child status counts. - Exported child-task helpers through
lib/scheduler_core.dart. - Parent/child ownership uses existing
Task.parentTaskId. - Helpers query direct children and parent relationships without adding dependency/DAG behavior.
- Parent auto-completion is explicitly not implemented in this chunk.
- Added
test/child_tasks_test.dartfor ownership, aggregation, incomplete parent behavior, and scheduling non-blocking behavior. dart format lib test,dart analyze,dart test, andgit diff --checkpassed.
Chunk 7.2 — Child entry defaults
Recommended Codex level: medium
Tasks:
Support row-style child entry data:
- child title
- priority up/down/dropdown value
- reward up/down/dropdown value
- time required
- optional project override
Rules:
- If no priority is set, children are inserted in the order added.
- Children can have their own reward, priority, difficulty, and time.
- Children inherit project from parent unless overridden.
- Reward can remain
not set; do not treat missing reward as very low reward. - Preserve original entry order for children that have no explicit priority.
Acceptance criteria:
- Tests cover child creation with explicit fields.
- Tests cover no priority preserving insertion order.
- Tests cover inherited project and overridden project.
- Tests cover reward
not setremaining distinct from very low reward.
BREAKPOINT: Stop here. Confirm extra high mode before implementing the child-task edge-case regression suite.
Chunk 7.3 — Child-task edge-case regression test suite
Recommended Codex level: extra high
Tasks:
Before implementing parent auto-completion, add or expand tests for edge cases that could make child tasks behave like unwanted dependency logic.
Cover these cases:
- parent with zero children does not auto-complete by accident
- parent with planned children remains incomplete
- child completion updates child state without forcing parent completion until all children are complete
- parent completion can force-complete remaining children only through the explicit parent-complete action
- child tasks keep their parent id when scheduled, pushed, moved to backlog, or marked complete
- children without priority preserve row insertion order
- children with priority can be sorted by priority without losing stable insertion order within same-priority groups
- parent project inheritance works
- child project override works
- child task reward
not setremains distinct from very low reward - no arbitrary dependency/DAG fields or scheduling-blocking behavior are introduced
Rules:
- Tests should name the business rule being protected.
- Prefer small fixtures over large scenario setup.
- Do not mark this chunk complete unless
dart analyzeanddart testpass. - Do not implement new user-facing behavior in this chunk unless needed to make the edge-case tests compile against planned domain APIs.
Acceptance criteria:
- A dedicated child-task test group exists.
- Tests cover ownership, ordering, inheritance, and non-dependency behavior.
- Existing scheduling and backlog tests still pass.
BREAKPOINT: Stop here. Confirm high mode before implementing auto-completion propagation.
Chunk 7.4 — Parent auto-completion
Recommended Codex level: high
Tasks:
Implement completion rules:
- Parent auto-completes when all children complete.
- Marking parent complete force-completes remaining children.
- Completing from any child can provide a domain-level option/result to mark entire parent complete.
- Parent/child completion should update relevant task statistics without duplicating events.
Rules:
- Do not silently complete sibling child tasks when one child completes.
- Do not complete parent until every child is complete unless the explicit parent-complete action is selected.
- Do not add generalized dependency resolution.
Acceptance criteria:
- Test: all children completed completes parent.
- Test: parent complete force-completes children.
- Test: partial child completion does not complete parent.
- Test: completing one child does not complete siblings.
- Test: explicit parent-complete action records the correct completion state for parent and remaining children.
Commit suggestion:
feat(tasks): support parent-owned child tasks