Skip to content

Native Task System

Canonical SQLite task authority with revision-checked mutations, projection-free Co-work knowledge documents, durable cutover safety, and frozen legacy imports.

Details

Native task authority

TaskStore and TaskService are the sole source of truth for live task identity, fields, state, completion, archive/trash lifecycle, structured tags, action items, history, provenance, and document links. Obsidian, tasks/master-task-list.md, tasks/archive.md, task-note Markdown, and the Obsidian Tasks plugin are not runtime readers, writers, mirrors, or reconciliation peers after activation.

Every mutation returns the task ID, task revision, collection revision, and a durable mutation receipt. Callers should pass the current expected_revision and may pass a stable client_mutation_id; retries with the same semantic request replay, while stale revisions produce a structured conflict instead of overwriting newer work. Completion accepts an optional historical done_date; snoozing uses the explicit snooze_until field.

Co-work knowledge documents

Task notes are ordinary Co-work knowledge documents with projection_mode=none. They are not Markdown files and are never rendered back into the vault. Browser edits, task reads, email append, IR parsing, excerpts, and restore all consume the current structured/Yjs head. A task can also hold opaque links to local files in place: the browser receives display metadata and a host action, never an absolute path or copied/encrypted asset unless a separate feature explicitly requests that.

Migration and frozen legacy data

Migration is backup-first and operator-driven. The inventory includes ID-bearing and ID-less task lines, task metadata, note bodies, attachments, missing references, and unattached notes; the importer assigns deterministic native IDs, creates projection-free Co-work documents, and emits a recovery catalog. Dry-run and parity checks happen before the guarded prepare/fence/activate sequence.

The live cutover is never implicit in application startup, tests, import, or dashboard use. The backed-up legacy task files and database snapshot remain frozen and retained indefinitely until the user explicitly decides otherwise. No 30-day cleanup or automatic deletion is permitted.

Secondary consumers

Task context, project tag counts, Obsidian context summaries, Chrome/email/Journal routing, completeness, search/IR, MCP capabilities, and both dashboard entry points query the native domain after activation. The disabled sidecar_jobs/task-sync.md file remains only as historical configuration.