WORK-030
ID:WORK-030Status:done

plan update Command

Priority:highComplexity:moderateSource:SPEC-022

Summary

In-place editing of plan file attributes and acceptance criteria checkboxes. This is the highest-value command for AI agent workflows — it enables structured status transitions (refrakt plan update {% ref "WORK-020" /%} --status in-progress) and criterion tracking (refrakt plan update {% ref "WORK-020" /%} --check "Schema validates") without manually editing Markdoc files.

Acceptance Criteria

  • Finds entity file by ID scan (using scanner from Plan File Scanner Library)
  • --status <status> edits the rune tag's status attribute in place
  • --check "text" toggles - [ ] to - [x] for matching criterion (substring match)
  • --uncheck "text" toggles - [x] to - [ ]
  • Validates attribute values against rune schema (rejects invalid statuses like --status working)
  • Multiple flags combine in a single call (--status in-progress --assignee claude --milestone v0.5.0)
  • --format json outputs structured change summary with old and new values
  • Reports error on ambiguous criterion match (multiple lines match substring)
  • Exit codes: 0 = success, 1 = validation error, 2 = entity not found
  • Tests for attribute editing, checkbox toggling, validation, ambiguity detection, and error cases

Approach

Use the scanner (Plan File Scanner Library) to find the file by ID. Read the file content as a string. For attribute changes, regex-replace the opening tag line to update the target attribute. For checkbox toggling, find the matching - [ ] or - [x] line by substring and flip the bracket. Write the modified string back to the same file.

Validation uses the rune schema's attribute enum values (already defined in runes/plan/src/tags/).

Dependencies

References

History

  1. f262d7b
    source+SPEC-022
  2. feda13e
    statusreadydone
    • ☑ Finds entity file by ID scan (using scanner from {% ref "WORK-028" /%})
    • ☑ `--status <status>` edits the rune tag's status attribute in place
    • ☑ `--check "text"` toggles `- [ ]` to `- [x]` for matching criterion (substring match)
    • +7 more criteria
  3. ebe0c64
    • − Finds entity file by ID scan (using scanner from WORK-028)
    • + Finds entity file by ID scan (using scanner from {% ref "WORK-028" /%})
  4. 30b2ae0
    Created (ready, high, moderate, cli, plan, ai-workflow)