WORK-493
ID:WORK-493Status:done

Add cancelled and superseded terminal work statuses

Give work items an honest way to be retired: cancelled (deliberately not doing it) and superseded (replaced by another item), plus a supersedes attribute. Both are terminal and non-achieving. Builds on the consolidated vocabulary from WORK-492.

Priority:highComplexity:moderateMilestone:v0.28.0Source:SPEC-117

Criteria completion

Criteria completion: 8 of 8 (100%) checked; history from Jul 9 to Jul 140%25%50%75%100%Jul 9Jul 14
Branches 3
History 3
  1. cf13ce1
    • ☑ `work` rune accepts `cancelled` and `superseded` status values (schema `tags/work.ts`, `enums.ts` `VALID_STATUS`, and MCP `plan.update` input schema)
    • ☑ `work` rune accepts an optional single-valued `supersedes` attribute referencing an entity ID (added to `ALLOWED_ATTRS.work`)
    • ☑ `cancelled` / `superseded` are registered in `TERMINAL_STATUSES.work` but not `ACHIEVING_STATUSES.work`
    • ☑ `cancelled` / `superseded` work items are excluded from `plan next`, from milestone progress numerators, and from `plan-progress` achieved counts
    • ☑ `config.ts` work `sentimentMap` gains muted/caution entries for `cancelled` and `superseded`; render-pipeline orderings sort them into the terminal tail
    • ☑ `supersedes` produces a `superseded-by` / `supersedes` relationship edge in `relationships.ts`
    • ☑ `plan validate` warns on a `superseded` work item with no `supersedes`, and no longer warns about a `## Resolution` present on a `cancelled` / `superseded` item
    • ☑ Tests cover: schema acceptance, exclusion from `next`/progress, the `supersedes`-missing warning, and the resolution-on-terminal carve-out
    by bjornolofandersson
  2. 283ce5a
    Created (draft)by bjornolofandersson
  3. 9a519fd
    Content editedby Claude
    plan: add v0.28.0 plan-model-hardening milestone and work breakdown

Acceptance Criteria

  • work rune accepts cancelled and superseded status values (schema tags/work.ts, enums.ts VALID_STATUS, and MCP plan.update input schema)
  • work rune accepts an optional single-valued supersedes attribute referencing an entity ID (added to ALLOWED_ATTRS.work)
  • cancelled / superseded are registered in TERMINAL_STATUSES.work but not ACHIEVING_STATUSES.work
  • cancelled / superseded work items are excluded from plan next, from milestone progress numerators, and from plan-progress achieved counts
  • config.ts work sentimentMap gains muted/caution entries for cancelled and superseded; render-pipeline orderings sort them into the terminal tail
  • supersedes produces a superseded-by / supersedes relationship edge in relationships.ts
  • plan validate warns on a superseded work item with no supersedes, and no longer warns about a ## Resolution present on a cancelled / superseded item
  • Tests cover: schema acceptance, exclusion from next/progress, the supersedes-missing warning, and the resolution-on-terminal carve-out

Dependencies

  • WORK-492 — adds values to the consolidated enums.ts shape

References

  • SPEC-117 — spec (New work statuses, New work attribute, Validation)

Resolution

Completed: 2026-07-09

Branch: claude/milestone-v0-28-0-llvtfa PR: refrakt-md/refrakt#565

What was done

  • work accepts cancelled/superseded + a supersedes attribute (schema, enums.ts, ALLOWED_ATTRS, MCP).
  • Both registered terminal-but-not-achieving; excluded from plan next, milestone numerators, plan-progress.
  • supersedes builds a supersedes/superseded-by edge (relationships.ts + pipeline plumbing).
  • validate warns on superseded without supersedes and carves out the resolution-on-terminal warning.
  • Tests in test/vocabulary.test.ts.