DocumentationDecision recordsADR-0053
Task due dates live in the checklist line
WorkspaceTask has carried a dueDate since ADR-0031, but nothing set it. A date that only exists in SQLite would disappear from the note's Markdown, so an…
accepted
Context
WorkspaceTask has carried a dueDate since ADR-0031,
but nothing set it. A date that only exists in SQLite would disappear from the
note's Markdown, so an exported vault, a Git projection, or another editor would
lose it. ADR-0031 already makes the source document own a linked task's title
and completion; a second field with a different owner would give the record and
the checklist item two ways to disagree.
Decision
- The date is a
dueDateattribute oncheck_item, aYYYY-MM-DDday with no time or zone. Unlinked checklist items may carry one too; like any checkbox, that stays document-only content and never creates a task. - Markdown spells it as the Obsidian Tasks
due-date signifier at the end of the item's first line, after the private task
marker:
- [ ] Ship it <!--skriuw-task:t:b--> 📅 2026-10-01. Obsidian Tasks only reads signifiers at the end of the line, so the date goes last. The parser reads marker and date in either order and leaves a token that names no real day as literal text. - The document owns the date. Every save reconciles a linked task's
due_datefrom its checklist item, including clearing it, exactly as it reconciles the title and checkbox. Setting a date from the tasks view is a pairedupdate_taskthat rewrites the item in the same operation. - The renderer mirrors that reconciliation when it projects a save, so the tasks view follows edits made in the editor without waiting for a snapshot.
- In the editor, typing
due:<date>and a space on a checklist line sets the date; the chip it renders turns back into that token on Enter or click and clears on Delete.
Consequences
- No migration:
workspace_tasks.due_datealready exists and archives already export it. - A due date stored only on the record, for example from an archive written before this decision, is cleared by the next save of its source note.
- Other tools' date conventions (
due:in todo.txt,DEADLINE:in Logseq) are not read from Markdown. Typingdue:is an editor gesture, not a file format.
On this page