Skip to content

rivet modify: no --set-description CLI flag; --set-field description= error points to an unreachable parameter #360

@avrabe

Description

@avrabe

Found while driving rivet from an agent on the sigil project (companion to #353, which was on meld): bringing cybersecurity-design/verification statuses in line with shipped code, and updating one design's description to reflect a code change (UCA-4 full-entry cache key). rivet 0.13.3 (b55a9c6f release/v0.14.0 2026-05-30).

Symptom

Trying to update an artifact's description via the documented mutation path:

$ rivet modify CD-22 --set-field description="MemoryProofCache stores ... full Rekor entry ..."
error: validation failed: Validation error: 'description' is a reserved top-level artifact key
and cannot be set via `set_fields` (which targets the `fields:` sub-map) — use the
`description` / `set_description` parameter

So --set-field correctly refuses (description is a reserved top-level key), and the error tells me to "use the description / set_description parameter." But:

$ rivet modify --help
Options:
      --set-status <SET_STATUS>  Set the lifecycle status
      --set-title <SET_TITLE>    Set the title
      --add-tag <ADD_TAG>
      --remove-tag <REMOVE_TAG>
      --set-field <SET_FIELDS>   Set a field value (key=value)

There is no --set-description flag. The error advertises a parameter the CLI does not expose.

Root cause (code locations, this checkout)

  • rivet-core::mutate::ModifyParams has the capability: set_description: Option<String> (rivet-core/src/mutate.rs:322), applied in rivet-core/src/yaml_edit.rs:762.
  • The error string is emitted at rivet-core/src/mutate.rs:360 and is correct for the MCP surface: rivet-cli/src/mcp.rs ModifyParams exposes description and wires it (mcp.rs:~1143 set_description: p.description.clone()).
  • But the CLI Modify subcommand (rivet-cli/src/main.rs:964) declares only set_status/set_title/add_tag/remove_tag/set_fields, and when it builds ModifyParams it hardcodes set_description: None (rivet-cli/src/main.rs:13690).
  • The batch path (main.rs:~14140) also omits it (..Default::default()).

Net: set_description is reachable from the MCP tool only — not from rivet modify or rivet batch. A CLI user following the error message has no way to act on it.

What I used / what finally helped

  • rivet modify <ID> --set-status implemented — worked perfectly for the status flips (8 artifacts, clean YAML diffs, validate warning count went 77→76, errors held at 4).
  • For the description edit there was no CLI route, so what finally helped was hand-editing the YAML description: block directly, then rivet validate to confirm no regression.

Suggested fix

Add --set-description <TEXT> to the CLI Modify subcommand (and ideally the batch Modify mutation), pass it into ModifyParams.set_description instead of hardcoding None. The core + yaml_edit support already exists, so this is a CLI-wiring change. Alternatively (or additionally), soften the error message when invoked from the CLI so it doesn't point at a parameter the CLI can't provide.

Relates to #353 (same agent-driven "mark implemented" workflow, sigil instead of meld).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions