Skip to content

task (entity)

Generated from solutions/ontological/lib/model/entities/task/schema.ts.

Schema version: 6.

A Task is the atomic unit of executable work: one problem, one implementer, typically one PR. Tasks are what orchestration dispatches and what the lease protocol claims. A Task with children (via parent_key:) is an epic — an organizational rollup that orchestration skips; epic-ness is derived, not a separate type (D-ORMG-data-model).

A Task is not:

  • A Milestone. A Milestone is a release narrative with a target date and success criteria; Tasks are its members.
  • A Backlog item. A Backlog item is a pre-triage idea; it becomes a Task at promotion, when it earns a spec.
FieldTypeRequiredDescription
typestringArtifact type — used by the frontmatter validator to pick this schema. Optional today (the validator falls back to the schema named after the parent directory), but required once other artifact types coexist in the same tree.
schema_versionstringNumeric string version of the per-type schema this instance conforms to. Compare numerically when ordering versions. Independent of any product version. The value 0 is a documented sentinel meaning ‘pre-SDLC-managed’ — audit treats it as intentional, not stale. Optional in frontmatter: never in any per-type required set (audit flags a MISSING stamp as drift, not the validator).
idstringyesImmutable identifier per D-0002-entity-identifier-shape: ‘T-’ + 4 base-36 chars [0-9A-Z]. Matches the filename; never renamed once assigned.
statusstringLifecycle stage. Four majors: planning/ (spec still being shaped, not pickable), open/ (available to pick up now), in-progress[/blocked] (someone has it), closed/ (terminal). Under the GitHub Ref Leases protocol, this field is a workflow cache — the lease ref at refs/sdlc/tasks/ is the authoritative claim.
titlestringHuman-readable headline. Frontmatter is canonical; the body opens with # <title> for readability.
createdstringISO date the entity was first authored.
last_reviewedstringISO date the entity was last reviewed. Optional: never in any per-type required set.
relatedarrayLoose, non-directional cross-references — task IDs or filenames this task is tied to. For hard ‘B cannot start until A closes’ dependencies use depends_on instead.
tagsarrayFree-form labels. Required at the common level, defaulting to []. Per-type schemas may add a contains constraint (e.g. Principle requires exactly one principle/<category> tag).
need_human_reviewbooleanReview-tracking flag.
impactstringTriage value of doing this work.
prioritybooleanHuman-set ordering override. true sorts this task above all priority: false/absent tasks regardless of impact/complexity/created. Boolean by design — a sparse ‘do this one first’ override valve. Absent means false.
complexitystringRough effort. small: <1 day, medium: 1-3 days, large: multi-day or multi-PR.
autonomystringWho may execute this task. human-only: an LLM agent should not pick this up. supervised: an LLM may attempt the work, but a human must review and approve before any state-changing action beyond opening a PR. autonomous/pr: an agent may best-effort self-ready and implement this task autonomously up to opening a PR; it never merges. Absent: unclassified (downstream pickup skills decide policy).
kindstringWhich runner drives this task’s execution (D-VSLI-distributed-work-runner-architecture). Absent means implementation, so every pre-existing task stays dispatchable. LEAF-EXECUTION-ONLY: kind selects a runner for a leaf task and never gates containers — a task with children is a structural rollup, skipped by orchestration regardless of its kind. planning / research leaves stay human-driven until their runners exist.
scopeobjectThe region of the workspace this task expects to write (D-VSLI-distributed-work-runner-architecture §Scope claims). SDLC’s corpus projection of foreman::work_order::ScopeClaim, which is the domain-neutral definition. Absent means unscoped, which schedules exactly as it did before scope claims existed — adoption is additive. Not named impact: that word is taken.
schedulingobjectSoft inputs to scheduling policy, never guarantees — policy may ignore all of them (D-VSLI-distributed-work-runner-architecture §Scheduling). SDLC’s corpus projection of foreman::work_order::SchedulingHints, minus its priority (SDLC expresses relative urgency at the top level via priority and impact) and its retry budget (no SDLC reader or writer exists for one).
parent_keystringWikilink to this task’s parent task. A task with one or more children IS an epic — epic-ness is derived from parent_key, not a separate entity type. Optional; absent means top-level.
depends_onarrayHard, one-direction dependencies this task is blocked by. Each entry is a strict wikilink to a task. Semantic: the target must reach a closed/ state before this task starts.
prsarrayURLs of PRs opened during this task’s lifecycle, in temporal order (newest last). Written by /sdlc:task-work’s PR-open step; verified/appended by /sdlc:task-close-out. Primary use case is Obsidian static-viewer affordance.
relevance_notestringShort note (one line) on what shifted in the codebase since the task body was written. Cleared once the task is closed.
completion_notestringMultiline summary of what shipped. Required when status starts with closed/.
definition_gapstringIf the task spec is incomplete, what’s missing. Set by /sdlc:task-review or /sdlc:task-ensure-ready when verification fails; resolved by editing the body.
resolutionstringLegacy: outcome of a bare-closed task.
resolution_datestringLegacy: ISO date the bare-closed task was resolved.
resolution_commitstringLegacy: git short-hash of the commit that resolved the task.
readiness_verified_atstringISO 8601 UTC datetime when this task last passed the implementation-ready contract. Written exclusively by /sdlc:task-ensure-ready on pass; cleared on fail and by close-out steps. Declared near the bottom so the canonical key order places the stamp at the bottom of the frontmatter.
touchpoints_verified_atstringISO 8601 UTC datetime when this task’s touchpoint tables last resolved cleanly against the codebase. Single stamp at the frontmatter level. Declared last so the canonical key order places it at the bottom of the frontmatter.
  • planning/draft
  • planning/proposed
  • planning/needs-definition
  • planning/backlog
  • open/ready
  • in-progress
  • in-progress/blocked
  • closed/done
  • closed/superseded
  • closed/partially-superseded
  • closed/obsoleted
  • closed/relocated
  • closed/no-repro
  • closed/wontdo
  • high
  • medium
  • low
  • small
  • medium
  • large
  • human-only
  • supervised
  • autonomous/pr
  • implementation
  • planning
  • research
  • fixed
  • wontfix
  • superseded
  • obsoleted