Skip to content

v0.9.0 Release Notes

Release Date: 2026-11-01

VisionStudio v0.9.0 lets agents edit roadmap items. The new MCP tool rmi_update changes an RMI's fields, including its acceptance criteria, and rmi update --acceptance does the same from the command line. Both edit through one service method, so they accept and refuse the same changes.

Highlights

  • rmi_update MCP tool — agents change an RMI's status, title, repository, description, priority, required flag, origin, context spec, and acceptance criteria.
  • rmi update --acceptance — set or clear an RMI's acceptance criteria from the command line.
  • One checked edit — the CLI and the MCP tool both edit through service.EditRMI, which checks every change before writing any.

Editing RMIs over MCP

Until now an agent could create an RMI and change its status, but could not correct its title or record what done means for it. rmi_update takes the RMI's ID and any of the fields to change:

{
  "rmi_id": "RMI-MYREPO-007",
  "status": "in_progress",
  "acceptance_criteria": ["schema generated", "tests pass", "docs updated"]
}

Fields left out keep their values. An empty acceptance_criteria list clears the criteria, a null context_spec clears the context spec, and an empty description or priority clears that field. The tool returns the RMI as stored. Setting status to completed stamps the completion time, as task_update and rmi update do.

rmi_update works in remote mode too, against a VisionStudio Cloud tenant.

Acceptance Criteria from the Command Line

rmi update --acceptance replaces an RMI's acceptance criteria with a semicolon-separated list, as rmi create --acceptance takes them, and an empty value clears them:

visionstudio rmi update RMI-MYREPO-007 --acceptance "schema generated; tests pass; docs updated"
visionstudio rmi update RMI-MYREPO-007 --acceptance ""

To add one criterion, pass the whole list; rmi get prints the current one. Each criterion is trimmed and empty ones are dropped, whether it comes from the command line or from MCP. See RMI acceptance criteria.

One Checked Edit

service.EditRMI applies a service.RMIChanges to an RMI. A nil field is left as it is, and every change is checked before any is written: an unknown status or origin, or an empty title or repository, refuses the whole edit. A status change goes through UpdateRMIStatus, so completing an RMI stamps its completion time. RMIChanges.Fields names the fields an edit sets, and ErrNoRMIChanges reports an edit that sets none. rmi.CleanAcceptance trims criteria and drops empty ones.

Changed

  • rmi update checks every change first. An explicitly empty --title, --status, or --repo is refused rather than ignored, and an invalid --context-spec no longer leaves a status change applied.

Fixed

  • rmi create --acceptance kept an empty criterion when the list ended with a semicolon. Create and update now share rmi.ParseAcceptance, which drops it.

Documentation

Dependencies

  • github.com/grokify/prism-roadmap v0.21.0 → v0.22.0
  • github.com/grokify/prism-maturity v0.15.0 → v0.15.1
  • github.com/grokify/prism-core v0.5.0 → v0.6.0 (indirect)

Upgrading

No changes are needed. A script that passed an empty --title, --status, or --repo to rmi update, expecting it to be ignored, now gets an error; leave the flag out instead. The Go API changes are additions: service.EditRMI, service.RMIChanges, service.ErrNoRMIChanges, and rmi.CleanAcceptance.