# Task State Canon Migration Date: 2026-05-25 Status: implementation source ## Canon Source State Hub follows the task lifecycle defined by InfoTechCanon: - `info-tech-canon/infospace/models/task/InfoTechCanonTaskModel.md` - `info-tech-canon/seeds/InfoTechCanonTaskModel_RC1_seed.md` The canon defines symbolic codes and lowercase stored values: | Code | Stored value | Meaning | |------|--------------|---------| | `WAIT` | `wait` | Blocked, paused, or waiting on another actor, event, decision, input, or condition. | | `TODO` | `todo` | Ready or planned work that is not actively being worked. | | `PROG` | `progress` | Active work in focus. | | `DONE` | `done` | Completed successfully. | | `CNCL` | `cancel` | Stopped because the work is no longer relevant, wanted, or valid. | State Hub stores lowercase values, not uppercase codes. ## State Hub Profile State Hub task status is separate from workstream/workplan lifecycle status. Workstream frontmatter continues to use: ```text proposed, ready, active, blocked, backlog, finished, archived ``` Task status now uses: ```text wait, todo, progress, done, cancel ``` Compatibility aliases accepted during the migration window: | Legacy value | Canon value | |--------------|-------------| | `blocked` | `wait` | | `waiting` | `wait` | | `in_progress` | `progress` | | `cancelled` | `cancel` | | `canceled` | `cancel` | `done` and `cancel` are terminal for normal planning and completion checks. `cancel` is final. `done` can be reopened only by an explicit workflow/profile rule and should not be treated as normal progress churn. ## Wait Versus Human Intervention `wait` is broader than the old `blocked` task status. It can mean blocked, paused, waiting on another actor, waiting on an event, waiting on input, or waiting on a decision. State Hub keeps these fields separate: - `status=wait`: the task is not actively progressing; - `blocking_reason`: explanatory text about the wait condition; - `needs_human=true`: the wait requires direct human action; - `intervention_note`: human-facing instruction or resolution note. A task can be `wait` without `needs_human=true`. A human intervention is represented by `needs_human=true`, not by status alone. ## Attached Repo Adaptation Brief Repos attached to State Hub should update local agent instructions, workplan examples, scripts, docs, dashboards, and tests if they mention State Hub task statuses. Migration map: ```text blocked -> wait in_progress -> progress cancelled -> cancel canceled -> cancel todo -> todo done -> done ``` During the compatibility window, State Hub accepts legacy aliases in API and workplan-file inputs, but writebacks prefer canonical values. Attached repos should report completion by replying to their State Hub inbox message or by closing the targeted `[repo:]` ecosystem task created for the adaptation.