Open Task Model v0.1.0
Open Task Model v0.1.0
Status
Draft
Overview
Open Task Model v0.1.0 defines a single work object called Task.
This version specifies the task data model and the semantics required to determine task readiness. It does not define storage, transport, encoding framing, or synchronization mechanisms.
Task Object
A Task has the following fields:
id: ULID. Must be unique within the task set.kind: Task category. Typical values includebug,feature,task,epic, andchore.title: Short human-readable summary.description: Longer description of the work.design: Implementation or design notes.notes: Freeform working notes.priority: Integer from0to4, where4means backlog.status: Task state. Implementations must support at leastopenandclosed.lease: Nullable ULID identifying the currently active lease for the task.depends_on: List of task IDs that must be closed before this task is ready.parent_id: Nullable task ID for hierarchical grouping.created_by: Cryptographic actor identity in the formid:ret:<hex>.created_at: Creation timestamp.updated_at: Last-update timestamp.closed_at: Nullable close timestamp.close_reason: Nullable reason for closure.tags: List of strings.
Field Semantics
Identity
idis the stable identifier for the task.created_byidentifies the actor that created the task.
Hierarchy
parent_idlinks a task to a parent task.- A parent task may be used for grouping, planning, or decomposition.
Dependencies
depends_onlists prerequisite tasks.- A task named in
depends_onmust be closed before the dependent task can be considered ready.
Lifecycle
statusis authoritative and must not be inferred from timestamps.created_atandupdated_atare required lifecycle timestamps.closed_atandclose_reasonshould be set whenstatus = "closed".
Priority
priority = 0is the highest urgency.priority = 4represents backlog work.
Lease
leaseis eithernullor the ULID of the currently active lease for the task.- Lease semantics are implementation-defined in this version.
Readiness
A task is ready when all of the following are true:
status = "open"- every task named in
depends_onis closed
Example
{
"id": "01JQ7M7H8YF2Q3K9T6N4WZ1B5C",
"kind": "task",
"title": "Harden IBKR persistent session and reconnect handling",
"description": "",
"design": "Use exponential backoff and keep reconnect state isolated from session bootstrap.",
"notes": "Waiting on execution read model and upstream readiness.",
"priority": 4,
"status": "open",
"lease": "01JQ7N0E5R6S8T1U2V3W4X5Y6Z",
"depends_on": [
"01JQ7M9N3J6Q8V1R4S2T5Y7Z8A"
],
"parent_id": "01JQ7M6B0P4D2R8X9C1V3N5K7M",
"created_by": "id:ret:7b9f3c1d8a4e6f2b0c9d5a1e7f3b6c2d",
"created_at": "2026-03-22T06:36:16.685455Z",
"updated_at": "2026-03-23T14:22:00Z",
"closed_at": null,
"close_reason": null,
"tags": ["ibkr", "reconnect", "backend"]
}