WORK-130
ID:WORK-130Status:done

Support attribute clearing in plan CLI update command

The update command can set or replace attribute values but cannot remove them. Once you set --assignee claude or --milestone v1.0.0, there's no way to unset it. Support empty string as "clear": --assignee "" removes the attribute from the tag.

Priority:lowComplexity:simpleSource:SPEC-037

Criteria completion

Criteria completion: 5 of 5 (100%) checked; history from Apr 12 to Apr 120%25%50%75%100%Apr 12Apr 12
Branches 2
History 3
  1. e900a90
    Created (done)by bjornolofandersson
  2. a295513
    • ☑ `--assignee ""` removes the `assignee` attribute from the rune tag
    • ☑ `--milestone ""` removes the `milestone` attribute from the rune tag
    • ☑ Works for any optional attribute (`assignee`, `milestone`, `source`, `tags`, `complexity`)
    • ☑ Change summary shows "removed" for cleared attributes (e.g., `assignee: claude → (removed)`)
    • ☑ Tests for attribute clearing
    by Claude
  3. 1676387
    Created (ready)by Claude
    Accept SPEC-037 and break into work items; fix plan validation issues

Acceptance Criteria

  • --assignee "" removes the assignee attribute from the rune tag
  • --milestone "" removes the milestone attribute from the rune tag
  • Works for any optional attribute (assignee, milestone, source, tags, complexity)
  • Change summary shows "removed" for cleared attributes (e.g., assignee: claude → (removed))
  • Tests for attribute clearing

References

  • SPEC-037 — Plan Package Hardening (Part 4: Missing CLI Capability)

Resolution

Completed: 2026-04-12

Branch: claude/spec-037-breakdown-docs-Whj40

What was done

  • Added removeAttr() helper to update.ts
  • Empty string values trigger attribute removal instead of setting empty
  • Skip enum validation for empty strings
  • 4 new tests for attribute clearing