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).
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:
So
--set-fieldcorrectly refuses (description is a reserved top-level key), and the error tells me to "use thedescription/set_descriptionparameter." But:There is no
--set-descriptionflag. The error advertises a parameter the CLI does not expose.Root cause (code locations, this checkout)
rivet-core::mutate::ModifyParamshas the capability:set_description: Option<String>(rivet-core/src/mutate.rs:322), applied inrivet-core/src/yaml_edit.rs:762.rivet-core/src/mutate.rs:360and is correct for the MCP surface:rivet-cli/src/mcp.rsModifyParamsexposesdescriptionand wires it (mcp.rs:~1143set_description: p.description.clone()).Modifysubcommand (rivet-cli/src/main.rs:964) declares onlyset_status/set_title/add_tag/remove_tag/set_fields, and when it buildsModifyParamsit hardcodesset_description: None(rivet-cli/src/main.rs:13690).main.rs:~14140) also omits it (..Default::default()).Net:
set_descriptionis reachable from the MCP tool only — not fromrivet modifyorrivet 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,validatewarning count went 77→76, errors held at 4).description:block directly, thenrivet validateto confirm no regression.Suggested fix
Add
--set-description <TEXT>to the CLIModifysubcommand (and ideally thebatchModify mutation), pass it intoModifyParams.set_descriptioninstead of hardcodingNone. 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).