docs/core/task-tracking.mdx
The .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.
Task tracking provides:
.tasks/
├── core/ # Backend/Rust tasks
│ ├── CORE-000-vdfs-core.md
│ ├── CORE-001-entry-centric-model.md
│ ├── JOB-000-job-system.md
│ ├── INDEX-*.md
│ ├── LSYNC-*.md
│ └── ...
├── interface/ # Frontend/React tasks
│ ├── UI-000-interface-v2.md
│ ├── EXPL-000-explorer-epic.md
│ ├── SETS-000-settings-epic.md
│ └── ...
├── mobile/ # Mobile-specific tasks
│ └── (future tasks)
├── task.schema.json # JSON schema defining task structure
└── Claude.md # Task tracking cheatsheet
Tasks follow the naming pattern: {PREFIX}-{NUMBER}-{slug}.md and are organized into subdirectories by domain (core, interface, mobile).
Every task file contains YAML frontmatter that must conform to the schema defined in task.schema.json.
---
id: CORE-001
title: Entry-Centric Data Model
status: Done
assignee: james
priority: High
---
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier matching pattern ^[A-Z]+-[0-9]+$ |
title | string | Human-readable title (min 5 characters) |
status | enum | One of: To Do, In Progress, Done |
assignee | string | Person responsible for the task |
priority | enum | One of: High, Medium, Low |
---
parent: CORE-000
tags: [core, database, epic]
whitepaper: Section 4.1
last_updated: 2025-12-02
---
| Field | Type | Description |
|---|---|---|
parent | string | Parent task ID for subtask hierarchy |
tags | array | Categorization tags |
whitepaper | string | Reference to design documentation |
last_updated | string | ISO date of last modification |
The lifecycle of a task follows three states:
Task has not been started. No implementation exists.
Task is actively being worked on. Criteria for this status:
Task is complete. All acceptance criteria must be met:
Tasks are organized by domain using prefixes. Tasks are further organized into subdirectories:
.tasks/core/)Backend and Rust-related tasks:
| Prefix | Domain |
|---|---|
CORE | Core architecture and data model |
JOB | Job system and task execution |
INDEX | File indexing and location management |
FSYNC | File synchronization |
LSYNC | Library synchronization |
NET | Networking and P2P |
SEARCH | Search functionality |
FILE | File operations |
LOC | Location management |
VOL | Volume operations |
SEC | Security and privacy |
CLI | Command-line interface |
CLOUD | Cloud integration |
AI | AI and ML features |
PLUG | Plugin system |
DEV | Development tooling |
.tasks/interface/)Frontend and React-related tasks:
| Prefix | Domain |
|---|---|
UI | UI primitives and design system |
EXPL | Explorer interface |
SETS | Settings pages |
SRCH | Search UI |
TAG | Tagging interface |
MEDIA | Media viewer |
NAV | Navigation and routing |
PERF | Performance optimizations |
A11Y | Accessibility |
.tasks/mobile/)Mobile-specific tasks (future):
| Prefix | Domain |
|---|---|
IOS | iOS native features |
MACOS | macOS native features |
AND | Android features |
The task-validator binary provides utilities for managing and validating tasks.
View all tasks sorted by status:
cargo run --bin task-validator -- list --sort-by status
Output groups tasks by status (To Do, In Progress, Done):
=== Done ===
CORE-000: Epic: VDFS Core Architecture
CORE-001: Entry-Centric Data Model
JOB-001: Job Manager for Task Scheduling
=== In Progress ===
CLOUD-003: Cloud Volume Support
=== To Do ===
AI-002: Create Fine-tuning Dataset
Filter by specific criteria:
# By status
cargo run --bin task-validator -- list --status "In Progress"
# By priority
cargo run --bin task-validator -- list --priority High
# By assignee
cargo run --bin task-validator -- list --assignee james
Ensure all task files conform to the schema:
cargo run --bin task-validator -- validate
This checks:
Validation runs in CI to prevent invalid tasks from being committed.
When code has been merged, tasks should be reviewed and updated:
Check recent commits:
git log --oneline -20
List current task state:
cargo run --bin task-validator -- list --sort-by status
For each potential completed feature:
core/tests/ for integration testsUpdate task status: Edit the YAML frontmatter in the task file:
---
status: Done # Changed from "In Progress"
last_updated: 2025-12-02 # Update date
---
Validate changes:
cargo run --bin task-validator -- validate
core/, interface/, or mobile/)EXPL-002 exists, use EXPL-003).tasks/{subdirectory}/{PREFIX}-{NUMBER}-{slug}.mdcargo run --bin task-validator -- validate
Example core task file (.tasks/core/LSYNC-017-realtime-sync.md):
---
id: LSYNC-017
title: Real-time Sync Protocol
status: To Do
assignee: james
parent: LSYNC-000
priority: High
tags: [core, sync, networking]
whitepaper: Section 5.3
---
## Description
Implement a real-time synchronization protocol that pushes changes
immediately rather than relying on polling intervals.
## Implementation Notes
- Use WebSocket or similar bi-directional protocol
- Integrate with existing sync service
- Maintain backward compatibility with polling-based sync
## Acceptance Criteria
- [ ] Changes propagate within 1 second between devices
- [ ] Protocol handles network interruptions gracefully
- [ ] Fallback to polling when real-time unavailable
- [ ] Integration tests demonstrate cross-device sync
Example interface task file (.tasks/interface/EXPL-004-breadcrumbs.md):
---
id: EXPL-004
title: Breadcrumb Navigation
status: To Do
assignee: james
parent: EXPL-000
priority: Medium
tags: [explorer, navigation, ui]
---
## Description
Implement breadcrumb navigation in the Explorer top bar showing the
current path with clickable segments.
## Implementation Notes
- Display full path as clickable segments
- Truncate middle segments if path is too long
- Show dropdown menu for segments with many children
- Keyboard navigation support
## Acceptance Criteria
- [ ] Breadcrumbs show current location path
- [ ] Click segment to navigate to that level
- [ ] Path updates when navigating
- [ ] Works with virtual locations and SD paths
- [ ] Responsive truncation for long paths
When updating tasks after completing work:
DO:
last_updated fieldDON'T:
Epics are high-level tasks that have subtasks:
---
id: CORE-000
title: "Epic: VDFS Core Architecture"
status: Done
assignee: james
priority: High
tags: [epic, core, vdfs]
---
Subtasks reference their epic via the parent field:
---
id: CORE-001
title: Entry-Centric Data Model
parent: CORE-000
status: Done
---
While not enforced by schema, dependencies can be documented in task descriptions:
## Dependencies
This task requires:
- CORE-001 (Entry-Centric Model) - Done
- INDEX-001 (Location Watcher) - In Progress
Link tasks to design documentation:
whitepaper: Section 4.1
This helps trace implementation back to architectural decisions.
Write specific, testable criteria:
Good:
- [ ] User can add S3 bucket as a cloud volume
- [ ] Cloud volumes appear in volume list
- [ ] Files in cloud volume can be searched
Bad:
- [ ] Implement cloud volume feature
- [ ] Make it work properly
The tracker is only valuable if it reflects reality:
In Progress honest about active workWhile not automated, tasks can be referenced in commits:
git commit -m "feat: implement cloud volume indexing (CLOUD-003)"
This creates a searchable link between tasks and implementation:
git log --oneline --grep="CLOUD-003"
Invalid YAML:
Error: Failed to parse YAML in CORE-001-entry-centric-model.md
Fix: Check YAML syntax, ensure frontmatter is enclosed in ---
Missing Required Field:
Error: Missing required field 'priority' in CORE-001
Fix: Add the missing field to frontmatter
Invalid Status Value:
Error: Invalid status 'Complete' in CORE-001. Must be one of: To Do, In Progress, Done
Fix: Use exact status values from schema (case-sensitive)
Each task ID must be unique. If validation reports duplicates:
# Find all task IDs
grep "^id:" .tasks/*.md | sort
Renumber conflicting tasks and update any parent references.
Tasks with parent fields referencing non-existent tasks:
cargo run --bin task-validator -- validate
Will report broken parent references. Either remove the parent field or create the missing epic.
# .tasks/SEARCH-000-semantic-search.md
---
id: SEARCH-000
title: "Epic: Semantic Search System"
status: In Progress
assignee: james
priority: High
tags: [epic, search, ai]
whitepaper: Section 6.2
---
## Description
Build a semantic search system using embeddings and vector similarity.
## Subtasks
- SEARCH-001: Async search job infrastructure
- SEARCH-002: Two-stage FTS + semantic reranking
- SEARCH-003: Unified vector repositories
# .tasks/SEARCH-001-async-searchjob.md
---
id: SEARCH-001
title: Async Search Job
parent: SEARCH-000
status: Done
assignee: james
priority: High
tags: [search, jobs]
last_updated: 2025-11-15
---
## Description
Implement background search job that processes queries asynchronously.
## Acceptance Criteria
- [x] SearchJob implements Job trait
- [x] Queries execute in background thread pool
- [x] Results stream back via events
- [x] Integration test demonstrates full workflow
The task tracking system complements other development tools:
By maintaining accurate task status, the team has a real-time view of what's complete, what's in progress, and what's planned.