.tasks/ directory contains a structured task tracking system that manages the entire development lifecycle of Spacedrive. Tasks are defined as markdown files with YAML frontmatter and validated against a JSON schema.
Overview
Task tracking provides:- Hierarchical organization with epics and subtasks
- Status tracking across the development lifecycle
- Metadata like priority, assignee, and whitepaper references
- Validation via a CLI tool to ensure consistency
Directory Structure
{PREFIX}-{NUMBER}-{slug}.md and are organized into subdirectories by domain (core, interface, mobile).
Task Schema
Every task file contains YAML frontmatter that must conform to the schema defined intask.schema.json.
Required Fields
Optional Fields
Task Statuses
The lifecycle of a task follows three states:To Do
Task has not been started. No implementation exists.In Progress
Task is actively being worked on. Criteria for this status:- Some code has been written
- Feature is partially implemented
- Still has rough edges or incomplete functionality
Done
Task is complete. All acceptance criteria must be met:- All listed acceptance criteria are implemented
- Code is merged to main branch
- Tests pass (if applicable)
- Feature is production-ready
Never mark a task as
Done if implementation is partial, tests are failing, or the feature doesn’t work as specified.Task Prefixes
Tasks are organized by domain using prefixes. Tasks are further organized into subdirectories:Core Tasks (.tasks/core/)
Backend and Rust-related tasks:
Interface Tasks (.tasks/interface/)
Frontend and React-related tasks:
Mobile Tasks (.tasks/mobile/)
Mobile-specific tasks (future):
Task Validator CLI
Thetask-validator binary provides utilities for managing and validating tasks.
List Tasks
View all tasks sorted by status:Filter Tasks
Filter by specific criteria:Validate Schema
Ensure all task files conform to the schema:- YAML frontmatter is valid
- All required fields are present
- Field values match allowed enums
- ID pattern is correct
- Parent references exist
Workflow
Reviewing Task Status
When code has been merged, tasks should be reviewed and updated:-
Check recent commits:
-
List current task state:
-
For each potential completed feature:
- Read the task file to understand acceptance criteria
- Read all implementation files mentioned in the task
- Check
core/tests/for integration tests - Verify each acceptance criterion is met in the code
-
Update task status:
Edit the YAML frontmatter in the task file:
-
Validate changes:
Creating New Tasks
- Choose appropriate subdirectory (
core/,interface/, ormobile/) - Choose appropriate prefix based on domain
- Find next available number (e.g., if
EXPL-002exists, useEXPL-003) - Create file with pattern:
.tasks/{subdirectory}/{PREFIX}-{NUMBER}-{slug}.md - Add YAML frontmatter with all required fields
- Write task description and acceptance criteria
- Validate:
.tasks/core/LSYNC-017-realtime-sync.md):
.tasks/interface/EXPL-004-breadcrumbs.md):
Updating Task Status
When updating tasks after completing work: DO:- Read implementation files thoroughly
- Verify all acceptance criteria are met
- Check for passing integration tests
- Update
last_updatedfield - Be rigorous about what “Done” means
- Mark tasks done based on assumptions
- Skip reading the actual code
- Ignore failing tests or partial implementations
- Batch update tasks without verification
Common Patterns
Epic Tasks
Epics are high-level tasks that have subtasks:parent field:
Task Dependencies
While not enforced by schema, dependencies can be documented in task descriptions:Whitepaper References
Link tasks to design documentation:Best Practices
Task Granularity
- Epics: High-level features spanning multiple subtasks
- Tasks: Concrete features implementable in focused work
- Too granular: Don’t create tasks for every file or function
Acceptance Criteria
Write specific, testable criteria: Good:Status Accuracy
The tracker is only valuable if it reflects reality:- Review and update tasks regularly
- Don’t mark tasks done to “clean up” the list
- Keep
In Progresshonest about active work - Archive or remove truly obsolete tasks
Git Integration
While not automated, tasks can be referenced in commits:Troubleshooting
Validation Errors
Invalid YAML:---
Missing Required Field:
Duplicate IDs
Each task ID must be unique. If validation reports duplicates:Orphaned Tasks
Tasks withparent fields referencing non-existent tasks:
Examples
Complete Epic with Subtasks
Integration with Development
The task tracking system complements other development tools:- Testing: Acceptance criteria inform test cases
- CI/CD: Schema validation runs in continuous integration
- Code Review: Task IDs provide context in pull requests
- Documentation: Tasks link to whitepaper design sections
- Planning: Status overview shows project progress
